From 9e0f2523b79e6c152a819cc04c08ab875d7639e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20=C5=BDaitl=C3=ADk?= Date: Sat, 6 Nov 2021 11:26:08 +0100 Subject: [PATCH] Prepared HAL FW. Started reimplementing I2C. --- fw_hal/.cproject | 178 + fw_hal/.mxproject | 25 + fw_hal/.project | 32 + fw_hal/.settings/org.eclipse.cdt.core.prefs | 6 + fw_hal/.settings/stm32cubeide.project.prefs | 4 + fw_hal/Core/Inc/config.h | 145 + fw_hal/Core/Inc/crc8.h | 22 + fw_hal/Core/Inc/i2c.h | 52 + fw_hal/Core/Inc/main.h | 87 + fw_hal/Core/Inc/modbus.h | 181 + fw_hal/Core/Inc/rgb_led.h | 28 + fw_hal/Core/Inc/scd4x.h | 55 + fw_hal/Core/Inc/sht4x.h | 55 + fw_hal/Core/Inc/sps30.h | 76 + fw_hal/Core/Inc/stm32l0xx_hal_conf.h | 330 + fw_hal/Core/Inc/stm32l0xx_it.h | 65 + fw_hal/Core/Src/config.c | 243 + fw_hal/Core/Src/crc8.c | 28 + fw_hal/Core/Src/i2c.c | 54 + fw_hal/Core/Src/main.c | 553 + fw_hal/Core/Src/modbus.c | 265 + fw_hal/Core/Src/rgb_led.c | 19 + fw_hal/Core/Src/scd4x.c | 116 + fw_hal/Core/Src/sht4x.c | 60 + fw_hal/Core/Src/sps30.c | 193 + fw_hal/Core/Src/stm32l0xx_hal_msp.c | 355 + fw_hal/Core/Src/stm32l0xx_it.c | 147 + fw_hal/Core/Src/syscalls.c | 156 + fw_hal/Core/Src/sysmem.c | 80 + fw_hal/Core/Src/system_stm32l0xx.c | 275 + fw_hal/Core/Startup/startup_stm32l031g6ux.s | 261 + fw_hal/Debug/Core/Src/config.d | 90 + fw_hal/Debug/Core/Src/config.o | Bin 0 -> 580976 bytes fw_hal/Debug/Core/Src/config.su | 7 + fw_hal/Debug/Core/Src/crc8.d | 3 + fw_hal/Debug/Core/Src/crc8.o | Bin 0 -> 29828 bytes fw_hal/Debug/Core/Src/crc8.su | 1 + fw_hal/Debug/Core/Src/i2c.d | 111 + fw_hal/Debug/Core/Src/i2c.o | Bin 0 -> 584816 bytes fw_hal/Debug/Core/Src/i2c.su | 4 + fw_hal/Debug/Core/Src/main.d | 111 + fw_hal/Debug/Core/Src/main.o | Bin 0 -> 599424 bytes fw_hal/Debug/Core/Src/main.su | 9 + fw_hal/Debug/Core/Src/modbus.d | 3 + fw_hal/Debug/Core/Src/modbus.o | Bin 0 -> 38680 bytes fw_hal/Debug/Core/Src/modbus.su | 4 + fw_hal/Debug/Core/Src/rgb_led.d | 3 + fw_hal/Debug/Core/Src/rgb_led.o | Bin 0 -> 29860 bytes fw_hal/Debug/Core/Src/rgb_led.su | 2 + fw_hal/Debug/Core/Src/scd4x.d | 114 + fw_hal/Debug/Core/Src/scd4x.o | Bin 0 -> 582616 bytes fw_hal/Debug/Core/Src/scd4x.su | 6 + fw_hal/Debug/Core/Src/sht4x.d | 114 + fw_hal/Debug/Core/Src/sht4x.o | Bin 0 -> 581268 bytes fw_hal/Debug/Core/Src/sht4x.su | 3 + fw_hal/Debug/Core/Src/sps30.d | 112 + fw_hal/Debug/Core/Src/sps30.o | Bin 0 -> 586016 bytes fw_hal/Debug/Core/Src/sps30.su | 11 + fw_hal/Debug/Core/Src/stm32l0xx_hal_msp.d | 111 + fw_hal/Debug/Core/Src/stm32l0xx_hal_msp.o | Bin 0 -> 591572 bytes fw_hal/Debug/Core/Src/stm32l0xx_hal_msp.su | 8 + fw_hal/Debug/Core/Src/stm32l0xx_it.d | 114 + fw_hal/Debug/Core/Src/stm32l0xx_it.o | Bin 0 -> 580392 bytes fw_hal/Debug/Core/Src/stm32l0xx_it.su | 5 + fw_hal/Debug/Core/Src/subdir.mk | 59 + fw_hal/Debug/Core/Src/syscalls.d | 1 + fw_hal/Debug/Core/Src/syscalls.o | Bin 0 -> 81000 bytes fw_hal/Debug/Core/Src/syscalls.su | 18 + fw_hal/Debug/Core/Src/sysmem.d | 1 + fw_hal/Debug/Core/Src/sysmem.o | Bin 0 -> 51024 bytes fw_hal/Debug/Core/Src/sysmem.su | 1 + fw_hal/Debug/Core/Src/system_stm32l0xx.d | 88 + fw_hal/Debug/Core/Src/system_stm32l0xx.o | Bin 0 -> 575008 bytes fw_hal/Debug/Core/Src/system_stm32l0xx.su | 2 + .../Core/Startup/startup_stm32l031g6ux.d | 2 + .../Core/Startup/startup_stm32l031g6ux.o | Bin 0 -> 4012 bytes fw_hal/Debug/Core/Startup/subdir.mk | 20 + .../STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.d | 89 + .../STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o | Bin 0 -> 587976 bytes .../STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.su | 31 + .../Src/stm32l0xx_hal_cortex.d | 89 + .../Src/stm32l0xx_hal_cortex.o | Bin 0 -> 583792 bytes .../Src/stm32l0xx_hal_cortex.su | 21 + .../Src/stm32l0xx_hal_dma.d | 89 + .../Src/stm32l0xx_hal_dma.o | Bin 0 -> 583496 bytes .../Src/stm32l0xx_hal_dma.su | 13 + .../Src/stm32l0xx_hal_exti.d | 89 + .../Src/stm32l0xx_hal_exti.o | Bin 0 -> 579024 bytes .../Src/stm32l0xx_hal_exti.su | 9 + .../Src/stm32l0xx_hal_flash.d | 89 + .../Src/stm32l0xx_hal_flash.o | Bin 0 -> 581788 bytes .../Src/stm32l0xx_hal_flash.su | 13 + .../Src/stm32l0xx_hal_flash_ex.d | 89 + .../Src/stm32l0xx_hal_flash_ex.o | Bin 0 -> 589832 bytes .../Src/stm32l0xx_hal_flash_ex.su | 25 + .../Src/stm32l0xx_hal_flash_ramfunc.d | 89 + .../Src/stm32l0xx_hal_flash_ramfunc.o | Bin 0 -> 576504 bytes .../Src/stm32l0xx_hal_flash_ramfunc.su | 6 + .../Src/stm32l0xx_hal_gpio.d | 89 + .../Src/stm32l0xx_hal_gpio.o | Bin 0 -> 579912 bytes .../Src/stm32l0xx_hal_gpio.su | 8 + .../Src/stm32l0xx_hal_i2c.d | 89 + .../Src/stm32l0xx_hal_i2c.o | Bin 0 -> 646868 bytes .../Src/stm32l0xx_hal_i2c.su | 79 + .../Src/stm32l0xx_hal_i2c_ex.d | 89 + .../Src/stm32l0xx_hal_i2c_ex.o | Bin 0 -> 580220 bytes .../Src/stm32l0xx_hal_i2c_ex.su | 6 + .../Src/stm32l0xx_hal_pwr.d | 89 + .../Src/stm32l0xx_hal_pwr.o | Bin 0 -> 581416 bytes .../Src/stm32l0xx_hal_pwr.su | 17 + .../Src/stm32l0xx_hal_pwr_ex.d | 89 + .../Src/stm32l0xx_hal_pwr_ex.o | Bin 0 -> 575628 bytes .../Src/stm32l0xx_hal_pwr_ex.su | 7 + .../Src/stm32l0xx_hal_rcc.d | 89 + .../Src/stm32l0xx_hal_rcc.o | Bin 0 -> 587880 bytes .../Src/stm32l0xx_hal_rcc.su | 13 + .../Src/stm32l0xx_hal_rcc_ex.d | 89 + .../Src/stm32l0xx_hal_rcc_ex.o | Bin 0 -> 579648 bytes .../Src/stm32l0xx_hal_rcc_ex.su | 8 + .../Src/stm32l0xx_hal_tim.d | 89 + .../Src/stm32l0xx_hal_tim.o | Bin 0 -> 657588 bytes .../Src/stm32l0xx_hal_tim.su | 119 + .../Src/stm32l0xx_hal_tim_ex.d | 89 + .../Src/stm32l0xx_hal_tim_ex.o | Bin 0 -> 577360 bytes .../Src/stm32l0xx_hal_tim_ex.su | 2 + .../Src/stm32l0xx_hal_uart.d | 89 + .../Src/stm32l0xx_hal_uart.o | Bin 0 -> 641084 bytes .../Src/stm32l0xx_hal_uart.su | 66 + .../Src/stm32l0xx_hal_uart_ex.d | 89 + .../Src/stm32l0xx_hal_uart_ex.o | Bin 0 -> 586300 bytes .../Src/stm32l0xx_hal_uart_ex.su | 12 + .../STM32L0xx_HAL_Driver/Src/subdir.mk | 71 + fw_hal/Debug/iaq_wired_sensor_hal.bin | Bin 0 -> 17360 bytes fw_hal/Debug/iaq_wired_sensor_hal.elf | Bin 0 -> 766504 bytes fw_hal/Debug/iaq_wired_sensor_hal.list | 12146 ++++++++++++++++ fw_hal/Debug/iaq_wired_sensor_hal.map | 4511 ++++++ fw_hal/Debug/makefile | 100 + fw_hal/Debug/objects.list | 33 + fw_hal/Debug/objects.mk | 9 + fw_hal/Debug/sources.mk | 26 + .../Device/ST/STM32L0xx/Include/stm32l031xx.h | 6094 ++++++++ .../Device/ST/STM32L0xx/Include/stm32l0xx.h | 275 + .../ST/STM32L0xx/Include/system_stm32l0xx.h | 109 + fw_hal/Drivers/CMSIS/Include/cmsis_armcc.h | 865 ++ fw_hal/Drivers/CMSIS/Include/cmsis_armclang.h | 1869 +++ fw_hal/Drivers/CMSIS/Include/cmsis_compiler.h | 266 + fw_hal/Drivers/CMSIS/Include/cmsis_gcc.h | 2085 +++ fw_hal/Drivers/CMSIS/Include/cmsis_iccarm.h | 935 ++ fw_hal/Drivers/CMSIS/Include/cmsis_version.h | 39 + fw_hal/Drivers/CMSIS/Include/core_armv8mbl.h | 1918 +++ fw_hal/Drivers/CMSIS/Include/core_armv8mml.h | 2927 ++++ fw_hal/Drivers/CMSIS/Include/core_cm0.h | 949 ++ fw_hal/Drivers/CMSIS/Include/core_cm0plus.h | 1083 ++ fw_hal/Drivers/CMSIS/Include/core_cm1.h | 976 ++ fw_hal/Drivers/CMSIS/Include/core_cm23.h | 1993 +++ fw_hal/Drivers/CMSIS/Include/core_cm3.h | 1941 +++ fw_hal/Drivers/CMSIS/Include/core_cm33.h | 3002 ++++ fw_hal/Drivers/CMSIS/Include/core_cm4.h | 2129 +++ fw_hal/Drivers/CMSIS/Include/core_cm7.h | 2671 ++++ fw_hal/Drivers/CMSIS/Include/core_sc000.h | 1022 ++ fw_hal/Drivers/CMSIS/Include/core_sc300.h | 1915 +++ fw_hal/Drivers/CMSIS/Include/mpu_armv7.h | 270 + fw_hal/Drivers/CMSIS/Include/mpu_armv8.h | 333 + fw_hal/Drivers/CMSIS/Include/tz_context.h | 70 + .../Inc/Legacy/stm32_hal_legacy.h | 3840 +++++ .../STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h | 487 + .../Inc/stm32l0xx_hal_cortex.h | 365 + .../Inc/stm32l0xx_hal_def.h | 204 + .../Inc/stm32l0xx_hal_dma.h | 675 + .../Inc/stm32l0xx_hal_exti.h | 342 + .../Inc/stm32l0xx_hal_flash.h | 378 + .../Inc/stm32l0xx_hal_flash_ex.h | 811 ++ .../Inc/stm32l0xx_hal_flash_ramfunc.h | 108 + .../Inc/stm32l0xx_hal_gpio.h | 343 + .../Inc/stm32l0xx_hal_gpio_ex.h | 2505 ++++ .../Inc/stm32l0xx_hal_i2c.h | 838 ++ .../Inc/stm32l0xx_hal_i2c_ex.h | 196 + .../Inc/stm32l0xx_hal_pwr.h | 460 + .../Inc/stm32l0xx_hal_pwr_ex.h | 99 + .../Inc/stm32l0xx_hal_rcc.h | 1741 +++ .../Inc/stm32l0xx_hal_rcc_ex.h | 2021 +++ .../Inc/stm32l0xx_hal_tim.h | 1828 +++ .../Inc/stm32l0xx_hal_tim_ex.h | 247 + .../Inc/stm32l0xx_hal_uart.h | 1591 ++ .../Inc/stm32l0xx_hal_uart_ex.h | 453 + .../STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.c | 674 + .../Src/stm32l0xx_hal_cortex.c | 415 + .../Src/stm32l0xx_hal_dma.c | 885 ++ .../Src/stm32l0xx_hal_exti.c | 549 + .../Src/stm32l0xx_hal_flash.c | 769 + .../Src/stm32l0xx_hal_flash_ex.c | 1274 ++ .../Src/stm32l0xx_hal_flash_ramfunc.c | 521 + .../Src/stm32l0xx_hal_gpio.c | 532 + .../Src/stm32l0xx_hal_i2c.c | 6794 +++++++++ .../Src/stm32l0xx_hal_i2c_ex.c | 369 + .../Src/stm32l0xx_hal_pwr.c | 733 + .../Src/stm32l0xx_hal_pwr_ex.c | 184 + .../Src/stm32l0xx_hal_rcc.c | 1504 ++ .../Src/stm32l0xx_hal_rcc_ex.c | 1214 ++ .../Src/stm32l0xx_hal_tim.c | 7187 +++++++++ .../Src/stm32l0xx_hal_tim_ex.c | 427 + .../Src/stm32l0xx_hal_uart.c | 4161 ++++++ .../Src/stm32l0xx_hal_uart_ex.c | 842 ++ fw_hal/STM32L031G6UX_FLASH.ld | 186 + fw_hal/iaq_wired_sensor_hal Debug.cfg | 42 + fw_hal/iaq_wired_sensor_hal Debug.launch | 94 + fw_hal/iaq_wired_sensor_hal.ioc | 167 + 207 files changed, 109028 insertions(+) create mode 100644 fw_hal/.cproject create mode 100644 fw_hal/.mxproject create mode 100644 fw_hal/.project create mode 100644 fw_hal/.settings/org.eclipse.cdt.core.prefs create mode 100644 fw_hal/.settings/stm32cubeide.project.prefs create mode 100644 fw_hal/Core/Inc/config.h create mode 100644 fw_hal/Core/Inc/crc8.h create mode 100644 fw_hal/Core/Inc/i2c.h create mode 100644 fw_hal/Core/Inc/main.h create mode 100644 fw_hal/Core/Inc/modbus.h create mode 100644 fw_hal/Core/Inc/rgb_led.h create mode 100644 fw_hal/Core/Inc/scd4x.h create mode 100644 fw_hal/Core/Inc/sht4x.h create mode 100644 fw_hal/Core/Inc/sps30.h create mode 100644 fw_hal/Core/Inc/stm32l0xx_hal_conf.h create mode 100644 fw_hal/Core/Inc/stm32l0xx_it.h create mode 100644 fw_hal/Core/Src/config.c create mode 100644 fw_hal/Core/Src/crc8.c create mode 100644 fw_hal/Core/Src/i2c.c create mode 100644 fw_hal/Core/Src/main.c create mode 100644 fw_hal/Core/Src/modbus.c create mode 100644 fw_hal/Core/Src/rgb_led.c create mode 100644 fw_hal/Core/Src/scd4x.c create mode 100644 fw_hal/Core/Src/sht4x.c create mode 100644 fw_hal/Core/Src/sps30.c create mode 100644 fw_hal/Core/Src/stm32l0xx_hal_msp.c create mode 100644 fw_hal/Core/Src/stm32l0xx_it.c create mode 100644 fw_hal/Core/Src/syscalls.c create mode 100644 fw_hal/Core/Src/sysmem.c create mode 100644 fw_hal/Core/Src/system_stm32l0xx.c create mode 100644 fw_hal/Core/Startup/startup_stm32l031g6ux.s create mode 100644 fw_hal/Debug/Core/Src/config.d create mode 100644 fw_hal/Debug/Core/Src/config.o create mode 100644 fw_hal/Debug/Core/Src/config.su create mode 100644 fw_hal/Debug/Core/Src/crc8.d create mode 100644 fw_hal/Debug/Core/Src/crc8.o create mode 100644 fw_hal/Debug/Core/Src/crc8.su create mode 100644 fw_hal/Debug/Core/Src/i2c.d create mode 100644 fw_hal/Debug/Core/Src/i2c.o create mode 100644 fw_hal/Debug/Core/Src/i2c.su create mode 100644 fw_hal/Debug/Core/Src/main.d create mode 100644 fw_hal/Debug/Core/Src/main.o create mode 100644 fw_hal/Debug/Core/Src/main.su create mode 100644 fw_hal/Debug/Core/Src/modbus.d create mode 100644 fw_hal/Debug/Core/Src/modbus.o create mode 100644 fw_hal/Debug/Core/Src/modbus.su create mode 100644 fw_hal/Debug/Core/Src/rgb_led.d create mode 100644 fw_hal/Debug/Core/Src/rgb_led.o create mode 100644 fw_hal/Debug/Core/Src/rgb_led.su create mode 100644 fw_hal/Debug/Core/Src/scd4x.d create mode 100644 fw_hal/Debug/Core/Src/scd4x.o create mode 100644 fw_hal/Debug/Core/Src/scd4x.su create mode 100644 fw_hal/Debug/Core/Src/sht4x.d create mode 100644 fw_hal/Debug/Core/Src/sht4x.o create mode 100644 fw_hal/Debug/Core/Src/sht4x.su create mode 100644 fw_hal/Debug/Core/Src/sps30.d create mode 100644 fw_hal/Debug/Core/Src/sps30.o create mode 100644 fw_hal/Debug/Core/Src/sps30.su create mode 100644 fw_hal/Debug/Core/Src/stm32l0xx_hal_msp.d create mode 100644 fw_hal/Debug/Core/Src/stm32l0xx_hal_msp.o create mode 100644 fw_hal/Debug/Core/Src/stm32l0xx_hal_msp.su create mode 100644 fw_hal/Debug/Core/Src/stm32l0xx_it.d create mode 100644 fw_hal/Debug/Core/Src/stm32l0xx_it.o create mode 100644 fw_hal/Debug/Core/Src/stm32l0xx_it.su create mode 100644 fw_hal/Debug/Core/Src/subdir.mk create mode 100644 fw_hal/Debug/Core/Src/syscalls.d create mode 100644 fw_hal/Debug/Core/Src/syscalls.o create mode 100644 fw_hal/Debug/Core/Src/syscalls.su create mode 100644 fw_hal/Debug/Core/Src/sysmem.d create mode 100644 fw_hal/Debug/Core/Src/sysmem.o create mode 100644 fw_hal/Debug/Core/Src/sysmem.su create mode 100644 fw_hal/Debug/Core/Src/system_stm32l0xx.d create mode 100644 fw_hal/Debug/Core/Src/system_stm32l0xx.o create mode 100644 fw_hal/Debug/Core/Src/system_stm32l0xx.su create mode 100644 fw_hal/Debug/Core/Startup/startup_stm32l031g6ux.d create mode 100644 fw_hal/Debug/Core/Startup/startup_stm32l031g6ux.o create mode 100644 fw_hal/Debug/Core/Startup/subdir.mk create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.d create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.su create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.d create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.su create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.d create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.su create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.d create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.su create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.d create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.su create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.d create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.su create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.d create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.su create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.d create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.su create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.d create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.su create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.d create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.su create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.d create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.su create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.d create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.su create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.d create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.su create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.d create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.su create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.d create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.su create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.d create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.su create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.d create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.su create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.d create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.su create mode 100644 fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/subdir.mk create mode 100755 fw_hal/Debug/iaq_wired_sensor_hal.bin create mode 100755 fw_hal/Debug/iaq_wired_sensor_hal.elf create mode 100644 fw_hal/Debug/iaq_wired_sensor_hal.list create mode 100644 fw_hal/Debug/iaq_wired_sensor_hal.map create mode 100644 fw_hal/Debug/makefile create mode 100644 fw_hal/Debug/objects.list create mode 100644 fw_hal/Debug/objects.mk create mode 100644 fw_hal/Debug/sources.mk create mode 100644 fw_hal/Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h create mode 100644 fw_hal/Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h create mode 100644 fw_hal/Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h create mode 100644 fw_hal/Drivers/CMSIS/Include/cmsis_armcc.h create mode 100644 fw_hal/Drivers/CMSIS/Include/cmsis_armclang.h create mode 100644 fw_hal/Drivers/CMSIS/Include/cmsis_compiler.h create mode 100644 fw_hal/Drivers/CMSIS/Include/cmsis_gcc.h create mode 100644 fw_hal/Drivers/CMSIS/Include/cmsis_iccarm.h create mode 100644 fw_hal/Drivers/CMSIS/Include/cmsis_version.h create mode 100644 fw_hal/Drivers/CMSIS/Include/core_armv8mbl.h create mode 100644 fw_hal/Drivers/CMSIS/Include/core_armv8mml.h create mode 100644 fw_hal/Drivers/CMSIS/Include/core_cm0.h create mode 100644 fw_hal/Drivers/CMSIS/Include/core_cm0plus.h create mode 100644 fw_hal/Drivers/CMSIS/Include/core_cm1.h create mode 100644 fw_hal/Drivers/CMSIS/Include/core_cm23.h create mode 100644 fw_hal/Drivers/CMSIS/Include/core_cm3.h create mode 100644 fw_hal/Drivers/CMSIS/Include/core_cm33.h create mode 100644 fw_hal/Drivers/CMSIS/Include/core_cm4.h create mode 100644 fw_hal/Drivers/CMSIS/Include/core_cm7.h create mode 100644 fw_hal/Drivers/CMSIS/Include/core_sc000.h create mode 100644 fw_hal/Drivers/CMSIS/Include/core_sc300.h create mode 100644 fw_hal/Drivers/CMSIS/Include/mpu_armv7.h create mode 100644 fw_hal/Drivers/CMSIS/Include/mpu_armv8.h create mode 100644 fw_hal/Drivers/CMSIS/Include/tz_context.h create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.c create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.c create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.c create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.c create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.c create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.c create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.c create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.c create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.c create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.c create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.c create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.c create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c create mode 100644 fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.c create mode 100644 fw_hal/STM32L031G6UX_FLASH.ld create mode 100644 fw_hal/iaq_wired_sensor_hal Debug.cfg create mode 100644 fw_hal/iaq_wired_sensor_hal Debug.launch create mode 100644 fw_hal/iaq_wired_sensor_hal.ioc diff --git a/fw_hal/.cproject b/fw_hal/.cproject new file mode 100644 index 0000000..bd608b0 --- /dev/null +++ b/fw_hal/.cproject @@ -0,0 +1,178 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/fw_hal/.mxproject b/fw_hal/.mxproject new file mode 100644 index 0000000..d51d0fe --- /dev/null +++ b/fw_hal/.mxproject @@ -0,0 +1,25 @@ +[PreviousLibFiles] +LibFiles=Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h;Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma_ex.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.c;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h;Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma_ex.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h;Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h;Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h;Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h;Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h;Drivers/CMSIS/Device/ST/STM32L0xx/Source/Templates/system_stm32l0xx.c;Drivers/CMSIS/Include/cmsis_iccarm.h;Drivers/CMSIS/Include/cmsis_gcc.h;Drivers/CMSIS/Include/core_sc000.h;Drivers/CMSIS/Include/cmsis_armclang.h;Drivers/CMSIS/Include/core_cm1.h;Drivers/CMSIS/Include/core_armv8mbl.h;Drivers/CMSIS/Include/core_cm33.h;Drivers/CMSIS/Include/cmsis_version.h;Drivers/CMSIS/Include/cmsis_compiler.h;Drivers/CMSIS/Include/mpu_armv7.h;Drivers/CMSIS/Include/mpu_armv8.h;Drivers/CMSIS/Include/core_cm0plus.h;Drivers/CMSIS/Include/core_sc300.h;Drivers/CMSIS/Include/tz_context.h;Drivers/CMSIS/Include/core_cm0.h;Drivers/CMSIS/Include/core_cm7.h;Drivers/CMSIS/Include/core_cm23.h;Drivers/CMSIS/Include/core_armv8mml.h;Drivers/CMSIS/Include/core_cm4.h;Drivers/CMSIS/Include/cmsis_armcc.h;Drivers/CMSIS/Include/core_cm3.h; + +[PreviousUsedCubeIDEFiles] +SourceFiles=Core/Src/main.c;Core/Src/stm32l0xx_it.c;Core/Src/stm32l0xx_hal_msp.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.c;Drivers/CMSIS/Device/ST/STM32L0xx/Source/Templates/system_stm32l0xx.c;Core/Src/system_stm32l0xx.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c;Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.c;Drivers/CMSIS/Device/ST/STM32L0xx/Source/Templates/system_stm32l0xx.c;Core/Src/system_stm32l0xx.c;;; +HeaderPath=Drivers/STM32L0xx_HAL_Driver/Inc;Drivers/STM32L0xx_HAL_Driver/Inc/Legacy;Drivers/CMSIS/Device/ST/STM32L0xx/Include;Drivers/CMSIS/Include;Core/Inc; +CDefines=USE_HAL_DRIVER;STM32L031xx;USE_HAL_DRIVER;USE_HAL_DRIVER; + +[PreviousGenFiles] +AdvancedFolderStructure=true +HeaderFileListSize=3 +HeaderFiles#0=/home/mrs/Personal/HDIoT/Smart_Household/iaq_wired_sensor/fw_hal/Core/Inc/stm32l0xx_it.h +HeaderFiles#1=/home/mrs/Personal/HDIoT/Smart_Household/iaq_wired_sensor/fw_hal/Core/Inc/stm32l0xx_hal_conf.h +HeaderFiles#2=/home/mrs/Personal/HDIoT/Smart_Household/iaq_wired_sensor/fw_hal/Core/Inc/main.h +HeaderFolderListSize=1 +HeaderPath#0=/home/mrs/Personal/HDIoT/Smart_Household/iaq_wired_sensor/fw_hal/Core/Inc +HeaderFiles=; +SourceFileListSize=3 +SourceFiles#0=/home/mrs/Personal/HDIoT/Smart_Household/iaq_wired_sensor/fw_hal/Core/Src/stm32l0xx_it.c +SourceFiles#1=/home/mrs/Personal/HDIoT/Smart_Household/iaq_wired_sensor/fw_hal/Core/Src/stm32l0xx_hal_msp.c +SourceFiles#2=/home/mrs/Personal/HDIoT/Smart_Household/iaq_wired_sensor/fw_hal/Core/Src/main.c +SourceFolderListSize=1 +SourcePath#0=/home/mrs/Personal/HDIoT/Smart_Household/iaq_wired_sensor/fw_hal/Core/Src +SourceFiles=; + diff --git a/fw_hal/.project b/fw_hal/.project new file mode 100644 index 0000000..16977c0 --- /dev/null +++ b/fw_hal/.project @@ -0,0 +1,32 @@ + + + iaq_wired_sensor_hal + + + + + + 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/fw_hal/.settings/org.eclipse.cdt.core.prefs b/fw_hal/.settings/org.eclipse.cdt.core.prefs new file mode 100644 index 0000000..c8ec5df --- /dev/null +++ b/fw_hal/.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/fw_hal/.settings/stm32cubeide.project.prefs b/fw_hal/.settings/stm32cubeide.project.prefs new file mode 100644 index 0000000..68de537 --- /dev/null +++ b/fw_hal/.settings/stm32cubeide.project.prefs @@ -0,0 +1,4 @@ +66BE74F758C12D739921AEA421D593D3=0 +8DF89ED150041C4CBC7CB9A9CAA90856=807411C90E25B050C1E13646B7FEB5AA +DC22A860405A8BF2F2C095E5B6529F12=807411C90E25B050C1E13646B7FEB5AA +eclipse.preferences.version=1 diff --git a/fw_hal/Core/Inc/config.h b/fw_hal/Core/Inc/config.h new file mode 100644 index 0000000..c512299 --- /dev/null +++ b/fw_hal/Core/Inc/config.h @@ -0,0 +1,145 @@ +/* + * config.h + * + * Created on: Sep 5, 2021 + * Author: david + */ + +#ifndef INC_CONFIG_H_ +#define INC_CONFIG_H_ + +/* TODO: add comments to everything */ + +/* EXAMPLE of USAGE */ +/* +config_t new_config; +new_config.led_co2_alert_limit1 = 1000; +new_config.led_co2_alert_limit2 = 2000; +new_config.led_on = 1; +new_config.modbus_addr = 0x11; +config_write(&new_config); + +config_t config; +config_read(&config); +*/ + +#include "stdint.h" +#include "stm32l0xx.h" +/* DESCRIPTION OF THE DATA STRUCTURE */ +/* + * Data are divided into two groups: + * A) DEVICE DESCRIPTION + * Can not be changed by the user. + * These data can be only read. + * These data are: + * * VENDOR NAME + * * PRODUCT CODE + * * PRODUCT NAME + * * REVISION + * * SERIAL NUMBER + * B) DEVICE CONFIGURATION + * Can be changed by the user. + * These data are: + * * MODBUS ADDRESS - Modbus Address of the device. Default is 254 + * * LED ON - Whether the CO2 Level Indication LED should be on or off + * * LED CO2 ALERT LIMIT 1 - CO2 Level when the LED color changes Green<->Yellow + * * LED CO2 ALERT LIMIT 2 - CO2 Level when the LED color changes Yellow<->Red + * + * Device description data can be accessed using direct readout from the memory + * Device configuration data can be accessed using config_t struct. + */ +#define CONFIG_DEFAULT_LED_ON 1 +#define CONFIG_DEFAULT_LED_BRIGHTNESS 100 /* TODO: set according to the timers when this will be implemented */ +#define CONFIG_DEFAULT_LED_ALERT1_LIMIT 1500 +#define CONFIG_DEFAULT_LED_ALERT2_LIMIT 3000 +#define CONFIG_DEFAULT_LED_SMOOTH 0 +#define CONFIG_DEFAULT_SCD4x_T_OFFSET 0 +#define CONFIG_DEFAULT_BAUDRATE_INDEX 0 + +#define CONFIG_MODBUS_ADDR_LENGTH 2 +#define CONFIG_BAUDRATE_INDEX_LENGTH 2 +#define CONFIG_LED_ON_LENGTH 2 +#define CONFIG_LED_BRIGHTNESS_LENGTH 2 +#define CONFIG_LED_SMOOTH_LENGTH 2 +#define CONFIG_LED_ALERT1_LENGTH 2 +#define CONFIG_LED_ALERT2_LENGTH 2 +#define CONFIG_LED_ALERT2_LENGTH 2 +#define CONFIG_SCD4x_T_OFFSET_LENGTH 2 +#define VENDOR_NAME_LENGTH 64 +#define PRODUCT_CODE_LENGTH 64 +#define PRODUCT_NAME_LENGTH 64 +#define REVISION_LENGTH 16 +#define SERIAL_NUMBER_LENGTH 64 + +#define EEPROM_EMPTY_BYTE 0x00 + +#define EEPROM_ADDR_START ((uint32_t)0x08080000) +#define EEPROM_ADDR_END ((uint32_t)0x080801FF) + +#define CONFIG_EEPROM_ADDR_MODBUS_ADDR EEPROM_ADDR_START +#define CONFIG_EEPROM_ADDR_BAUDRATE_INDEX (CONFIG_EEPROM_ADDR_MODBUS_ADDR + CONFIG_MODBUS_ADDR_LENGTH) +#define CONFIG_EEPROM_ADDR_LED_ON (CONFIG_EEPROM_ADDR_BAUDRATE_INDEX + CONFIG_BAUDRATE_INDEX_LENGTH) +#define CONFIG_EEPROM_ADDR_LED_BRIGHTNESS (CONFIG_EEPROM_ADDR_LED_ON + CONFIG_LED_ON_LENGTH) +#define CONFIG_EEPROM_ADDR_LED_SMOOTH (CONFIG_EEPROM_ADDR_LED_BRIGHTNESS + CONFIG_LED_BRIGHTNESS_LENGTH) +#define CONFIG_EEPROM_ADDR_LED_ALERT1 (CONFIG_EEPROM_ADDR_LED_SMOOTH + CONFIG_LED_SMOOTH_LENGTH) +#define CONFIG_EEPROM_ADDR_LED_ALERT2 (CONFIG_EEPROM_ADDR_LED_ALERT1 + CONFIG_LED_ALERT1_LENGTH) +#define CONFIG_EEPROM_ADDR_SCD4x_T_OFFSET (CONFIG_EEPROM_ADDR_LED_ALERT2 + CONFIG_LED_ALERT2_LENGTH) + +#define CONFIG_EEPROM_ADDR_VENDOR_NAME (CONFIG_EEPROM_ADDR_SCD4x_T_OFFSET + CONFIG_SCD4x_T_OFFSET_LENGTH) +#define CONFIG_EEPROM_ADDR_PRODUCT_CODE (CONFIG_EEPROM_ADDR_VENDOR_NAME + VENDOR_NAME_LENGTH) +#define CONFIG_EEPROM_ADDR_PRODUCT_NAME (CONFIG_EEPROM_ADDR_PRODUCT_CODE + PRODUCT_CODE_LENGTH) +#define CONFIG_EEPROM_ADDR_REVISION (CONFIG_EEPROM_ADDR_PRODUCT_NAME + PRODUCT_NAME_LENGTH) +#define CONFIG_EEPROM_ADDR_SERIAL_NUMBER (CONFIG_EEPROM_ADDR_REVISION + REVISION_LENGTH) + +#define FLASH_PEKEY1 ((uint32_t)0x89ABCDEF) +#define FLASH_PEKEY2 ((uint32_t)0x02030405) + +#define CONFIG_OK 0 +#define CONFIG_ERROR -1 + +#define EEPROM_OK 0 +#define EEPROM_ERROR -1 +#define EEPROM_UNLOCK_ERROR -2 +#define EEPROM_LOCK_ERROR -3 +#define EEPROM_WRITE_ERROR -4 +#define EEPROM_ADDR_ERROR -5 + +#define SYSTICK_FREQ_HZ 12000000 +#define EEPROM_TIMEOUT_MAX_MS_INV 200 + +/* + * Variables + */ + +extern const uint32_t config_baudrates[]; +extern const uint8_t config_baudrates_length; + +/* + * Type definitions + */ + +typedef struct +{ + /* LED CONFIG */ + uint8_t led_on; + uint16_t led_brightness; + uint8_t led_smooth; + uint16_t led_co2_alert_limit1; + uint16_t led_co2_alert_limit2; + + /* SCD4x Temperature sensor offset */ + int16_t scd4x_t_offset; + + /* MODBUS CONFIG */ + uint16_t modbus_addr; + uint32_t baudrate_index; +} config_t; + + +/* const uint32_t baudrates [] = {19200, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 76800, 115200}; */ + +int8_t config_read(config_t *config); +int8_t config_write(config_t *config); + +#endif /* INC_CONFIG_H_ */ + diff --git a/fw_hal/Core/Inc/crc8.h b/fw_hal/Core/Inc/crc8.h new file mode 100644 index 0000000..e799f7e --- /dev/null +++ b/fw_hal/Core/Inc/crc8.h @@ -0,0 +1,22 @@ +/* + * crc.h + * + * Created on: Jun 9, 2021 + * Author: user + */ + +#ifndef INC_CRC8_H_ +#define INC_CRC8_H_ + +#include "stdint.h" + +/* + * Definitions & macros + */ + +#define CRC8_POLYNOMIAL 0x31 +#define CRC8_INIT 0xFF + +uint8_t crc8_calculate(const uint8_t *data, uint16_t count); + +#endif /* INC_CRC8_H_ */ diff --git a/fw_hal/Core/Inc/i2c.h b/fw_hal/Core/Inc/i2c.h new file mode 100644 index 0000000..f67481d --- /dev/null +++ b/fw_hal/Core/Inc/i2c.h @@ -0,0 +1,52 @@ +/* + * i2c.h + * + * Created on: Jun 8, 2021 + * Author: user + */ + +#ifndef INC_I2C_H_ +#define INC_I2C_H_ + +#include "stdint.h" +#include "main.h" +/*#include "stm32l0xx_hal_i2c.h"*/ +/*#include "stm32l0xx_ll_i2c.h"*/ + +/* + * Defines & macros + */ + +#define NULL 0 + +/* + * Return values for I2C functions + */ + +#define I2C_OK 0 +#define I2C_ERROR -1 // generic error +#define I2C_ERROR_NACK -2 // NACK was received during transfer +#define I2C_ERROR_TX_INCOMPLETE -3 // number of TXed bytes != buffer length +#define I2C_ERROR_RX_INCOMPLETE -4 // number of RXed bytes != buffer length + +/* + * Type definitions + */ + +/* +typedef struct { + I2C_HandleTypeDef *i2c; +} i2c_context_t; +*/ + + +/* + * Function declarations + */ + +int8_t i2c_init(I2C_HandleTypeDef *context, uint16_t i2c_timeout); +int8_t i2c_transmit(uint8_t address, uint8_t *buffer, uint16_t len); +int8_t i2c_receive(uint8_t address, uint8_t *buffer, uint16_t len); +int8_t i2c_transmit_receive(uint8_t address, uint16_t tx_buffer, uint16_t tx_len, uint8_t *rx_buffer, uint16_t rx_len); + +#endif /* INC_I2C_H_ */ diff --git a/fw_hal/Core/Inc/main.h b/fw_hal/Core/Inc/main.h new file mode 100644 index 0000000..df5399a --- /dev/null +++ b/fw_hal/Core/Inc/main.h @@ -0,0 +1,87 @@ +/* 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) 2021 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __MAIN_H +#define __MAIN_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "i2c.h" +#include "scd4x.h" +#include "sht4x.h" +#include "sps30.h" +#include "modbus.h" +#include "config.h" +#include "rgb_led.h" +/* 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 */ + +void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); + +/* Exported functions prototypes ---------------------------------------------*/ +void Error_Handler(void); + +/* USER CODE BEGIN EFP */ +int8_t uart_disable_interrupts(void); +int8_t uart_enable_interrupts(void); +/* USER CODE END EFP */ + +/* Private defines -----------------------------------------------------------*/ +/* USER CODE BEGIN Private defines */ +#define MEASUREMENT_PERIOD_MS 600000 + +extern uint16_t usart2_rx_message_index; +extern uint16_t usart2_rx_message_len; +extern uint8_t usart2_rx_done; +extern uint8_t usart2_rx_message_too_long; + +extern uint8_t tim21_elapsed_period; +/* USER CODE END Private defines */ + +#ifdef __cplusplus +} +#endif + +#endif /* __MAIN_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/fw_hal/Core/Inc/modbus.h b/fw_hal/Core/Inc/modbus.h new file mode 100644 index 0000000..a215328 --- /dev/null +++ b/fw_hal/Core/Inc/modbus.h @@ -0,0 +1,181 @@ +/* + * modbus.h + * + * Created on: Jul 18, 2021 + * Author: user + * + * Modbus slave RTU library (does NOT support ASCII and TCP) + * + * Useful links: + * https://www.picotech.com/library/oscilloscopes/modbus-serial-protocol-decoding + * https://ipc2u.com/articles/knowledge-base/modbus-rtu-made-simple-with-detailed-descriptions-and-examples/ + * https://modbus.org/docs/Modbus_over_serial_line_V1_02.pdf + * https://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b.pdf + * + * Note that byte order is big endian. + * + * USAGE: + * + * 1) Implement functions modbus_callback_function() and modbus_uart_transmit_function() + * - modbus_uart_transmit_function() sends data via UART + * - modbus_callback_function() does the real work: read sensors, set outputs... + * note that when filling buffers (e.g. input_registers[]) user must + * ensure that all data is big-endian + * These functions are implementation-specific. + * 2) Set device address (variable modbus_device_address); you can do this either + * - setting modbus_device_address directly (modbus.h needs to be included, duh) + * - using modbus_set_device_address(uint8_t address) function + * Or you can leave address as-is (MODBUS_DEFAULT_SLAVE_ADDRESS) and set it via + * Modbus during runtime + * 3) Call modbus_process_msg() after message reception; you need to observe Modbus RTU timing: + * - pauses between chars in frame are less or equal to 1.5 char + * - pauses between frames are at least 3.5 chars (of silence) + * For more information see section 2.5.1.1 (MODBUS Message RTU Framing) + * in "MODBUS over Serial Line: Specification and Implementation Guide" + * + */ + +#ifndef SRC_MODBUS_H_ +#define SRC_MODBUS_H_ + +#include "stdint.h" + +/* + * Defines & macros + */ + +#define MODBUS_BROADCAST_ADDR 0 +#define MODBUS_DEFAULT_SLAVE_ADDRESS 254 /* 255 may be used for bridge device */ +/* minimal frame length is 4 bytes: 1 B slave address, 1 B function code, 2 B CRC */ +#define MODBUS_MINIMAL_FRAME_LEN 4 +#define MODBUS_MAX_RTU_FRAME_SIZE 256 +#define MODBUS_BUFFER_SIZE MODBUS_MAX_RTU_FRAME_SIZE /* alias */ +#define MODBUS_ERROR_FLAG 0x80 +#define MODBUS_MAX_REGISTERS 125 + +/* + * Return values + */ + +#define MODBUS_OK 0 +#define MODBUS_ERROR -1 // generic error +#define MODBUS_ERROR_CRC -2 // checksum failed +#define MODBUS_ERROR_FRAME_INVALID -3 // invalid frame format / length +#define MODBUS_ERROR_OUT_OF_BOUNDS -4 // requested register is out of bounds +#define MODBUS_ERROR_FUNCTION_NOT_IMPLEMENTED -5 // function not implemented in callback +#define MODBUS_ERROR_REGISTER_NOT_IMPLEMENTED -6 // register not implemented in callback + +/* + * Data types + */ + +/* Public functions codes (Modbus Application protocol specification, section 5.1) */ +typedef enum { + /* single bit access functions */ + MODBUS_READ_COILS = 1, + MODBUS_READ_DO = 1, // alias + MODBUS_READ_DISCRETE_INPUTS = 2, + MODBUS_READ_DI = 2, // alias + MODBUS_WRITE_SINGLE_COIL = 5, + MODBUS_WRITE_SINGLE_DO = 5, // alias + MODBUS_WRITE_MULTIPLE_COILS = 15, + MODBUS_WRITE_MULTIPLE_DO = 15, // alias + /* 16-bit access functions */ + MODBUS_READ_HOLDING_REGISTERS = 3, + MODBUS_READ_AO = 3, // alias + MODBUS_READ_INPUT_REGISTERS = 4, + MODBUS_READ_AI = 4, // alias + MODBUS_WRITE_SINGLE_REGISTER = 6, + MODBUS_WRITE_SINGLE_AO = 6, // alias + MODBUS_WRITE_MULTIPLE_REGISTERS = 16, + MODBUS_WRITE_MULTIPLE_AO = 16, // alias + MODBUS_MASK_WRITE_REGISTER = 22, + MODBUS_READ_WRITE_MULTIPLE_REGISTERS = 23, + MODBUS_READ_FIFO_QUEUE = 24, + /* file record access */ + MODBUS_READ_FILE_RECORD = 20, + MODBUS_WRITE_FILE_RECORD = 21, + /* diagnostics */ + MODBUS_READ_EXCEPTION_STATUS = 7, + MODBUS_DIAGNOSTIC = 8, /* sub codes: 00-18,20 */ + MODBUS_GET_COM_EVENT_COUNTER = 11, + MODBUS_GET_COM_EVENT_LOG = 12, + MODBUS_REPORT_SLAVE_ID = 17, + MODBUS_READ_DEVICE_IDENTIFICATION = 43, /* sub codes: 14 */ +} modbus_function_code_t; + +typedef enum { + MODBUS_EXCEPTION_ILLEGAL_FUNCTION = 1, + MODBUS_EXCEPTION_ILLEGAL_DATA_ADDRESS = 2, + MODBUS_EXCEPTION_ILLEGAL_REGISTER_QUANTITY = 2, + MODBUS_EXCEPTION_ILLEGAL_DATA_VALUE = 3, + MODBUS_EXCEPTION_SLAVE_DEVICE_FAILURE = 4, + MODBUS_EXCEPTION_ACKNOWLEDGE = 5, + MODBUS_EXCEPTION_SLAVE_DEVICE_BUSY = 6, + MODBUS_EXCEPTION_MEMORY_PARITY_ERROR = 8, + MODBUS_EXCEPTION_GATEWAY_PATH_UNAVAILABLE = 10, + MODBUS_EXCEPTION_GATEWAY_TARGET_DEVICE_FAILED_TO_RESPOND = 11, +} modbus_exception_code_t; + +typedef struct { + uint8_t exception_code; +} exception_t; + +typedef struct { + modbus_function_code_t function_code : 8; + uint16_t register_address; // e.g. first register of A0: 0 + uint16_t register_number; // e.g. first register of A0: 40001 + uint8_t register_count; // number of registers to be read/written + + exception_t exception; + + union { + uint8_t buffer8b[MODBUS_MAX_RTU_FRAME_SIZE]; + uint16_t buffer16b[MODBUS_MAX_RTU_FRAME_SIZE/2]; + uint16_t input_registers[MODBUS_MAX_REGISTERS]; + uint16_t holding_registers[MODBUS_MAX_REGISTERS]; + int16_t input_registers_signed[MODBUS_MAX_REGISTERS]; + int16_t holding_registers_signed[MODBUS_MAX_REGISTERS]; + }; +} modbus_transaction_t; + +typedef enum { + MODBUS_DO_START_NUMBER = 1, // Discrete output coils + MODBUS_DO_END_NUMBER = 9999, + MODBUS_DI_START_NUMBER = 10001, // Discrete input contacts + MODBUS_DI_END_NUMBER = 19999, + MODBUS_AI_START_NUMBER = 30001, // Analog input registers + MODBUS_AI_END_NUMBER = 39999, + MODBUS_AO_START_NUMBER = 40001, // Analog output (holding registers) + MODBUS_AO_END_NUMBER = 49999 +} modbus_register_number_t; + + +/* + * Global variables + */ + +/* device address: declared in modbus.c */ +extern uint8_t modbus_slave_address; + +/* shared modbus buffer; defined in modbus.c; may be used elsewhere in code */ +extern uint8_t modbus_buffer[]; + +/* + * Function prototypes + */ + +/* process message: should be called in when modbus message was received (e.g. in main.c) + * modbus_process_msg() may call following functions: + * - modbus_callback_function() if data readout is requested + * - modbus_uart_transmit_function() if response is required + * Both functions have to be implemented by user. + */ +int8_t modbus_slave_process_msg(const uint8_t *buffer, int len); +int8_t modbus_slave_set_address(uint8_t address); +/* modbus callback function type - should be implemented by user (e.g. in main.c) */ +int8_t modbus_slave_callback(modbus_transaction_t *transaction); +/* UART transmit function type - should be implemented by user (e.g. in main.c) */ +int8_t modbus_transmit_function(uint8_t *buffer, uint16_t data_len); + +#endif /* SRC_MODBUS_H_ */ diff --git a/fw_hal/Core/Inc/rgb_led.h b/fw_hal/Core/Inc/rgb_led.h new file mode 100644 index 0000000..fcecbcd --- /dev/null +++ b/fw_hal/Core/Inc/rgb_led.h @@ -0,0 +1,28 @@ +/* + * rgb_led.h + * + * Created on: Nov 4, 2021 + * Author: david + */ + +#ifndef INC_RGB_LED_H_ +#define INC_RGB_LED_H_ + +#include "stdint.h" + +/* TODO: Add more colors? */ +typedef enum { + OFF = 0, + WHITE = 1, + RED = 2, + GREEN = 3, + BLUE = 4, + YELLOW = 5, + MAGENTA = 6, + CYAN = 7 +} rgb_led_color_t; + +int8_t rgb_led_set_duty_cycles (uint16_t r_duty, uint16_t g_duty, uint16_t b_duty); +int8_t rgb_led_set_color (rgb_led_color_t color); + +#endif /* INC_RGB_LED_H_ */ diff --git a/fw_hal/Core/Inc/scd4x.h b/fw_hal/Core/Inc/scd4x.h new file mode 100644 index 0000000..21bd1c6 --- /dev/null +++ b/fw_hal/Core/Inc/scd4x.h @@ -0,0 +1,55 @@ +/* + * sht4x.h + * + * Created on: Jun 8, 2021 + * Author: user + */ + +#ifndef INC_SCD4X_H_ +#define INC_SCD4X_H_ + +#include "stdint.h" +#include "i2c.h" +#include "crc8.h" + +/* + * Defines & macros + */ + +#define SCD4X_I2C_ADDRESS 0x62 + +/* + * Return values + */ + +#define SCD4X_OK 0 +#define SCD4X_ERROR -1 // generic error +#define SCD4X_CRC8_ERROR -2 // checksum failed + +/* + * Data types + */ + +typedef enum { + SCD4X_START_PERIODIC_MEASUREMENT = 0x21B1, + SCD4X_READ_MEASUREMENT = 0xEC05, + SCD4X_STOP_PERIODIC_MEASUREMENT = 0x3F86, + SCD4X_GET_DATA_READY_STATUS = 0xe4b8, + SCD4X_PERFORM_FACTORY_RESET = 0x3632 +} scd4x_cmd_t; + +/* + * Function prototypes + */ + +int8_t scd4x_send_cmd(scd4x_cmd_t cmd); +int8_t scd4x_read_data(uint8_t *buffer, int len); + +int8_t scd4x_start_periodic_measurement( void ); +int8_t scd4x_stop_periodic_measurement( void ); + +int8_t scd4x_perform_factory_reset( void ); + +int8_t scd4x_read_measurement(uint16_t * co2, int16_t *temperature, uint16_t *relative_humidity); + +#endif /* INC_SCD4X_H_ */ diff --git a/fw_hal/Core/Inc/sht4x.h b/fw_hal/Core/Inc/sht4x.h new file mode 100644 index 0000000..7d5ca67 --- /dev/null +++ b/fw_hal/Core/Inc/sht4x.h @@ -0,0 +1,55 @@ +/* + * sht4x.h + * + * Created on: Jun 8, 2021 + * Author: user + */ + +#ifndef INC_SHT4X_H_ +#define INC_SHT4X_H_ + +#include "stdint.h" +#include "i2c.h" +#include "crc8.h" + +/* + * Defines & macros + */ + +#define SHT4X_I2C_ADDRESS 0x44 + +/* + * Return values + */ + +#define SHT4X_OK 0 +#define SHT4X_ERROR -1 // generic error +#define SHT4X_CRC8_ERROR -2 // checksum failed + +/* + * Data types + */ + +typedef enum { + SHT4X_START_MEAS_HIGH_PRECISION = 0xFD, + SHT4X_START_MEAS_MEDIUM_PRECISION = 0xF6, + SHT4X_START_MEAS_LOW_PRECISION = 0xE0, + SHT4X_READ_SERIAL = 0x89, + SHT4X_SOFT_RESET = 0x94, + SHT4X_HEATER_200_mW_1_s = 0x39, + SHT4X_HEATER_200_mW_01_s = 0x32, + SHT4X_HEATER_110_mW_1_s = 0x2F, + SHT4X_HEATER_110_mW_01_s = 0x24, + SHT4X_HEATER_20_mW_1_s = 0x1E, + SHT4X_HEATER_20_mW_01_s = 0x15 +} sht4x_cmd_t; + +/* + * Function prototypes + */ + +int8_t sht4x_send_cmd(sht4x_cmd_t cmd); +int8_t sht4x_read_data(uint8_t *buffer, int len); +int8_t sht4x_measure(int16_t *temperature, uint16_t *relative_humidity); + +#endif /* INC_SHT4X_H_ */ diff --git a/fw_hal/Core/Inc/sps30.h b/fw_hal/Core/Inc/sps30.h new file mode 100644 index 0000000..19db583 --- /dev/null +++ b/fw_hal/Core/Inc/sps30.h @@ -0,0 +1,76 @@ +/* + * sps30.h + * + * Created on: Jul 18, 2021 + * Author: mrs + */ + +#ifndef INC_SPS30_H_ +#define INC_SPS30_H_ + +#include "stdint.h" +#include "i2c.h" +#include "crc8.h" + +/* + * Defines & macros + */ + +#define SPS30_I2C_ADDRESS 0x69 + +/* + * Return values + */ + +#define SPS30_OK 0 +#define SPS30_ERROR -1 // generic error +#define SPS30_CRC8_ERROR -2 // checksum failed + +/* + * Data types + */ + +typedef enum { + SPS30_START_MEASUREMENT = 0x0010, + SPS30_STOP_MEASUREMENT = 0x0104, + SPS30_READ_DATA_READY_FLAG = 0x0202, + SPS30_READ_MEASURED_VALUES = 0x0300, + SPS30_SLEEP = 0x1001, + SPS30_WAKE_UP = 0x1103, + SPS30_START_FAN_CLEANING = 0x5607, + SPS30_READ_AUTO_CLEANING_INTERVAL = 0x8004, + SPS30_WRITE_AUTO_CLEANING_INTERVAL = 0x8004, + SPS30_READ_PRODUCT_TYPE = 0xD002, + SPS30_READ_SERIAL_NUMBER = 0xD033, + SPS30_READ_VERSION = 0xD100, + SPS30_READ_DEVICE_STATUS_REGISTER = 0xD206, + SPS30_CLEAR_DEVICE_STATUS_REGISTER = 0xD210, + SPS30_RESET = 0xD304 + +} sps30_cmd_t; + +typedef enum { + SPS30_FLOAT_FORMAT = 0x03, + SPS30_UINT16_FORMAT = 0x05 +} sps30_data_format; + +int8_t sps30_send_cmd(sps30_cmd_t cmd); + +int8_t sps30_start_measurement( void ); +int8_t sps30_stop_measurement( void ); +int8_t sps30_read_measured_values(uint16_t *measured_values, uint8_t measured_values_len); + +int8_t sps30_sleep( void ); +int8_t sps30_wake_up( void ); + +int8_t sps30_start_fan_cleaning( void ); + +int8_t sps30_reset( void ); + +int8_t sps30_read_status_register ( void ); + +int8_t sps30_read_firmware_version ( uint8_t * fw_ver_hi, uint8_t * fw_ver_lo ); + +uint8_t calculate_crc(uint8_t data[2]); + +#endif /* INC_SPS30_H_ */ diff --git a/fw_hal/Core/Inc/stm32l0xx_hal_conf.h b/fw_hal/Core/Inc/stm32l0xx_hal_conf.h new file mode 100644 index 0000000..62149a6 --- /dev/null +++ b/fw_hal/Core/Inc/stm32l0xx_hal_conf.h @@ -0,0 +1,330 @@ +/** + ****************************************************************************** + * @file stm32l0xx_hal_conf.h + * @author MCD Application Team + * @brief HAL configuration template file. + * This file should be copied to the application folder and renamed + * to stm32l0xx_hal_conf.h. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L0xx_HAL_CONF_H +#define __STM32L0xx_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_FIREWALL_MODULE_ENABLED */ +/*#define HAL_I2S_MODULE_ENABLED */ +/*#define HAL_IWDG_MODULE_ENABLED */ +/*#define HAL_LCD_MODULE_ENABLED */ +/*#define HAL_LPTIM_MODULE_ENABLED */ +/*#define HAL_RNG_MODULE_ENABLED */ +/*#define HAL_RTC_MODULE_ENABLED */ +/*#define HAL_SPI_MODULE_ENABLED */ +#define HAL_TIM_MODULE_ENABLED +/*#define HAL_TSC_MODULE_ENABLED */ +#define HAL_UART_MODULE_ENABLED +/*#define HAL_USART_MODULE_ENABLED */ +/*#define HAL_IRDA_MODULE_ENABLED */ +/*#define HAL_SMARTCARD_MODULE_ENABLED */ +/*#define HAL_SMBUS_MODULE_ENABLED */ +/*#define HAL_WWDG_MODULE_ENABLED */ +/*#define HAL_PCD_MODULE_ENABLED */ +#define HAL_GPIO_MODULE_ENABLED +#define HAL_EXTI_MODULE_ENABLED +#define HAL_DMA_MODULE_ENABLED +#define HAL_I2C_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)8000000U) /*!< Value of the External oscillator in Hz */ +#endif /* HSE_VALUE */ + +#if !defined (HSE_STARTUP_TIMEOUT) + #define HSE_STARTUP_TIMEOUT ((uint32_t)100U) /*!< 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)2097000U) /*!< 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)16000000U) /*!< Value of the Internal oscillator in Hz*/ +#endif /* HSI_VALUE */ + +/** + * @brief Internal High Speed oscillator for USB (HSI48) value. + */ +#if !defined (HSI48_VALUE) +#define HSI48_VALUE ((uint32_t)48000000U) /*!< Value of the Internal High Speed oscillator for USB in Hz. + The real value may vary depending on the variations + in voltage and temperature. */ +#endif /* HSI48_VALUE */ + +/** + * @brief Internal Low Speed oscillator (LSI) value. + */ +#if !defined (LSI_VALUE) + #define LSI_VALUE ((uint32_t)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)32768U) /*!< Value of the External oscillator in Hz*/ +#endif /* LSE_VALUE */ + +#if !defined (LSE_STARTUP_TIMEOUT) + #define LSE_STARTUP_TIMEOUT ((uint32_t)5000U) /*!< Time out for LSE start up, in ms */ +#endif /* LSE_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)3300U) /*!< Value of VDD in mv */ +#define TICK_INT_PRIORITY ((uint32_t)3U) /*!< tick interrupt priority */ +#define USE_RTOS 0U +#define PREFETCH_ENABLE 0U +#define PREREAD_ENABLE 1U +#define BUFFER_CACHE_DISABLE 0U + +/* ########################## 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_LPTIM_REGISTER_CALLBACKS 0U +#define USE_HAL_PCD_REGISTER_CALLBACKS 0U +#define USE_HAL_RNG_REGISTER_CALLBACKS 0U +#define USE_HAL_RTC_REGISTER_CALLBACKS 0U +#define USE_HAL_SMARTCARD_REGISTER_CALLBACKS 0U +#define USE_HAL_SMBUS_REGISTER_CALLBACKS 0U +#define USE_HAL_SPI_REGISTER_CALLBACKS 0U +#define USE_HAL_TIM_REGISTER_CALLBACKS 0U +#define USE_HAL_TSC_REGISTER_CALLBACKS 0U +#define USE_HAL_UART_REGISTER_CALLBACKS 0U +#define USE_HAL_USART_REGISTER_CALLBACKS 0U +#define USE_HAL_WWDG_REGISTER_CALLBACKS 0U + +/* Includes ------------------------------------------------------------------*/ +/** + * @brief Include module's header file + */ + +#ifdef HAL_RCC_MODULE_ENABLED + #include "stm32l0xx_hal_rcc.h" +#endif /* HAL_RCC_MODULE_ENABLED */ + +#ifdef HAL_EXTI_MODULE_ENABLED + #include "stm32l0xx_hal_exti.h" +#endif /* HAL_EXTI_MODULE_ENABLED */ + +#ifdef HAL_GPIO_MODULE_ENABLED + #include "stm32l0xx_hal_gpio.h" +#endif /* HAL_GPIO_MODULE_ENABLED */ + +#ifdef HAL_DMA_MODULE_ENABLED + #include "stm32l0xx_hal_dma.h" +#endif /* HAL_DMA_MODULE_ENABLED */ + +#ifdef HAL_CORTEX_MODULE_ENABLED + #include "stm32l0xx_hal_cortex.h" +#endif /* HAL_CORTEX_MODULE_ENABLED */ + +#ifdef HAL_ADC_MODULE_ENABLED + #include "stm32l0xx_hal_adc.h" +#endif /* HAL_ADC_MODULE_ENABLED */ + +#ifdef HAL_COMP_MODULE_ENABLED + #include "stm32l0xx_hal_comp.h" +#endif /* HAL_COMP_MODULE_ENABLED */ + +#ifdef HAL_CRC_MODULE_ENABLED + #include "stm32l0xx_hal_crc.h" +#endif /* HAL_CRC_MODULE_ENABLED */ + +#ifdef HAL_CRYP_MODULE_ENABLED + #include "stm32l0xx_hal_cryp.h" +#endif /* HAL_CRYP_MODULE_ENABLED */ + +#ifdef HAL_DAC_MODULE_ENABLED + #include "stm32l0xx_hal_dac.h" +#endif /* HAL_DAC_MODULE_ENABLED */ + +#ifdef HAL_FIREWALL_MODULE_ENABLED + #include "stm32l0xx_hal_firewall.h" +#endif /* HAL_FIREWALL_MODULE_ENABLED */ + +#ifdef HAL_FLASH_MODULE_ENABLED + #include "stm32l0xx_hal_flash.h" +#endif /* HAL_FLASH_MODULE_ENABLED */ + +#ifdef HAL_I2C_MODULE_ENABLED + #include "stm32l0xx_hal_i2c.h" +#endif /* HAL_I2C_MODULE_ENABLED */ + +#ifdef HAL_I2S_MODULE_ENABLED + #include "stm32l0xx_hal_i2s.h" +#endif /* HAL_I2S_MODULE_ENABLED */ + +#ifdef HAL_IWDG_MODULE_ENABLED + #include "stm32l0xx_hal_iwdg.h" +#endif /* HAL_IWDG_MODULE_ENABLED */ + +#ifdef HAL_LCD_MODULE_ENABLED + #include "stm32l0xx_hal_lcd.h" +#endif /* HAL_LCD_MODULE_ENABLED */ + +#ifdef HAL_LPTIM_MODULE_ENABLED +#include "stm32l0xx_hal_lptim.h" +#endif /* HAL_LPTIM_MODULE_ENABLED */ + +#ifdef HAL_PWR_MODULE_ENABLED + #include "stm32l0xx_hal_pwr.h" +#endif /* HAL_PWR_MODULE_ENABLED */ + +#ifdef HAL_RNG_MODULE_ENABLED + #include "stm32l0xx_hal_rng.h" +#endif /* HAL_RNG_MODULE_ENABLED */ + +#ifdef HAL_RTC_MODULE_ENABLED + #include "stm32l0xx_hal_rtc.h" + +#endif /* HAL_RTC_MODULE_ENABLED */ + +#ifdef HAL_SPI_MODULE_ENABLED + #include "stm32l0xx_hal_spi.h" +#endif /* HAL_SPI_MODULE_ENABLED */ + +#ifdef HAL_TIM_MODULE_ENABLED + #include "stm32l0xx_hal_tim.h" +#endif /* HAL_TIM_MODULE_ENABLED */ + +#ifdef HAL_TSC_MODULE_ENABLED + #include "stm32l0xx_hal_tsc.h" +#endif /* HAL_TSC_MODULE_ENABLED */ + +#ifdef HAL_UART_MODULE_ENABLED + #include "stm32l0xx_hal_uart.h" +#endif /* HAL_UART_MODULE_ENABLED */ + +#ifdef HAL_USART_MODULE_ENABLED + #include "stm32l0xx_hal_usart.h" +#endif /* HAL_USART_MODULE_ENABLED */ + +#ifdef HAL_IRDA_MODULE_ENABLED + #include "stm32l0xx_hal_irda.h" +#endif /* HAL_IRDA_MODULE_ENABLED */ + +#ifdef HAL_SMARTCARD_MODULE_ENABLED + #include "stm32l0xx_hal_smartcard.h" +#endif /* HAL_SMARTCARD_MODULE_ENABLED */ + +#ifdef HAL_SMBUS_MODULE_ENABLED + #include "stm32l0xx_hal_smbus.h" +#endif /* HAL_SMBUS_MODULE_ENABLED */ + +#ifdef HAL_WWDG_MODULE_ENABLED + #include "stm32l0xx_hal_wwdg.h" +#endif /* HAL_WWDG_MODULE_ENABLED */ + +#ifdef HAL_PCD_MODULE_ENABLED + #include "stm32l0xx_hal_pcd.h" +#endif /* HAL_PCD_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 /* __STM32L0xx_HAL_CONF_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/fw_hal/Core/Inc/stm32l0xx_it.h b/fw_hal/Core/Inc/stm32l0xx_it.h new file mode 100644 index 0000000..77cb7bd --- /dev/null +++ b/fw_hal/Core/Inc/stm32l0xx_it.h @@ -0,0 +1,65 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32l0xx_it.h + * @brief This file contains the headers of the interrupt handlers. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2021 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L0xx_IT_H +#define __STM32L0xx_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 SVC_Handler(void); +void PendSV_Handler(void); +void SysTick_Handler(void); +/* USER CODE BEGIN EFP */ + +/* USER CODE END EFP */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32L0xx_IT_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/fw_hal/Core/Src/config.c b/fw_hal/Core/Src/config.c new file mode 100644 index 0000000..08f6112 --- /dev/null +++ b/fw_hal/Core/Src/config.c @@ -0,0 +1,243 @@ +/* + * config.c + * + * Created on: Sep 5, 2021 + * Author: david + */ + +#include "config.h" + +/* + * Variables + */ +/* Baudrates - STM32L0xx can do baudrates from 1200 to 115200 + * - default value has index 0 */ +const uint32_t config_baudrates[] = { + 19200, // 0 + 4800, // 1 + 9600, // 2 + 14400, // 3 + 19200, // 4 + 28800, // 5 + 38400, // 6 + 57600, // 7 + 76800, // 8 + 115200 // 9 +}; +const uint8_t config_baudrates_length = 10; + +/* Function to lock the EEPROM */ +static int8_t eeprom_lock(void); +/* Function to unlock the EEPROM */ +static int8_t eeprom_unlock(void); +/* Function to write one byte to the EEPROM */ +/* IMPORTANT: EEPROM must be unlocked first */ +static int8_t eeprom_program_byte(uint32_t addr, uint8_t ee_data); +/* Function to write two bytes to the EEPROM */ +/* IMPORTANT: EEPROM must be unlocked first */ +static int8_t eeprom_program_halfword(uint32_t addr, uint16_t ee_data); +/* Function to write four bytes to the EEPROM */ +/* IMPORTANT: EEPROM must be unlocked first */ +static int8_t eeprom_program_word(uint32_t addr, uint32_t ee_data); + +int8_t config_read(config_t *config) +{ + config->modbus_addr = *(uint16_t *) (CONFIG_EEPROM_ADDR_MODBUS_ADDR); + config->baudrate_index = *(uint16_t *) (CONFIG_EEPROM_ADDR_BAUDRATE_INDEX); + config->led_on = *(uint16_t *) (CONFIG_EEPROM_ADDR_LED_ON); + config->led_brightness = *(uint16_t *) (CONFIG_EEPROM_ADDR_LED_BRIGHTNESS); + config->led_smooth = *(uint16_t *) (CONFIG_EEPROM_ADDR_LED_SMOOTH); + config->led_co2_alert_limit1 = *(uint16_t *) (CONFIG_EEPROM_ADDR_LED_ALERT1); + config->led_co2_alert_limit2 = *(uint16_t *) (CONFIG_EEPROM_ADDR_LED_ALERT2); + config->scd4x_t_offset = *(int16_t *) (CONFIG_EEPROM_ADDR_SCD4x_T_OFFSET); + + /* Check if the EEPROM is initialized - do not check: + * LED ON + * LED SMOOTH + * SCD4x T OFFSET + * BAUDRATE INDEX + * those can be 0 */ + if ((config->modbus_addr == EEPROM_EMPTY_BYTE) || + (config->led_co2_alert_limit1 == EEPROM_EMPTY_BYTE) || + (config->led_co2_alert_limit2 == EEPROM_EMPTY_BYTE) || + (config->led_brightness == EEPROM_EMPTY_BYTE)) + { + return CONFIG_ERROR; + } + return CONFIG_OK; +} + +int8_t config_write(config_t *config) +{ + /* Unlock the EEPROM */ + if (eeprom_unlock() != EEPROM_OK) + { + return EEPROM_UNLOCK_ERROR; + } + /* Reset the ERASE and DATA bits in the FLASH_PECR register to disable any residual erase */ + FLASH->PECR = FLASH->PECR & ~(FLASH_PECR_ERASE | FLASH_PECR_DATA); + + /* Write MODBUS ADDRESS */ + if (eeprom_program_halfword(CONFIG_EEPROM_ADDR_MODBUS_ADDR, config->modbus_addr) != EEPROM_OK) + { + return EEPROM_WRITE_ERROR; + } + /* Write BAUDRATE */ + if (eeprom_program_halfword(CONFIG_EEPROM_ADDR_BAUDRATE_INDEX, config->baudrate_index) != EEPROM_OK) + { + return EEPROM_WRITE_ERROR; + } + + /* Write LED ON */ + if (eeprom_program_byte(CONFIG_EEPROM_ADDR_LED_ON, config->led_on) != EEPROM_OK) + { + return EEPROM_WRITE_ERROR; + } + + /* Write LED BRIGHTNESS */ + if (eeprom_program_halfword(CONFIG_EEPROM_ADDR_LED_BRIGHTNESS, config->led_brightness) != EEPROM_OK) + { + return EEPROM_WRITE_ERROR; + } + + /* Write LED SMOOTH */ + if (eeprom_program_byte(CONFIG_EEPROM_ADDR_LED_SMOOTH, config->led_smooth) != EEPROM_OK) + { + return EEPROM_WRITE_ERROR; + } + + /* Write LED CO2 ALERT LIMIT 1 */ + if (eeprom_program_halfword(CONFIG_EEPROM_ADDR_LED_ALERT1, config->led_co2_alert_limit1) != EEPROM_OK) + { + return EEPROM_WRITE_ERROR; + } + + /* Write LED CO2 ALERT LIMIT 2 */ + if (eeprom_program_halfword(CONFIG_EEPROM_ADDR_LED_ALERT2, config->led_co2_alert_limit2) != EEPROM_OK) + { + return EEPROM_WRITE_ERROR; + } + + /* Write LED SCD4x TEMPERATURE OFFSET */ + if (eeprom_program_halfword(CONFIG_EEPROM_ADDR_SCD4x_T_OFFSET, config->scd4x_t_offset) != EEPROM_OK) + { + return EEPROM_WRITE_ERROR; + } + + /* Lock EEPROM*/ + if (eeprom_lock() != EEPROM_OK) + { + return EEPROM_LOCK_ERROR; + } + return CONFIG_OK; +} + +static int8_t eeprom_lock(void) +{ + uint32_t tick_start = SysTick->VAL; + while ((FLASH->SR & FLASH_SR_BSY) != 0) /* Wait for FLASH to be free */ + { + /* Timeout test */ + /* The maximum writing time is 3.94ms (half-word) */ + uint32_t tick_last = SysTick->VAL; + uint32_t tick_diff; + if (tick_start <= tick_last) + { + tick_diff = tick_last - tick_start; + } else + { + tick_diff = (0xFFFFFFFF - tick_last) + tick_start; + } + + /* If the time difference is more than 5ms */ + if (tick_diff >= (uint32_t)((uint32_t)SYSTICK_FREQ_HZ*(uint32_t)EEPROM_TIMEOUT_MAX_MS_INV)) + { + return EEPROM_LOCK_ERROR; + } + } + + FLASH->PECR = FLASH->PECR & ~(FLASH_PECR_ERRIE | FLASH_PECR_EOPIE); /* disable flash interrupts */ + FLASH->PECR = FLASH->PECR | FLASH_PECR_PELOCK; /* Lock memory with PELOCK */ + + return EEPROM_OK; +} + +static int8_t eeprom_unlock(void) +{ + uint32_t tick_start = SysTick->VAL; + while ((FLASH->SR & FLASH_SR_BSY) != 0) /* Wait for FLASH to be free */ + { + /* Timeout test */ + /* The maximum writing time is 3.94ms (half-word) */ + uint32_t tick_last = SysTick->VAL; + uint32_t tick_diff; + if (tick_start <= tick_last) + { + tick_diff = tick_last - tick_start; + } else + { + tick_diff = (0xFFFFFFFF - tick_last) + tick_start; + } + + /* If the time difference is more than 5ms */ + if (tick_diff >= (uint32_t)((uint32_t)SYSTICK_FREQ_HZ*(uint32_t)EEPROM_TIMEOUT_MAX_MS_INV)) + { + return EEPROM_UNLOCK_ERROR; + } + } + if ((FLASH->PECR & FLASH_PECR_PELOCK) != 0) /* If PELOCK is locked */ + { + /* Unlock PELOCK */ + FLASH->PEKEYR = FLASH_PEKEY1; /* PEKEY1 */ + FLASH->PEKEYR = FLASH_PEKEY2; /* PEKEY2 */ + } + FLASH->PECR = FLASH->PECR | (FLASH_PECR_ERRIE | FLASH_PECR_EOPIE); /* enable flash interrupts */ + return EEPROM_OK; +} + +static int8_t eeprom_program_byte(uint32_t addr, uint8_t ee_data) +{ + if ((EEPROM_ADDR_START <= addr) && (addr <= EEPROM_ADDR_END - 1)) + { + *(uint8_t *)(addr) = ee_data; /* write data to EEPROM */ + if (*(uint8_t *)(addr) != ee_data) + { + return EEPROM_WRITE_ERROR; + } + return EEPROM_OK; + } else + { + return EEPROM_ADDR_ERROR; + } +} +static int8_t eeprom_program_halfword(uint32_t addr, uint16_t ee_data) +{ + if ((EEPROM_ADDR_START <= addr) && (addr <= EEPROM_ADDR_END - 2)) + { + *(uint16_t *)(addr) = ee_data; /* write data to EEPROM */ + if (*(uint16_t *)(addr) != ee_data) + { + return EEPROM_WRITE_ERROR; + } + return EEPROM_OK; + } else + { + return EEPROM_ADDR_ERROR; + } +} + +static int8_t eeprom_program_word(uint32_t addr, uint32_t ee_data) +{ + if ((EEPROM_ADDR_START <= addr) && (addr <= EEPROM_ADDR_END - 4)) + { + *(uint32_t *)(addr) = ee_data; /* write data to EEPROM */ + if (*(uint32_t *)(addr) != ee_data) + { + return EEPROM_WRITE_ERROR; + } + return EEPROM_OK; + } else + { + return EEPROM_ADDR_ERROR; + } +} diff --git a/fw_hal/Core/Src/crc8.c b/fw_hal/Core/Src/crc8.c new file mode 100644 index 0000000..312cdf4 --- /dev/null +++ b/fw_hal/Core/Src/crc8.c @@ -0,0 +1,28 @@ +/* + * crc.c + * + * Created on: Jun 9, 2021 + * Author: user + */ + +#include "crc8.h" + +/* Stolen from Sensirion SCD4x datasheet, section 3.11 */ +uint8_t crc8_calculate(const uint8_t *data, uint16_t count) +{ + uint16_t current_byte; + uint8_t crc = CRC8_INIT; + uint8_t crc_bit; + /* calculates 8-Bit checksum with given polynomial */ + for (current_byte = 0; current_byte < count; ++current_byte) { + crc ^= (data[current_byte]); + for(crc_bit = 8; crc_bit > 0; --crc_bit) { + if (crc & 0x80) { + crc =(crc << 1) ^ CRC8_POLYNOMIAL; + } else { + crc = (crc << 1); + } + } + } + return crc; +} diff --git a/fw_hal/Core/Src/i2c.c b/fw_hal/Core/Src/i2c.c new file mode 100644 index 0000000..0740767 --- /dev/null +++ b/fw_hal/Core/Src/i2c.c @@ -0,0 +1,54 @@ +/* + * i2c.c + * + * Created on: Jun 8, 2021 + * Author: user + */ + +#include "i2c.h" + + +I2C_HandleTypeDef *i2c_context; +uint16_t timeout; + +int8_t i2c_init(I2C_HandleTypeDef *context, uint16_t i2c_timeout) +{ + if (context == NULL) { + return I2C_ERROR; + } + i2c_context = context; + timeout = i2c_timeout; + return I2C_OK; +} + +int8_t i2c_transmit(uint8_t address, uint8_t *buffer, uint16_t len) +{ + if (HAL_I2C_Master_Transmit(i2c_context, address, buffer, len, timeout) == HAL_OK) + { + return I2C_OK; + } else { + return I2C_ERROR; + } +} + +int8_t i2c_receive(uint8_t address, uint8_t *buffer, uint16_t len) +{ + if (HAL_I2C_Master_Receive(i2c_context, address, buffer, len, timeout) == HAL_OK) + { + return I2C_OK; + } else + { + return I2C_ERROR; + } +} + +int8_t i2c_transmit_receive(uint8_t address, uint16_t tx_buffer, uint16_t tx_len, uint8_t *rx_buffer, uint16_t rx_len) +{ + if(HAL_I2C_Mem_Read(i2c_context, address, tx_buffer, tx_len, rx_buffer, rx_len, timeout) == HAL_OK) + { + return I2C_OK; + } else + { + return I2C_ERROR; + } +} diff --git a/fw_hal/Core/Src/main.c b/fw_hal/Core/Src/main.c new file mode 100644 index 0000000..8e44a81 --- /dev/null +++ b/fw_hal/Core/Src/main.c @@ -0,0 +1,553 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2021 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +I2C_HandleTypeDef hi2c1; + +TIM_HandleTypeDef htim2; +TIM_HandleTypeDef htim21; +TIM_HandleTypeDef htim22; + +UART_HandleTypeDef huart2; + +/* USER CODE BEGIN PV */ +/* + * BASE CLOCK 12MHz + * Desired interrupt period 60s + */ +const uint16_t tim21_prescaler = 60000-1; // 200Hz +//const uint16_t tim21_period = 12000-1; // 60s +const uint16_t tim21_period = 1200-1; // 6s +//const uint16_t tim21_period = 200-1; // 1s + +/* LED Timer Setup */ +const uint16_t led_pwm_prescaler = 1200-1; // 10kHz +const uint16_t led_pwm_period = 100-1; + +uint16_t led_pwm_pulse_r = 0; +uint16_t led_pwm_pulse_g = 0; +uint16_t led_pwm_pulse_b = 0; +/* Input register memory map + * (All registers are 16-bit) + * ------------------------- + * + * 30010 : CO2 [ppm] Unsigned value in range [0,40000] + * 30011 : T [deg_C * 10] From SHT4x; unsigned value in range [0; 1250]; e.g. 21.5 C => 215 + * 30012 : RH [%] From SHT4x; unsigned value in range [0; 100] + * + * Backup T and RH sensor: + * 30013 : T [deg_C * 10] From SCD4x; unsigned value in range [0; 600]; e.g. 21.5 C => 215 + * 30014 : RH [%] From SCD4x; unsigned value in range [0; 100] + * + * Extended temperature range (signed values): + * 30015 : T [deg_C * 10] From SHT4x; signed value (two's complement) in range [-400;1250] + * 30016 : T [deg_C * 10] From SCD4x; signed value (two's complement) in range [-100;600]; e.g. -12.3 C => -123 + * + */ +/* Input registers memory map implementation */ +enum +{ + REGISTER_NUM_CO2 = 30010, + REGISTER_NUM_T_SHT4x = 30011, + REGISTER_NUM_RH_SHT4x = 30012, + REGISTER_NUM_T_SCD4x = 30013, + REGISTER_NUM_RH_SCD4x = 30014, + REGISTER_NUM_T_SHT4x_SIGNED = 30015, + REGISTER_NUM_T_SCD4x_SIGNED = 30016 +} data_registers_numbers; + +enum +{ + REGISTER_NUM_LED_ON = 40001, + REGISTER_NUM_LED_BRIGHTNESS = 40002, + REGISTER_NUM_LED_SMOOTH = 40003, + REGISTER_NUM_CO2_ALERT_LIMIT1 = 40004, + REGISTER_NUM_CO2_ALERT_LIMIT2 = 40005, + REGISTER_NUM_SCD4x_T_OFFSET = 40006, + REGISTER_NUM_MODBUS_ADDR = 40007, + REGISTER_NUM_BAUDRATE = 40008 +} config_registers_numbers; + +enum +{ + REGISTER_NUM_VENDOR_NAME = 30010, + REGISTER_NUM_PRODUCT_CODE = 30011, + REGISTER_NUM_REVISION = 30012, + REGISTER_NUM_PRODUCT_NAME = 30013, + REGISTER_NUM_SERIAL_NUMBER = 30014 +} identification_registers_numbers; + +/* Variables to store the measured data */ +int CO2, T_SCD4x, RH_SCD4x; +int T_SHT4x, RH_SHT4x; +uint16_t sps30_measured_data[10]; + +/* Struct to store the sensor config */ +config_t sensor_config; +uint8_t sensor_config_pending_write = 0; +uint8_t baudrate_changed = 0; +uint8_t modbus_address_changed = 0; +uint8_t co2_valid = 0; +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_I2C1_Init(void); +static void MX_TIM2_Init(void); +static void MX_TIM21_Init(void); +static void MX_TIM22_Init(void); +static void MX_USART2_UART_Init(void); +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_I2C1_Init(); + MX_TIM2_Init(); + MX_TIM21_Init(); + MX_TIM22_Init(); + MX_USART2_UART_Init(); + /* USER CODE BEGIN 2 */ + + i2c_init(&hi2c1,100); + HAL_Delay(3000); + scd4x_start_periodic_measurement(); + HAL_Delay(3000); + /* USER CODE END 2 */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + while (1) + { + sht4x_measure(&T_SHT4x, &RH_SHT4x); + + scd4x_read_measurement(&CO2, + &T_SCD4x, + &RH_SCD4x); + HAL_Delay(2000); + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; + RCC_OscInitStruct.HSIState = RCC_HSI_ON; + RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; + RCC_OscInitStruct.PLL.PLLMUL = RCC_PLLMUL_3; + RCC_OscInitStruct.PLL.PLLDIV = RCC_PLLDIV_2; + 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_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV2; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) + { + Error_Handler(); + } + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART2|RCC_PERIPHCLK_I2C1; + PeriphClkInit.Usart2ClockSelection = RCC_USART2CLKSOURCE_PCLK1; + PeriphClkInit.I2c1ClockSelection = RCC_I2C1CLKSOURCE_PCLK1; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief I2C1 Initialization Function + * @param None + * @retval None + */ +static void MX_I2C1_Init(void) +{ + + /* USER CODE BEGIN I2C1_Init 0 */ + + /* USER CODE END I2C1_Init 0 */ + + /* USER CODE BEGIN I2C1_Init 1 */ + + /* USER CODE END I2C1_Init 1 */ + hi2c1.Instance = I2C1; + hi2c1.Init.Timing = 0x40000A0B; + hi2c1.Init.OwnAddress1 = 0; + hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + hi2c1.Init.OwnAddress2 = 0; + hi2c1.Init.OwnAddress2Masks = I2C_OA2_NOMASK; + hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + if (HAL_I2C_Init(&hi2c1) != HAL_OK) + { + Error_Handler(); + } + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c1, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + { + Error_Handler(); + } + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c1, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN I2C1_Init 2 */ + + /* USER CODE END I2C1_Init 2 */ + +} + +/** + * @brief TIM2 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM2_Init(void) +{ + + /* USER CODE BEGIN TIM2_Init 0 */ + + /* USER CODE END TIM2_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + TIM_OC_InitTypeDef sConfigOC = {0}; + + /* USER CODE BEGIN TIM2_Init 1 */ + + /* USER CODE END TIM2_Init 1 */ + htim2.Instance = TIM2; + htim2.Init.Prescaler = led_pwm_prescaler; + htim2.Init.CounterMode = TIM_COUNTERMODE_UP; + htim2.Init.Period = led_pwm_period; + htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; + if (HAL_TIM_Base_Init(&htim2) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + sConfigOC.OCMode = TIM_OCMODE_PWM1; + sConfigOC.Pulse = led_pwm_pulse_b; + sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; + sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; + if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM2_Init 2 */ + + /* USER CODE END TIM2_Init 2 */ + HAL_TIM_MspPostInit(&htim2); + +} + +/** + * @brief TIM21 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM21_Init(void) +{ + + /* USER CODE BEGIN TIM21_Init 0 */ + + /* USER CODE END TIM21_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + + /* USER CODE BEGIN TIM21_Init 1 */ + + /* USER CODE END TIM21_Init 1 */ + htim21.Instance = TIM21; + htim21.Init.Prescaler = tim21_prescaler; + htim21.Init.CounterMode = TIM_COUNTERMODE_UP; + htim21.Init.Period = tim21_period; + htim21.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim21.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; + if (HAL_TIM_Base_Init(&htim21) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim21, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim21, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM21_Init 2 */ + + /* USER CODE END TIM21_Init 2 */ + +} + +/** + * @brief TIM22 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM22_Init(void) +{ + + /* USER CODE BEGIN TIM22_Init 0 */ + + /* USER CODE END TIM22_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + TIM_MasterConfigTypeDef sMasterConfig = {0}; + TIM_OC_InitTypeDef sConfigOC = {0}; + + /* USER CODE BEGIN TIM22_Init 1 */ + + /* USER CODE END TIM22_Init 1 */ + htim22.Instance = TIM22; + htim22.Init.Prescaler = led_pwm_prescaler; + htim22.Init.CounterMode = TIM_COUNTERMODE_UP; + htim22.Init.Period = led_pwm_period; + htim22.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim22.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; + if (HAL_TIM_Base_Init(&htim22) != HAL_OK) + { + Error_Handler(); + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim22, &sClockSourceConfig) != HAL_OK) + { + Error_Handler(); + } + if (HAL_TIM_PWM_Init(&htim22) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim22, &sMasterConfig) != HAL_OK) + { + Error_Handler(); + } + sConfigOC.OCMode = TIM_OCMODE_PWM1; + sConfigOC.Pulse = led_pwm_pulse_g; + sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; + sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; + if (HAL_TIM_PWM_ConfigChannel(&htim22, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) + { + Error_Handler(); + } + sConfigOC.Pulse = led_pwm_pulse_r; + if (HAL_TIM_PWM_ConfigChannel(&htim22, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM22_Init 2 */ + + /* USER CODE END TIM22_Init 2 */ + HAL_TIM_MspPostInit(&htim22); + +} + +/** + * @brief USART2 Initialization Function + * @param None + * @retval None + */ +static void MX_USART2_UART_Init(void) +{ + + /* USER CODE BEGIN USART2_Init 0 */ + + /* USER CODE END USART2_Init 0 */ + + /* USER CODE BEGIN USART2_Init 1 */ + + /* USER CODE END USART2_Init 1 */ + huart2.Instance = USART2; + huart2.Init.BaudRate = 115200; + huart2.Init.WordLength = UART_WORDLENGTH_9B; + huart2.Init.StopBits = UART_STOPBITS_1; + huart2.Init.Parity = UART_PARITY_EVEN; + huart2.Init.Mode = UART_MODE_TX_RX; + huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart2.Init.OverSampling = UART_OVERSAMPLING_16; + huart2.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; + huart2.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; + if (HAL_RS485Ex_Init(&huart2, UART_DE_POLARITY_HIGH, 0, 0) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN USART2_Init 2 */ + + /* USER CODE END USART2_Init 2 */ + +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOA_CLK_ENABLE(); + +} + +/* 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 */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/fw_hal/Core/Src/modbus.c b/fw_hal/Core/Src/modbus.c new file mode 100644 index 0000000..4ec6e09 --- /dev/null +++ b/fw_hal/Core/Src/modbus.c @@ -0,0 +1,265 @@ +/* + * modbus.c + * + * Created on: Jul 18, 2021 + * Author: user + */ + +#include "modbus.h" + +/* + * Global variables + */ + +/* Modbus TX buffer; can be also used for RX in memory constrained systems (e.g. in main.c); + * NOTE if shared buffer is used for TX/RX, care must be taken to prevent writing into buffer + * during execution of modbus_process_message() */ +uint8_t modbus_buffer[MODBUS_MAX_RTU_FRAME_SIZE]; + +/* device address: declared */ +uint8_t modbus_slave_address = MODBUS_DEFAULT_SLAVE_ADDRESS; + +/* + * CRC16 functions + * see https://modbus.org/docs/Modbus_over_serial_line_V1_02.pdf + * section 6.2.2 + */ + +/* CRC16 (without memory mapped values) + * taken from https://ctlsys.com/support/how_to_compute_the_modbus_rtu_message_crc/ */ +uint16_t modbus_CRC16(const uint8_t *buf, int len) +{ + uint16_t crc = 0xFFFF; + + for (int pos = 0; pos < len; pos++) { + crc ^= (uint16_t)buf[pos]; // XOR byte into least sig. byte of crc + + for (int i = 8; i != 0; i--) { // Loop over each bit + if ((crc & 0x0001) != 0) { // If the LSB is set + crc >>= 1; // Shift right and XOR 0xA001 + crc ^= 0xA001; + } else { // Else LSB is not set + crc >>= 1; // Just shift right + } + } + } + // Note, this number has low and high bytes swapped, so use it accordingly (or swap bytes) + return crc; +} + +/* + * Private functions + */ + +/* here we assume buffer has minimal size of MODBUS_MAX_RTU_FRAME_SIZE; + * this function is private, so hopefully it's going to be ok */ +int8_t modbus_copy_reply_to_buffer(uint8_t *buffer, uint8_t *msg_len, modbus_transaction_t *transaction) +{ + uint16_t crc16; + uint8_t byte_count; + + // TODO use relative indices (increments) instead of absolute + buffer[0] = modbus_slave_address; + buffer[1] = transaction->function_code; + *msg_len = 5; + + if (transaction->function_code & MODBUS_ERROR_FLAG) { + /* sending error reply */ + buffer[2] = transaction->exception.exception_code; + } else { + switch (transaction->function_code) { + case MODBUS_READ_HOLDING_REGISTERS: + case MODBUS_READ_INPUT_REGISTERS: + byte_count = transaction->register_count * 2; + buffer[2] = byte_count; + *msg_len = byte_count + 5; + for (int i = 0; i < transaction->register_count; i++) { + // TODO endianness handling + /* buffer16b is alias for both holding and input register buffers */ + buffer[3 + 2*i] = transaction->buffer16b[i] >> 8; + buffer[4 + 2*i] = transaction->buffer16b[i] & 0xff; + } + break; + case MODBUS_WRITE_SINGLE_REGISTER: + buffer[2] = (uint8_t) (transaction->register_address >> 8); + buffer[3] = (uint8_t) transaction->register_address; + buffer[4] = (uint8_t) (transaction->holding_registers[0] >> 8); + buffer[5] = (uint8_t) transaction->holding_registers[0]; + *msg_len = 8; + break; + case MODBUS_WRITE_MULTIPLE_REGISTERS: + buffer[2] = (uint8_t) (transaction->register_address >> 8); + buffer[3] = (uint8_t) transaction->register_address; + buffer[4] = (uint8_t) (transaction->register_count >> 8); + buffer[5] = (uint8_t) transaction->register_count; + *msg_len = 8; + break; + } + } + crc16 = modbus_CRC16(buffer, *msg_len - 2); /* last two bytes is the checksum itself */ + buffer[*msg_len - 2] = crc16 & 0xff; + buffer[*msg_len - 1] = crc16 >> 8; +} + +/* + * Public function definitions + */ + +int8_t modbus_slave_set_address(uint8_t address) +{ + if (address == 0) { + /* address 0 is broadcast address */ + return MODBUS_ERROR; + } + modbus_slave_address = address; + return MODBUS_OK; +} + +int8_t modbus_slave_process_msg(const uint8_t *buffer, int len) +{ + /* + * TODO list: + * + * 1) check that errors and exceptions are handled according to Modbus_Application_Protocol_V1_1b.pdf + * 2) buffer overflow prevention: for each function code, check that buffer is long enough + */ + /* transaction holds message context and content: + * it wraps all necessary buffers and variables */ + modbus_transaction_t transaction; + int8_t callback_result; + uint8_t buffer_pos = 0; + uint8_t byte_count; + + if (len < MODBUS_MINIMAL_FRAME_LEN) { + /* frame too short; return error */ + return MODBUS_ERROR_FRAME_INVALID; + } + /* check CRC first */ + uint16_t crc_received = (buffer[len - 1] << 8) | buffer[len - 2]; + uint16_t crc_calculated = modbus_CRC16(buffer, len - 2); + if (crc_received != crc_calculated) { + /* CRC mismatch, return error */ + //printf("crc mismatch: received 0x%x, calculated 0x%x\n", crc_received, crc_calculated); + return MODBUS_ERROR_CRC; + } + /* check if address matches ours */ + uint8_t address = buffer[buffer_pos++]; + if (address != modbus_slave_address && address != MODBUS_BROADCAST_ADDR) { + /* Message is not for us */ + return MODBUS_OK; + } + /* get function code */ + transaction.function_code = buffer[buffer_pos++]; + transaction.exception.exception_code = 0; + + if (transaction.function_code == MODBUS_READ_DEVICE_IDENTIFICATION) { + // TODO + goto modbus_send; + } + + /* set starting register number */ + switch (transaction.function_code) { + /* coils */ + case MODBUS_READ_DO: + case MODBUS_WRITE_SINGLE_DO: + case MODBUS_WRITE_MULTIPLE_DO: + transaction.register_number = MODBUS_DO_START_NUMBER; + break; + /* discrete inputs */ + case MODBUS_READ_DI: + transaction.register_number = MODBUS_DI_START_NUMBER; + break; + /* input registers */ + case MODBUS_READ_AI: + transaction.register_number = MODBUS_AI_START_NUMBER; + break; + /* holding registers */ + case MODBUS_READ_AO: + case MODBUS_WRITE_SINGLE_AO: + case MODBUS_WRITE_MULTIPLE_AO: + case MODBUS_READ_WRITE_MULTIPLE_REGISTERS: + transaction.register_number = MODBUS_AO_START_NUMBER; + break; + } + + #define MODBUS_FLAG_WRITE 0x01 + #define MODBUS_FLAG_SINGLE 0x02 + uint8_t flags = 0x00; + + /* process message */ + switch (transaction.function_code) { + case MODBUS_WRITE_SINGLE_COIL: + case MODBUS_WRITE_SINGLE_REGISTER: /* holding register */ + flags |= MODBUS_FLAG_SINGLE; + case MODBUS_WRITE_MULTIPLE_COILS: + case MODBUS_WRITE_MULTIPLE_REGISTERS: + flags |= MODBUS_FLAG_WRITE; + case MODBUS_READ_DISCRETE_INPUTS: + case MODBUS_READ_COILS: + case MODBUS_READ_INPUT_REGISTERS: + case MODBUS_READ_HOLDING_REGISTERS: + if (len < (MODBUS_MINIMAL_FRAME_LEN + 4)) { + /* buffer too short to contain everything we need */ + return MODBUS_ERROR; + } + transaction.register_address = (buffer[buffer_pos++] << 8) | buffer[buffer_pos++]; + // TODO check length! + if (flags & MODBUS_FLAG_WRITE) { + if (flags & MODBUS_FLAG_SINGLE) { + transaction.holding_registers[0] = (buffer[buffer_pos++] << 8) | buffer[buffer_pos++]; + } else { + /* Write multiple registers */ + transaction.register_count = (buffer[buffer_pos++] << 8) | buffer[buffer_pos++]; + byte_count = buffer[buffer_pos++]; + if (transaction.register_count > 123 || 2*transaction.register_count != byte_count) { + /* Max number of register is defined by Modbus_Application_Protocol_V1_1b, section 6.12 */ + transaction.exception.exception_code = MODBUS_EXCEPTION_ILLEGAL_REGISTER_QUANTITY; + } else { + for (uint8_t i = 0; i < transaction.register_count; i++) { + transaction.holding_registers[i] = (buffer[buffer_pos++] << 8) | buffer[buffer_pos++]; + } + } + } + } else { + transaction.register_count = (buffer[buffer_pos++] << 8) | buffer[buffer_pos++]; + if ( + transaction.register_count < 1 || + transaction.register_count > MODBUS_MAX_REGISTERS + ) { + transaction.exception.exception_code = MODBUS_EXCEPTION_ILLEGAL_DATA_VALUE; + } + } + // add offset to register number + transaction.register_number += transaction.register_address; + break; + default: + /* function code not known / not implemented, reply with + * ExceptionCode 1 */ + transaction.exception.exception_code = MODBUS_EXCEPTION_ILLEGAL_FUNCTION; + break; + } + /* data in modbus_buffer have been processed and buffer can be re-used for TX */ + /* handle reply */ + if (transaction.exception.exception_code != 0) { + /* indicate error */ + transaction.function_code |= MODBUS_ERROR_FLAG; + } else { + callback_result = modbus_slave_callback(&transaction); + /* error handling */ + if (callback_result != MODBUS_OK) { + transaction.function_code |= MODBUS_ERROR_FLAG; + if (callback_result == MODBUS_ERROR_FUNCTION_NOT_IMPLEMENTED) { + transaction.exception.exception_code = MODBUS_EXCEPTION_ILLEGAL_FUNCTION; + } else if (callback_result == MODBUS_ERROR_REGISTER_NOT_IMPLEMENTED) { + transaction.exception.exception_code = MODBUS_EXCEPTION_ILLEGAL_DATA_ADDRESS; + } + } + } + uint8_t msg_len = 0; +modbus_send: + if (address != MODBUS_BROADCAST_ADDR) { + /* send only if master request was not broadcast */ + modbus_copy_reply_to_buffer(modbus_buffer, &msg_len, &transaction); + modbus_transmit_function(modbus_buffer, msg_len); + } +} diff --git a/fw_hal/Core/Src/rgb_led.c b/fw_hal/Core/Src/rgb_led.c new file mode 100644 index 0000000..55bd8f9 --- /dev/null +++ b/fw_hal/Core/Src/rgb_led.c @@ -0,0 +1,19 @@ +/* + * rgb_led.c + * + * Created on: Nov 4, 2021 + * Author: david + */ + +#include "rgb_led.h" + +int8_t rgb_led_set_duty_cycles (uint16_t r_duty, uint16_t g_duty, uint16_t b_duty) +{ + return -1; +} + + +int8_t rgb_led_set_color (rgb_led_color_t color) +{ + return -1; +} diff --git a/fw_hal/Core/Src/scd4x.c b/fw_hal/Core/Src/scd4x.c new file mode 100644 index 0000000..64722be --- /dev/null +++ b/fw_hal/Core/Src/scd4x.c @@ -0,0 +1,116 @@ +/* + * sht4x.c + * + * Created on: Jun 8, 2021 + * Author: user + */ + +#include "scd4x.h" +#include "main.h" /* for uart_disable_interrupts() */ + +int8_t scd4x_send_cmd(scd4x_cmd_t cmd) +{ + uint8_t buffer[32]; + int result; + + // start measurement + buffer[0] = cmd >> 8; + buffer[1] = cmd & 0x00ff; + result = i2c_transmit(SCD4X_I2C_ADDRESS<<1, buffer, 2); + if (result != I2C_OK) { + return SCD4X_ERROR; + } + + return SCD4X_OK; +} + +int8_t scd4x_read_data(uint8_t *buffer, int len) +{ + return SCD4X_OK; +} + +int8_t scd4x_start_periodic_measurement( void ) +{ + return scd4x_send_cmd(SCD4X_START_PERIODIC_MEASUREMENT); +} + +int8_t scd4x_stop_periodic_measurement( void ) +{ + return scd4x_send_cmd(SCD4X_STOP_PERIODIC_MEASUREMENT); +} + +int8_t scd4x_perform_factory_reset( void ) +{ + return scd4x_send_cmd(SCD4X_PERFORM_FACTORY_RESET); +} + +int8_t scd4x_read_measurement(uint16_t * co2, int16_t *temperature, uint16_t *relative_humidity) +{ + uint8_t buffer[32]; + int8_t result; + + // start measurement + // TODO: Check for data ready + /* + buffer[0] = GET_DATA_READY_STATUS >> 8; + buffer[1] = GET_DATA_READY_STATUS & 0x00ff; + result = i2c_transmit(SCD4X_I2C_ADDRESS<<1, buffer, 2); + if (result != I2C_OK) { + return SCD4X_ERROR; + } + LL_mDelay(100); // 10 ms should be enough + // read out + result = i2c_receive(SCD4X_I2C_ADDRESS<<1, buffer, 6); + if (result != I2C_OK) { + return SCD4X_ERROR; + }*/ + + + // start measurement +// tx_buffer[0] = SCD4X_READ_MEASUREMENT >> 8; +// tx_buffer[1] = SCD4X_READ_MEASUREMENT & 0x00ff; + + /*uart_disable_interrupts();*/ +// result = i2c_transmit(SCD4X_I2C_ADDRESS<<1, buffer, 2); + + // TODO: Proc to vraci NACK? Vyresit. + /*if (result != I2C_OK) { + return SCD4X_ERROR; + }*/ + + /*uart_enable_interrupts();*/ +// HAL_Delay(10); + +// uart_disable_interrupts(); + // read out +// result = i2c_receive(SCD4X_I2C_ADDRESS<<1, buffer, 9); +// if (result != I2C_OK) +// { +// return SCD4X_ERROR; +// } + result = i2c_transmit_receive(SCD4X_I2C_ADDRESS<<1, SCD4X_READ_MEASUREMENT, 2, buffer, 9); + if (result != I2C_OK) + { + return SCD4X_ERROR; + } +// uart_enable_interrupts(); + + // TODO checksum + // Convert to T and RH; taken directly from pseudocode in SHT4x datasheet, page 3 + uint32_t co2_ticks = (buffer[0] << 8) + buffer[1]; + uint32_t t_ticks = (buffer[3] << 8) + buffer[4]; + uint32_t rh_ticks = (buffer[6] << 8) + buffer[7]; + int t_degC = -450 + 10 * 175 * t_ticks / 65535; + int rh_pRH = 100 * rh_ticks / 65535; + if (rh_pRH > 100) { + rh_pRH = 100; + } + if (rh_pRH < 0) { + rh_pRH = 0; + } + *co2 = co2_ticks; + *temperature = t_degC; + *relative_humidity = rh_pRH; + + return SCD4X_OK; +} diff --git a/fw_hal/Core/Src/sht4x.c b/fw_hal/Core/Src/sht4x.c new file mode 100644 index 0000000..f864268 --- /dev/null +++ b/fw_hal/Core/Src/sht4x.c @@ -0,0 +1,60 @@ +/* + * sht4x.c + * + * Created on: Jun 8, 2021 + * Author: user + */ + +#include "sht4x.h" +#include "main.h" /* for uart_disable_interrupts() */ + +int8_t sht4x_send_cmd(sht4x_cmd_t cmd) +{ + return SHT4X_OK; +} + +int8_t sht4x_read_data(uint8_t *buffer, int len) +{ + return SHT4X_OK; +} + +int8_t sht4x_measure(int16_t *temperature, uint16_t *relative_humidity) +{ + uint8_t buffer[32]; + int result; + + // start measurement + buffer[0] = SHT4X_START_MEAS_HIGH_PRECISION; + result = i2c_transmit(SHT4X_I2C_ADDRESS<<1, buffer, 1); + // TODO: Proc to vraci NACK? Vyresit. + /* + if (result != I2C_OK) { + return SHT4X_ERROR; + }*/ + /*uart_disable_interrupts(); + LL_mDelay(10); // 10 ms should be enough + uart_enable_interrupts(); + */ + HAL_Delay(10); + // read out + result = i2c_receive(SHT4X_I2C_ADDRESS<<1, buffer, 6); + if (result != I2C_OK) { + return SHT4X_ERROR; + } + // TODO checksum + // Convert to T and RH; taken directly from pseudocode in SHT4x datasheet, page 3 + uint32_t t_ticks = (buffer[0] << 8) + buffer[1]; + uint32_t rh_ticks = (buffer[3] << 8) + buffer[4]; + int t_degC = -450 + 10 * 175 * t_ticks / 65535; /* temperature * 10 */ + int rh_pRH = -6 + 125 * rh_ticks / 65535; + if (rh_pRH > 100) { + rh_pRH = 100; + } + if (rh_pRH < 0) { + rh_pRH = 0; + } + *temperature = t_degC; + *relative_humidity = rh_pRH; + + return SHT4X_OK; +} diff --git a/fw_hal/Core/Src/sps30.c b/fw_hal/Core/Src/sps30.c new file mode 100644 index 0000000..c05a273 --- /dev/null +++ b/fw_hal/Core/Src/sps30.c @@ -0,0 +1,193 @@ +/* + * sps30.c + * + * Created on: Jul 18, 2021 + * Author: david + */ + +#include "sps30.h" + +int8_t sps30_send_cmd(sps30_cmd_t cmd) +{ + uint8_t buffer[32]; + uint8_t result; + + // start measurement + buffer[0] = cmd >> 8; + buffer[1] = cmd & 0x00ff; + result = i2c_transmit(SPS30_I2C_ADDRESS<<1, buffer, 2); + // TODO: Proc to vraci NACK? Vyresit. + if (result != I2C_OK) { + return SPS30_ERROR; + } + + return SPS30_OK; +} + +int8_t sps30_start_measurement( void ) +{ + uint8_t i2c_tx_buffer[5]; + uint8_t data_for_crc = {SPS30_UINT16_FORMAT, 0x00}; + + uint8_t result; + + i2c_tx_buffer[0] = SPS30_START_MEASUREMENT >> 8; + i2c_tx_buffer[1] = SPS30_START_MEASUREMENT & 0x00ff; + i2c_tx_buffer[2] = SPS30_UINT16_FORMAT; + i2c_tx_buffer[3] = 0x00; + i2c_tx_buffer[4] = calculate_crc(data_for_crc); + + result = i2c_transmit(SPS30_I2C_ADDRESS<<1, i2c_tx_buffer, 5); + + // TODO: Proc to vraci NACK? Vyresit. + if (result != I2C_OK) { + return SPS30_ERROR; + } + return SPS30_OK; +} + +int8_t sps30_stop_measurement( void ) +{ + return sps30_send_cmd(SPS30_STOP_MEASUREMENT); +} + +int8_t sps30_read_measured_values(uint16_t *measured_values, uint8_t measured_values_len) +{ + + if (measured_values_len != 10) + { + return -5; + } + + uint8_t i2c_tx_buffer[2]; + uint8_t i2c_rx_buffer[30]; + + uint8_t result; + + // start measurement + i2c_tx_buffer[0] = SPS30_READ_MEASURED_VALUES >> 8; + i2c_tx_buffer[1] = SPS30_READ_MEASURED_VALUES & 0x00ff; + result = i2c_transmit(SPS30_I2C_ADDRESS<<1, i2c_tx_buffer, 2); + + // TODO: Proc to vraci NACK? Vyresit. + /*if (result != I2C_OK) { + return SPS30_ERROR; + } + return SPS30_OK;*/ + + LL_mDelay(1); // 10 ms should be enough + // read out + result = i2c_receive(SPS30_I2C_ADDRESS<<1, i2c_rx_buffer, 30); + if (result != I2C_OK) + { + return SPS30_ERROR; + } + + uint8_t checksums[10]; + + uint8_t j = 0; + for (uint8_t i = 0; i < 10; i++) + { + + measured_values[i] = (i2c_rx_buffer[j++] << 8) + i2c_rx_buffer[j++]; + checksums[i] = i2c_rx_buffer[j++]; + } + + return SPS30_OK; +} + +int8_t sps30_sleep( void ) +{ + return sps30_send_cmd(SPS30_SLEEP); +} + +int8_t sps30_wake_up( void ) +{ + return sps30_send_cmd(SPS30_WAKE_UP); + return sps30_send_cmd(SPS30_WAKE_UP); +} + +int8_t sps30_start_fan_cleaning( void ) +{ + return sps30_send_cmd(SPS30_START_FAN_CLEANING); +} + +int8_t sps30_reset( void ) +{ + return sps30_send_cmd(SPS30_RESET); +} + + +int8_t sps30_read_status_register ( void ) +{ + uint8_t i2c_tx_buffer[2]; + uint8_t i2c_rx_buffer[6]; + + uint8_t result; + + // start measurement + i2c_tx_buffer[0] = SPS30_READ_DEVICE_STATUS_REGISTER >> 8; + i2c_tx_buffer[1] = SPS30_READ_DEVICE_STATUS_REGISTER & 0x00ff; + result = i2c_transmit(SPS30_I2C_ADDRESS<<1, i2c_tx_buffer, 2); + + // TODO: Proc to vraci NACK? Vyresit. + /*if (result != I2C_OK) { + return SPS30_ERROR; + } + return SPS30_OK;*/ + + LL_mDelay(1); // 10 ms should be enough + // read out + result = i2c_receive(SPS30_I2C_ADDRESS<<1, i2c_rx_buffer, 6); + + return 0; +} + +int8_t sps30_read_firmware_version ( uint8_t * fw_ver_hi, uint8_t * fw_ver_lo ) +{ + uint8_t i2c_tx_buffer[2]; + uint8_t i2c_rx_buffer[3]; + + uint8_t result; + + // start measurement + i2c_tx_buffer[0] = SPS30_READ_VERSION >> 8; + i2c_tx_buffer[1] = SPS30_READ_VERSION & 0x00ff; + result = i2c_transmit(SPS30_I2C_ADDRESS<<1, i2c_tx_buffer, 2); + + // TODO: Proc to vraci NACK? Vyresit. + /*if (result != I2C_OK) { + return SPS30_ERROR; + } + return SPS30_OK;*/ + + LL_mDelay(1); // 10 ms should be enough + // read out + result = i2c_receive(SPS30_I2C_ADDRESS<<1, i2c_rx_buffer, 3); + /*if (result != I2C_OK) + { + return SPS30_ERROR; + }*/ + + *fw_ver_hi = i2c_rx_buffer[0]; + *fw_ver_lo = i2c_rx_buffer[1]; + + return SPS30_OK; +} + + +uint8_t calculate_crc(uint8_t data[2]) +{ + uint8_t crc = 0xFF; + for(uint8_t i = 0; i < 2; i++) { + crc ^= data[i]; + for(uint8_t bit = 8; bit > 0; --bit) { + if(crc & 0x80) { + crc = (crc << 1) ^ 0x31u; + } else { + crc = (crc << 1); + } + } + } + return crc; +} diff --git a/fw_hal/Core/Src/stm32l0xx_hal_msp.c b/fw_hal/Core/Src/stm32l0xx_hal_msp.c new file mode 100644 index 0000000..ebe2d80 --- /dev/null +++ b/fw_hal/Core/Src/stm32l0xx_hal_msp.c @@ -0,0 +1,355 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32l0xx_hal_msp.c + * @brief This file provides code for the MSP Initialization + * and de-Initialization codes. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2021 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +/* 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 */ + +void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); + /** + * Initializes the Global MSP. + */ +void HAL_MspInit(void) +{ + /* USER CODE BEGIN MspInit 0 */ + + /* USER CODE END MspInit 0 */ + + __HAL_RCC_SYSCFG_CLK_ENABLE(); + __HAL_RCC_PWR_CLK_ENABLE(); + + /* System interrupt init*/ + + /* USER CODE BEGIN MspInit 1 */ + + /* USER CODE END MspInit 1 */ +} + +/** +* @brief I2C MSP Initialization +* This function configures the hardware resources used in this example +* @param hi2c: I2C handle pointer +* @retval None +*/ +void HAL_I2C_MspInit(I2C_HandleTypeDef* hi2c) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + if(hi2c->Instance==I2C1) + { + /* USER CODE BEGIN I2C1_MspInit 0 */ + + /* USER CODE END I2C1_MspInit 0 */ + + __HAL_RCC_GPIOA_CLK_ENABLE(); + /**I2C1 GPIO Configuration + PA9 ------> I2C1_SCL + PA10 ------> I2C1_SDA + */ + GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10; + GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; + GPIO_InitStruct.Pull = GPIO_PULLUP; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.Alternate = GPIO_AF1_I2C1; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /* Peripheral clock enable */ + __HAL_RCC_I2C1_CLK_ENABLE(); + /* USER CODE BEGIN I2C1_MspInit 1 */ + + /* USER CODE END I2C1_MspInit 1 */ + } + +} + +/** +* @brief I2C MSP De-Initialization +* This function freeze the hardware resources used in this example +* @param hi2c: I2C handle pointer +* @retval None +*/ +void HAL_I2C_MspDeInit(I2C_HandleTypeDef* hi2c) +{ + if(hi2c->Instance==I2C1) + { + /* USER CODE BEGIN I2C1_MspDeInit 0 */ + + /* USER CODE END I2C1_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_I2C1_CLK_DISABLE(); + + /**I2C1 GPIO Configuration + PA9 ------> I2C1_SCL + PA10 ------> I2C1_SDA + */ + HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9); + + HAL_GPIO_DeInit(GPIOA, GPIO_PIN_10); + + /* USER CODE BEGIN I2C1_MspDeInit 1 */ + + /* USER CODE END I2C1_MspDeInit 1 */ + } + +} + +/** +* @brief TIM_Base MSP Initialization +* 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) +{ + if(htim_base->Instance==TIM2) + { + /* USER CODE BEGIN TIM2_MspInit 0 */ + + /* USER CODE END TIM2_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_TIM2_CLK_ENABLE(); + /* USER CODE BEGIN TIM2_MspInit 1 */ + + /* USER CODE END TIM2_MspInit 1 */ + } + else if(htim_base->Instance==TIM21) + { + /* USER CODE BEGIN TIM21_MspInit 0 */ + + /* USER CODE END TIM21_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_TIM21_CLK_ENABLE(); + /* USER CODE BEGIN TIM21_MspInit 1 */ + + /* USER CODE END TIM21_MspInit 1 */ + } + else if(htim_base->Instance==TIM22) + { + /* USER CODE BEGIN TIM22_MspInit 0 */ + + /* USER CODE END TIM22_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_TIM22_CLK_ENABLE(); + /* USER CODE BEGIN TIM22_MspInit 1 */ + + /* USER CODE END TIM22_MspInit 1 */ + } + +} + +void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + if(htim->Instance==TIM2) + { + /* USER CODE BEGIN TIM2_MspPostInit 0 */ + + /* USER CODE END TIM2_MspPostInit 0 */ + __HAL_RCC_GPIOA_CLK_ENABLE(); + /**TIM2 GPIO Configuration + PA5 ------> TIM2_CH1 + */ + GPIO_InitStruct.Pin = GPIO_PIN_5; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct.Alternate = GPIO_AF5_TIM2; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /* USER CODE BEGIN TIM2_MspPostInit 1 */ + + /* USER CODE END TIM2_MspPostInit 1 */ + } + else if(htim->Instance==TIM22) + { + /* USER CODE BEGIN TIM22_MspPostInit 0 */ + + /* USER CODE END TIM22_MspPostInit 0 */ + + __HAL_RCC_GPIOA_CLK_ENABLE(); + /**TIM22 GPIO Configuration + PA6 ------> TIM22_CH1 + PA7 ------> TIM22_CH2 + */ + GPIO_InitStruct.Pin = GPIO_PIN_6|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_AF5_TIM22; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /* USER CODE BEGIN TIM22_MspPostInit 1 */ + + /* USER CODE END TIM22_MspPostInit 1 */ + } + +} +/** +* @brief TIM_Base MSP De-Initialization +* This function freeze the hardware resources used in this example +* @param htim_base: TIM_Base handle pointer +* @retval None +*/ +void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base) +{ + if(htim_base->Instance==TIM2) + { + /* USER CODE BEGIN TIM2_MspDeInit 0 */ + + /* USER CODE END TIM2_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_TIM2_CLK_DISABLE(); + /* USER CODE BEGIN TIM2_MspDeInit 1 */ + + /* USER CODE END TIM2_MspDeInit 1 */ + } + else if(htim_base->Instance==TIM21) + { + /* USER CODE BEGIN TIM21_MspDeInit 0 */ + + /* USER CODE END TIM21_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_TIM21_CLK_DISABLE(); + /* USER CODE BEGIN TIM21_MspDeInit 1 */ + + /* USER CODE END TIM21_MspDeInit 1 */ + } + else if(htim_base->Instance==TIM22) + { + /* USER CODE BEGIN TIM22_MspDeInit 0 */ + + /* USER CODE END TIM22_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_TIM22_CLK_DISABLE(); + /* USER CODE BEGIN TIM22_MspDeInit 1 */ + + /* USER CODE END TIM22_MspDeInit 1 */ + } + +} + +/** +* @brief UART MSP Initialization +* This function configures the hardware resources used in this example +* @param huart: UART handle pointer +* @retval None +*/ +void HAL_UART_MspInit(UART_HandleTypeDef* huart) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + if(huart->Instance==USART2) + { + /* USER CODE BEGIN USART2_MspInit 0 */ + + /* USER CODE END USART2_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_USART2_CLK_ENABLE(); + + __HAL_RCC_GPIOA_CLK_ENABLE(); + /**USART2 GPIO Configuration + PA1 ------> USART2_DE + PA2 ------> USART2_TX + PA3 ------> USART2_RX + */ + GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.Alternate = GPIO_AF4_USART2; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /* USER CODE BEGIN USART2_MspInit 1 */ + + /* USER CODE END USART2_MspInit 1 */ + } + +} + +/** +* @brief UART MSP De-Initialization +* This function freeze the hardware resources used in this example +* @param huart: UART handle pointer +* @retval None +*/ +void HAL_UART_MspDeInit(UART_HandleTypeDef* huart) +{ + if(huart->Instance==USART2) + { + /* USER CODE BEGIN USART2_MspDeInit 0 */ + + /* USER CODE END USART2_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_USART2_CLK_DISABLE(); + + /**USART2 GPIO Configuration + PA1 ------> USART2_DE + PA2 ------> USART2_TX + PA3 ------> USART2_RX + */ + HAL_GPIO_DeInit(GPIOA, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3); + + /* USER CODE BEGIN USART2_MspDeInit 1 */ + + /* USER CODE END USART2_MspDeInit 1 */ + } + +} + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/fw_hal/Core/Src/stm32l0xx_it.c b/fw_hal/Core/Src/stm32l0xx_it.c new file mode 100644 index 0000000..e59a1f5 --- /dev/null +++ b/fw_hal/Core/Src/stm32l0xx_it.c @@ -0,0 +1,147 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32l0xx_it.c + * @brief Interrupt Service Routines. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2021 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "stm32l0xx_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-M0+ 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 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 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 */ +} + +/******************************************************************************/ +/* STM32L0xx 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_stm32l0xx.s). */ +/******************************************************************************/ + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/fw_hal/Core/Src/syscalls.c b/fw_hal/Core/Src/syscalls.c new file mode 100644 index 0000000..bc0dd6c --- /dev/null +++ b/fw_hal/Core/Src/syscalls.c @@ -0,0 +1,156 @@ +/** + ****************************************************************************** + * @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 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* 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) +{ + 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) +{ + int DataIdx; + + for (DataIdx = 0; DataIdx < len; DataIdx++) + { + *ptr++ = __io_getchar(); + } + +return len; +} + +__attribute__((weak)) int _write(int file, char *ptr, int len) +{ + int DataIdx; + + for (DataIdx = 0; DataIdx < len; DataIdx++) + { + __io_putchar(*ptr++); + } + return len; +} + +int _close(int file) +{ + return -1; +} + + +int _fstat(int file, struct stat *st) +{ + st->st_mode = S_IFCHR; + return 0; +} + +int _isatty(int file) +{ + return 1; +} + +int _lseek(int file, int ptr, int dir) +{ + return 0; +} + +int _open(char *path, int flags, ...) +{ + /* Pretend like we always fail */ + return -1; +} + +int _wait(int *status) +{ + errno = ECHILD; + return -1; +} + +int _unlink(char *name) +{ + errno = ENOENT; + return -1; +} + +int _times(struct tms *buf) +{ + return -1; +} + +int _stat(char *file, struct stat *st) +{ + st->st_mode = S_IFCHR; + return 0; +} + +int _link(char *old, char *new) +{ + errno = EMLINK; + return -1; +} + +int _fork(void) +{ + errno = EAGAIN; + return -1; +} + +int _execve(char *name, char **argv, char **env) +{ + errno = ENOMEM; + return -1; +} diff --git a/fw_hal/Core/Src/sysmem.c b/fw_hal/Core/Src/sysmem.c new file mode 100644 index 0000000..d7cc52c --- /dev/null +++ b/fw_hal/Core/Src/sysmem.c @@ -0,0 +1,80 @@ +/** + ****************************************************************************** + * @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) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* 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/fw_hal/Core/Src/system_stm32l0xx.c b/fw_hal/Core/Src/system_stm32l0xx.c new file mode 100644 index 0000000..9189ed8 --- /dev/null +++ b/fw_hal/Core/Src/system_stm32l0xx.c @@ -0,0 +1,275 @@ +/** + ****************************************************************************** + * @file system_stm32l0xx.c + * @author MCD Application Team + * @brief CMSIS Cortex-M0+ 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_stm32l0xx.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) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32l0xx_system + * @{ + */ + +/** @addtogroup STM32L0xx_System_Private_Includes + * @{ + */ + +#include "stm32l0xx.h" + +#if !defined (HSE_VALUE) + #define HSE_VALUE ((uint32_t)8000000U) /*!< Value of the External oscillator in Hz */ +#endif /* HSE_VALUE */ + +#if !defined (MSI_VALUE) + #define MSI_VALUE ((uint32_t)2097152U) /*!< Value of the Internal oscillator in Hz*/ +#endif /* MSI_VALUE */ + +#if !defined (HSI_VALUE) + #define HSI_VALUE ((uint32_t)16000000U) /*!< Value of the Internal oscillator in Hz*/ +#endif /* HSI_VALUE */ + + +/** + * @} + */ + +/** @addtogroup STM32L0xx_System_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32L0xx_System_Private_Defines + * @{ + */ +/************************* Miscellaneous Configuration ************************/ + +/* 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. */ +#define VECT_TAB_OFFSET 0x00000000U /*!< Vector Table base offset 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. */ +#define VECT_TAB_OFFSET 0x00000000U /*!< Vector Table base offset field. + This value must be a multiple of 0x200. */ +#endif /* VECT_TAB_SRAM */ +#endif /* USER_VECT_TAB_ADDRESS */ + +/******************************************************************************/ +/** + * @} + */ + +/** @addtogroup STM32L0xx_System_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32L0xx_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 = 2097152U; /* 32.768 kHz * 2^6 */ + 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}; + const uint8_t PLLMulTable[9] = {3U, 4U, 6U, 8U, 12U, 16U, 24U, 32U, 48U}; + +/** + * @} + */ + +/** @addtogroup STM32L0xx_System_Private_FunctionPrototypes + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32L0xx_System_Private_Functions + * @{ + */ + +/** + * @brief Setup the microcontroller system. + * @param None + * @retval None + */ +void SystemInit (void) +{ + /* Configure the Vector Table location add offset address ------------------*/ +#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 variable 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 stm32l0xx_hal.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 stm32l0xx_hal.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 = 0U, pllmul = 0U, plldiv = 0U, pllsource = 0U, msirange = 0U; + + /* Get SYSCLK source -------------------------------------------------------*/ + tmp = RCC->CFGR & RCC_CFGR_SWS; + + switch (tmp) + { + case 0x00U: /* MSI used as system clock */ + msirange = (RCC->ICSCR & RCC_ICSCR_MSIRANGE) >> RCC_ICSCR_MSIRANGE_Pos; + SystemCoreClock = (32768U * (1U << (msirange + 1U))); + break; + case 0x04U: /* HSI used as system clock */ + if ((RCC->CR & RCC_CR_HSIDIVF) != 0U) + { + SystemCoreClock = HSI_VALUE / 4U; + } + else + { + SystemCoreClock = HSI_VALUE; + } + break; + case 0x08U: /* HSE used as system clock */ + SystemCoreClock = HSE_VALUE; + break; + default: /* 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 >> RCC_CFGR_PLLMUL_Pos)]; + plldiv = (plldiv >> RCC_CFGR_PLLDIV_Pos) + 1U; + + pllsource = RCC->CFGR & RCC_CFGR_PLLSRC; + + if (pllsource == 0x00U) + { + /* HSI oscillator clock selected as PLL clock entry */ + if ((RCC->CR & RCC_CR_HSIDIVF) != 0U) + { + SystemCoreClock = (((HSI_VALUE / 4U) * pllmul) / plldiv); + } + else + { + SystemCoreClock = (((HSI_VALUE) * pllmul) / plldiv); + } + } + else + { + /* HSE selected as PLL clock entry */ + SystemCoreClock = (((HSE_VALUE) * pllmul) / plldiv); + } + break; + } + /* Compute HCLK clock frequency --------------------------------------------*/ + /* Get HCLK prescaler */ + tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos)]; + /* HCLK clock frequency */ + SystemCoreClock >>= tmp; +} + + + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/fw_hal/Core/Startup/startup_stm32l031g6ux.s b/fw_hal/Core/Startup/startup_stm32l031g6ux.s new file mode 100644 index 0000000..62608af --- /dev/null +++ b/fw_hal/Core/Startup/startup_stm32l031g6ux.s @@ -0,0 +1,261 @@ +/** + ****************************************************************************** + * @file startup_stm32l031xx.s + * @author MCD Application Team + * @brief STM32L031xx 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 + * - Branches to main in the C library (which eventually + * calls main()). + * After Reset the Cortex-M0+ processor is in Thread mode, + * priority is Privileged, and the Stack is set to Main. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + + .syntax unified + .cpu cortex-m0plus + .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 + + .section .text.Reset_Handler + .weak Reset_Handler + .type Reset_Handler, %function +Reset_Handler: + ldr r0, =_estack + mov sp, r0 /* set stack pointer */ + +/* 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 the clock system intitialization function.*/ + bl SystemInit +/* Call static constructors */ + bl __libc_init_array +/* Call the application's entry point.*/ + bl main + +LoopForever: + b LoopForever + + +.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 M0. 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 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word SVC_Handler + .word 0 + .word 0 + .word PendSV_Handler + .word SysTick_Handler + .word WWDG_IRQHandler /* Window WatchDog */ + .word PVD_IRQHandler /* PVD through EXTI Line detection */ + .word RTC_IRQHandler /* RTC through the EXTI line */ + .word FLASH_IRQHandler /* FLASH */ + .word RCC_IRQHandler /* RCC */ + .word EXTI0_1_IRQHandler /* EXTI Line 0 and 1 */ + .word EXTI2_3_IRQHandler /* EXTI Line 2 and 3 */ + .word EXTI4_15_IRQHandler /* EXTI Line 4 to 15 */ + .word 0 /* Reserved */ + .word DMA1_Channel1_IRQHandler /* DMA1 Channel 1 */ + .word DMA1_Channel2_3_IRQHandler /* DMA1 Channel 2 and Channel 3 */ + .word DMA1_Channel4_5_6_7_IRQHandler /* DMA1 Channel 4, Channel 5, Channel 6 and Channel 7*/ + .word ADC1_COMP_IRQHandler /* ADC1, COMP1 and COMP2 */ + .word LPTIM1_IRQHandler /* LPTIM1 */ + .word 0 /* Reserved */ + .word TIM2_IRQHandler /* TIM2 */ + .word 0 /* Reserved */ + .word 0 /* Reserved */ + .word 0 /* Reserved */ + .word 0 /* Reserved */ + .word TIM21_IRQHandler /* TIM21 */ + .word 0 /* Reserved */ + .word TIM22_IRQHandler /* TIM22 */ + .word I2C1_IRQHandler /* I2C1 */ + .word 0 /* Reserved */ + .word SPI1_IRQHandler /* SPI1 */ + .word 0 /* Reserved */ + .word 0 /* Reserved */ + .word USART2_IRQHandler /* USART2 */ + .word LPUART1_IRQHandler /* LPUART1 */ + .word 0 /* Reserved */ + .word 0 /* Reserved */ + +/******************************************************************************* +* +* 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 SVC_Handler + .thumb_set SVC_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 RTC_IRQHandler + .thumb_set RTC_IRQHandler,Default_Handler + + .weak FLASH_IRQHandler + .thumb_set FLASH_IRQHandler,Default_Handler + + .weak RCC_IRQHandler + .thumb_set RCC_IRQHandler,Default_Handler + + .weak EXTI0_1_IRQHandler + .thumb_set EXTI0_1_IRQHandler,Default_Handler + + .weak EXTI2_3_IRQHandler + .thumb_set EXTI2_3_IRQHandler,Default_Handler + + .weak EXTI4_15_IRQHandler + .thumb_set EXTI4_15_IRQHandler,Default_Handler + + .weak DMA1_Channel1_IRQHandler + .thumb_set DMA1_Channel1_IRQHandler,Default_Handler + + .weak DMA1_Channel2_3_IRQHandler + .thumb_set DMA1_Channel2_3_IRQHandler,Default_Handler + + .weak DMA1_Channel4_5_6_7_IRQHandler + .thumb_set DMA1_Channel4_5_6_7_IRQHandler,Default_Handler + + .weak ADC1_COMP_IRQHandler + .thumb_set ADC1_COMP_IRQHandler,Default_Handler + + .weak LPTIM1_IRQHandler + .thumb_set LPTIM1_IRQHandler,Default_Handler + + .weak TIM2_IRQHandler + .thumb_set TIM2_IRQHandler,Default_Handler + + .weak TIM21_IRQHandler + .thumb_set TIM21_IRQHandler,Default_Handler + + .weak TIM22_IRQHandler + .thumb_set TIM22_IRQHandler,Default_Handler + + .weak I2C1_IRQHandler + .thumb_set I2C1_IRQHandler,Default_Handler + + .weak SPI1_IRQHandler + .thumb_set SPI1_IRQHandler,Default_Handler + + .weak USART2_IRQHandler + .thumb_set USART2_IRQHandler,Default_Handler + + .weak LPUART1_IRQHandler + .thumb_set LPUART1_IRQHandler,Default_Handler + + + + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/fw_hal/Debug/Core/Src/config.d b/fw_hal/Debug/Core/Src/config.d new file mode 100644 index 0000000..b7112e7 --- /dev/null +++ b/fw_hal/Debug/Core/Src/config.d @@ -0,0 +1,90 @@ +Core/Src/config.o: ../Core/Src/config.c ../Core/Inc/config.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h \ + ../Drivers/CMSIS/Include/core_cm0plus.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h \ + ../Core/Inc/stm32l0xx_hal_conf.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h + +../Core/Inc/config.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h: + +../Drivers/CMSIS/Include/core_cm0plus.h: + +../Drivers/CMSIS/Include/cmsis_version.h: + +../Drivers/CMSIS/Include/cmsis_compiler.h: + +../Drivers/CMSIS/Include/cmsis_gcc.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h: + +../Core/Inc/stm32l0xx_hal_conf.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h: diff --git a/fw_hal/Debug/Core/Src/config.o b/fw_hal/Debug/Core/Src/config.o new file mode 100644 index 0000000000000000000000000000000000000000..c029a1cd7369b0311af15a96374221b27c48776c GIT binary patch literal 580976 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 Cts3k_N0o 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≈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

AwX^e;hE8K4wB}#xO|{~$fXZFq7<>sl6AmZ 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 literal 0 HcmV?d00001 diff --git a/fw_hal/Debug/Core/Src/i2c.su b/fw_hal/Debug/Core/Src/i2c.su new file mode 100644 index 0000000..22387a9 --- /dev/null +++ b/fw_hal/Debug/Core/Src/i2c.su @@ -0,0 +1,4 @@ +i2c.c:14:8:i2c_init 16 static +i2c.c:24:8:i2c_transmit 40 static +i2c.c:34:8:i2c_receive 40 static +i2c.c:45:8:i2c_transmit_receive 56 static diff --git a/fw_hal/Debug/Core/Src/main.d b/fw_hal/Debug/Core/Src/main.d new file mode 100644 index 0000000..14e6a64 --- /dev/null +++ b/fw_hal/Debug/Core/Src/main.d @@ -0,0 +1,111 @@ +Core/Src/main.o: ../Core/Src/main.c ../Core/Inc/main.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h \ + ../Core/Inc/stm32l0xx_hal_conf.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h \ + ../Drivers/CMSIS/Include/core_cm0plus.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h \ + ../Core/Inc/i2c.h ../Core/Inc/main.h ../Core/Inc/scd4x.h \ + ../Core/Inc/crc8.h ../Core/Inc/sht4x.h ../Core/Inc/sps30.h \ + ../Core/Inc/modbus.h ../Core/Inc/config.h ../Core/Inc/rgb_led.h + +../Core/Inc/main.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h: + +../Core/Inc/stm32l0xx_hal_conf.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h: + +../Drivers/CMSIS/Include/core_cm0plus.h: + +../Drivers/CMSIS/Include/cmsis_version.h: + +../Drivers/CMSIS/Include/cmsis_compiler.h: + +../Drivers/CMSIS/Include/cmsis_gcc.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h: + +../Core/Inc/i2c.h: + +../Core/Inc/main.h: + +../Core/Inc/scd4x.h: + +../Core/Inc/crc8.h: + +../Core/Inc/sht4x.h: + +../Core/Inc/sps30.h: + +../Core/Inc/modbus.h: + +../Core/Inc/config.h: + +../Core/Inc/rgb_led.h: diff --git a/fw_hal/Debug/Core/Src/main.o b/fw_hal/Debug/Core/Src/main.o new file mode 100644 index 0000000000000000000000000000000000000000..bf661a125489afcf434c8d4cb22c6a785a80e47f GIT binary patch literal 599424 zcmb@ucU;t17eAa#CYfZCnPf5}B7&k~+qL&D_JX==UwhqkSJ&PB(# zD2lyTtk`=6vBU3sGUGlz`~2SbkN5M==VQ)2{ob2f&OJ9czFw31EXy+Ae=Jjk`47f0 z{-Q)IzMLUYgxSmNG5BqOx5Yn_{SE)xdCKhpJ9x?+0XuohodLUe%3T4wdCJ`Zdw9w{ z0e|uP;9yUA2;fjpc^KeuPk993 zNKbhb;Al^I4B%K#c^u$)PdONHf~On;80slc1f1k4hXGFZl&1hr^^~UpPWO~&0M7K3 zX93Rkl;;4>^_1rU&i9lT050^D7XdEzl*0j+c*;uwmwCz&fXhAQ6@V)}^Ki zHJDI>9MzV+gxxft%_2uKF`f$nYlIi)szc~p@ z;+eQ&0abH(Gvx~SFibwO?_J=Fw>RVZ2d@fi-v3}f1?B$pr^Y^kMS_C!NvySwPuG0R zXm3+~pRS|5+5Fe>)bjguBTD=3qrI8@OO5AsJcILJ;Cy(5lXZbc!}zFU!h)zKS08l1lc>(h0VcfNl{$oCfb{!3beG;A4t-X0pR z|Iw(*bOm1v%00!0smiqfq35r6t;~q1$$$60+2euw!5SaD&pig?%MQ(HUq)mDyFA1EMZN#OyuZppRnUeisC7lOp@Pu{dV6KjhB8JQN*iq``L8zo z`1XqYPaOmPCH?QW=leez?zflg|KaUvsL6l7J@p?+dbj3(asTh{mT|Fx-`_92WtwkZ zK{?U>96@*Uw=lKu>O@;xuuHodbE~Tg>;mJ{%@(9!{3_Hp-7vE->m=%#?iM`TcNZEm z1(^KqHR=24{b6p^rFj)XV=3r*Z%YuH&syhtcRuJwZ#KU(aCFzvf0C@p{XR7lWSO`@ zJCf>WJ?`PfFz&%!|K)!6t_H4&6{A+M443u- z^oriU5Xr>PssyZmD?BRaqP^Q>vb?*(F(xzr@*#+MpP3l$mt3@Sn#`7Dhlw$Xe9TAz zz%qH8nK7IBzxoX!UT7_N`p}zY%-+sY5a(%k;)Y^RH~Ty5P`QQ|m;o+|G=#k*K@V>4 zNfTo(;j1{PEYkL5MiV947gdJOAb~ZSiQ%hz5#10d_+7xl@HtSn ztWDw>zJ?dk4T1XK1w@9gKmv_R2@GG;i|AHO*e@+aL9SD$1tTOmZo>tm%=<}Tgo6fR zRtA=18R3wDh|1X>CPqj$5QX7JH{lrJFxQqWi9(8Wge)~`2}{R3mP|G?BOG^IVz_+@ z+IoUp4KZ6Wp(HB}Gck<4PK(lvP?~jX04u`?W!#uq-LQ*igtBf-R2S!lzjAI&QP*9D zweoIEQv>?|tKi05cB2v%-I%w%5jC!o8}n8F_!D)i?8f}ny%+~V6*m^31`a~YtGclw zj8<_!+Fp${ou?X$LNiv{;I1(v{OT4$^{Kth-I$rtHfF(I3ziFopskhAmX#iHMk5)a zokvCe@Cof`?@>{mf#}l?ZcJ2v_5-h@8&lNl*HD2@ZcJ12-2v9wjk(mCCxCTvW8Uhe zzoFOFjrpn<5`cAcWBzL82Jq0`jRmMvYeTPx8!MuQn!xMn#)_%K` zaAW0Ep9j$E<;E(h(Tjoo>Bg$56>Fg1{&Hi1YLgOp7rotBU3Gd<^hh5!)=*6?1%H3L zu_o@$>+8mTWwe$pVYDC1?QnNqBrD~|GPmjTN!iY5|*ZZmgJ^{sc{nXN}2QN?rK`ZQ0`Hl~d15g3YaNtde?>ux)OvntF|} z?QSekUHKGN65Lkm+UwHL-QngnR1fTfwG(HxQ~ZVa=F zy7{OZ^L5X)V{Xjf-l8se$K6LpHI4t^l-+3Iv>f8JvrQiBuW;iVGMFhrDoO=Sz?nc6+`l(Z{6Bi>SIiDi^hSW?6^12HR!r&vb3Zy=(w@UV#y9~lUix|_Gm zjQE7BO_s`uFC||Kl*1+pjQHAPslX>Fzw=lsR3B#Fdn~p76-)6)w=BrM}&=M6l=5PPCNfSm?Subi%0HbBd5OuKJ44^ib z=*3E-P&;+CKa6|3br|*XO<2h7#>{H3rl?XLHzulH9pO2j8&g!@Q{V--F^$nm>;SV6 z%N2!9tG5&<-Jz!c(TiiGEk<1#W#0rdBW*Vjv$DD?&qxOiL{v&N1n01UD2i_z=o~c= zO=+2IVx%($;$pawaZtL%O(q}y){;^u5k4L#vW&H~A;Ku-hV$ro12HQ_T^wVrWFVqa zd@_`(8i=BFs$gcUH4H>ks;mW4%RpR;xjYQiH4ty*k^-cWf%r0>N}<|B4-p(d*(c&FY=e7L&fO9EKk%jB#jfWBLn10!cb6)#sUp)`40O(hN%TIs#)I zoSVvwGV}sOhvuRtnUzsE+gpd{qM;g~3~hjBjLZ`OPC?}$UcYs;Pjl!LQ4Y3-&RE}` zK#D0fFkr3Y4WyJ(rxi?3FpzRe05TWWPy?x?OdSFPlYD3kucl0_44uijd&5AW5|s-& zQ+;T}*JWI0+VFFjy*h)JlO7jx^Fp|}z?yJl;MDU%D(C+g(_c_yEJy#mkV*VCLx z`{)h!vP@BZ(>|MdcG?DjczvHNGymEP8UMjm^xqKiG zb(&d8t_Hn>dHaA9pfo>fV&vpJ6af}ddYVv^BYBPi`AJ!e2`?YbL$9xxva~z8@PvVs zQaX~@DX%#&P)@lv1O0h6?;;?Tl#0~3=MAKqF|_21d1z<_8beFIoTn}7S<4vu^3^=E zfz&pJiJWSfuB+_tjQ4iKKpNuJQ#|G}QvmBt>+du;$!R=j=;Sn3OqY29%(%=0!E>1h zpoLuRW2oO}j_6jGQc_9>OF2CQkMEPW>NpNF*m%`urAZH#Q7RgUsAOlG80Guq)rTUo z_e@@fYgquSKyE#(Sv94eR2_2>;{=ZehBBk%K=Mmz>@iya(@bgVG1~#llk%&9VDZjI zbgs1IvfY-}NR!D@dPg{m@>r5KLn7K^DLez54IWDe5K$HF18R23bQ(>4KN?J5SjN@ z+u>-T$-@?+6}Yl`ZYf;lWee4YWEFMzFRYjLp49iAr5xGh=hFQHn9AZ0-@JDLb(S*;*PpE@fH?SZiw_-U?d}oDK$p zjixIyx3;caD>$_lvHdP}R^h!{ARP8GL>MLFE|9+s#H=`$!(o2|5tUkqe{6#cL{Tc} zFgwgZG-X*jI3o?jrCg~8oiPUDtyI_tYvT>XS1JAmNQi;>E0$l-urLD&V7THVfKA~p zpk7>!{1Dr!(`XiYqkbH70fZB7!e|hj%XAYn(RNmwtD*Mvwr%JAsO(<%Y!`j0Q_adT z5&dvE54ABsi987-SN&)aY@&##z)AI`MetW;ct2G5hA%CGEtHm68*H}>u~rH@7md7Q zi2bG%n+gMW4YBr0^JNgbZ*V#)QCPKX5A#ljpRP*mDOh`KU61PYR2m|dv^_PDKaGXc z_S}z#$=}ApX?tlP1B`{!_S%oe-4NyRJD7f(Zy2nNPKN+)( z;l^=h#$Jir10kPYl?28g#=8#$KKsi831)rCmgTvLXVjG%t=A$wia8i2 zH)9EVY-ZF*EgvxPKFDF!X(OczAS&L7!nHA0 zGKb}42#~Qdy(p7XGXQJGID=zWR*nWT-rxwz1ww)iL{ywu^0ZKEJXuwi?%^3N%-|?W zno9iac2XJLJuWl0VpMYqQfO$|yRp z)cJwpu$a0-fo;o{aWahG&1M2qWvE|fw3(?o)GxK3iK#Z!uQ#S`^`U-!IF_j~)UWS5 zhN(H!??@Gn2^`A!7ODn|UATApcdy?qc4w!P#oY+=YDM_f#*wCWgx|em98)L4Z$~?x zsT<*U37}qt-`zq2Q$ND53f9*K5q|L)@eLywU;iFxU>~k7jJTWg-EcqlEE$e&$5B-~ zSOuzT#(AEq`Wg2;sOohLxf-Zk8m@WRA>8tRY~-o)OBse8&d>c%CuOHYX1MhSN;}wM zhdY0uJTHq^G~!3Cm%-2)VgHYeNc|q<@@xbW9n8t>no&#BLQuM~Z0x#Rc5NqOSMKI09HWHB55LLYH*7(!VC>TrL zmbyu$@Os&ZzA#cC`x(fqSsw~}OmqJ%Fg^&Hk!)@XUQBbl76@a3uVK9?z%tGKl_{7f z18wc=wzJ(Z9rcf$A^);7^dCD+!QploD&y8u4F50x(X0F~y(<6cx&2rDkN<#SCQK@` z+fK0Izfk;DkS-Yg_{5+zKo=IyMGh}{(P5mMyLWuy$cw1>WiLAZa&y;@FI=;sz_3?* z>BP#-oim;(^3!|tO1LpzV1=1zm@2xnFCwTJ6ihkTf_A6O*>l@l=X9`I&Ly>TqE7-C zS*`&pta#zHSVgWXSC$)L?3z6s5yPYqLlmLB0W9TykgJ)i8crS}%QkYd5Rvjhq$HLr ztCN*ww=ts2Hii?w+pYw@0>VGeh+y+5@Rem!uzM7MHgXbQ^(g#9&^*;O2v}ClYz$LMF5=}a!Pd-WbOH<&&gEcrA<%nqZKEFkeoSd6 zQGS!#@oiDVd?nBXH0^&y^UHX%Iz~@{AFD+U0!q01_y?UuwehwJ{;w_2sriNesS*ak z_bPdKg@0@vnJ-d;@zmcCZe-Lq(A#iP)Z^OV_@n+zNBqMH3_n^J+&>zk^rKNvzhL8u z!GZZjKboKPqxnuhS_JlgH_1g|ULW(A&lPk7@-=`EziR7jJ!E756X-#|tq? zt#D#a-s{6i==pjZ;^rTpoGq6dGOj$H#j%%Gx94Ol`^@>9v!X^ zj~Zat{m}*&Y_glpTwYpZz~TJ;elX=0#Hv9<%w~!kbM6Jfs*?0Ppn;CtP@c&dP4~DRV(L+ar|C7IHJPO@-YgGdIVixM>ke zk?*u{lg&-rAX6TXjPeIfg|P2^Z+n5Cc**h@uS{`#Ck6b>OSjN}oUNE!$Nl6A7WWhi zmGBe_tDZs;%~L2^l9xsvfqA|`_84+ULz-s-qgXsIzvJ-iumo3KOt?bj`T<10R-T^Q z5yJD#66|z5(>)NES#=SZtxcie?Bb2ZZXa)M-nY7xEEeM9Rk zJx_b%wu|waP28Ti^WvGTu0*-BktFL1L<#Fml(KC}es2wuyz-Rj!cg+~pbmN2wua;j z?Nwn*kmdn3n%%RA=IvF_lT~PB(241L?2p& zw1!qE?h@pndFEyoQBpsVZk-8K&d8?cUt38_OQC1vXwo$!g~T%>R}%MfU82WWsk|6B zWIU5Ng(ywC6U7hLt30#Npftjf6}jMA#2t6Rs2i^TdFGKZLQ0+{N{;j7z1V7cE;7bU zPNc|qrl3l8=0%c)URaSZuI`a;=r_`e4JG+ipAD|j^Y?O+R*xjZ8jflhV@6*oe~^4g zZn9Pc2|J9RB$5oCO!Rlg`#NRReA^My%`|HD`X`b+ffOXqjJ{4~dpEMV@*K&O9!h@u zI>(2cEH%r01Gaq??YjE&Mj3p6rNEpm=6SUMg2!O9ik(z;)To|(qDx{n+fX4y63R*xdxUJL2Dau;bWLn4-E#^W{? zvjcYy7~y%ym%~^YY{t658MAvqELj*chvZWiP`O+!dcHb9&!NUVU3Y`*EU8JB1CV*d z_(zC<8PT68Z;Uk|<2BLSexzq8)?&Q7Aym$bJ8bx^M$dF(Ubn@K56`qWM*fj>qPOrS z%1i{?n5W3<@ywCoRPH>P%EfUX!!x^$K0lt1Y(B*nj$SH2by)nF%J#t|bF3WseHu>f zUA~PZ2jB$5Gh3dMoo{~=eY8T7eT`Y)#aJbLvq`3u7je5Goz62qBUr`?i6j=!{63#3 zYkwwRxr{ZrAC_n&(v4MR(gG?k#bE^F#Aev(LAr_MNq(d;m;VYPdVv6vF-;@-?}bTg zgyC`52`XQ#OIpkD)da>>DoGAQ_5sgF^0L;LkER5YUw5B8&c#P8Jkz`v`O

pnDS~ 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%0AeH+WKB)Pto}LQTxvZ+b!Esbl%Qe7ZixWHktv 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

Pgyf} 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 P~HI}clZbw$5>r{Hx8N`2=!^y2S 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 literal 0 HcmV?d00001 diff --git a/fw_hal/Debug/Core/Src/scd4x.su b/fw_hal/Debug/Core/Src/scd4x.su new file mode 100644 index 0000000..ac9fbb0 --- /dev/null +++ b/fw_hal/Debug/Core/Src/scd4x.su @@ -0,0 +1,6 @@ +scd4x.c:11:8:scd4x_send_cmd 56 static +scd4x.c:27:8:scd4x_read_data 16 static +scd4x.c:32:8:scd4x_start_periodic_measurement 8 static +scd4x.c:37:8:scd4x_stop_periodic_measurement 8 static +scd4x.c:42:8:scd4x_perform_factory_reset 8 static +scd4x.c:47:8:scd4x_read_measurement 96 static diff --git a/fw_hal/Debug/Core/Src/sht4x.d b/fw_hal/Debug/Core/Src/sht4x.d new file mode 100644 index 0000000..7f45148 --- /dev/null +++ b/fw_hal/Debug/Core/Src/sht4x.d @@ -0,0 +1,114 @@ +Core/Src/sht4x.o: ../Core/Src/sht4x.c ../Core/Inc/sht4x.h \ + ../Core/Inc/i2c.h ../Core/Inc/main.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h \ + ../Core/Inc/stm32l0xx_hal_conf.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h \ + ../Drivers/CMSIS/Include/core_cm0plus.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h \ + ../Core/Inc/scd4x.h ../Core/Inc/crc8.h ../Core/Inc/sht4x.h \ + ../Core/Inc/sps30.h ../Core/Inc/modbus.h ../Core/Inc/config.h \ + ../Core/Inc/rgb_led.h ../Core/Inc/main.h + +../Core/Inc/sht4x.h: + +../Core/Inc/i2c.h: + +../Core/Inc/main.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h: + +../Core/Inc/stm32l0xx_hal_conf.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h: + +../Drivers/CMSIS/Include/core_cm0plus.h: + +../Drivers/CMSIS/Include/cmsis_version.h: + +../Drivers/CMSIS/Include/cmsis_compiler.h: + +../Drivers/CMSIS/Include/cmsis_gcc.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h: + +../Core/Inc/scd4x.h: + +../Core/Inc/crc8.h: + +../Core/Inc/sht4x.h: + +../Core/Inc/sps30.h: + +../Core/Inc/modbus.h: + +../Core/Inc/config.h: + +../Core/Inc/rgb_led.h: + +../Core/Inc/main.h: diff --git a/fw_hal/Debug/Core/Src/sht4x.o b/fw_hal/Debug/Core/Src/sht4x.o new file mode 100644 index 0000000000000000000000000000000000000000..f181286444e50fcd5db5338075cf643dfc7f6c04 GIT binary patch literal 581268 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

S#j` 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 }J}8vQ54?cTL*Z1yZjs_M?rl94*Y82NSTTl4 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

&%vA%o6L*W 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

d&y;{=*kSaq7HQ+ewnlaZc^W^K{ zr#v!-iFie#QTj*{!=AIpP&iJwMnBUFf( zuWtTW9@M$-wAbXmr_5_2Mx*v666X!%eyJLa@`moR*W@}@=BeYTU$w8Z$h)CJM6J3R zv3*Xv#qtnsm3i)BG-_Yd^qMBmAE`mzjF?wqujoH9Q|77Ts9&|OyR$e=qQZnmc~ke< zTecfA&r^&>?OWEAsM+BAMqUMx(s5&YC6`@sGhMFUEd*O_W;le1t}M zFGZ1yn6Cz-yi6ibJ`dSGbsY7p{!5%e)7Gglp;2B9k#|$fmw9c(Xw<#~B5#?UC}1$k z%XL8Xp9qn8>Nx6G?UTRNuE`xl2BSRpBclIC>3M#l)~J0UbM^lCU0zpr2g`a~wlBa& z-er;JUQneO_uo^ISEQugzVR0`@SnOCd z|Fe09c}J)G`Fz!J)UWblUKOtwIfKEdeI=$kXbxh#Als*oqkfgQ`L1}ra$zwTb^!iUy&p8`r61VF7mRgMu|Fg zGh+V@6?vXwrp)VaBhTlRrpaSRH5lbRT`S&iJl}yf@)o|)G|ap%~OpN8nv&h$lEC9%l?!5PeyrXMcyzKVk6IO%b)Kz z`8qVpGky5)$CoNP;_{8RO{@<@j%?p(8+lxqh1kgJD)KyezEf@FT@)WOCKL13prRu#->b*}T)xvqvC;E=F7hI? zfAv=6Ig1?md}oT$C@+pfv`Fn=Ih}C$v41t&MqVzFC-+~~VDx-Th`ex7B-=Mvj7IGn zEb`=WfEv`zi2b)#Zjq)~&A0x=7!h}Y76;A!ReqLxJ@3zQ`%<>2kdCnq7 zwr{aj-VxCN)dq35_D$p!kO$5TYTf~H!}@r7tjKF3YGmG0F{0^W=CtLY>_xd&_ZP#5#E`wyak}6H(`5b%%UhImqAmv2Nc}(Y}@9e%U^$YM(q$ zD|VOLi@Pkt*3tG_E;S)k(Ne3;iuO>{C5oqi_AE1HULrBd$F$o0);>(P*IdN83pJ=b R#|U*(PdjKytR6ts{TCp*y37Co literal 0 HcmV?d00001 diff --git a/fw_hal/Debug/Core/Src/sps30.su b/fw_hal/Debug/Core/Src/sps30.su new file mode 100644 index 0000000..2129e9d --- /dev/null +++ b/fw_hal/Debug/Core/Src/sps30.su @@ -0,0 +1,11 @@ +sps30.c:10:8:sps30_send_cmd 56 static +sps30.c:27:8:sps30_start_measurement 16 static +sps30.c:49:8:sps30_stop_measurement 8 static +sps30.c:54:8:sps30_read_measured_values 88 static +sps30.c:99:8:sps30_sleep 8 static +sps30.c:104:8:sps30_wake_up 8 static +sps30.c:110:8:sps30_start_fan_cleaning 8 static +sps30.c:115:8:sps30_reset 8 static +sps30.c:121:8:sps30_read_status_register 32 static +sps30.c:146:8:sps30_read_firmware_version 32 static +sps30.c:179:9:calculate_crc 24 static diff --git a/fw_hal/Debug/Core/Src/stm32l0xx_hal_msp.d b/fw_hal/Debug/Core/Src/stm32l0xx_hal_msp.d new file mode 100644 index 0000000..9bf052f --- /dev/null +++ b/fw_hal/Debug/Core/Src/stm32l0xx_hal_msp.d @@ -0,0 +1,111 @@ +Core/Src/stm32l0xx_hal_msp.o: ../Core/Src/stm32l0xx_hal_msp.c \ + ../Core/Inc/main.h ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h \ + ../Core/Inc/stm32l0xx_hal_conf.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h \ + ../Drivers/CMSIS/Include/core_cm0plus.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h \ + ../Core/Inc/i2c.h ../Core/Inc/main.h ../Core/Inc/scd4x.h \ + ../Core/Inc/crc8.h ../Core/Inc/sht4x.h ../Core/Inc/sps30.h \ + ../Core/Inc/modbus.h ../Core/Inc/config.h ../Core/Inc/rgb_led.h + +../Core/Inc/main.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h: + +../Core/Inc/stm32l0xx_hal_conf.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h: + +../Drivers/CMSIS/Include/core_cm0plus.h: + +../Drivers/CMSIS/Include/cmsis_version.h: + +../Drivers/CMSIS/Include/cmsis_compiler.h: + +../Drivers/CMSIS/Include/cmsis_gcc.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h: + +../Core/Inc/i2c.h: + +../Core/Inc/main.h: + +../Core/Inc/scd4x.h: + +../Core/Inc/crc8.h: + +../Core/Inc/sht4x.h: + +../Core/Inc/sps30.h: + +../Core/Inc/modbus.h: + +../Core/Inc/config.h: + +../Core/Inc/rgb_led.h: diff --git a/fw_hal/Debug/Core/Src/stm32l0xx_hal_msp.o b/fw_hal/Debug/Core/Src/stm32l0xx_hal_msp.o new file mode 100644 index 0000000000000000000000000000000000000000..69df73ce3604b8f473409d350ba03f906af847cf GIT binary patch literal 591572 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

Ikq;nr-2H}5r+_fzl@+oOZmuuEocOQ8nxt!B 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 K6L$zn`uzn)GT!(A literal 0 HcmV?d00001 diff --git a/fw_hal/Debug/Core/Startup/subdir.mk b/fw_hal/Debug/Core/Startup/subdir.mk new file mode 100644 index 0000000..1a933ef --- /dev/null +++ b/fw_hal/Debug/Core/Startup/subdir.mk @@ -0,0 +1,20 @@ +################################################################################ +# Automatically-generated file. Do not edit! +# Toolchain: GNU Tools for STM32 (9-2020-q2-update) +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +S_SRCS += \ +../Core/Startup/startup_stm32l031g6ux.s + +OBJS += \ +./Core/Startup/startup_stm32l031g6ux.o + +S_DEPS += \ +./Core/Startup/startup_stm32l031g6ux.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-m0plus -g3 -DDEBUG -c -x assembler-with-cpp -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@" "$<" + diff --git a/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.d b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.d new file mode 100644 index 0000000..9433492 --- /dev/null +++ b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.d @@ -0,0 +1,89 @@ +Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o: \ + ../Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.c \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h \ + ../Core/Inc/stm32l0xx_hal_conf.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h \ + ../Drivers/CMSIS/Include/core_cm0plus.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h: + +../Core/Inc/stm32l0xx_hal_conf.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h: + +../Drivers/CMSIS/Include/core_cm0plus.h: + +../Drivers/CMSIS/Include/cmsis_version.h: + +../Drivers/CMSIS/Include/cmsis_compiler.h: + +../Drivers/CMSIS/Include/cmsis_gcc.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h: diff --git a/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o new file mode 100644 index 0000000000000000000000000000000000000000..4c041336539a39b23ca8d8851a55d203461bc29c GIT binary patch literal 587976 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 z%0D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 z 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 literal 0 HcmV?d00001 diff --git a/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.su b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.su new file mode 100644 index 0000000..585fd26 --- /dev/null +++ b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.su @@ -0,0 +1,31 @@ +stm32l0xx_hal.c:140:19:HAL_Init 16 static +stm32l0xx_hal.c:178:19:HAL_DeInit 8 static +stm32l0xx_hal.c:204:13:HAL_MspInit 8 static +stm32l0xx_hal.c:215:13:HAL_MspDeInit 8 static +stm32l0xx_hal.c:238:26:HAL_InitTick 24 static +stm32l0xx_hal.c:294:13:HAL_IncTick 8 static +stm32l0xx_hal.c:305:17:HAL_GetTick 8 static +stm32l0xx_hal.c:314:10:HAL_GetTickPrio 8 static +stm32l0xx_hal.c:323:19:HAL_SetTickFreq 40 static +stm32l0xx_hal.c:355:21:HAL_GetTickFreq 8 static +stm32l0xx_hal.c:371:13:HAL_Delay 24 static +stm32l0xx_hal.c:397:13:HAL_SuspendTick 8 static +stm32l0xx_hal.c:413:13:HAL_ResumeTick 8 static +stm32l0xx_hal.c:423:10:HAL_GetHalVersion 8 static +stm32l0xx_hal.c:432:10:HAL_GetREVID 8 static +stm32l0xx_hal.c:441:10:HAL_GetDEVID 8 static +stm32l0xx_hal.c:450:10:HAL_GetUIDw0 8 static +stm32l0xx_hal.c:459:10:HAL_GetUIDw1 8 static +stm32l0xx_hal.c:468:10:HAL_GetUIDw2 8 static +stm32l0xx_hal.c:497:6:HAL_DBGMCU_EnableDBGSleepMode 8 static +stm32l0xx_hal.c:506:6:HAL_DBGMCU_DisableDBGSleepMode 8 static +stm32l0xx_hal.c:515:6:HAL_DBGMCU_EnableDBGStopMode 8 static +stm32l0xx_hal.c:524:6:HAL_DBGMCU_DisableDBGStopMode 8 static +stm32l0xx_hal.c:533:6:HAL_DBGMCU_EnableDBGStandbyMode 8 static +stm32l0xx_hal.c:542:6:HAL_DBGMCU_DisableDBGStandbyMode 8 static +stm32l0xx_hal.c:556:6:HAL_DBGMCU_DBG_EnableLowPowerConfig 16 static +stm32l0xx_hal.c:573:6:HAL_DBGMCU_DBG_DisableLowPowerConfig 16 static +stm32l0xx_hal.c:610:11:HAL_SYSCFG_GetBootMode 8 static +stm32l0xx_hal.c:627:6:HAL_SYSCFG_VREFINT_OutputSelect 16 static +stm32l0xx_hal.c:641:6:HAL_SYSCFG_Enable_Lock_VREFINT 8 static +stm32l0xx_hal.c:651:6:HAL_SYSCFG_Disable_Lock_VREFINT 8 static diff --git a/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.d b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.d new file mode 100644 index 0000000..78183eb --- /dev/null +++ b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.d @@ -0,0 +1,89 @@ +Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o: \ + ../Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.c \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h \ + ../Core/Inc/stm32l0xx_hal_conf.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h \ + ../Drivers/CMSIS/Include/core_cm0plus.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h: + +../Core/Inc/stm32l0xx_hal_conf.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h: + +../Drivers/CMSIS/Include/core_cm0plus.h: + +../Drivers/CMSIS/Include/cmsis_version.h: + +../Drivers/CMSIS/Include/cmsis_compiler.h: + +../Drivers/CMSIS/Include/cmsis_gcc.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h: diff --git a/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o new file mode 100644 index 0000000000000000000000000000000000000000..8e3f0ce0bcb4cf4a866d7ddfb1930292c5b11ce6 GIT binary patch literal 583792 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�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

H_P{-aDgcNN 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

O2WDSq`j0}h5za>63Zuip=!HSZ{U)*&Bs6K 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 UPYx6R64&yOyOGKAgF5cN05gpw5&!@I literal 0 HcmV?d00001 diff --git a/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.su b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.su new file mode 100644 index 0000000..111a14b --- /dev/null +++ b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.su @@ -0,0 +1,21 @@ +core_cm0plus.h:741:22:__NVIC_EnableIRQ 16 static +core_cm0plus.h:777:22:__NVIC_DisableIRQ 16 static,ignoring_inline_asm +core_cm0plus.h:796:26:__NVIC_GetPendingIRQ 16 static +core_cm0plus.h:815:22:__NVIC_SetPendingIRQ 16 static +core_cm0plus.h:830:22:__NVIC_ClearPendingIRQ 16 static +core_cm0plus.h:848:22:__NVIC_SetPriority 24 static +core_cm0plus.h:872:26:__NVIC_GetPriority 16 static +core_cm0plus.h:983:34:__NVIC_SystemReset 8 static,ignoring_inline_asm +core_cm0plus.h:1054:26:SysTick_Config 16 static +stm32l0xx_hal_cortex.c:132:6:HAL_NVIC_SetPriority 24 static +stm32l0xx_hal_cortex.c:148:6:HAL_NVIC_EnableIRQ 16 static +stm32l0xx_hal_cortex.c:164:6:HAL_NVIC_DisableIRQ 16 static +stm32l0xx_hal_cortex.c:177:6:HAL_NVIC_SystemReset 8 static +stm32l0xx_hal_cortex.c:190:10:HAL_SYSTICK_Config 16 static +stm32l0xx_hal_cortex.c:222:10:HAL_NVIC_GetPriority 16 static +stm32l0xx_hal_cortex.c:235:6:HAL_NVIC_SetPendingIRQ 16 static +stm32l0xx_hal_cortex.c:250:10:HAL_NVIC_GetPendingIRQ 16 static +stm32l0xx_hal_cortex.c:263:6:HAL_NVIC_ClearPendingIRQ 16 static +stm32l0xx_hal_cortex.c:278:6:HAL_SYSTICK_CLKSourceConfig 16 static +stm32l0xx_hal_cortex.c:296:6:HAL_SYSTICK_IRQHandler 8 static +stm32l0xx_hal_cortex.c:305:13:HAL_SYSTICK_Callback 8 static diff --git a/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.d b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.d new file mode 100644 index 0000000..bf2eba3 --- /dev/null +++ b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.d @@ -0,0 +1,89 @@ +Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o: \ + ../Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.c \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h \ + ../Core/Inc/stm32l0xx_hal_conf.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h \ + ../Drivers/CMSIS/Include/core_cm0plus.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h: + +../Core/Inc/stm32l0xx_hal_conf.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h: + +../Drivers/CMSIS/Include/core_cm0plus.h: + +../Drivers/CMSIS/Include/cmsis_version.h: + +../Drivers/CMSIS/Include/cmsis_compiler.h: + +../Drivers/CMSIS/Include/cmsis_gcc.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h: diff --git a/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o new file mode 100644 index 0000000000000000000000000000000000000000..7dc5279d1d1fcf79abe0c80b88d26c5ac61de719 GIT binary patch literal 583496 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%0DG$Df51`PZVw37j`W1;$9 zKsvlp{FL5BvS0%P3x5R8NrB4>1GzX*6A5TX;Ki z?Ng;cKygqdmILjmY8K72ld8a4kUOWEWPsd7)z8Nua8(sfPS17K;20q9suCzi@Icj- zvapX-E^-H-s9yVlv%UJoScrF3A105!m-+_^75k_gcY;8Fb)C`>7@~HJ0&R8fpOf!*fS##`g@N`){oNhNbt=?m7F72r zwCZmZ{R+*%eI-8%6Ew~Hfn0efy&YD~^Z@eJEwk`hvt=SaW1dlfU>-nzS==y+;^K=_ zyMOq8JF57p=?!39*g%lkzAzN{jK3)qs9$seJ~LNQs<6R+J@5@X?ZRiH*`1&#%Q*zp zUmH_Oy_rC1x)xPO;Cs#tT5G?(n}_za38B1JI|q4Ye^gxt>R&C%vi;)nR-Id1d)DG6|gPo>@V3IAy}YJbYtE)3c;epMZaKj%}cp!W8{;f{bh2%jGX zXGh`bJ8^2#)3`o(f0zgXNjv zq=@~U@b@}2sl6h!9>hB+`f34nR7|GZdz}6iq%veG?VuzK714iiFOPo26JqVf-S+re8r@ ztXR<%$kmE<+k7|6MzrZqU{iNACJZN8}Z9?BMoKakB|D1Leg zoQp*NeqdQFrqQw265Nmja;doEQy`a#i$~(YmWxBkDy2+_nSS5s)1U=ybrx^C56AU_d;ervdxu1ny11 zW6JV(3T#QPY_Gr>Z%_;f{HG?A4GZl31T13%4RppkJ@9Efl+6#!nhxZOz`Zo7s0BuzjrzN^qRi+ojkE(c@b!Szb%Y$}RRk%Dj z@2buxgZ4}{sydMGR5d38*-h;@i5mK;%YKbwn7Z|IXc@2m?Xf#6(O3zYgrO6l&iVlb z{mF`RIB18tL4nY9 zgtJkcdz$;bH8{_3KP&`vnY%p>&=qd^en79e17%Rd8!o;ake&J8YNF`EccQCOz4>{4 zQ1sys$D@XU{2%uqFq9vb1=XYYFUZTA%tvIR*v;Reko++JpeGuChW~5>1g`O&@1S_Z zhs{M#1r+l06a1E7$K<(J9~AcE@XycB5C3ry5oOKUS-)jww<_yQNs5k2jBMN1l@OEY zlCWi+*%^Lio43d*+lv0*G&(Ay^)H!O^)p?@hzb$LvMrjlZkW}qRoRT@O(R<6;Qum5 z1Xv=PX0(pTY@3sr-7LLHPV?qXT17N$*18P)R;EGo>@tiyqH>w2$f(FNEu+e`Zc#ry zCo`f+Rym%xK<>G{AuPYRJyW$iog0?a9C_bY(P+ zgn6Kc@FzL>83Me%Bhl3$Gd-tuHhWY&ovT@98_Wk6*`uuH%^(UE7aqP<>lOgOkjI$PBaoBTv>*YX-y_gEJ)7orzA6as5%CkT%V8a059`HoqL?fesxF2LA4Q1K z5n^&xyjxUP)EGovS@FXfV&NpwKf)*m*~*F~%7};!OGSu5#l(byzWay8irNVABcq6) z=+-8SQ4wNH1PKIJ6}5&MVkCp@5n^SK4dTZ&#gA%;A0&yYM3F1T(>9vhvZDZ$Nz^i- zycpg!U(@_+h`I=|f>E?Ypn+mUg!pMyG3X1bqeg@n9wF)g8pPll;-}TbkZRS$k89B5 z2=3ZcKDABdIWefUDA@gY1*fcwPd-8{MujpFm&8!k5{sZ0YKvlxE?GmwLbX|=tMLjS zH3$A@)QF!nrmh{_Nff(6qtvjx8oLW<7%EE=#ad!eB&rt+p+(VM#7bSn_y{pDf}Yq= zRV-3m6wzJi$?AC;wLnr~fEZL5sY^xM`{Ze~MRg>7s%nT_-sYTzF2i71kywrTp=gvC z8XFj)*p6hHY~{31e(HHer5-(YG~75xq3H(!cY zR2o6^<#WuG;$qPnqJNV3L89o-nv3a!=ZvDUsVeGgh(R^Pz$Eb_s1tsQAcdt2VnBo_ z3MC9;rSHW!?{4`*tn{N#M+slZ^UZhYHYqqUxVBg*LJTcSpJk0=^$4*9CTdlBG8a{D z5NkH zF)0lqr!2+`KC^d%h`BZZON3YoUIdY1@e^X9YGMhrteW_R*XPIhUi(W?NG@<;946IR zU;nOpP{FE;7Z*#QGOS_LnYSLL&m&A!ax`tY+IiN%T*B8DIr_s{-c|2Y)Q6`tk zVRXeL$JyfI48EW%snxH3iS`t0lFMpwxGZ&3QXJNJtHot+-pUXjm0Hp-E-}WL;Bs2O zv$)JLDKRdGCEn^xu{aEj!0@p#PK%!-#pFtfNwS+9tcXiYk#rc1P(tl8#l<^ZNhX`q zlIV&wgh#eDrY0JyRyE|Mq2`i)6ueMNolVkz%XB$2Tei+@mXif1%aNIpiAcv~PKq() zWAdi@#hB^2T`^{7ik%+Qt4bddtIt`_iT2U+TdA+8jCR>gBom2$QTPv!;f%4mY^f>s z)D*MBTF2tDBvap;4F%)bL!`zyQd|~?!{%@$+mbDAg`^Y;edTHQAaXeXwC6w5QkXiHS+*$UHC`SC`9VK_6h2NDcLxB)$Yc z7rAGy2I;MG5VGZv|B4{2zQO3{(=XAiUn;vhGfo=60$Et6Voo|Rvy3jQ(|fL(z1mSQ zgI}tXx{XG{YEHCRErz@Z_Ixrj(Pr|j1GAgc8;QrWCa1u6OsQwLxLk%N&6_ne;DK2u z#@J(x&Lm5+gXSCi=6*h}`B?xHdqP?_CQ}mHX)_t)EO{jJQkjUfo)XfVG_a>P%(Q1W zZwPOXO=U*0AaM7k`O#!_IZ~Vsd>D;+>c~TM_dAvk%?M0%PwzVuEf%}mUYNs68p0ix z7_%$Zni3AyGS%^nQLH0MgF>=ym}wzONkg@22AX_$uqZ5&6qq1ek{u6^i7VkS%?a&D zvb&5JMGLb^#N@FXE>lcmVr-15wiBu_GPacXIHxPl<}g{nE?3LVlMBV&F;mYYk3PIOH16IYBxhMJ}bJ%FIrkX%mR3m*$B#ODlP^g zsLgD#C#E`G_SlLB8BeA(irGgXU2#cvJa%GYjLDRm^21$U+i!N<24p%~|E1Jfkb4WYXCxH_;xMfYG5*Gx?x$n-=SExMCfyin$A*60J>ajF_R=giV;n z1|NvYx>Y7REoMg@myyJy!W#_qPdn3V*w ziX=lPEz~rJJ=es^+aYk$Ba>f{fN2TaRL2-qDffBIRFU^y&E}Z*o=%oXHo#Vs(e5<) zcozAH?1>oGmYNJ7hK-cjmX^%S0&O>DtHY1ER(M{!)9iE@d?5B>_` zL~ammT*T}K7&W(1Hd9oR>?6^f^tHK|p=>i^Qy|wAyU|RQw1!fXSHJ7=h zpCu*1l@tR*P&dvRXLF@FtSJ^(j41^^8mwSsWI1xTu-h=3ZcW0HPBK=MyS^eGP3lPU zHzlL)!k*~UGPn}e{Y+^X!w&g&YPcYm#|UR_;`!Mv*plauf(Pu_Df%^+#H$@ z@#rdZoYRa>lLkj>sSn90(_}Z^ZEoEzJgp)0O&lhq2__#dc#N~QLGCeMthWYgZ(dK` z%bvT*Y-rgM#VSUOk(xp=MqY$xS)?E#YR+sR%`loiXbwK3eaw)@h`Nca5_X({#pFzh z!Qiq@EZ2O%2}XbVXkm7aOp8ooO1vgOC2EwH>GmNpW^V(QY)kph;;`j2Vlo~>X118% zJ11Fb=QUc&L|2M7n}NoJ$5boO2hU5AjTvkx3`Ue>lJJE=tOr>WWtYV0SB^{IFVwtB^#t+{1-OjaxZtP)3cM7clTLAuD`t7mZx>)-XCZq zg3ImO)6&)ABBg(O!NR>T2X^!DoEft=fdozl+##Qv}MFdb~=mgrn-XDGy zKxK={ZgE)c2`s-r)`x9Ed2mKQs3mi5qEJgRPk`&9+p$EGO_p%?7qaGF0AdJ;MU^!C z`6mduOfueB684-To;Zql;!=#clYwf(^TwvP%9J*Jwnhj8PgcTs{E}!FTzhzTDIV9v zgOPiN3nUzIfwdYvw#tGprH%K=2gu{8el^tALWE~A$-3g<|6 zC8DA+nVE5hU4e7!gtv*L6{VYKE2dNmZQ{-x94WP8v2a}LCQVq1h2dfT5e%X4<6wjm zF$`u?5=07&AM=t}_(&@z<`*2>V3(&k3_q0ZDcJE@94Kw^-VkP{E!M*ai^@`N@&xvh z%EKr567K2jOruZa^hnS@TJA!A)m**E4#c!CRHjJc@1`?9gTG#PStY9reMyd9}1X(N)n zD#-zMA#Q{B<+g;87$llg32YnmNke!owD)j8*5s&XFL(#dL!r^6?!ZIA8^8#XPr#hX z-0v8pToz1G$qIQ`eaUVk^&WD$f0wTG?_^^IObv8ZlF8Syc=bs>8a*M)rXYv%-xyk! zo{^j3V`+&H#p*Z5AZjSkKgmP!BaZV*wKte>CKvDHmQgN z2x97RhGSp9X3+t~1_+%Ky^Sw+Q1|9bu^H`?_Bv)M;=%SVb%84m!ytDBbQtj;t!idJ zZIo+71eM}4mUBn66o!BsP8fLQ9W|wo5HhV06qlfb9`GR@a z5J)Kwm|~~RBIh?Gfb|R8VZBU}uiCs+c}!zcY)Mu&TVv`X>m4b@<}ffUev!O>H^geO z+2My$-rJg7$AVOFa=bMe$#Yj7dz9gQG^;Jj&y@<_4aN|`kHwT2<3MGS$w6;hTt?)7 zSPQA6vF#wjGqd=pKQe4elfbl$MohQvS!dDv+P!kJtfs)LB=}Bk}oUwj#Y4Q|GP59Q^Wrh1A zc`)xW#|6@{3&H7x`}?iSNjVs7d6f(-ddi2+=WOTmwV4T!>=Z5beCLZkB>5rSQLXoc zmrtr-_X{}k!^x)`m3#lzi?qZZFY0E5OU2OQiE7XU?y2r=!iejfj@bWy4 z7x{27t}aBnW-^7Ay7ut4CE<@7iWhH-|6DHjZfi9O1{t=iQ1a zBTC6!vVBXYkZukT0;cn6G1PW6PIZaz+XEvy-j!P^_cDYGEJBJVt|ErGomnG@HZB+DMki9o@r|Ou`YqJ7N#d15-jZ9}0$) z98jEgOC-rj!}G?IL9)d$GmFk+fc$LKVPq;|z4K>zlT30rASV!I$U8WY`pJ_5HN_0*18o~LjF?$$G}#Uc0?tBlJpC2TI2q4;MlXL8f++Rh?D|mo;5RmEMg*SVZmBJ;=pU#rlpxNv0-Gqy|cVi z*Ap1#X20bKlEm4SCMoG-N;czZ@FAVoyCL=vw5nKGNME9)(9?=3&f06Fgb!RKM-tpK zWTtV8AhIFOwYs!YgQ=oO4r}c*1Ex2F?7Iw+0vS@dp zLJhzwp{%yuVYRV%!~KPwyyOBf5#DUBL|d9c_O;&6lw>hmQ-Y5|OpobV^jJb|`IEjzVz`SXHw}O9@krp?$Qrbz9ank{} z($ed@=;j~W|9w%eO24r4Ji7h^LmlOmW}_RDmaZw*WwNJQp~+GQiCAnC^2SVOvWT(e z8(WULw&cWmo{LQq=M&ew#C1k zwi_!+*%#R;kuMPKs^hT4v1^3|V%c+epRLPdlV=4<*);bQVf!+crgu`&h1-hWuCA8? zUji1bIX2PDXEa7el>?G&6_$K~r%(B4l8+e^=SaYvUyN#H$%aU$yEH@G$9dANIA&@r z4lko7(b-v|G44Afb@FZtoP=fzeKMo+#AiW12yuO)z1 z;X$+3uyot9)L?gdly!uHI{(vBsW71O zXP~{{>TY91r#B@HU%~nD6{uF>d+sg3iKO90rPN4_y~W`tZEkF{lQ%kP z47Jk?NJ?nsx0d;dkRV;u(o~0M zpG9wb@^P&1J&?~GJ%{nDYJamij1(@!;i0(i;voF=PA#+hIfTp2EwkO*efcBO{m61C zo`=Yu+AFMLkyvcK6pOrRd6Nju76~RrJX}t4Tyx*HKtzR!jEEGTrrA=Ll7!{4(=peU zD2$(-WMCrYaS7@D1KE_y%`AXHYN|Z&bc4l)0rH**fRUz=Zp_X)#f3}a{{T6=%~8+_bzXzH4&??uCzbN_lj}ICcXOt<3Wpr-PFe|n1AtFz3$57 z6egOfvZR;%=1nq*oX-(tn&!FZ)UY<1w-vHImp-fZE*FNnfbbC5h;>3x!vzbCw@ zOoY};Y;Aj_gKcN*8+9OCVSvhc@a3>$0`E>B#=_J|ri(hl6P|zxuB2y%dSB=#f}6~$ zX7iT4!;#`JR+cOs&v4U_pBAiGX)Z?HkxmA zv4@gJiLqw)y*qkHmQJ$3xr~jKmH?%fB$#y z%X_ElOtq1&m#-kQ+#EwNdDgM9PP*3aba@WV>0F&nKexw`WR3IgC@=R2{s?@dgjfnq z-4UMz!REvPD{s2Frq@x8IDhq`=SJDCv@J!G0j4!9mM)5~Tru z|FuwW3V5j!X>W02=fNxT>DifBKwfBUIS5X1P%d4C#-$(l-R?&-Mw;kFn^fsiPMmZ- z5f>rJTCkl;PR!vVGR<4bD&fu$;5f*kw{TM}xAAh#7X@hoO zqODL)inrYcOitfHSF`!Lnc=DWoJG@FL`Ns{{} zO;6Nd2$%L!Htgm9bu)!!&d7+T-Hbk;#|{3-kFfKMvj<)`C&0+~zh=R|tKiQZ>fIlS*$ z7nh~zv5m|E;gKp~)v-6vQ2It2w5ak>*~mI9-=>ib|T&jCHVQX>5*7lra$sije zPd7M$rMDgOcoPND*|V`nhD@%nhgYB}aALE9C4u0_N-u)scD%7QJvBOop51ey0pD2+ z!W<_Dc>}RlykDGbw#LvK0_CEkjBL9>4$f{%gHB64rf&-3B;3%av@h++>NFQbQ1Ls`bIWLarl>eIxf>Z{URMbQktB42@t;0 ztx`{LlK*zR6tuAMhjW7CB^XsQlpc#2<5jg(bHQAmMzEbUDkjxz#UZHs&bc+pNeK|v zuJJ^T`IMKo+K*O)z%34L7S9K&Du_+g83c%^^BeA{*?^(O1_%5I(S+ zuyS+cCaK&QDH+Y`lrI3~rlsD`g9|t8t%`rED>qs7em%I?3SSxfj5{xa`}^|iB~o65 zVD{9^W>P$g@BpXJZqJN19d|04az%NUf-jA&0k=z#8{|m`PVhk82liN_W>`_YTqAoR zQj))tG~6=4n&orCmHTFr=ca(xgBK3x z`42+|atX}#Nwi$M$TEPq|CO&5@)?JB+Zb;Z!!OyH>AzNaze?ON_%9WL^FOPjK}xLs zUuu+?|FcrOPV!%B1gA%x{EKb>rDQ5nM0CU0?2-QqH&Zg3U?l!^bQA3~W3brYGrTgr z;PI7-|3?QnpU(fy5zeRY|Hu&M)B1mTjQ{xW7M0g5q3PkdxWvpVTra#I9v3CKZS*RG zl&fY56nlIOW!EJPI3<{ld8Mvkr#tj278WOHPRUXqU^U%^lzH&%)9a?)W_Wrth3yG8jUdLfi7x>v}Y zhsZ23HC7IYqobHPr2FIeVH}urI#R%mulF=HA5F@OuyYx!DOwKwJs{g%uq{VL!Hq#W zovz$?e*Xkp7df}cQLx`XVLKZ3MLNu-0!|NmL?hj!pnQZhz!++Xv0n$GXf9Rq_rVSMlecNXif<;J1O` z)zMW=b~P{`mi;glf(@i|>(K!lO9FVo?0F=u%(i&N3hqNAI7p~TA~5Sk?9#76_}unJ zewqRa_tn#qFmhgU(p3_=ZjLdrxyw5?)%W!?>GGGn3sGt+cc!H{WWU-yx1?1h-83a%Up~&w zO@w=mbDV{iA_mGcpmK+K^ALwOOKIuyjWi*k!E;Hdp1cfMCYZ&Km6ZAgciTeOziXe#XR>41+Aaq|83qPA`AM7B9!oa_pCj_uM|h z1yB4gAKucYi$|?0SIB8@jPm;3Aa=ed&tw{Zx&%UHq@f@rYZ`4qbjC~{grM!YqLjn& zA+aZwuc=tg$Qt1XDJ*sHlS-0ZrOdwEh#?GBlqNo&6|WYEbbHsen<+*a`)XY z?-_&$>kotcnquz$;mzTDP92RYC;!x3H0iY9ig{k{tel91HgQdww=v~3F??0c@VDpH zcaMn2xx?c~dpgoA*d^#Twd}>^BBcJ4UZwQBs&9!e4XZ0hh;Bn?Xpx=OG`$rfGWiRv zpzD9o_BPCIBuSQ_ehRk7tWDaf>LLJAqGqQ13EXB2X`j=6EU7%K08^)Fhb67Td_Dcpm(QrQubYNe^A4l`GUKz)QQ^f-O>6xV4(*T zR0M<~)$2gHap#D5y+r+q=|EEBYHe2-Yd55%@XoS;+g3bE@*=PFnijDI+X0pe z;*9JD!zT|mOE`E?40CdEbp|F5b8b8xbsYD?vdjNwaY;+CrSvf}KqBDH@&TnIlsTK} z?coH2^HefjjO$9+4o9sK1PVUq{8Kb04dV}urcZ=4ft4CORO+8ms3D!4q<0L&&4-CL z=mp;jc^D{sNmS73bk^Sk))sIruO{@bPew$ngF`K7J>;uO;jkkoC@53+RDyzrdzm3J zCrcr$&+cZ)mClmnr`fJOxYNBhPmEo;ho-7T0C^uDZtx`Q;EA;=Q431d51KXUacNpo z4n*zZIAu*m?#<}>!Hd7%ew?td#Prp>cYk^H`akT$L&B@1e~Iwm=H`)+C-_nyw)5U+kw=xo5kEL?|vbu7A9=HNsVIA+rhzS^VLc( zfGj(G<|K`zLe~%Y`Y7cJqcHu4I<}h$Qtea=1b#9wVV#bf%ZN+^W|8*tKVro82l%j^ zq7e?d4apSSfpXv=^zeRYn0ou6VdU+HhIzLi%9tjW-RXxuz8Ct$jRMlYhuIDV3C4DI zx&V3_6xuGlLxvhDGX(21CdvA$0(EJoQ9-CzFBV#1N+vcLMI5ZMSJx!8A5x~8D zVG%KK0D+?=4kC}_*^3wQ2rW<>c?Ulu4&(MECMs^>0KP_K#vl-a<%r~+xtTnhU9;Mu z6$Jv!M)DN@X7WfDj4%Sj3=S(5fdoN_K%t@9`c!jGX3Nu0&n#%|YBOD+#3vkt@?Z(g z$#wmI_-+V!s>)|vSpgWQW?^9U8i7<4*M32YD})qOEZ@^~GnEfD-wtO0+g+tv z^cRpdAui>Ux=e>hkjbT#QlJ2wD6E=`WF!yrprog953(RleaP)3d22E5Vh_fd7fykE zTUrJ9DTU!kl#&PEfKJfLFu2R>B_$7f*m)d`VX*#y| z@?4D3WWI{Cc&@*B1qx%%@C~( zSuvJ#wuZpSV+*nbOXBoU{?!ry&E&bmKm$aCNMt1*UNa~Pe*NCjq^y7b`04KA_Wcic zKkkN)w;x}<{{(^J6B(j{g%L-)y_j8|Az=Yv*7KXs)*GicoW!u?DmYAopgojO85?G= zb%X`nAA!+8O@MNXltilHJQZjLywq|@IlrewGG3{L^0lagnMb&z(sRv9P<2+IIXmSa z5ySYw3fuFDHtv(gU^>CyXJRELpI;zBi&}wI&#x&dG>57Z0DbSM?Kpk-`qAJu^1ugl zwv#SW$wS?hh}TdJ7D}DXp?xxF2Sj6e=+Q9>J9#!kxGOIqy5pI7&^{KiiyAw9>7`U? zKPF;&%?fa>Tz*-}u@)KJuaYcK1F6tSaLIKW!HS)2*JZ$22k0BELyC9q@k=^=8?&5Q zlL#`Ukl?w#k{7i1BghMk(1-WpC7KJMiiWi@1A9I%OaFlO3F)|=79DZ$*%buC(cT!Z z0O`dm@4?lxLT*U0u=81!BF{^07{A!m`!LyCQBcI@K_5jSxZC${K78DHF_S6UExrAL zMb612wj0>$mWoA;7%)Cg8nJy6g@iWE6ZBZ3tNCd1WCgG_HE>cxc} z7p$WD-x1yBanI(7;+rQa6ZndXtER&Ece_4QPcf!pR-zR`JoVX%g@!7?z*k1|?4^}m zAnrgA`5rG*1HoJu0Pq*J(W+Nm zLcXc(;L+M5xBNIj(+_+x*MnBj6mCZIDhp7C2uid3=0*d?EEOl%QA1;`Wm$z`tQ0$1 zm|os^4&*7mdb;3?BWR@xDeH&EYH^;)ZK!_RUwbujhatwq4BX*PfV=`xC(dHoy3R7 z;=X1@kpzBtjAh>3td{ig_8zn@kfwsr$M1d|T z0dXPLP;FIN5MYoAW3gZ53~m|`nK=ux2J^H{-7xG<$?_T+4{=jD_Z|sulLvT^7`?@S z+n}8t3lkh&nx#->ZauByzLSD==s8NpS3UPNnkgc4m}3L;Z(vvp-=5WrHG2~{TSJmCJx&V#>A zIxQ@Ol>&?hR@TCT4(&O&x}!MKg~LYF3i%&xj)uv6^x)(f`XPP}Qs|lNrTP@95?K@m zfyJB?7_2yk`ke(1R8Bumk}b4o5SO6Ot1FJPk61e%!O=l=PXR zfQCq#hNa6P44Ej4Lwlvwk3#k$jVDasEk^qnIEA|0 z6JlY07~?`xuFkhPU6DoCkHGpv7qYy*eFhWH?5n^$WBlkKYbXJH4j-d^1dGTkn+002 z{*`c${th34?oiP#KU)1WSWg6%JfJtSzE{O`7wZe>HnfZ6Glg2G#i8=5sA9;z6o=xj zRJ^zphv}4}0m2On6Aj|n#(=PwJ|WzKliAYF5+a1)=A%>%aqjtKaiQjgB^qM!3-fxl zv;{ZcHwAYi_E4n1V@YD!sRDwj(8?IMQ4AJ8(FLY;9PK72);y?0{#fM<)dxd`$C22p zNOpmEG4lSXLDlwm?7*}~mcpXl@oW|{W3xP90L?2(jiVgbONuL`@XsP15atUB%pL?J zGar;eAeE`R{W=8I-2#HS++yU`nk}fB7HF z4{xlpj;s8A@CRr*z|7{icbA`k`pfM{lVfZQab@rUAmJOYj8km*Qp$^iOdERPxG!i& z*F*qyH}%?+0R;gaLFBD8I22v0?(-a_qbA6AaM{?kAu7T(T)RhAhQG!jBfeGef)R_# z>2MX9Vo7Ogl0LmCO;~cJltSd8rk-JaIPBDZdt>K@|ek6sM18GX_0+QB*Ou0qj6-+-{;9&Nu_9XiFq%W+E@+ z8;1w@49XoW8Cz@|*qdvyhNwN}F9wK3ig^((hGCFlvPUn|br=aTbYV)4( zbg}|=B(eSpdKc!mp3W{NFKK4+|6M<@8(>szi<_*XxJehr`XZjUgH zurO`-hq(lpl4$P={f4gp#{ZHyn;VA(QCw_D1ySPK%bQSUX10nKH;GG~B{FCvbl?tT z6|PnY;usWnLBOJGIe5M6rrA*ya4l~bi(wnG3c)TRxW>}~>!wPC>-CX^e0RVTX=d*- zQY%VPC!N$?*Lt7u-UH3?l{8n4U^8I^Q7K(lW~`W?cda19 zWMc7k@zvZjDX&h16gIn{l}j*94`DVN?>Y!>;%qxX7Btc93*cKF2lA!*Q+`KOpdv{E zaW1WF$J_ft2984?-DL9HTQY@VrKxC&eg>$|+J_eU;#EjWfG>*mQ7feWK^BEWT|@n- zVnRc?h91C~>6S!QKg2vjY!!whq&;!hLKNtkAy5izC@D#k0HU0%bzu%1D4N70*~UVZb^TUL@U zhB-LEXs9_nZX;7V(9yX;Ll4An=J?7($9~+e!!{5z;nHIT?;c(*e#9g9xx{hk3H8UD zDJl1r9{yqYbae1^bo}(_=-|oma0GMG6Izqf{cx**p;}0T9_R!7y<7?o6e7E~Ql~~T z064i=QUr*n_|z00>ol&0=`D$mR!i|}dKk8*A=RH~EdqgIff%f3vm5*B@Ev;Rkpip- zN+H%+?I|--ZrK>`IER-Op{2zpx_k0Q&W1Q&4#sIt^h=3*;}hNk1@ou`$`Ll-3ph4-QyYmO%bi|zr{o~HyCP$cDU z)TEba(V0^18e&h_3%L|7VnZFI>BYXY#c};B4Nx~Egj7NJ^6@o9lbu>Ii7)cJV75Wn z#$@S~%=foS_KGPY7+xOY7aS~vepSkoeGf!dggmm`esMi&uE)*wAx(S!+oWPNr}AI1 zYBQSGpF?5x=yAq~83jGjKXU_n{W-r73TAC$+B6M!^2_%%Hb=fwsGUgSr_S+ zVFbt}aU&^`gmI-O?K?BJ-86B+Qnmhmx;hy6#dbLh^#X$E?CK;%wD_f->x2Wc?&;ef z-rl`>H-Gz%4kZs(%3vF)Ce=7-5fj5HLh;CJ7O?3tkt0IHSm&u~P$o*Pwh-NDPi#g)Ep11t9O6jT)UNfk@G z-k{GyGlqB?EIo0rjLHR)~7VLObvS@Hl zM3l-7H83pe;p4?5A_oqOqG4frhA57Ov{FP_C7&)=h#jrBu7zs-v&F|Mtk$=*P~F0V zU}iHD?@;}NDu@zR^c(vkx4J+pEWJj&-1@=_OWWUeHY2L;a=B2tARR>1g%SmSFo7E`k#&M`B7wS6jIQc zYmW9x>;%s~0o+q}Ng=9p27yLcR(KW+`o%usII~D2@eMwn+xlM{<7W#Wd;+P)V14>+A( zL+)K|7N`@3trTA$BU|KI>Xiu>S6R@UUA#C%E!KKv+PbaQXJ}p`8_IAzL<3_5Qiw}r zx(VM~$#l9a5Ov`vDDJ+N00#)(R$nd=&uc5`2kATJ;sSaxw4qT?EJwmufi# z2mWWdvnV{jABfl)|+|ahc|zlt~JrYbW*< zU&eNksws*Q6@6r=iwnID%9*=?N8(Ptl;S|W0fqCe0vttPPc5Z*R>B-<;>5G5LBmtP zfScSo7*Q2=!i}}Ru}28bQBVhW&K6hh|1*v89zAVp4e(F}pUe z6WyEcYUbIA6`J#NvV4n3OJndj7KAvrFDLM5%okUC$VCehM^W!g81qpz0}r(ZntWq& z8e~pFwDvS`vs0LWi{*CH84d*E*Ne^;#ejKt8Xq(K$Rf^&~T9fEHF%S;W}t)%`ZatR&|%8AcBgU;2Bxc`}#eH?biNzprl)V-{6 zP5A&IAe*ugw_(q@UZDf&OvtTBrR%7t;DW=j6%usnGf?OoXBk{_b249m#_T!l#e{s` zLo7Qsc9<@8$c!S?m70eKUFo=urIzKvEIHbm&3yao{H%6ExLLV5v=(6N+^EhGiK5YC z7M6A(F%oL`*(Y0&V%VXwD0yc0SQLwL$_1)>&YnLOM^xhDR06d9sYT%#(mp`CzD6+DUyaEfyWgvDKKHu#7o=$*;9ZNeoC8BVN9;pAe70MdN0ykt@h2eeGSe5 znquP@av~(q1y!8~v z!$}l^DY2b@mR3T_ZCZDzEB#O{MUhwypIj-#7zrf$NDOmgZ-G9cW%Q7IM0L8_#akKV zsY^XXdKarkn`E1#YPz~d2PPW;KZG%(_-d~~RgLJ2WW;Ys;&6B937lQZm|@s|1b^;n zuh>95HWG+K3ckj1kb!|8mQI{!qymxnV&ttZ9`((r2vpQF^QW3U0C|pPId+LNZ%_mA zcN2!QlS5IMSC_$d@$xK7*C+4r5EG`i%0JY_1V7Th2@(FAAwssufI&s%u3-oX2p3C7 z9I*yfGQIeBl6+*3EcMe`6VaU+pC)is84qY2t+<`2GOs- zU_}p9)Rob}vzzPHxIm-)c#u#mOBq|#!n94Iv@TE|45}*~45O2jb5{^^2lb_9kS>C< z&x0)LPeH`qXd{8hg8y2~wbwot%rp{@74Qq)i9KV4fVWKqPHxWWyVoBjM8~F6QBKlE zXH*Z?2g;m=)?2#Zi$IV75j*^xRTMhphs&zW7-b4$2?A;LIELoXAT0>4<5_0JzO4}t z1O1b}Ih0U=sZe+=<7y14RPvl%mVIWbY2I;$=!fL1({BF}8`ay`^5}P09+GMo`t;om z((_Pu0D*_9>b|qegW|lo@d0jN#cnxz*lvcivj2(3-}>` z5U4wHf*>#bZ?T))sHCoAKiC&q(w{1Q8QzB)LL)Ny9Cqnz@!C4 zg|p+uB~iJ))DrP$xGAT%i}!Eus^^0_)+A5J<39jkLWdK?5I>U;?d4gNJ|%&oA2c+< zrZ^`@)v;|)k;-dR+kVfs?w{WN&)eOdMZ4jcp$}NQRb`|bKM>@2w|V#K=i6P8U%9@0 zeft(epirGT=;jAO>!}?GAV?yt3h}T26sRG?c?na|B99Yz;@0CmnrjPsP!MfsUX!f4b|`lR&ZRG&&!$^5$fe^Z zb5uA{7-AW<>R9Ð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 z

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⋙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

bEXtl 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 literal 0 HcmV?d00001 diff --git a/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.su b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.su new file mode 100644 index 0000000..498911c --- /dev/null +++ b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.su @@ -0,0 +1,13 @@ +stm32l0xx_hal_dma.c:139:19:HAL_DMA_Init 24 static +stm32l0xx_hal_dma.c:214:19:HAL_DMA_DeInit 16 static +stm32l0xx_hal_dma.c:294:19:HAL_DMA_Start 32 static +stm32l0xx_hal_dma.c:337:19:HAL_DMA_Start_IT 32 static +stm32l0xx_hal_dma.c:392:19:HAL_DMA_Abort 24 static +stm32l0xx_hal_dma.c:433:19:HAL_DMA_Abort_IT 24 static +stm32l0xx_hal_dma.c:478:19:HAL_DMA_PollForTransfer 32 static +stm32l0xx_hal_dma.c:579:6:HAL_DMA_IRQHandler 24 static +stm32l0xx_hal_dma.c:673:19:HAL_DMA_RegisterCallback 32 static +stm32l0xx_hal_dma.c:724:19:HAL_DMA_UnRegisterCallback 24 static +stm32l0xx_hal_dma.c:802:22:HAL_DMA_GetState 16 static +stm32l0xx_hal_dma.c:814:10:HAL_DMA_GetError 16 static +stm32l0xx_hal_dma.c:840:13:DMA_SetConfig 24 static diff --git a/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.d b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.d new file mode 100644 index 0000000..902d97c --- /dev/null +++ b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.d @@ -0,0 +1,89 @@ +Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o: \ + ../Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.c \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h \ + ../Core/Inc/stm32l0xx_hal_conf.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h \ + ../Drivers/CMSIS/Include/core_cm0plus.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h: + +../Core/Inc/stm32l0xx_hal_conf.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h: + +../Drivers/CMSIS/Include/core_cm0plus.h: + +../Drivers/CMSIS/Include/cmsis_version.h: + +../Drivers/CMSIS/Include/cmsis_compiler.h: + +../Drivers/CMSIS/Include/cmsis_gcc.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h: diff --git a/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o new file mode 100644 index 0000000000000000000000000000000000000000..8ef1a19b4cd9ac26617dcf8c4db758abe2113f8d GIT binary patch literal 579024 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

-1zB~r# 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
$%?^#isq~Ddy9XXP@nBr) zcTP<3H(Bv^o-_zpdE`x?YFqLMD(TJP1|uYrtFT}dfK+&GIZd@T{kDJMhZ*;VjWS$j zN>6Id;Pr~<6uM+Im{^iqD{q!Hl=sZqN1da^c)CIWzJv;u=LVS#w1p($cTlO5 zxncebpyI0y{VrHF`1}kh>6w{R$FdCj1Yan{w;NQmCh*34^fofh=2+tJ!ZR0Rk#x0R z50nN~F{z>KrX{Zcz{D>Ilr@=`FxZHwsT?KHHOU%6Cdg zIk5&{wQAbe>(<0q(q6zC;{GumtKsEKEfM5Yn)7jT^()Uq_nv_RTgiSt2YUtD?#Fwz zs?~DiS}!*?#hkvU74EvhR=rn>cLeQF@t#U?O%6}@mC=Qt4qOZne?T+@u{xL09T{8b znW02=U58ylz&OgM6q@8HsDkyCVaDn%0hpmqfc^mZoM4MU2rap}kewQp^$Y(Lla5-u z?D13c3#Ly<}aZbK!gw#d7!I zSOXkf`ksP#RRL8|ioqGtxU{=n4a6s!#p>P9zkEXV!`JWLPJemxar*Mjo4>#O{vVQU zIRN6)ba+U(D1kIb{HH!zr1`n3Ol&)SXEMm>sH7|HwQ$DRws7B;9w8m_Q57IwgFSYGq+I8&!+3N9FG3iP zYAnweH3NKo;&i#dQ}J4T#*kt-HI#n3;?gx|=m}O|j6TiTd^7e7Y(K6X!SS7`RP-05 zm+)HA!y^HmEJ^;`*B!+0fBL82@E^jvrBNCdeW6AwIxw=}H}-k&?i=Ec5b(06iw}xb z5bK(L&??aDj1oc$q@NWHZu+VFv@s?Y-kz_{E}+N+S?kfHeP%L zcdmN>%W1LKH(%E37s}=u)hkDbK==Yo5Px$<)gIcFeIJx5K=aOqF&N%>AJR;!25t~1 zcD31@#T=3{Y0og9j5A1Ov@EtX;B%nY*3=!lPYhi#LKy08pa%r-0QA<+$rm2H|GN9? zf4%vt!w;QRv3IS3FODrZ8cj)u#<@2V!iIITCV@03X**)3`!x++@T0dGnuF;0iP8GF z^0T0%WBWoF`kmSUAiDEU?>~IJzJL4U$DekiqwV{bZ$JES|NcYAjb`^9&Z1{FKsQ3T zH#GC0TmlHi^bD#n04w>q6c`W~y&55w&s6#$WJZW4BDdi^1_`=|&}20C-K~AJsry_r zT_qem3J$Dra1>x1>+P(cxWa1fG!>M!QYLU>Ub{ueS zk@Qm@yaqT2_D5lF@$)ZSU9be*AK=ZG23SQ5k+j5mZmt=l&-KMlNg{}yiVH}qgjNky zn}c8yBKHmyL;d+-7pN(eGoJ5#nmaRo{&@f;)ixUetd{5V7v}K-hg6!l&cB0qk6d7Y zf4JJz0~JLb3sg4H8!AH*)Bri+7xeFzr&2`{L zhdf%uc-NaN>=^z{st*6{+67+0buTT~KrfxvpfrQ$5mC&pJ5imEpWhRGe{FC0h&~!(ni9$TVy?PDkbjclUF%Ys`IBqE;ED5&8rdt*ab43&j z=#?CKn4OWJS~_(VfWV0ooRXcTl%V!lTilrLM9^!a=^>J$a)9Ob^6uswpP!5ANsVC& zSVZ-a!KL;r;`n?Eia{Dt4*6qO^zsqGV$c@}T3na9{Yr}|KEabEnaeG-G%sZOn_gN{ zDU*i9gp_@N6y1z9()xWyz$8`hwTYA+?r4C!UBL83Gh@DUE+EKaqz)i_H5a@g8$=mhe z7d`a~iPXMy;1|C-?5hvY5xi4laR#F zTodYq9V|lW@228_5%&r_Bz1@rI%Tf_Noex{80)9b(a zS)>|bByG|9MOR)t0*>v)^LZOcjR*5Nb*od)y7fp)Msa#@P@cE*q#mIiSDJOm3Cw5+ z*OL0uzYDz7KHE&&g>NQ>PFYor29`1EL*1cyYl3S}yAV~eTX-b&607r51=r#=In%21 zTGdRM~4qCkR*DM3K04(?Gz}2md|8c0ZLMxK=cGPtdtC|q%Rad0}W2>(= z7AWOM8Tzt;ZkJ>M(5OCZfKICIay3foA)y^Lt!;zeD9ARYZ5xMObqSof2lPK6CnsQu z3q4AU*l4;(<8HXwKbPc+%)0pCAgqeFD2XT-^n&Ul1_z4H`|e+*+~nOBpkcgpK?4~M zLs|rl4Q=(v_>AyDXo89mfhG;Z)ZH?$X1I~|ec(F~L)=1wTEsQ-GGZE`j@rv1_xg(Y zVL2f%{f~(>Z+9x~7@!jK`0xi=?ko|eq1t7D;BF4@Jfv&BkX#cN+OvY4VX4THfw9t& z$+k2J$-Ks}raGaEjtlO3DYsGDP-JIM(RY!m9c$+Lo!Ok>-%|7Jx}!fmIXXN!J~=u* zh0n^-$??(sH>Se?D!ApR>I4%kMrDR{!(o7bc65C7WzH=}*c{(uxNSZe&A zR-20*dHHDKW31xiAL{=hOP^+6E59ab<3laP%96EkHi*JQRFhsYmZv?&|34)gp#ozK zk-ZA8U_@)+0FhA`3?Z6u?VeZYR1dee_TBAC(}Vru>nPYVslr=QgP_@aknWP4W!0-AVPSz?sH*95e3^|lux3omMC?1@rr%+IegE#Nq{@A6G zh>U+Gg`xxvd$+p~(xN9k3lSfEN7By8j$>Yeb)Tl|x%6O{ytKsP^NT-16Y_PJJ5qbc zjz>E;8SY@93RGWKQYvKpUUwotn2BW)P0rb@Gtg=U$Ik80D8ac~bQl~O7H+qdniU&Q zXgOP7FG;|P_Y)>km);Fc%ZewX2}9`&r4W<{`>R8kvP+dF5kG^@SmqB`s`q+UO{eCC zuUp>qIMH6K?Jk%Xvnk?Mz-I8FgoWk#HH7p*nXTy6D=B+<4R8xJEgOiRpn`eGfDdna z6Y03hQNkH;!U*<{Cq0 z2Ox+vV!LBkt0eyP5T{&5(c!#dZPz1NT%NDt(*=V+&7}#N2{5;|uiPm_A zd{F0ScQfQCMS^x^5To1|E(nz;Lo`Z1q1%z0tI?*65gOhNw23*ZR7YH29*gPaSR9op zjf&O~yy#zvTJyIc;3@qIhY5ZZfxw+2fIPF%eE+Rinp6QyOaZbIG1gb9zDKGjYtN)6 zk}sGR0W62j;q3QoT_u!IqyPa21RQ-*f+w}YbP3f0%0F)|uNFX2|JAA4{C|@?G*iBz zmH*)h;Q@i^G})6XGSoKPQBPJFFogB#)ho+xJ52moI+{ZSu_c%g&`mS~by%{}u9jPA zUvkFnJ64HT2XUFkXWytvm5id-sW(F}0jsM~<2D4N>Cq7}2NgTsmDc~uE$F%#Xa=HF zJ{Ozwr~VmSWSF~cwazbYrgsmM*kdQLDf7#7(`uo7(qM5m>L2m>`2S!ylS4!9%20$2 zL}vf+&LWq^qYc+%&}^txi`4RN=IM3oSvd>~{$)2kfB9awZps`NQsyoY0GAVwceyVz z<<+6vi{CQVg!hHNK+r*ZTE}hMWVmpXR%U;c)nHnAN`%S_( zvYfCglktXQetfxUL;ZS%>DBj3CD?5+5EZ?KcOad~fyPwL1jv_QXpk$Jz+eHmU^z?S zVotNFE}MYY-wZz%O2U?3+^Giq*-I@mrRb)|xgGZ4om)6JrwP$7wDkLe=5ZihtconE z%hx1qov!^PR2mX*J!$ESppd&Tb1LS}Zu7+PSgEn#dY|9i@Bjfh06%LyEMy5y8SY)< zF@D5^k#a{}UL%Y*{Z6pq^OS+R@X^w2b)b`(U^wB`F_jsyD$E=2bdnkHzjZ+HL<0p9 z<-q=cxVPZpwlCUKnfW{RXoy z65-Iu7vriymIJj0J)EPIFv;~??u?_s)Sz!KjN-@`__#X|Gsu$$GJ=Eo_>(P96YSQU z5lj(+4<}mKB6u0L2<^z1`%fFVaO!kD&qflqTe4!rNviq5urDqOqQ3G_`xb;Rj(jy> z*)+7z?Lqqv4MesGggYQsEk1{>>3ayxT7T&0pz_-mdRNR$-T>=6_@T)qE6=(LN<(%t zYGmu-wOflTj3|F-U$O+}-k8!@7)Uj-|K^j3c%8zgFg(Oe3It_wzMEy=dS3Mj_%d%d zyV#z4EEuw@;`D4$4>_D~jH<~oyCrMD+26@!yC-u`da{8WcgW@e7h=Js_fJqk;(coH zjPzV#P*W@L4(;E!tl_t_CG^a~g938u(O*OM z!PfFmav+Hdh=gejUw+`UuKxlu(?tvDHL^b-%-w z(J0u0&CsV5g03E{8wpZmm{1qwY74YuxsMO*4~<#zOEI&?NgXouLt7qBbt410bSYp} z_PW*G)ok|+hl<5VFu4vnxumhZp{uI0?jWh&R%z1x=}>u-CV2@6{5^LctLDSo5%%fu ziKgYEBiBwHrc4}=V#4keR;Rn`M}l*m5D^?((hSPJlx(;J@+xHF((PiX8}IhSR817v zi-53< zEl1K^SfHl{D&f4GX#1h+9eeWiNi6Vy`-fn;H-Pwh3@Ujfj97l!qt%@1PJ3;Ze^XYA zQsOJSwcly`L9l^cPag7^aoeJ9u^{(#A@~xS*1 zY)nCtvf6;IRys;!?=835;%|QpFDbI0;g?KOY?3=6EvHU1xTFD%nOw%SK_D}h_@Mb3 zzTmDZ;w&%-p>^}Ov^v`0cW*!5zx}wr=f8-?bG06%T^>fnmAJ6&qLyj$a<9Hx3=t?_ z(i9~%P3|d{hkHK?w|l$DjKNY8o?|7y2m+Zm07?m)g`q)HuY_q;rC!QN=@8 z9FQS1l%fT{v4ycszohAtXUANb-*8S|z`HnCTe1~U79qLp53Nt`)o0uOa4ncEc=y+9 z@iG3})c=ZGRj>jN;fmQ!U^ek%(NGS`D{Iz&=pxW$pcg17(%8iVUA5x~DSGuJ z0-483!r?H)p@~@?2twI){p2&Q?W~lBj7nZky!3qTY)Od!h6e~o2sZji0uKe4m##>m zUoDD$&H??<$&h}?G=la7`eFm%O3x-<+VlS7!}j&}|DcF^g|d@R=g;-Y*iC#e zH!~bq%lfBYM3e4lbT|P0MTJen$*r30$he1IvtFK+Z+o^rG;n3N%kNZ#t+&e_+hm`d zdj+zD@|;TTL9WSdF&QLQWp}+f zmo~MymQrv-+~{Uwo*CZ5+!u7nIi&O$>5W0rX;ZUpkOk>8PKA9hsUJ(nLOr7JEc|oh z^Rxc#;nB(A2a_TWpy^MVjU%ZC@zXUOM|(s2VIX}dyq}vfeR_17cLJIwm(HwifPiM04^dm8?#O8`c)jyX)Hqh;%i zP<3f=Uy)OAzfGrZpgf5hp?lQSy*}~SR7ZQ-YAtKJ)W6NY4#432_Vr+G6w{jim&MoL@E3;!GyqjFt)(1^jJg^=4w~VbT>5t*lsX#GZc$@(b^BMAegj>ck{c{DueOKK{||42x^+D0KbT@# z%PkDO9trIAQ$skR+Osyn1sNac?NEg#g@ifd%L$gfdbqaN(z8sj*Kp2uZ!@^&lD zEt~ArL1}yoy3eB(w@;>IjfmT>YN@=lZ|4>c^k!LO9eH(3CLbSKm(=K!o*I4fDVbrh zuaE)hE~bok4XbX_V>3oTC_H?&Ko}i}1l90mg`YC-?o_3Y*a+Dt~;v*!KIig6xJ zqY!SMq66}aAwbb%@D9PGsOE|PRDCz$BYYDW{ zyvZo@2g|Sbb@$ImY^~(+u`25qu_zRnNOZ%V1)l+|A3mJOheQZs?npu|e+-Ha$CV{n zFx*HH4o7wvp*b7G4!p7IGbqXSkRdoJdL2@FNYhG*)YxbcKWd=Rw(?qm$A142b{{!n zpn4Ts7h0mKQIFGsNFVCy9`dz~dDwB4 zm^tA^Du1C#HJT-UitOa-`fiiXwf#VPf`LJZg*!1ixUbVp7@v6tQtC1mcK8{OUFZLq zXPiFtjL5e4nP)tC=owGG?m)=bL<;zCHordmZaxDUXEk1$gS-XSn=yXRpFMukrP074 zh)jV;))(9+GFR9v&8VM=9nF?#6YLfKL2_0E^H|}8eQrV+ObX&We5@<#v_?I_*4TI;e*h<`oyIXho*1sdm z_u}x0usNygYjZ2`TnC4-9&W;gm=ELR;~m7zcW&_O=Td2egqhQkvvA6q7Tto)H}W);jUbf*<$VZQF~&72fkq|*Vo!N%bE70xPTZ4w zQo3?CJ($tPHgEwZ8DI2RkUG7bBjp#JDQN+RRJViSoR@AcjaG5jxQMPl2&w8y!B0XI zw8`ur@NZ0D*ZsepM`B_i(vYpz7v^&9f1S^8e^w8986N7Jg+mY3;;;u`uTT4xWdd-3 zSs;*N5<4Z;jy#r#Kkx`zkohOv2;#RaeaKvCk_P>FRO%~uTPd6{7F&-Hyzu*AjJ`M+ zgd#vOzW@i1ty!R``5v0vc0DSN#gJcq&8dB6u-1^!mONXih)SD~ji*(=?!ro$-U0qI zQgz7P0trjz;NHH}Wdrsq^w99 z8Pdkn2c?as_YqCA7R>@z&BX#Pp2wDtz>~W|v;_nj)-wKY^c&1O5e9~GQDkZK3O~-P< zXN(C$ycvftn#Dw`87se8Y!%X^8x)6Ui{)#C5JE5o685@k6^ni>ZyRVT<8#{xoinm` zA>jh&1+T6CZIBqw!K>JdIKw!ctp=#tHVib|w5UOmkkF`uJ%hhN*i9DN=ir5NGphQG zGP=&Ej2G1MQDL)jpK(87WxGH&onOF)Nr+w}z39+DflMSgcNL>VEruP2$m1n?MOugz zqGT@~Z9!ZR>(3GB_0%GzBJbPiJSkJhEWUJ&bwEV8r^$sY>YpAzd3^F@GMXHno{T4> zB1~`Uw~CHydM%a>Ny;b(3ARvVTP(9J6=RO*)s%;6O%KV=Fyx*)C8iK zj7XE+-E_V|0Dh$`2*r2w3Lf75@WY4ukMDjspa%1gFzcMp*UW7B_fM!X{`&1M`cW8} z13Dj}xYbnHJ$XO5-a>fHmj%inXt>=}N-Lg$M(hi9m7Szl_~plnxqG{_XN zazO~ej++KRDesLtXc7v8j>8Q-avQ?+Dhg)|j&YTp-d_#%eT5BZK9%Q}p~-ZuIimEy zas_CH+HrG}YQ}d5U%h?z%U7mLE8ULoR!}oo2>^N>-(8q>9TBWsS#s!#0XzHLfrKky zIv*e-s)Y8+F7Ppv4?XX&-*zL&Qphbp%2(_8b43cLNBMg2wt-&h0>#qJb6j#!Yb|wY z>Ba6z{@6~PBA8_gU*j1@>(3}&KG^T8Ksk%%d3TNn4h;9_huqL^XWO+0vPNuYjTZ&P z(UlKG=BtvdS~_Bt-MT58(fX+c%)EAIGPWSh)y9LSoYZHlnF^F5;ro8qes$^wgKXj) zr(9YuI@XZ?ZC0(ktkP>hllg~~9%FX3Hq}qvBI6OoPR9Jq*V=N2OjF6KnFCB5wLaq& z$A|JG1L=c~mm=OH-leYOb5d>qfJ zO|6HtGP)?syh{tnzJ4Rc1yEKfE{^sJCIh`83UX&tR(kMp$bu3=sDgR$=&}s(;hzrg z);jnMumXL6dl+FnUFmxTE~Xht9)T{rR9yyy`PkDBb&v=+TJV0|)(8@Ztz@C#Gpr1N zYO;svYP&ER8_U$pDd+F##L_JG+cDTPdvss@^cAj3Cr#$4Gb$0pF$@r~xQFn8Ajmk* z$(cj8)Agg(RQZQ7KbF~%hT5B)l6z0CHF%TEY9r=U#+CrOtVG+9OGs*yuoRULkop3q zdNXBWE-ZZZ_T`&*KQ6#W-M>d#|F=K9{!wqYUTY}F1Qb0({z*ClW3~XH!&3b=QRKgR zm@9!FfOyPlmx10r`a(C-yAWe49(4j;QcC^6~t zbvQYurqQtw6KM`?*XJlwXlMb4JM+L+ue7EFZLelxjbuL-?q9}J?I*D5)D0L3{SzZ~ z&d+7-D;pf~Sh(NKRlnjk+ISj};}_n-B=x16SZBDMRC>>d^o6*21#j8m5A;q=w+>yg zrBXgwWTf4IYCvGxATA9K70<+GGgEETo;W1W9^x+z|4klE`mW{NBG?Gv*xluGx@oN8 z=YidDPJ#S3u7dL+11B_R`TcmpeG%AG@@#nk)=&F_sP8@T$as0xY1AS`1Aw&?9WnMd zP6ouvQi3sJ29{4djhH9w%7Y35-0s2)pC|%UyF0Ajzx(n1%byL`xo>;eX(>*z^s$&o z?L)efcuTs`inm7Na0(XBp9A2!=33MR2VKicLp^wb^gFAat0oj(vyixy#)H&7l6b&~ zEssCr6^NZv@wWEaUhb`Wj4+37wyFV!VXK+e!?zL(;r+@NzVD?m&F)`J+>n>T?K$ID zU{WUDVAd+JFma*95}9o5waFx3GKak}I%zxyFn>a1JsWe`4&7&y0>15yY2n2Uolc+3 z&gSRTYMVCcs9^jHJODg_lIB?^z-Z`PJonz{Pou}jM^BC>$A_om@%Z%dF>>#nE-*$w z&Gf|(=;;Yg-(r8N<87HXirzb?T_Lsk)77_ktHIs961v)iMfsBaY^|WN-&7o@~cf>zc9uI9tcExjjXwhI0F6@(@ z>H10}$tliKx-vv?1^3^pnS0~=g`Op>Wk?5+B9}Cq(N}oBVFH?`#@&?NWv`B@9$?6y z%J9S<$}z~X#QJUV?UkUdnIvVsW)tn&~%6Pz2*i_OJy}DGdvl z?)U5QJ9p8E{A+OgW~zmh{md+HX818KBaP7geo8GXRIrRte=Pd^BAH3{2!xfx5h~dn z=rx*uGdiBlN-ttbjFfQ0iIvh?YOIdcMXC&?s*IVN*um`!>x8pUWqi?Ys|!&HAz9d0 zqAxVL*j6*!$2;JX%a?Coy}5r+(Wv0Vk9Q|KLiDd*vol%QkPy&L{pkT z6b4ax3;7N+h5;a_;i%tsi;M{F5Q_}oMyM0p=@mVw+OrL#>KuXZ`}DBhsrd-pAsN9CGZbPpqSB6w`BW59sqE3 zoV_>U4_Y)6@CwL!ajTN+dONsewmmwZQOSP(`s3}VpZ|_+=k4AGJ+o)ru4D^S(E9RI z_IINm)Toxr#-Ug_K~i#?Ah}clz*AE>=WA}+X>vIr0T1N?^GA)9bcukVQgrGDs&DDi zG=F}#YCUZ0K3{oKXFkYR9mJr}bQz-y=Yjp9m+R3Vlip;-`prB6jrm)Wpc}teBU(AQ z4LtM*{6{{E_5-d*>|##ev+K^uMAbFDT2Jq;&!8kK322K6MX!yVit`B-cruk@mT;jM zFauU2WP6}-6w!X*T%IqkglNbim+s0ydcK`*3TryG)Z#X!Z$qvxPcY=_H@L8J)$rxe z#>4ib^-5R5fyPD=!6OUV&D}M|lO+HmPZ!|xPzpf|`)9^fk|9Xdg_H#bgT^tiQFAg} zHrkKo&}D!pb1Xo`)$u$_W}>C!wn8?1O0wBMCf^5a!eOtLx5a_bfq@2VK{UYz3yLr z|MB&&$Wp%i_5S_r{p(-vwdUUY`UAs7Q;M9t_Jt!r;DixloPit8qX?boo*Mj0q zj#u+u+*8x3hZ6Tv>O3QtOxSAGCwGh2Z(o1-NdT_{TQxfeqi>rd&cc;5 z>AFCFPTp&MIn*Mi4*|soIcI8@0=$X%-OfF{8vRbkj_tb09;c&$Lm^HZbeY^R_>THg zGv-_wT5c{I*k%0^i_ve^9XzVU{x3h=!+v|So&*`7^4D6b#fOZ#YqRKho1RxfxA_-v zn+Cueor0MXBclPM1Lt_ekEt;HLhlgLj`RiDv;uc2-0B|$`Bs^qU~4X|;*xlxXGYcjbW*R;RkkD=41*(_Or;Ga-G~~c-D|c%mQZHyV7xUuCF8V2clP11YTV>UW#aWnJ zS8_Q-RY#QnY?vyXsAhm>A_4|sdc(xAagT#}-KXKqvxbwaWQ+(P7wWQQse3e7TkBk! ztI#as2UrjGwQq+EPE9)y5LT~A##f-@ey4a#=!IA)S}Z^jnCZ=$oC>Hi^u!5KPn9@i#1gq9znzC z&da;h$HKMFI10tePmF;#8O*>k+N4MsP>$9vE}&}JU2MI}uk=_R@TeL)frl#Q*&W#C zq07DETq<-WB>=4LD$0t&d3j4-Hp!^5*>N7B;&jodok*wKLtlQD9)c$=ue2C>=YDK@1DYYpU22jKVWyTbkn7uExp)43D2KS$B>LF zufV!bPj?SyJO;lqe9@`~AG+P{<;RcjU;q8n$NSw5`u`92uK>*Ac2#jJ1*<@#$CEuw zu4@w;ZFzLVLWW>+$NR#t9~x#{7~$~7D%xQ|(q@?Z1pE)Q1#zWqM7i`coDbObZ=V8H z;^!GF3=cF10$EO9fWgE>mFw`cF7{YpcLt@PbIy3hyrw)%F8{1rJz?Faoe?yIIPO_U z(xpQ*`Fx&9RF?>>*!Qw5N@!sm(2+r5!2kr{(z%<$$#ay~b+E-)JMjS^{>Geo!)2W>RH+(jo-oeL;)MwY7 zmbxeK%sP?OMZ*0Y=@SqjaAT}{pmnISA$?TBaMPvt7}CNk<|yW77fQ2)OLzzJ4v(}j z-uVWH7CJo~ah(UMNfR0;Ck{_l?6=`;^D9@wqs{&IAK$%ifndN3X827Q&$UAtm28I6$`=j@gowmvWs{gBqYy+=vp#-C(Pq zX<*m!{`$@Xy^l7L0%?n-$S@$>@3Y!7L{k)jsqC&s|EeaN+~RsRhUV$uhu8OSUNJ24 z)4f!BnPz+2A36=`{^_4O-YJW4ZqaLb(hSL1SyAHzXX0J^?WqKfYHr;inG7>3xJwC& z2tvjMf-3Y5Ep#}JQxJUe8L9GfgW3g75_@%0t2rF3X^12|0Knm4)&q4@B#T}so<3D? zgGTu37D;I6n$Dw4zpN$H=){*rpAaKr^d2ION#|P8PCF{*N&@Q<))-Wgykh<=lZT}q z<@2$6iz~(;l7z4o#Uaql#JvT-hR$#P!ZU9UU^@Li_-Vtg^_~M}fo&Avon=J)w@pov zL?9n)R@?UQNH}xl$(pdQg$UEg*Il-UXj)X{h$e_z^(%9iLOb4`twYnB)$(Z%-S_(i zn@W|2q=bVmMF8BYYv3hXd~ziDb9m%arp}OH`c%%0XFXp##285V!u?#X;A%_X`wTZw zUJBZF&yXJDq5iAoSi}ovi!%V<4PcmRHro;dmd*Sbrq%Op|8V~+eA{_IcyP@~0f0u< zHROS0dK2P6NsTOm7wkGUQxqPw&EzGtGVJG5Qr0jiN6MTYq@@}0FAzjt^RacGc8o^~ zj`XCo_{WFSuAZ&Jxm$OT5SVj-^Jo^^##XE^X)FF9Chc3BvuAU`$rniWA_fqS!JBm`})EDM`bc6Cg+(e>GeR4Ckt<}Jx}Hpgtlv=i-z=F!T$;W z4lB&8!hme)2$kU`x)@IDZ$iD{Ud#o4C;YI}ZLQxvY$9RZFdufgO z1UzgDOXBeAw_Qq{c?PR1wA~1=K^i8Y%qt{4tqA<|d^a@4AcZ)XETA)KfQlaDCP)D* z*)ZzqR3D!4)CM+(+Ix?#52)TdD$qenFi$u|@TQ~zTP~e0;?kRT3g^E4h z*duJ?lagd~83DIl_AOi$d^&9?ww_5Rqfafn(^3-nXy_1Zjp)IEE)ZK^pVW;*q23yK z@wvSrdbYU2`pZR$8QhIb>CnFfy9tjjj~%lGk`7;*I?Cqj7oh3*u|_ddv1i2bz(3fzs(J)^l z7ZD1Fr*e>1DL;)YUyq{qx^+__O~LPy7@!oeyh%rs+vA2T{zWMc;MRVdjm_W-S)!B} zLdpPOhm?_2QpjU*`K-}UiLh$X)+qcAhj5DBOH_M=8wOI7#_D2mlMa~rQ2YLJKW{(BGIhreU(C5vYKy3Pl?#7U0i5U#n2T z^7dkhsZtY3Cl*OM5021OE#_&o8}ATfgw)e(R=DVFlTi&rp-;I(n8hjY_{iqxhy=8F zd}N|Y1ZKOrAB%=iS}cvQKo-15mGs){)Iuf1VTcn@(Q6UB3cv~oVG_*s9n$q!RpxY1 zQ3(7Q3iWRE?c!n9=e`B>cq8)yY$}U6bPm1T6}^5q+yn3L_Y0^h9Z#d&p|Zz6fcOf6))ZNK zMKQwmNpXV>-~45zxpABZ$SL0L&W=1+2UFGXJ<%)>)Yn(yQ1pvx5AMwOk7nXR$ReL z)PH_^cLn>$Eprq>0V;Us;X#?>{rtam>dgg>0`6MSpYiNFM|>7Tjzb4y?JzL+`btV` zv1IfOCPsYNbGWcA0smrV-2wH&d6$qSrPho9tXjGJl4UWVF)+E@t`MiNKq~+&kwR$R zfr0ELN`0XC*DCk5tM&=1o+&P*NZx?2hQxP+4ZfNpua9qUCG@3EEwbTkr9d4ZJ|RH4 zVvsKdt41ac);HvK!4KaMdV|q13-2eo2><;38T&C3rU9Kc_d$$UHrHoL`9Zu5R}-MC zJ-A_bfPjt5wgFLe1pH_kZIKE(tx>^&r!K9Krf6!U;VhV`Ps0r^B>fW2By?g( zplae-F?|n1{TSnS_^0FRwf$S@mW>~;=q7at*jzk;e*R45h&0vD$sg^u-O;0}usrt! zAA1Kdt&e-rp{d&;=hv@F(>By0_Nuq{_pf&UPMg8*Bj-+$?SZWs>?e>A6EGW*Gc042 z*HRn_;w)HdD}FO{gNoFYvI5Er0NL$!1?apeb(a>bFQ5>xkJ87b8BdGs1lxGJ*6axdLJ$+wI6;X^rMnOqfv6ZU2i8Nf<-pRWf-QDB5_fU1 za^lfxMhG)q*`hWko6|lQ-Wwr6ATa>v2c1H7N71Zd+7M$@psTOZRNbfHZmCtX7LyyMkYL`F-+t%P29W_h`7N!eL7(%fvP7M>pm9%dhIp? zQwq`a%yS058bw281(`8U0~fGw>ab8uLjEhf1#B9ypK~3cUs@Ia?hM1b9uTJ%Kr!i_ z?$anKye$wggR=1hBr5F-2+D|gYywhyPc@qgJ_{eBfZh7pRX5|HiciRgg|l!el1~B% zL(SZqkXZB5UA8aM4D@0Rv4^r>H=4`SJ5>A%$VA$Y1`f*}ZM&u1M~2jk_400IqO-E_ zN0W#h*d!>uVJ7&jx5O2Oihem$Aewgg;;|>9TzxYcL9;4KHk#Bdrz07{3>K{IHT6>= z=$_qem*;19vo(B^Lg$eIo9R?;1%DLUsS0d)k0T=|?u~wI@Ja7DgHHl=O0wWnV;gZ; zYR6bd{QD2_@PJ2LC_IS&Upmwm&DtL!?QoX;Z6L^LV1RDqT)|5zQ~an=6xJAm2muIcVMKXp`xz~qsRuJVozCRm zP)KZ=X>{pPIwj!|jTY0xnuI~eGJ43v(I-6W%OExtuG= zMK3yz!ZaUTd8n8*lDAN9pvNw6EsS^GrQ}`Vydr2LXCx0_R#Fr&g8wov+!GCGJa115 z$4Ky6^i0_RYXH+-1cYbzNDSaKZA6>^0_5tdM=~6KInkkRCy%rmB9?BuJK^q7<%gsw z1;)nR*eg?GIGXAc2w$TR6Me;apNzNIjidlNc_10f3F6UQv@+SGt{$&#Cc(N!feEi_ zYi16RrDw~{!km-*LZijbS!uRY)1~=E?#(W|DP@$4ow~W~7My~PpyVJdH!t?ExI^6q z2+}vYK^y}RC@*m%y6!QK`wH-r22kLRoQfo9A`4ZvsQ=(C1LFGp6@; zHh*Dj#I`G5lFGxyhhf~tC04Ey9^JhgNs-4RXV&B@;5M)jb)vos-=uS*NGE&1qu+@;ARHpRTNeCXmkZKBh_t;lz6<&uVGz@wgyAmq zL;NW6hx`jm4lyV-^vpu3WRsD9QWsER7BC4nP9)QNKqL+)&Vf6JPxWmd~dEk=rI9W>H z`5GvXVRBNJ98hN>W1#&2AFH7pkPF>L1g6IJhfpn9L5 z;~ycCt3vev7wSr?-1u*i|9C+05xC}b|qvX3h6EuBr;7EE*e0sSqsDCN8RHE zYq$yR$^l7>FOvn+Nfh#WWS4-4HqNwH&58`^ho|^I{Ev(fRs5U^b2(pKxQ30wihEk) zP*ISu z=swQO#3@-~>~!K|;UsXto%bArCFE7Z90tkY$Q&|5lmd=dbty1{LG9b{pFEjJoELw0 z0jIA5#3o`0utbtcmaCMsm|+`%eq9&sIlc`O0SS9^awaLR0}V%$-LpG7PZ&6QfOz%{ zeyn6%f5`s8N`&%fYn*MGM$wVkm8AI0APzHgf@tU z`Wq^gkYO^r$uqvW|9CZBy}$qP{Yz%0$F?s1>h)=ptr{!?aN0L$*Hd_o*8$({JZ0DJ)%_318TksLyWmhu?)Zlu zOr$z^>80u6pNR_LdWCD?+tB+7Rxy;LoXPqkX@vJt9Ql6`BaW95RS}KO!6bYeULLjI zEWRG1gw1Bd3^M(L@1k=SBPB@dMjiTc$)6Y@@!e69Re3qk@&{)fOH2SAf`xP78I$te z^{!N1I$xZLjD?0y@l$YIHlwZFzxjjvr(S^wIRQA#eAiE@V67UY4=a6`kZ^B=Eg#W~E0>)FIqy$kj~)%Jm1I5N z(q6YcAKN1kVsT_DwcvU&6m@c5^!ML3b{Em|&gy+JK(}I}EP(##Y9VDhUQJcHELMi@ zryCq^gyg_m5E@E~b~Ks`L13`7T-I#aFU5OUg2BLx`N)&quKI*h5rBlJdo;gCBt;BF zuE2vKV@=V9k4-`A%z2}>nhi4chGe9+Nl|4JV<$;76jf$44krcB>m2H>42qc^OSspT z4kW^6)j-_!A!kV|1L=A9A z08aUMjXm*w7|zP;HZgurFhBMTaXX~9fn@1x2ewgI!GG)B#%(f2_~vHqp6&(h+wmZ1 z#%!#3Gr*SqOG^8V{%58A{I+Cuoa`=V)Sralk_uy=6=Py`iZv@~-yFJWuwOxemLZR8jeuY94<@vClzz2&Pa}Kqi@g+P_ zG%!J-1g4s5rBG}5Z@@}1W|COw!S17nyH6hOjv|n09`(CNa83EI|H1
;KH-$Df(q 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 z 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%0D%Z)s}S9{9flU~(VBlqof0AR&u-hbwgh&+Ak< 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 z zi}VI`v3>}Eu$z_r1i~Ixh8Bb9WqsEVyFS)?V<7$b(_cUiuo`Iwd%_Y>vwx7akJkPn zR+|Q7nDx!4fQ+z?QD!{Kx*7^@jAc(f|8Z6jwXP;u{--d&N!ADpx+&Io3&2gYW);xQ zum%ny`cqcGNeE|IHB=2gV};UVI>*YQGX6R1+ZUj-XD{6hpC{Pv_aSs(7p?`;k-fbF zNGEp8c|e@mzBJ*UWOrTw@)SGg0|-yEqyK`z8TJCobk4F@wt#bCJ5guIm7V%Ggl_EB z-9WmtgO-DMu)UVRizj;?r7>RYZmI^o*|sWh=hzM(!N7<8h|Z4qvR|hQ^J9DNgU+A* z;VzK#>}JaK1K3aKwFqQ4tpgXtUYi3F%sxPq)dlu4EzCpMUr{6SB70&3e1@{;Q?De9 z9rP{+7|z~IUki$0v#Dbp$&Mh`QS61sp^IjFQQzhgdm(K}US@B%0~fIl-EH;- zK1de(mMetWY*%Y=IqaBnAamLCs3gr}ucfBU9rmvOYm~E(gn}zzFS-JQLUu(JT;F9^ zb092YSGPe}%&z$lq=c=Zx44x3Nj7w4>>pQwD`)o@Fr<6zzow5nCI zmr`|I#a{LqAl2-@gwWNn`zbMdz@A7#pjvhaH4W?7FV#R;&wk$qkOsDjZcigSat$C4 z+1F1&*Tg;~!H3h#{*0D_7Pc=v46W>a)G=#g_fdY`&MtfbTn9U2JGe*e%va#-FXBmfkxS1jDs6vpO^$U&i-r(xCwUt1sF`SPkaq$Q|x`;gG{r( zp;dH--Fyegr|h*H)tFB1ZOFgP!9M^z&Uc> zrXe|TywefLnbUa(!jqhZyC6Kp>8H-+X-@N}5T4<@PCb^h9K#+E7tYUFh~UcEQ3~S5 zDR2bx0_WP-(1mb1sFQz@vz_(|LOEyX4G-g(Qg1Dsvz~?&!P!N#ek3QK2NK2c=>Uo5 zMAIsBiF0^AxXYXZ>LJB&IupUga_-W;=oQYO96qmdt}e#ijpMA^j&WY&JQ@bM&T(*q zc|3=465I{W_Uj0nz{#dhI+3&fCWJ|xVanida%QQZO6IJqfU^|NMM|)4aSGmmFqIQW zDSsMARS1&KVN#zxgYzX-ZkZg_eL!w=_EPg9i?ikqxNMG3IgmM=-PZug<@`d6R37I; zdN=QIBs~~)KF5fjx&qFZGz%AU%qSzf%X!xo!Xl2EmXKnOWd^ts&bR?yN;z}XSt#SQ zP;0K7v$z+KdmPX2z*TTwqzC0b=L*%Sm7LdU`mN#wQQlh3*-kY{4M#)|?E}sq10c1W znQ@Rh&gvrQ>NzJZK^iz?2^dQwr=$Y$9&!dKpJ?LfZ-Z;*v>$^(3+FZJn6+}+sbXm3 z#7)7jowI=ost%5jYSBlWXg?qybI#L@*~uBERjrFN?-dwybC%M6Y7Zx^7m!}g!*@aY zI5Q!D^mCqxKn6HH4-w%Br8|PuwZ)`-cHJ%{@oO z+q7q#l|z@E(;`& zo1YBf9q#-VaQR$&N{|by_L^G;vmOlW4lA=GM}pU&FPF0{4KsA_9SG zxmncyuH%*}U{}w5n|2i%xbOZ3T_g7mYIZ#2KB8=jGYq16f zZQPIFz~I}t8~kw3I=K6Mz&+yf`T=>&-9nj1C-<=#bY0ves-3#I1`$XPS1N&dFL(Vg z4EnfD^cMGX-#rB~zzw&C?g@AK_plq}j#BSwhk?DXI>S3kMAV!ApLsYDV_=K|DEQ&dMnu!3C@?=CgbZ}MuX51q^l z`xC+xo}T*9w|KUl5T^2uQuiQ@=S*`?I`1Yu>>0dOw2Ef(o>G7CHt*hXTuK&C{TsM! zUX}_ZhgT4fvE=f8rs*(`ckC|69o}lXFZsNgDwr4WPW}f{$XiMC*Ql> znwLctQ4Q}8y4MeQr>OL*<&77B)bU(8psVM7M`zR;c<;OnyGGtK`iY8%yy8G`O}xk3 zL7I6B>Atk^p0P2AR^E6WoVD>18X#=v&07dB9lW{ai2jIoSPIBvUi<(ebn@=Z0@=kY zeFKngUgR-AdU#4I@q2lV6t9nG7Y@?T`-=8026)!=PCwzrQ`cyar%Qxxhn7KuyicgJH^%$uKNyVjHogPo1n+|}kV#%g637&9Ipx>WyhHSD#~I$6r-6LR z(^9`+mS@ZcdB!tzLpR5}`4_n7yu=a^`xpNDf7HDPcoRq0KkD7p%0?o+NHTV!gckxN zfMuJOP-086t>B_aG6qr z_y0Wi-hAKd(VTOp&zv@A7E(Oh8@?b*s)OM$T`+evbiV`2PKHP1x9M!yz7LdL43YFL zldgtwcL3~WcT&m-&W^!%=t4fZ#Rk0zz$J#xbgQt;ka7f7 zFE<=;pxg?>cXvU#(hz?fxK)Pcq?@iboV|!-jloI518WWcNkFpBpe66fdV_^Vw88KO z`DQj68nr>P$#Co?lFf#wsi53qSn@S;TMaA7TH0oKaR8NVHvcvEuF^HXppXs)G zm!WM-B)bjo_eOy|hVgXp_8KBd2JAD$jYNU{h6rM~2MpiZKyuLVEs35#4WCv9?vNqk zBj64jb`obeVrWJN@lnI*Fw}C)(2)euUxv>`B*zU&Bw#t3&?m@UGnAyNuLB2?8-|)zl)Gto^Ehy~3@=G*zHKl%ssPGPMgv9DcQ&>p&q5bt*V1UAtMPg} z218z6;<~!?)wqIzD8FsB>jx%x1vCQ zW2x7X3^4Bc43!Nu_8o)*gN)0r131|DP9%~c#`61t8)`HU1#XzJ7G3xbH-6L~xDiHs zJaQwAB@Ad`lyUkVB%_U=e}qnqF;+MTlCj2;#N@^qtEZs&c;maoASM`VUqf!9aS-W) z_?N?8Lo(SIPt!BS*ykLQsm9;lL}k;A8gidbH@48BmKnyTGBr{Ala&FEvz4j2jo^ASyJo$4>Gs(1^YZ6ldoM)OsGH1RimAbpY z)FKABg{Eoakt{MTCDygrbSDiBEj5MzfMl6z`(;orH$9|bt~8l1fMk_v4JmD_O%_PF7fPd*K-3;6gQ`Zg1?KBOniH80#JxfJym#OaCXm7Wv7a2c$Och%KxYyKV zCV+pMYGopK#MGUVqo%dn0X$~vHWcmsWok`TA2)qRV*Z3_%zU(W(zKA=KBr8>iX%B~ z>Py1rjH%p0;LhUTCPU}Xne@bW&zrb1$Xzgba#80+Q%@)Aykz=}82n|^a&lo@G3}zb znX9I?WKdl*b@~hKT{k8EjpT-@J#oI9rv2AZ?v|-LiO<`n^#Xu*Ov}h^aM$#Q3zgk7 zoo<5UzUfv~03Vp%BOlpA)1jpRJ~AbdP<(8fNAmB9sb)!3_SDp8A(CgNn)^`Tx#@Nq zaxYBBl97998rTm>yYQMMNjik@rw!IIywb1eV5jh_6M*X+eu_?Nm+;azK+-k*+A!d{ zh1Vw6YWMIHAE1Lh!tFJY>lyxj5-59xw@w8~@9>J`7U>hdjM!S=@IOds^b0r9yz~z* z_a%S>!e2duWKj6tR{$IwZha4x4GF*88O;t2e@=dsVd1SPyktaptQ}R43a{`Da-+ki zZ9}=S;T7zl92d@wLNY#l-c8gpA$)ceYMB_`gMzjuh3`9u+?4R*P866L-scQznHD~~ zGzv@)5B&?k8R2)Tpl36~mr|(ptnjua0Gy3~*a;2I2`{z+lyk$U*F-WeJme#g%nz?e zEOtS7dy+s4!#6!ZvM4<7JCs`-zEh9flJIu)MX;seT@Ir4W#Jvj&RHJ5kevN1!*8ua zvMM|x3LRV>-i4ix@CHt_ur|B`$(42C?|p%Ot`Dz&49Vf}^X~w6CVT*0ZJY}qM_S(b z@EwOhc_&=+26FeqGv}kBN8v;JBY7IWhxRW12`Ez2I+i#{4!%w$y37KwbBR-=)O0CP z`70z{OU%tdce|D7`Zq|rml)L)1$vZ7ARDM>iQ?6P>s8|8hG?jFiN#|;(x=4J{peEP z5@HA7`jyayV3-3+j6H+gz!D=!dm3FLl=PP|C3=&UHNM2WQ7As4M7P(0n^>a9F4Qu) zL|K~1DJ4!%KqnrSxHK5;Jt`617nF}nGyL=Im5s_qMvSL3HY%d*J>;fD%$t{ELX7qMUksy-ia@O9)aMD%D6+{K7> zQvtjb(YXfdyd2S}6q>yf@oY6nu0@P(0+Q)$U}W1%pd1ugmlTO1kqsvy85>!@6>1q5IqN)nHa>D)4k#x? zwjw4lG4em8AWw?Sr>mREk>eYIa%!ZW=4@KzWHVZr9(nF03e1lz`4qVYkq;w5xgv7( z9ROEGg3)5ZBir@|Zgu3NY!qJ;S+yE+Ya`o`C|?&@t^*3Jk8C_1xDAnq-$a3pkqhGh z+!T552T*Q~e1&%TmdL%Gk=q)%pWFu;kbTsMf@R7KBu`km({uyWk^878NIP*)YN32* z?(3VVvsE&)jouK!x#dU6kNC#fCD^=XLQVlMnPYFWbN z5Eoy{t*;K?GVU(jVlC&YkUF}8tA7S0E4gpTXkNwf@?L7y|HQZ|zk*wuR6MQrU>>S8bmDK- zKD_|3SEM`Gq)$l~sI9w?s#CJiP0@LEGa&AnPtTTuTRji{C31(wBE|& z!0%sD>EiBJPZRw8&AJMd?YLRnkaXo9y8!FP4JUU*cdm3gsQYmd{w?PzYnVkG0ak3T^&nVawmNTze|UqiV$T>XmxF5uq$4lOL@s=tFC zujl5M18xhqDhZT}`O>YCTf%puL$sFvtUgHA@!yh{bv<8(cJT)OF$ul__FoxWS(}mpIsBD2yJ04Xp6y~i2)${oUqJm7W;L$X2nhfq2KRqqleyoD|u z5=N0b>9AlWOY4ZR@*$F=LW6N2IVRlt5XoOc#ClYATzFCkxf4P-NvM;;o#CkZqVT5) z1uhBOF9CO1xIP@o72!2&)& zbTHa$c5Fb^9W=YitJ_iY^Cl#nG>@rgoi+EGBiBXKdjX2~)#y8*ct1@Sy0YxAsX$DA zq~it$Dv8fO9o7Zvwbb^E*w*8cl=FNY-lhpFy%tvyoJi^_o)ck=vjtcMk=2YSw)K z;2)YtvB>SxIE-j^x27wJkv*FEbbYf|Gs}$JK8^J$dbVHFu?BJ{GeGD=D?@OwG+#b#@${Fn+%c;;-YOxI*LEt1F(}g@jH-o7Wa=pfiB{JQpk11 zKQ0WCZsLD`1F(l!AqL45vAz)n=7_J|1#XG>A?@kVJWuW#3MU0Horjc1XUK=?H%}&s^r2Dgp+AIB0 zZjyH3P*goxdukX+7HXR(BUz;FOir7{+U_5Ka*6i!n@E;wEfWD;rmg4($#QKaa&fHC zw)ih{TeWMmP}w$Z1LE=9wbdqoa)*|u&L7sEtd8PGv^(i?<*2q6*(}GjeRF|3r~R2+ zjOVr6$w3*pqAO8Z}bDnoX{UB8fb3lt~H>X7kY^P8N>ylb;%xG7`n0os$LX2`3aK6q1VYb zyfL)RZQwSAR-SND+ci4eCZ|Q5%#o04`L@09Y zi!c8i&2}liCk!OLi~sZ&lK#afmIcY2;{CEvd_(cnjiB6De9%$U`FHUxQ7CY+_<=W( z>+nkX1G3WcZqH(XJHH%`_8Z0>M8O=-=cuK5`a}?R;p#6$B|W(;FB<5>J@_63L-`+i zBR7G6&9wzlylNuk`% zm$3o3k8g4oB>VZH*O46H%@xt!L4I;9S~$)pZbdC8cwK$qPV%QkBzO7P{Q%zMYrTiu zIN=TY7Q}d=DoNc5!pXWwCJI?sQOhjhJZ+xYLNb}LON2dS11uGyT7zVn(1wn~a>4l- zD6ffU)&qAPH>RMxAwCk(`b}|lKeTX5{JTGJcf@@1r`{D;wFmAVT#YDxUz|tQ&;xPY zFTgz#cRWGzSX?<4Ej$s&()2tPm-a^SXQF;8lILQpj!0gJM}I)_QsmE~vUb|fNeyYQ zeQOnRN3|T?js2y4e;!&tq0OY5kCWPkYf#{nw&^KUeOmiAX)$ND%ZbsR*B*`q?t-?0 z3&4xo(PUj-*Zy)Iz?)hpiN@R7cj&U>j+QeccUS9NgXF%}djVBH)Sk)(I*){Q&qVHM=Z+pdLti>Q>PK=%vdp4`3hNs8guAudY&U;QHyd%>%H% z?#Z{v4bUwi$L%29D4NK@x@}#M4AEWIVSGb%R$8NBx+wCG4cC3&0hA+jQ4}LEQkU=r zC`akCM}uUvuIpIT`G>CWJD}XHyT2a5y}HhHYraosse=OhbxX3E>mE_C=xN;)a^0NKou2~Ab2=w6n+v-A z0HppVoyq7|E< zuT1vYH2u7`sAZ1+&{v>brmyt|a2xawNJHJG|B4vvR0g zTvr|yHE2z`W>)_{0cm(H3Z2OQGXj4b?duJA<5OhbHhE+OHmCJBfPdfNFyKx5oqidw-rU!vK-Y)s zPa0rf&O98req1GTq73IYlIlK!<7*-r$^Eetz=>R|4CE$pTQkt^WNz=5=)@E*f`aSj za`se^%;RpXMs7a$n4Fl)xt>c<-~hMI4ctNQT~fjS<=+8auiT#~nRD}X{QmwXb@zvJ#4eh?PmH$NNGmFAzJ3VcEgnAr zq@{ixe*bu^7-(7@84hgjkn*S@Z~YiR^5-tW@1L&H?cvYQI^cKfZ_eWHFU^~yY}@a< zqwMdmZ$hb_+!j(MdT}QMT}N&( z*J2Qg59R8RWE;jE?+D7_+*0ygjpg1c3Cj6gXhYPwfP1GifD5@dD0q1h_k#(!72H?f zAh&@t&^m48z9O-(iOZwQ$Q@iWG6hd^5x)R;fh+L>$qg?2AQF5VhvxeQcL{+W()8^l z)o7T08}j0CeQFYNBlL?%$segdaRR*>rS~>KwWIZakVGG&|Kl2fWA(G5}e2Nng{?-=o>c! z@Vvfy2LLbVyVD7LqCc|-RquN9dP^j`->ftVBzxX8YLM)G(@cRef4%7>SN-WX2mT~V zlQEBfWf`dF^8>q~=>>cixtSL7EkXfY#BZgow3u&F9#t&imqdbODPN5o=F9k3j{vxw z=RZP!R`8h%fLqD0s)^#O__UvptmgaN1?3w4d`sZg@{J>rTgQ)h7j>@ZzaFaW<~_v1 zMsS_K2YMtongV}DabGP3a5VQjX-{Lg)x%NW8LmE^_p{vgKL9+(xz-|gp4;9W`f-ix`#p+Z=R!UOyG*9fI-vm>sBdI)CvZ ziqGJ46VbDo{N=TvT*x0Ug=7)GX&5LM^H;{AvekUXa8Rz{$A1Rk7XEh)R%I*y>f5Mg z8~<}RB-{Ba#6$M;<;Nj+fX^VC>mXmAINx!86k zW18~&{2)425BRrei68PY#G1PcTeYaHpKyOKD2ED1Y2(chKG=Z*>x2(e(D_5cihNLB z6B>~NzP-jxI$U4P**w%TQgd@V>YS>nMo&N&YHp7LaD^r>1-0DM%vcNDBTXM2a!)ij z={owkrd}3u?Zj6`Bk3f@?nh_DH}WCg)*rg zY6Ho&_Sx~hsG?@`w@`cB`p1A<-zAx!xMmaJsn=fz#Mzdj>0Eye1HAs5;={?{y3AIP93=>yO8O`jgLZoUAd88Be}zs+z;SW?!_^XJmWm~QT93aLpcCn zaGz8L@FlnREOOoWzez*x&L1p^+(7=*TSx}+Jw60*F#pjVe)q)JJG` z4|Vnx*0NVC!mDJ)j}Xd{0y0tDMG82C_Y#CdoBvh6JDp>DxuB*kQ^4o zR%rc*kaPjXPYcsXe?24I{Q;EMh0-*gH-z#>QQ)SqZz_^oLN6!kye(9qk3`)OE;mE* zyTStUO5YQ9ECI=V;k`Cgr=}-$@Tle*b^f$wL}RL2GrSavpVd4QK+;pJ(gMK2V%^pN zjuiK;1Lb%z^BD^(5IhlS_#}2WD~ONr9ft%@~bx zbGXyTkSyS8{R-Sn{`evEV;0}_Z2)KUul)z*=J0K*A~%=cP1|A~zvD9`i}|$IK)Hku zA#HXI|C$}ZwfuZqH1KL#v~4_3?@agd=a|vXPardRKR+lAzytgQoB^=x?$qp`d`VK& z4)G;vqaNmql|yBxAWTr%-+XU6z?b+wv^y^I|9Jr1ZT`pvBzJhjBDDU5&t8h$Q+~yH zBprnYBq=%xpU**o&Vq-yM{mLO9)Nv>t|sLA3g2fS*H4&1?$MFL)+;DCN|^c%DjO{{ zynx&oA*2g%V}*~&d>$vb=(cmbz~QLESALTmD>H=gB9fWHD|J!XEFqd0)NEnnC&IaL8!-apT<%xf;8>VqNbo&^+Ac~SNzfvXwzDEJ0OmmR$!eIh%u%c zzC~rDxZF^TXe`%+1owDuhErA?Pl@lm0je|Nm&Z{2yttPPhZ|!53&`CTg&oM<6Mv*2 zvWMcYbo2aFyqb;z?XJ@wD#n4)HzoB-cTe{wVuy`o30)4zI;3RZUge^$It5x zu(SAEpmFz|hKB0)`x~VjJSD$G*3iR%G~9L=zq2n)2W6w%wNR>YOY*liX+c*LITc9} zYgOquAh}v%BY9hnfIdH;#KcclI#NGRs)Kr3Z>R!Dd+y07WIAy5$hhjs9djY+#r3|6 zWDqwo6BP{Rh7+G3!?}pFj^!S_i?NR5j*_Q&0@rFJdN7Ood=v`I<~or(e=e6l7zO5Y z&kd-00oRte;6kqICFBlpE0&_po7~QiP~agKMhp9b>zoH%C;s6+;Ck=~n!rr+vq)nf z!k2#&b&ldaWav-eUwn(!r}ML*hvMLS=pWWt!Vjs0a;x}RS3$CYzx4rt+xQJ>sB^cJ z9OE~T6?}^SWHo@-d2>}1xW_La0^kFFA?ezW`2J57En%M(=%@kf0j{zE{s|oZ5b@oe zBw%jx&M;Jei~p0{GmrSgRgink*S&%gPxuMR=+;v{KODek{P9--e9r&&8jX>EOumQM$+TSEgo?yd zy9<>`sp=uLCkZ$}s6<-kK;bPLsvabW>A(#Zrf)!jA%c~7)lgwIY1m_hmMJJcPPj_r zA20m$9Y#1^SeJzYGlb{O(CY<4Uut%tu#_0sBH<;m|HZdE z)j;ue!nQ`htrwoadxEbC?xW)Pnjo>kox+n801pVo4QTJ6Ftj{y#|8Z)Kr z@Xbaf7ljRE1>Y1Vz5*HkPG$_|>&Eez4rBh`A0=HXuej@4}5i{j%nhb{v*UXw{)@#&hz$53vD zCWlmz1)8_JqRxdHcQ|m1G>=Q5z$(o((#%(DzNLVWHJaTdqt9n;LE3!%R>D{3P-u6dR2KTc?Ve+tTzn%s6McS>U;oA#on>|g*dY5r>f@UrIM ze~?_!>^KSFRn1!38h15oX-D4EY$CPtzGf_q=z-=}nzM(R-o!&5X<{n@_*k3tM*w$3>`YtZ zsJL-I`f^PCnqqg(h^6SduKZ+06yMu#RRgh>?9ja#8HF8n{d1O!BE*7AI^1 z?uw`(X?92S%mm3@v29DVcTe0p3Ay`XRArDn5I55dz7TIFBKJ~UH5Isa+A@8RYp)$i z0=B!h0clM=w5#YIe}MLN;(i0Q-eI5|q&=-ivxBwYP#EVB?a~PV4%M!_0m@<8Ih~LU z*A6A8^$6_?VxA+lHAaDQls3q>#6_I-sdfSY0?Zd{WBIzFHqFn#5aXOS67B+xn>A0|!7g5>FuphUgy`^Dak-KqA z82$w!R2DXSG^)NC*5?tD_QmQq25>;JW~4YyEcW9o04^%FtRiyTi^X(7?qspvS3z>E z*nZLz9v7<{jfQ&YW^O~XBXxB;A~#tVLX2ga?xT-TZiVjTm!MpwTXh1t4Z61vfnx$8_|3i1#iZ1QZ^}K~-zpiHtaEEl=XrCR^B{@*;l&+T<<<97q972H$x^|@W zT+)3M58w@*m3#!Zb?MxV2*jsOJj{^Pl zJ;{(8tnWSoz@hpYp-9H*YxG8eiTbRkNT%zjctJT!Uu^&=7wYrqsIAg#y8*aC|IRbC zuub2y0)V^pXUWLeqhHtz!2SCFUIy^I{#~l&qWEO^X_M$4?p!K&F<$R!}0f*x__hQUq2_0 z*KeN@XKP!ERH0ip#sZzqZ=)(;E&Zp!BzZ&v1oM-|9%rB z>-b(oxsm^3D{9!x4<^suZXOyirkMYH9+JJhomAv~eCO6EzMt<&Z5`mfn*lt?yU3dQ zn}7Wc08jJlh9Wt`H+vJnv;23Ye_!SIP#n@Vz6Ln~uJhlJw7t(~kr(&@U$Z!H5BYBC zDEElp`YBp(CyZ&2TzlaqN&XH(1la;Tgr8~NdJ3PCO*v3FMDsmJ7`+6*QNn0qqN9bC zqUj zmkDTnkMJI;3VVgtCy*Qw##BR{M}-(#&eOuI;wW%Nm`Doc72&& zDIAu2<3C1Wom? zQ0ENIn;lVZre+DU>-RhsuxQDC*^$w1^bYlhNw?iNiNeYtJ7=JpU! z?$w-u?-M#gqqS)7n8vI_fis$EWXqk^gBw-Pdrvkb9xI zJrTH`^0%x;onh2)vLvKiIJ=k*M5&=t@tgSy+h(O;^c?%~V4NT;xuOrsk;Zq!>Xa)G4tlS=gt=$7G$J6)TZ)e@?8u z4!QGUKia$3#UHa!;D%U_e7HBoKQ9A#OT0w7_HFUkFci2WPMC-Scg5z90K6yeC24eD z{E0NT2jYL%BY7yUA#c-5aUuEq+i7bxLuKu?8%de$pxr~aGo!Q{$k#AMd)fxzYHcMa zYT2kwr^iRzwYoHPVvqJXZJR%}-@OFzFKzYWDDX&of*f=`Ll6EJxGAB!su=tF(9h_e z=+DsVr;ywX{X7N5pM}~fx~N0gKw7bGVT;?K6Me$+$UYeqHf$3}CWhS^4&ah7$Ct=$ z5Bnqnx#MBe=b*sNus0Hsdl2@@%>7-jf3&38wCqt18(!EA3Xq0XUEzTs}0s6-xXX%zul*3Y8 z8&VFo=yumfd%Jb*dZ73rU2-hSoz(3jC-Vhe=~z(S(7m4u+(X?B`b^qO-OTX-cGcHC z3d+8EiI{gWt?8Pr+6j0ksl@L)p6*)<4rRBzc@e_#;%mj`0WlQGjAMM-iE>t z`IW>aCJPHmnVTbgG*R}XejYOdy^rga191E!@;lY;+7AVi?^i^vDL7*Am3AP9L(^E2 zcFh*K@VEIP8`^2nn%sLomRy0F+f=5dXdChwe)r&-_5o3EZX0Y<+>`FqAUBY!R2tMn zxVxVr2WOfEHO%I=f=2vL3U2VY_Fw4y&S{=oF{?$h3b}dsf0?2JNGdeT z%CC^!Ixo9b^US7sEm}0qt1?DJLr%E974!-y*1p3td4h7FB3%(JGtD{C{rIn&vd9*f=XIXz{95 zh`}zBm+=2{eJ*sPsh6#&m8h7U-8eJrmyi&)#hcP$Ym(X2+o)+~ZWC{-%w~=9n`c$X zqLZ1`EH@|Di;1bw1V%@Qw_$dp%>1T#-n?I0X6FJ1ChE=2YnanK4;iT8*f)9E%>cqd zqj~`a`;xOUmLP!KE-D2b_=2yPzdMB>3ITbuS~RCRa5o-UM=REIb=9CkkFu~2y;;qo zz#wQC7@BVs;8MQd@PReT&dkei#RiM zs9FMn2er&;n%zoi4l~4t*_5pXpfGIFurwL06Y?A~Dh$M%P1C6!3&Vhg@KgpuE*nYBs%O~XNz2OndtPgAqmNG?j*0>ac+Bv%VYI=;!>Pe7fTY7JyIPO3o4<0SrZan-V|$^+n(%= zGM9;JZAniySFdgk#-Zi1A*9PtPu)#3f6Df{vwzIbZl0F|p6kla%7)_OwWY+F3lOQX zA#pYuw>Qq__Bd&nswM+atUY%8sl|ZsZ139i^l&j40oKvo0jfzrh9BI zM;*J@o=S6XGZzkLgGi5adAxR)E6wFiO-r>a6;h?BFwyBq^Ts7adF^%VsUB2qE>k8S z+_9=RuPn6;606JVb)-5x(jT@g1oq9EGdVd06B(3e>+1Dd?U)1X5~-uAO%jL*@e)h+ zHp%5uX4`HNZEm$o(<32>>;}2eITyk=JoVB(aRbhjr zc@h)c-h?!l)eaiB-J{wC1#rIeFP)q?S8|%_D?2wk&tY{!=g7*0zECH# zX?`|!Q)+D#qU`%KF7fr-Yq!HJYuUe0CDzpn0a*?9SwLx7Qh8#Vo^#WkxeT2%tA1#ff1j zC&yW>=_y{j)9px3OZ9rq;H1v-F_z@y+CbBa(yXV`pzR*aL9!j}SvA>(U_;za2Rm&k zZjZ~X&aep~c1hA9t&R&vF(AkAlKf!&JtMA;Gc8$`9>n>jSxa!)?GPYXlvuAVJ~73b zE_X=EcvW~wkhr`_>E0Mx^Qy9xAo0SW>WQPpv$|p#U$R827&h^2w5|*VOf(g=zM;u^ z)_b-x4lJ9)R?V!=Fl>g)=?bB>kr_XANoE*~mZ9X+Nc$qTaDE$%lK3|}>Q)knNmwFU zI%@#P-@ka5%Ny_VR`H*Ls&qgh1+h&bajn?P=71b4t5linw%c5FycQ}REl;T2nv7yY zU?WPl)^>UECrVmHYDVF{(O!2(oKs=3*qW4O4N2TiI<1&8KcACjA7IjuNeM{8-UNfH zV~MWnACHY1QVV9b(bNK**pbYI9af9eZ4FQ(3Lx2t7&I+C6$%SmDO*}bD&q|#TWk(j z2-Bl5UZ>mUc9{cmY+$}QwL21`{WDBCAKpqj4@oH^Rx%9h?^K#KIz?89Xk!L4UTjk) zk=PdS^J4|fs*(;;da8U>AjG2SJlVmM3q4YWQigbK_Jp`}=w|M;bZ}xwc(&$g*#2p@ z%2Ed_qkk#}WbwwQrFpz;`qX+`5hU_iAl-~cPdvyfEkGF>LMr6B*ZT=n6A9?`LO`i7 zWy{xeG|$b;Y@U@}zNR(RW3FKa)=ykE#O_J*ro@38)J6y#~ zqjDrB+QB(wxkH=1D%*Atnt@QcJG37XF;%t%w+)jfEsoUF0F*_>$vV5ja}|Bve^^~# zLiGjL_>wk{ifKtl*^gz*rDEXJ^RXc*%rY7wsDE|k$RBewWT|g z?R6E^ge?|ZD=e0em%>Boj?P|{05W=#<2pb4N)~{Rsv9rSk2H< z(>(RAA2S_@MZ4^~*Rop=LrIJ*@lU0f<0z#d0hs##jge;^|&<@i&ZKJi*f znX|(5epv)pqI0Im3ldDuU|m_-e=>>@OFcq6-Z+;l#hM@=Ro_YVF)~I7u3d=!5JZEi z$D#C+=Hszc_GUP2;2Bt%%F;fQg}pK!wK!K$tY>7>#wEK_Ab68J0m3E_!-%0Z+8~Uf zW}~H;XxVOd+A%J06Ij%N=TO>TDm1G^#f&Yn@c z*+dz(V#0bC^l zGRhC)?y3w73lxhkYi`p92tSbwx0D5cCo?F4%%B91#lIP-HH z+azxTOg$G=dX=R|S@{UzC#IWiIYsA-HV0-|i;RI&2T`xvYw=bxmr*H%fa7Si@y)a} z7OzF6oI+WWRg35tY-Yxs>AYLrZfKwISdp)ZL^JtONT|E>;6u)32694v)27V7!r-1b z4=f}SCSXFz#CWYKC{n0V8H|!REG>;A6&@UzDfs27hb>#j?()EkLpzM*b1;JTI`mg; zY>yq90y82d)j*xY4o-{r(J4Ys-sq}QL3EN1qHKG22H9Eo3+EF}3QboXn@ws{_6@-e zo>w*|hB=4)8bXrWA?q{2o4|_YXHyO?<_2?@RTMY$9$C=1Q?MAcv}|d}MaT3HpHTvc z#SaRW)s{-qrXjg4NpA}i6>0@6S`t{2HYO>~UKoAQ+7yl%g~g=3m&C+nfDgm$A7v2~ zC~I}qa~3XXgD|w3G#wZev<9po=?+W@_5a2i`AM*qC2r*-4MZ!t{A8-~n$J90MyI5HukS^Ks)SQ~}vF+rFRS@re09BxNy zqDt{p5X_E{B___hrSNKlFzoEw=xkW678qJg82GY`OUVM&R@+{WnYmH1mP*l;V~DLl zNT8V}na!JLH?0Ei2yE>#490$b>{CQxQYWjKFeIrWgvn+jdFiZUlPn>Kd1;8=1WdC$ zRA{pn{Etp8FlS2UxN@%`Q7Xqzs!fCTUeHC$QRJth{D%p0pGP+l_H`!8D^Jn;i^< z*)@_0pyXI9X-?>)UnpMjVmNI!_zy{N z_+4+bJ7|vL0~ttwngSY_-Dysht{~^6qLQY-cnUeF7+-KZ?O2gQU~JSuw?UQ^MXj%j zO--j)@uo+^n=bWO+3w7ymG6mQ+DX`G(t>FyP@QBqzGM#2d0@=CFhtM-IN^E@+~fWg zARJo)YJ_>=QtDteRT);9bgbFf>0q-T7Fk$FljDRN%2PGSO$Sm%Kb~OCnpR1tBm~1 z>p^UUxg1ni2_rFR#fT(79dx{+7mgw2!I8sEIi2#wsQT;{hGsVn@#*e*jE|8>v8P$p z_n&OV75x}f62N+ckgOXtWajmXb9&NUc14|pcA@ru;dd(hzT^p0D12IoRY9_g7&e76 z1gc0a%$&cfKzErH*RqmNN>yiB^QWvx(X~Q@`8TzqSyi=kb&Es!ziW^Azgs(4g;KjR zbA=C=CM2k576@$o$Ib{&2Y6Ooa*FIeCo#`1p24d9IC%@DCw-|_Nul0I8cGrDxKKQ# zQ2LjuYS=DOsmBHMWp>OZUPQ8^zy)IfO75s)!Kyd4d{qVBUdWvvu0AD0fUHlt2c?p9 z+4q5T+2{4f*(Ir0l=fXHUhxE^Ia8QsgtcHSK~brd43uWt$snW46jBb8?LOVNa3UNY zxUtBwiy4`ps5~#$ku!5xQt%u(%}`C^>TB`b|qtXD+vbAjbApR#j>m z^P@=OhFqG!L1SV-^pf^Zf=VAjN0rqNM#(M^vaU1ItqHPKu4Gy70}D&`mb7uOZyL5R z|BC9NQc)NJnVROjW-VJ~H~uWpvjFwLx1XfnlJ$oD^qE`&p8LRy=YK4do{C#!TN$Y_ z)bX47=O&2$Dic*!?dtZp5-G4mUViy%RdOIQwL!+qM+AB!u9$FHP?uI1t6SL;TS?Z; z*@cJil2+{klb(7YA(LBXiSlpz%EfYT5GK+QlT6U3dC;IXGl zAe=3xVc2n1VoxEdA0Xlaaq`S6+mFr})MRT~YJwvXCtu3Tz5;LnH0emFhYlo4u?MtB zvNwXZxjO@%sRE^>Yd|{d5XEuH%%t$;*cN6pK@})BiIptTis2L$l|Y)L;$MY1NM2}4 zq=+Rsqa+wCP8f}cH2e6t)Y|gtl39oX4Iyj9rx(T5rG5v2Aiw2i$?S8w(h{*6EM^MT zCuF3#Y^;yOc@zsB+F}as@D;1OOi-Sjrv*S@q@-lxx?4g?iWtV5NDL`0fw5Uk9?QsM zqX{Ec5wG@@1v`plm0xxi$~ml+EJH2ktxBJn`My(_Zw$7;S-TFWHn+ct(sj$%czId4b5cKw^WI5j%^m zCX=8*;2soL)1_(0$#A9@s@mY z5}>qaNL3)CkV1oyG659?^ADDFF3qI`YtfNK&Q}kq90?iVq2M8syVs`|;Q+uROWeXP z{Zwt+j0_t#HkgcB0}I}|KI6~t>6WcTD$Zh>B*%_5)rQgFk91eB_18j99jHjI6sTwLLL-79!3kzbfkklklPftX1=@-=BsZrq#m;?99!+QpbWVeM zZ}yAe!U>pZCA+&~6k~)sfKvj;6?`0yH1b`SQGT#n7JmjTLQUpPPRlUMx>nIdDR!G9 zJ>`FrB{>q4{wEPU>h-*gQc}TbN2Ukf&_el^piHD7c<$$oX%!XbH{bTY!5ag}efSi)pY<4nDqTSMNRC3bMwZ?m`&U6QA zve$t#6=Fgb%yj<>J6aCea@9>sO|IvQY?89dWZ+05csCgr7pc~Im<#!r&(c)oF(U!g z-YDM${1cV$#!im3_=lTyOI69kA~Pk@1!BB)T=oPOS6C>NjYEBpF0W0{36eZ!$`)aA z8Ans?IP~IXN3H6rDhNd2(AwgYRXU?3DmoTG;#D~Eh2At3z)3o0T!JeJ!M#}3Y7!5T zZgOddC|7q@}I+Kme$|H>t;fu+&rMn9lsQ8cV7iXFq_v(^Ljc_e?7@{qt(^Fh0Quvxw zyBWO*#xhnx3Lyf%T#|<1%gG0f_M~#X!I&yJu;hykn7Ro&rfbkw3DEc zxQVO=LxHfNt8Q!y`Im1~sPZ)x9z+*2WzD6b^8^;CZZ0ELE8pBm8G3|3&K_c^4t8Cx ziih;)Rbypg=ibEZJf<%CLWkwi$ymFGEsbw`NK)Asf&d+nmK=>zXRsgat`JFfFfx?#;|Q8={zvuZHaLTt!$zOpyWM9t4AiIJH?5hG~X}m z6}JsJ$$?dna~4FR1l2{uN_Y8WE|$ROe`5>c%LT;hxh$n?v}K0?E?X3bwxYz~z!X)x zl3831!Ti2tw&|3hkEozA2O-(0RVEg*%Hr#J?6Lq;qX^7S8Foq{)K5}k{ZA}lUEw6a zI)&D0v)3i3U?oUBrsfic(X*Qi?5-g7kRBb#%P22RAp}xa+?xJvZJnbYYZ%_JJp?m+n#P<>xjaQ@X;R)mgpd~IixiwRWrisk+xU3t z;Q8}xx?m;LOJ~!_ezEByPR~wsVsa&>JCm`A>-tJ+XQ8z=E(PR(N9G-509Kw&Y`mL- z>fK)7)jZwaqeFh{EX9$ao+y=q2ICmoSyDV1$BNA<<-q9@0F`wGzjScL`r-`GN?g%8X#UF3EKyc^>ys{p_9RHbkO;dZ9>s*I>>5Ov742Jz7b5Zq`2>{1 zY#}br-+8%ZHtHZ0s3{-|C!NtdQYk6`^qF~it#TUV=Vg1nWy)kW{W~fb0Y8_$OMA=VvLbBP#TXPl3$X$a(9LKcN0+DG&%0e7 zAXyg}OtG#dcCO^us35=T-7SQG6ETtLPIfNrW`NmtEr?=V6?&+=U(IER3zHWX47$=k z3f)2p*x~l^ImFybPiDcls=>g49F#+-Q{1(cKndBG=1FkiF$g&~=moPBeaQA01)Jjf zDpu)DvE$ic`P0IsmS*Cnsb}r zvk{O@dH(Z>9Y$SU@X)Q@!l*$tXPV)tCY_e2D(o?Sn)Y2ZVe@+2yMnxv2Q$XglVZWY{i*Z4sW?! zbs5_!XrjV5R{$N7-&}UF(_BgNkx2>GNh$W8J?Zj~fV{tyD__&;k{*<)aWobzKcbfX zrbNN66hR>!L|>Qu8!n3ACyJWq|7EvK+-$_MO7qcvIb*?CNB!?6~ zI(f%}Pe&k*)ud<%e)~|mErar^L>u6I+Q3-x3P@H;q#KH=(hiU_Y<&W*=loBod~qsr z5HS4qX{m`mT?dbg6nO!UFT6>?Oo9ZigkfD~);%s4RSLMur9)3KRgZYE$SejVr%@4M zX6)*OR0S;lujbsJbMms9u<9i1gf1~9UL*S~%Ruk`)tm+A2V;j4&d(~D&l3S^1$rT0 z(5U;yXg@PIXqBD$!)HZTiSUSjSs^I@cXhN#$+iDwjS}(yt`zTH{$-7z^i_xNa?sbL z{$=M(hAhT?^MUvGivB7GO`4fgdGCeh%5qnl_-pa-!b zS||vF+y~MEW2u#I7_l!CNvfT?T+jp*s8=#)DTsw`W>eE>%A^<56=I_-(bcNPR)!4{ zTh&s}=fny`vjrwLwa#^BXHrSYs#8f-p0wAyh-v$T(6I9tJ(wA>o z=qr0kBaM_|=n9GLNJvq_b7+^59v1Wp3l2g5TTjsZ(<2IspOKw{?DQxXYNSumF>@ra zJ}N#IvSrjEfz$&vPTEhBMF2~bjf3n$viP7N;WWaqbJro45i_P_eZLU2uO`?*h{Ay} zoPv*fIIVbLLuy6g{1qSz7eZB|fYUhUv%R1)w ze_5i)otT7g89|Su$WnG2T>#2Hm<9b1zTbLuF~~dtsyyqUR4d~qDuY3Bra>h_OA>G62ynwAQl>aOig#kWq`)E0*GO|bu6 zl0}+g6+krxwpu9&TtUE10v>XjrJ>21WiVD+yC7r2=W49(Fq-Zo*vXBRgZ4Pz?=yA!qvV0*}RXQ2uuLQsGhras#;;NNQ zu+#CvQuvlko)R?;QK(5ik)na5B}WausHJ-H(PEBaW+ql+99r@N$~Dv3#4%Q5z)t9s zYWR+u>SJm|2YZ|a-xG6&Va|j=5R9!ZqfKJZ{h;F`khF-0f4GAnjEY7&&%`chx*T96 z^0OjemNft|osgc2&!(iMf{#l6WcHT{X!#c;bKqT`AMU%YLr^I``iEEG6zr5+t#V!q zOSI}cMNzc2@^+*proa%4O5U`5OqcpQqUCPxCWzLTGkd1@iF!O}7k9JKoE zxkljqdI4j-09uwGRs^Bq30V|-bC-lD+f;nt!fIy9p3{*EWkLRgrq6GU>pAlJF~tsF zjq@-;O4k`7u?{LYTR4sS@H&!Iciav>BJ2mI&uI9J5O8_()`tIDcqCh9i}H zy3$iYlHyEr%SZ_!r3T+tv$Njg+6&jE>~oR|oaNYV$JMOF5J+E1qMwY%_`vwVpuQnO z#$%?;W!RHKi9=cFT9a5B1^@aFQ=syI4gF8L1w*qXpt($oqZ{?OXxdm&v1~#ELGr9B z*Hr;xodtrjG6lhfN;JI4RO?QKdC;Uso3hlAZ_DL?Qu)%TiX@TbyOw}27(h)2TaxfT zg#|UrysA)rCZIvd2~=6_5n}Hy0xv6U^dU!Dn`p>RIouO&D)!QYEg8LXlO{mXzXFtZ zrh!8|7`iXF;=pt_a7>ZRB$dnPlN=#Y$*c*IW z5-Ts1hL!euzhuKj*tBvsC9Q_Ic`%A?de${50H5u4Ri3RBZDq;oi6yItT&3zfqhaoI z965W2BSG?|%Nd4c6Qg)<+0pZ}i~JBKK$uz&#nf6`W^KeWSRUFy5)LoS4m;flvg7NH z!!tkjEfL&&K^U`Bl98%}$6<#N52im%AWJ_WkEPQTjRP-%m~*uNmH<(T8C^J5ao!e= zRou3PV-<&O;aG~HY6COBaBSs#1QdS*Ub{B9&@GSbRg9oU`{7RD;>d!()5dzFIu zi6PeYuRe_Dqm;NIjGwv=Hp8T);J5s-P?;mdO01C116y!a@VKY06bpkZ9Y{9c)?jyx ziFNC;J01rn?qzOXB4fy^Hbr37C5lED=BThH>!pXSAbCpnCRG&=^D!zeIta~Xw=1@ElnB6gN^f5rj?J!HJoP)HY1-JGeA zGUHN**QKVXkfuTRWAJlGe2ONG%{lq9Rd3dqmMl+P!7pS>6UyMM9V`Jk!N3F1FB~-g zC!?eBUXoT=;??Za(9)*0kQ&Yep+8^@Vyu9e48XF+*v6EM`Dov_pVcDHhhyYe-qd(! zT%w)aek}C`5BhS5^965`!+U+u>PqylT%INl+(6Nx@%0ROC?xgRKh?loK*{#RIBPxm z+aPjZ)SpQpm4ey9HB~Qc9&b`r9?!r(E;IK z3U;5I1AftpKpnB<#Nx`K! zJ_TtllU3H7g{S0Zx&@bmC+PDmN+1RMR0}DQL1(gxIT*lLD4l85jVEP;uR*23BKVLI z+Um()Tp=$m?K}C?77#xEPdKypwNgNF;TDDipGs1h7|7DRMZ=fu_aLhy!3rSdb!2A{ zeJECFB)Q>qWy7)P!InQ0lcTuzkmcOo233i5Lg@A zQ#7Aa*g{mktnW)(u+ZQu1;siZ;KNU=trGvfVAceCz$<&ovIV0NOV+yLIG4U5il8}| zm-rrBcJqcUT6yJfo>=kEvE($S52cd~@VF7_n!NH~YGmy0Q#%B6~u zftu(iW;z9B!E$SvC0Wd{3??ZRzNe@3!Hpmi>GKKx*Qspkl?9bnL>;qPAV?MgC}1|e zC|NlxUlId@`U-6Me-KOZ!+cVMNxudcb~BAl$wPw*i zQu${v{Qo>i6#jt_jF{$woSMEkF!Gkt_bL?)lU(KQ3%^aohbE&n8 zU>xhbBy-Sx>bfsO9Y^R$KrD8Q{2pKSYQ#!&<5OxGck$s^-C(oymA=BGvV&1fswz(l z)rXiQs{)s+C0POO$7c!@+@D2IFdpf93qUG_Do9X*vnJRLw(t2@u)YzDRR$aI&*`!G zfK;KCm9J`JtD1fLUb@STt%_-OXE;;nrnS(6RuD-RKWPQ@J;7wCA<1RfUv@0yUtr=g z1q1lr;}(Iolw~$|5m?38F9IF&kA)R$zlg$>{;{xP?iW#*?0t!wl4n@{Y_F{6%inHP z-t;No+*c`$szp@76y$gQV9j_0sQM&7ebkHet$?Lce^bEhXN;=#Qd7{P(MG062h6!k zr_Cz+dF6{jbsh!{?M?Po33@3wTLMaFM~dHzPL&*g?5nu)yNG`}DVT>s zj*=u-<;OcQl47ak*jz|z0Hi4WXbn$sFhHI$47!S9w@chw9RXhmR@Oza2(Yf{!cICf zBrs(FtC=PfU5{5AD<0WaVahlm)uxJKsVMFmNPnNZ2EQfkRORRkuy4^?fYVRKhl)72 ztc2=FtL|SIx55LC;Kvh^&PNwAehStQjTNu(>9tni_lK45hY|t9$T5(K;3f4a<^Q7XZJ66gt}Idg6s#x0A-(B#696euJG0&ZL4brs5@>)FCBJxq zkkxdzV$`BXqU_$?dHdV2?_I%uByZ5i+>>mKJS>%0BX9uD zRUi(sUe1$Aac3u;3N#_`R;$)gr)gAH@Cl*ZKV=Ki)-2j&bJZ|qciK^XXEhu+R&m*BZ4CxmmLp5bsbyGl%5a1(mD z2f8UrGxgUV`gxq97e7kff z9>!O7^E`5y0tF(g@F@mwWZWaFN6D*eOnSJ25eG0Flh9tq9raGc5zw818c7L-bP^#`F)c{-WYVDR-3Z znxuPgP|-XRV6Ki3RSetOt`0q3nAY8Tq~(LK2tYD%xL?MgI9&A9vY0!~yJC+zZk{lc z9wEsi3i8trfBGNiw?9}K9vANW`k$a00fUe~++BSA`A;{WjbpJkcy&RUkJxNX6lc(2 zqT~zuk4Q&y@HHlunsEJ&!x+V8kS#wV8zaEXX<1 z-E*Ujbia#hPdMwSIG55q$fLxQwS z|6LeYkH18uHG&56&|mRHI9pdw9R0&j95+uK|HDt*Z=SgS4?ppsdE&u8{6rLVsMhg0 zo=9-;jd~IJPAMy0tvbQku9A*U9ZG{;2 zGwOoBu|uc8SMceXzl5Qph^S@YLH2{`8V+DKmhz5|1-p=Fg`Ij}9G)Z>o)yrOa_Ru) z)9)lsR4w3L$Vk?=L7I3VNmO@ys6d)G?tFe|Jsvxr>7ficaqBK>yTFCC#7W`0gLd@x zH*Q9=l++_(%i&9LT9*02w z)nE88ak5!gm}tald`dJD*Pb?n>?uPzJZVT=rXvLJW88s|yVVM=6NBO|@HI5(awLhU z3y#@-6#bcqif{7VzkZhs7op;XM#oYE>!ylx>NQ;jTeU|rU$_Cdc0Q6!CxOuljD)@E z8VMS4AIP4$RpZbhHhC8}-P7ARr9hQI|D2NDt+Y!cAE3EbJ;S8=s8@5xpu9TaxYz80 zRxb5vxaITf<`o@eK8*}ecYqXILe*!0x7z#Sp=?rqN92(m%kH8)dHc zayv|{H5^@^*ILivwOCl-os)|zX#LkS2+2q$^YgoJe*VB5@kKKm2WSnMBnd;Xmt@!V zusm6b`DTo-JcQoo{X%8aBLI|l4~{h^7qIUB@yRsdz5aM(x^v0s;qQhoM|&?vhc6Ef z_FfzgN6_`WpsFX`57P!{EJA?5Ip}rXpzVZ-DHT`DR;RLwwkM|G0N}~{GdZ6+j;s4L zOTr@^xuBz+?uR01NLeKcgTM`A0nevbvupe6SXi$cQgrKq(nIR3_N3(~w``0#&S5-- z<7Oee=2m^P1R~1~@2PD3LcNeKfc-r#hsP;UCk>E5bLZU{!go4hHYS-Wr!V1SF za}gWrT^e5OI|~=rZ)rMpLxMl0dM_Ve_h_)A83wRLNEGxa@TQoYJ0|n}t>U6$h!6(T zI06iR!NG#VRV6do_o#cwMEb?`sJR|D*Zb6>`MZh5sO#ikk!n+S)}Mp3H#&HpA!0^e zPWaEPv!2(@F9d>Fh?q8|z=6vMZJe+1ailwiw262(-h5xE8%1C*En`CsfXS*TB#5c{ zaf~C!sMq@n@B9-KiuJ=Iy0Nj~9J)n7Fs^t1V)fGh`&SjZ!1Mf3GicCYn<*&Yd zak@5|i46c#0#m1<>2#?@lGbos@=b%x5rGI)T}d_PDbK_~5fk)hM3WYkOO4|V$GrPi zWXA}706?vrKivrJdTwaPg$vKC7FYVZ4fM|E$3U~tHY)qr)dnRNnl|{sV2*^n(zEK| zLEkGHO|U|ch0<1cWYOM!VRLK)QsW?tqroIVQfL;QXSV&9clV$el`3gRtHH*^rYW=g;$5NZtx3s;wg$Kb@XU6{_cLrq?#f#`2 zyF9MCotAWZ4M(>1nI)aJ-*z@59l*u;LKy+zIm%B3dd4yeMec%uZl?}Ut^|%Flo^z4 zeJ-M6NRsWeE-%(^^re*~M*8dA@imK~G>hHo*3$9x5U!awJT&q-5}fB71lRRLWH*%f z61)wpZ*?uAa4l9`G`IoJ`>adwU(lo?zBMc1^P`Au$;F^3*Bq6VSn!=C0=TDcV1hU1 z3>=T33?gj=&06n+<-l=f5#8Y#r#=4y>FjepZ#jjq0=GqzTFYL&F1iiT5shOtK$co7 ztMFjit+h3f1P+`ro?F@=U=mSl=&R^vu`${mR{}CROR{c`GkC=%c|2PfcV(*ufALs7 zB0rq4zmfBsFquSb~>;{$x=w1x^s7i-6QW!aAg5bO9^a^b7YO_F2 zEzy5a@i8dCt5oMN5 zmE}f6fG$wvWJt5Mj0$CgHr}CK+U%%pkJ+Kw!n=IN(jQD;;efkhH8&WNasggd%7Bhk ztjrXtrap#A(llhA#F-eoNh^6bAa9q<3FyX^coh7Yem$}?ALQ;LM z^|E35&O$JP7-y(@s=; z8RQCFc@)UAtK=ZwN0!>47v6%S)6k;MgP2_t@*lv(b!eJRa;>WuG&rWEitS)g*?aqJ8wq3V$Z3&9R~h}41V#9x)1(-kx^D&bsEtC7Ff=+ns35g6}E zZtL<54}KqKn|t*onvSVP-R0OX^c}#pfp|0u>rPYLwasSmtLEQ{_+j@Tl~00Np3A)afRh8 z#s%$5-nZ$lW}KZ^fjK`X^Rd8dM(uGd*yE(X9KfS7Uo3Z^i?&M?MddM})kks)Jk)Ar z^2 z!F)trI*(WgH!uZYX~_V%Qq+IKqyMR>XAFGhacnL;(Gc^ zy3|p!bKm;oRtA9`L-Yc!zP83H-xtjNLuOUGK}Q6u#ph7=7r!SRx=<(Nl~gPiigkc0 z!diD}8{4iYF1#p&W&2!siQLE;GF{GIKNsCo_~BG+vi;Pe@T6!Tz(Zdl*L`qDhO~3l z12+swf)HEd;#8%e#H4Ni>?r^WKZ{MPASS0o5Xj_9&5IwT)xN&6ufaJ$b!)sKJIPIP z05@AW{`2f%KX&#BN3(X)h%Phtj6)i{A;%3F6LkN$5yu^}XyrZQ)>CY_BO*9DVmtpR z*@O7mWatn|`g^q$MR+qza3!nK@NkaO&2=Yai5|obk4qP>2zhkCG~r5ooHADc=NkW- zooKoeMyF4p%@3hJC%zi`34cLu(HBW2-=M_dcHhG&yO=TexmP2Afw*@K5SI#olTD`x z#z$#tpkt{So4yeh(uu@h{!}v%AcD|zyUr`-MQ?h1Zh~4CFDMev>M{r>CeQqBeVhsp zCi^t2{35Z^)$aN+{Z*U$Uu<);&ICj!JY{Xyi4?e4I=0{vO**~zotaf|e_p${NP|LM zS!R{Za)?OtU97TweV*jx>T-EK0Y>RI0Vxo1pMYuW&-BpKD~w6PJ-fbIjSDc!j|W=B zvXt&YZJ)MD*wb0zy+L&)U^m=H9&`l;bx>bw1aTd(^*m6WeyT_Gh}sP>8~E4KPC#g& zf3NyXmT+^wU+7Nk8IAm2+z>FiIi>ksKgu2*n@;LAo!d^U9;^?P!V6WYbis*$IRIkX z|C)sh+SG^VRfIPA1Vi)c((17dm79Ss;2+1cOb>ZmBOV4?5PfsVTLMy(1MwIbU!0f) zIF+SUs$pJah2V$arsHnO4QthGYoBc5!p5i|$o1pE$_ z@qBCP{X~fo82VzsPf1sLozEBvKFcuo+^QKzX}&em??Vb%z{&t%LN<^iWck`KUqc_V zT`Ui}SQd?vxZ(MJy7~#}@I6O~R6}gsmaV3|aHqB2#B!-m6NMrRKn_#Jn+qO;`Z7b7 z-vsJd<3~YS?$jd*J4Z-g_DWo|XGu|Hk~oU~E|1G94%I<*#@i$3g)Fw)Pb|>><-`BH z*%tLrt~z^DdbSad0(WmWAK(4;W?O_gu5aGod_WV>S!WFDGDjy6TcBbn#h#viRH-(Ff8Q0Y#2F+C6e z&gUGxT_NlE1JA;sA}8kqFZ*AGYu&D)_JIgMVS;7L9=hWTt{_y+j-T2Mm_&Bl>v^`# z6Zz#+dU+l+kLaYUV&&LVcL^BrOtMl|jGp`*e`(D-t?6_F?;#@9eCc8I=(#-eP%G0Jyq6ff_|TjS47D`y_0yHeQnjs|NBcteocKDdC= z=nx9R++AQ=(8<;5B-zz@;Y&d4mnzaGope>NNFU_U!T?>9_wD+hP5MBBOeAYV$gpo^ zk!SBX_?x25e1Rd|CQ;rMjhr{oCED!-;SwhT9~y2?46MT!iz<0G6^Ip^yW79C@p9eX ziar&t0NOq>e*7^?j@+059Lt%CN^U*{jqkAi;sTT9#k!yH_~X=_FbM~JY;wvw7JegX zhF4Fgf-gmM4%Y&-2BiJiZ8rx9{6nQ-xlc{%p}@1eLUkZME%XXHKj;~DyUbi#IJF^> zzCNmI(#i){k`EMCju+~!XXMJ%G(#~3X8XrYtJkThw11CEQG1U7ATYxaOcMAsFnHi8 z0ce!8n?8+~M-djnKDmu41-7jF3=YlpJb_|(B@+~*OAiOLEcGM~xiJ}-)Fsd*6e>(g z2Snl7=>kpU%g|WjR`DQqV!+Gd>4Chm=on4|gQwUuafvD| z3ZbIB9#*;0+|SDdFEeRT=E41u0~bmF>=#r+RM5olq=&9ruw%N@eDTx%>>d+|Ynvxm z&&lCjyPp$DY-?GNZ&jN9sFx|YGqPDYzRs(e!dUQ19X;GA=-68s zxCqO+&ru1dqZih7$jnAjw+U=LRYuT7%hNZ$8~^Zohthe}e@b>kQQyE5~{2Yw&c!4L)_MxVh*?PFbuzM^&nBp3x+8 z*o9jUgj$HU>dCubR6Xit(2IV3gO(}^Qn)ioK!=m1-XXf#xN7sN0c6R$27kHx+q*MQIdN_+ zyFh>9#7^EsY(olvZ8IiXpL6l4)7XyW)KfDsfyKk$$1Uk#?5896J?dBrDGTZF+?{6Q z$qUpUR<(;`Bs-^{=8PeK7tGueovy? zztD51@}LkD6J{hNX;+|=3~nBouCesKS9I5sNXX=}i1ii!@9cls?zj@@#exZXF;CTn z)g&3*p;l?TY!V3GA!)>);l*;cX8fjs6m$Lo2uPjqlI8jN^1^oO9zmq)vc+ryP$}#5 zx_#wT)A9q_4SRjvmGq_Qn}O$y>UR2z!UJ^nW(6bec<<2WWz_kleJs6q3{MUr1Xa4u zqFEb41R|a$7y*bLifoYA7wiz{K+TKg)kbh&M{PidFz>oTmy8^K47Cf~0qF2hLsye0 zgaA^p?56WSxF@OEfix7H6#?^jk=R&Y<+4W~VEB=^Jv3epSfv@ex8Ok@R|h9~>K|B_ zCK6?H@dCYEB>@)G5j?QOIhkq18jM4u>zh{|+5iwCPo9LL3W^r*r4AGsP|=OzQkDU{ z;wQtn<%{PLXmrhNqeX}WEI!S8wJc;XunjP^!@s4*z*Uz9gI>bfXL~d?b~j%Vb?(ec z)%2LGX>oCoFJt~@jU^uc!+qMB{s9KtCM@Hm1UQxhirBHlS~t zfvPboQ%cErGNc4FbMvv(N3gI^46&r{Y_J&d^}dPjbO>32B_7tQXKqLCN?W9(XO8rb z);-y9P7LCnzS;SPluWL~NU2Zn6dzkM2c?~~)2Um`j}c*-%8vmXP}`ujbz|t+YJKI| zprn7u@}g+R@G%T8y$;-e&7BhL-h$^PT>*5v$AC$RAqSLQ`T*nqkUh;X|OH&}9gLhSn)A zLg%#OR-h3WjnnBVC z>z8UMffYUEaje`fjt3RP8Q3X+UA_U6hJR>w(({e65NnCg1CE2gIzOUJB-DxW2;D@4 zdBnBdPqjs0CbA{#k>>_59%VFovV09>qA7rZpRHemdFQmd&DvZEjUbfckPayC5gRu; z3)5q$%EtIafP~G@(2~mWfWtutmj+GPI6TUn1Dw0b8`t!R!oleixfLXG3`lt?=CCcH z2ZmVrOgT}07{6e)EQ(G#uB!VSG+`G0>+Q#PcOO39*k&pu3V5C~F447iy6n^gq7~bi zlKdcQI$=8@0FUlktp-nvYbb70hf@}(rmnq;D`9-G5hQ6!pn$kG!=K`oCVXAY1Riq; zz5pwyO(qpgEqV~DvK5t12#SzOURmJ*xLr)H&MvV_Y!{YwW(gRzOlntL&U#>jPEbG}WdA2?GrD++J#mk8OvGAwPp!Db7? zHLY6s?-2jTXNp$}&H;%GWb+d2vzKRsq%C6~mgTZhHi)A@fHWhniqkqM@p&NOyhp-+ zF`Ye)AM(S`7iO{uqd=!UYzmzYmbN$Wck&n7lZ^EU{B`F&Io9?Zy!vvi?HQ0{k$E7X z$=5pmJW@jOURqBOrWBc4#p%Yx80e9mA~FVDm=i21a)5v%t*#uW2wy-dL|Q3(D@)tp zTtFCew+1&j4IH;%EP}~7zD(n7%M*S8{s35Z;1R*;F(R1xKJXLM#FexPeD~@#2o&@x zers5_DjLI;zIUA7As`o$b!d*N6ntqyzyfB@1EMeqIBd$AmR$xb1syTR0J*sHFs49y z?dO_aeAs$!3C<&s%nT^xss9xOrr!WS8|Ez`#5$+Bdz`HRz|iFg;3Y+!hFlTX+DEOR z33;Pl-?G%F?>97ma!F1jkQGl_*9EZJ2Q6FUBWMF^1URo`I>RO`5V)Aa+NTK!m;njY zO-6K0D9GRzF;41?gt(IUbii!jAko6kAkxE{@M; zlKeV-smsVGpd5LEjBwiT0{ifd2>cpeo?<$u%QIv$IbF=*jWydW&rr}3c;n$A*d$Df z(U<&^k}EIvcgKjtk`fwqT8U?QQ6b(7xSY08{DG9MPpcc?4%##YD_+{|nyxh5jjiKk zY^9W=9i%z|>H3ff#xRd-XT?ox_qv=ePL=iO@!>npRq32%o*zrG=%?6RPR9M>8D@{T z?))HAWMQRH=VjjNRLJs+TB%P{;aX8y$+E6m<+#u)iw;reXBKhfmJUvW!IW5!j0Tw@ z)M*^rc_SZf_dzzw_gPU-o&>I=rPJvIQKofH{WjZ;yzUWE_jEERO6R`}Kl55(&%ov& zS8!&SRqdv})Q54?b>sG9!&!W-+8zS$pOz_m?wbLEQDCz#3h$uw#UuP$g=z3?Eno>;~qoHKK4JBM-S@ zG!oDN3_P50w%W)s6>6{JLZM04xrB6(b$)h1^1UTN7P)}wI2iz_gsTYeQlHcI>G1+F@*=EquL~}j#qAt^b*ls*=J;qbAV#*J9P=5@Nc(&UltLmz z(sXXFf3yT*x!|r4*w#hsqC-=_=JCnO1&ZSU-)oqZ@BOLJ@)nKD0CzRR*Vo_JbZSBQ@+mwZ zfa*-MYQOa`;jX55QaYXY_-Kjda`8ONA~dxSnvh)McL%3y`~ zHw(Okm`s6!H{lOj`bMF;24Xqz(%m+IgQLVgP~d zg9PRihXa!ILc0dp0NOfi5R}O1q5rh#R5wb$5DP5V7r}+#uOMz_W z=M&*=`+5WfUz~uP3Bv$6q1Ae)qT#FSa~wi-%I@yLiIF3h!nc~3`k)yFhC@7JC?AWw z@KO92;#cKxQfznIf;+&KoNr&Z79}Y( zO5PFKCLqV*-@PvLo!7#Xm{I&8wqsoe_x2h!dVfkSC?|jt-(^Q>0zh)H(crfd%=iP17bc1d6aYL%9?fClN%vrNzs&*3PN})xe#@z-kww+cCmX z1!F-`(gR2?P`F>~iJY%74elM^;GdY2meMehVdg%ItC(Qc^O92>u8eA-`WEmw&a=oq ziXdS3nId;U`)bpM9k}YvQwXO(+GPN+J?7s6EA|g?h6YCiss?aFMNwAcjiyBDcrx=E zVF)obu5uD2hb`i#>3OJ4hh&wgA$Rc!V&^zZ4VZ=FX} zoSSyMVBP*hNP=pAdq{PSCq4Uyn6P;z7zAcWkJsi)d$ky8#utu9vdb}hbuxsVaq}$I z)$DSvwNTzGT6pb1$5jk%aA@&b`KpH(pr2NsO|L{T5vk@Se#I! z|JykrxEg7QmuIMWhZ1pxkBn<0tiV&#|HQJ(r#t{wxm#h`bEz5Jsz=<#DMIW7EKkm^ z84+7wYtg_KmJymy%L|5UB34uXFGp~X1-fo*;-K^( zahg$N)DV_J&SpKB^NEi1X&yDTIu~@MD?KU8EU-sXBJcy!5|t`@z~a?xjRXRs#?q*m zmz&roQfIrQ9K)lTLRSa5!6R0kQKnaF}Vk zxgh^N1GFZ=jEtc{hP9q|c=GkS#}*J@U>Fq|zLA-SoKG5as$f5kAy(i3W1pw|jbv3o zItV0X{`sDs%ZQKXQbAXP*I16oycgI;&^%`*ToFdWy_VML^^vq)eqm&}@O~6lHHFpK zIDNm+8v6bav+qk14RaaICtK!|7RTN%S+rdSmhSZm>3$$+bf;Hb7kP$br(U>~FJ~Y& zP7QQ@`WBijX2m&OoSce5sah~K(oenum}q+YGqc2qX<@w)#OD0i| z{`_1k?a{Zq{QD<1-1`;x41dKvzXAY;zXAe=zXAk?zXAq^zXAw`zXA$|1sIS)3$|ZO zRv`IcZMs+mHbE9F`$>q&Rp0FJs(*h6@!^{%gRQ`>8f4?xJkex_hD z2RBh`d=tL~t`KIqiEk+$+1oFqC+-mLyr{#43K-&0(BzjU5jU#b(ST2bMte1zkv`ZD z2qR#ON@^E0##y7P%h$pAuxzC&rrhbXhr1V}XMu|=Bc|ZprQ8D&-|bwE7%TPq6qu;R zwWN_g{NwGX9}!1@6jbCrK$yUvCg*I0$T>ZGHu(MT z2hds3zz}Q}xJA5fQ86R@c(lplAb#_5HkQ_3svyP>wW<^Mgc5sZ6%TbE?Kk)g1@>7a zn_G13erklUJNP%Hz%R`OWw-C%@;v)rYu)o01of4yWw+NKA)a%GPdRn+WtWx-f;rs? zoeA}wlsyFN1QrL{Lp&PM0Lk;#{NAwm)?OQLkm=>X7BliFS*8ub#^!ADS|KUh6Eo7Q zkv6K$`37Q@>Cq+OvjJLk?jsZ&7ItKtSk(6@cd$u^2PATVgD-J?kbcQ`lV0<57?@V! zqI8GKJz7j1aoImdFWdl1HIHHjn7nX!^pyx0++FP>6*w*9=3PTV*T@Wa4SsPgqGYhA@s!ua3^%kDn$+a4m-l;m@k}awe&K5Ax z2#cfs0|@DCJ#op1I&ISflr}dLiVAcM$OM2Blbhbd20VdJ9aM>|q8I*iep#>Rk)q7dVy&8)fF_XF7YEKzNeMSVvCG!w8d>>xB@epARNgn zfAnY+*MbQn)lVe0R7LnT)caaT;tSw78r}o$oP>9}_3@RGFe+LGz?xd5cZk6)HmV6B zU3*8Dce<6O@SdpI0U+BxgRM&kw7O;D*m1l7XI^Id0>!9usQ+GbHfuPatty6GObapPC+SpdOKM*S#Ilk zxjyy;!EF-G=ng9ZEiAN@lTj^aS6Gdr+cy+2ysNlg+Xd=3J>QdaD%8nL_Zu#LYjg2~ z4(%*-RM1JHpP?iU`f#xjGe`s3ChG7pCnyW?;h3u%tRnHZ4zU!epvC686t5}JLYC8S$vF^n;h!q@|9H=(HA-`<6cyq4j71%Lc)?P3!zpd4 zO_zVTrU|kFp_73XvXOEmupyitl5;Qdd_{`js&m0}SNh-e4$yn*p4Pqsb-E^>)zRa! zAfAhvN1&LH;&TWqj8%TRrmHKM0dP$1^x%~|uMN)J9-T~9gSIgwQH#KADkr>#Q)X`m z3(BZg#~265!xE#Guo+`pQ(M-01qj@)Al1ehjg$UoSO6mIZa{hJ5BP*Pcku(Zlo7b|7OKsI@F!d8>?V&@;lBsTZl_ zPQ4Tu;PQMtI@|l@7vR~V+6aPmP$`6B_Dc(NTOUs#c+YY!78ThI+2Fr}Q{=NQ;46;Nr9%`nEM9Tl?|wG;ulJ0Gu>{c}>Amt52z{rqJmv>) zh$9T@3Xv=n770Q(Hn*=3S2F#&|H`T zg+r(ullj>xlxa^?ij2@usuQD2fMjS5ObucYE~?6(9$bw5!Wh%%bX5**S6~f(Jn=IB z!XfBX5Xm|2?J)+yU_g|STu7&cMry%Gl_xO&6Gl-32$G(+hfnJ3781aEN@+lD7(aqR zF540bAoltC`ODqe&8Hvle%g*N8UFs~o6ld8aj>vSWn)1>kKjAd30I1ffH*4kYW-X8 zVBf;{3VuNvmc%`IfCLMUfDaNfRKYqRLki`JzXS2UI+|}p-OC1jU%@+cw==O7-X-~% zxFT4gf{A)s{H6ylz3)e+Re*09WIF?I1eXxaq6ybUkZ#6bJZi!kvo~a|i&MVX=*&xD zikylj!WOP(BWDvS1173FT)GPnVHy|uYH|13`!dD6m73DBTYHmq7D^^83}+6)oUv2F zs+2ZFX&hu|Q^U*21|dlUpnUjENj;$-fts3%*B#Ap5 zZbo!tFWq6u^Hz7ABsY8MY;qcNfG3S~kvYnL6Q=;BsLRn&Hb~p>a)=RU&~ASxB|=L+ zhpE9UM5bdn3n8>;Gq`t*hKOc}djRzY=U9B(Lsj+c1~GQ71nxvl4s2727%{s}w`Ze3 zWqWv7UO?>KzCMpM6lkR1rCJ+)d$B~xN2wu^5Vt7$ST*Uxq?+4Y)8bK3W`-dC?swlE ze?|qE&tJZ)F|@UQxB2}3yDxV?k4GQLdj9n8;}+Rnzx=fQ{O;#JfBp3SckdlF@zYq% z^IjeYl3}tE+i$PrX^b;C^Vv0?Q6DFRWbg755`L;h@C$UYjDEqNoJ#{C#$kRi#ZGW} za+$t5Vg3>9r*U;EABfJ$Va?S@jRV zo&2_(srR88qz48Ute`9wOV&$sOmiA3VX5lZ;%~eHIYfcQ5v^e`R#qy5o_^gZ{@Cf%xgfZ>e5rO zSKuBz_-0=7bt}k_5CNH5@IQ^q`1JUd-^n-(9PBP4Ay~QBAB@{+kbT>&P2BChH3?oppmWxSH>7;Ew+6Mc3zk`Um7B{5O^`iDEKc3|a>YPXLG?iA{ zmD>5kk?+$}egMR@a`W|E<`zB(zcn>3-SYAj0)(>RWo$B;Xm-J5Fvx{!40yH`+z5od zU?c+j7uP`VnvSy?P|MvT^Fb|z0Vd|{eg<@Y_df#z9(o2!Bi#QC47f+!#6%g_d2@aa zBMy>0Z(lFZE+@z&Yq{lT{q5Xna@hMj(F?(_=_UIPOODkuk#9cMKAiO7nMnaUUt+n_ z;Oj(cd;3qX@da-6WY9s4p^FY3rZ^(zF$+L$eZeUf?!(w)zTghdrWaz0#`)^o;lY|K zU=IA#r|+K)-Vgrip9WW!?8hukFvpH6o<$go@+GsC3dQ)Oq4IRsbr&GW*6ZMTvYk%4 zuL!YIey_&8Ih=U4AVqeuDNHt8irkcQy@9hp*}8j(P5*!-0iikpgKeB<MamyU_P`BSh*xw9 z+2}4$PB#rJP%jf9a5vlFW1TV$K|HYz%tz%=N$W?D58Bk952`ESUoqe*hntj)I!*Wo zck})9O@d_vIp_v{i7RN0s7%>xR!pr4()89s+K_E2t0~|NUS1d}B0yuBTelYw;TK7d zQkS+uN6Nj;JPScw>0#0VnaywlDHC|mT=8G8&4rWU! zLZ^|W=K|jRmk=!xB$zxNVJs^S3oQ8UxBI-&k%DyiySPo(0k0 zT3|$W10?0;NuyN}Oz})8E-rL3j3bqX8ZoHVmHLHbOpa&^`KUjj9;SxPRm~qb@vt6E z8EQ*Jno)MH3e4o@vcwEi(nQQZm+)-%MrVxD3lAS(Py85;KzLp1D$bbY@#+!|E??Cr zKRyCKlP5bTZWsDc1VeXSXvQy$5)`O--((EK#HL+F;N)_%c(bJi5S2y-P$?hoy);rl zwT_X2D7*XrJacVtQNfrWhLWMzt+dY7&wcvpFd|=Fn1T6ny%NELcZ>OC&&zbr1)ku7 zRDBMXfDLoq?5NxgF3bK5n3MVQkmL&G4)7(lQ@oMN+oZClo)d9b(94U8x&lQFj)8>G zKY?K}Ll<5Ifi|)_5xJVTM~z7e;0#ZY%EU^fB){@f7uP?+Aqq;i=h##z$Sn8l({G1+ z@MsWVB35UJBWzIF8>@qEJtwve^PcS5QtQ+3@(k|93rd@lpHI(vz}4lEvT)&QP1y`p zD%vE&nhcJ@Id#ZemQvMaQzj0QenRMZNDT%$;AmmanB;1eryMj3DF!@v*}<#qSe&0D zuOn>AKE(HzR%IPhXoBZXVX8JALd}d02^iWeMAfA!vjykI(ty>-qUzFMx5MGF7B{`BrHzh!#SChEl{zyMZfHqbB$a;!@B?kI0NPrrg6M(xI*wgQCsJZj&W2}0~ z1*t&`6K<2x(*U?8u%P!>1_<@yp=oAp#fVW^m{pM6uDq1Ad07mjfAbXW0I*~s)vc0uHZg%3_4osr>&PR|iAL65pH{)JOls~28iU|$`H3oW;0*mt1 zk<}grtcAam5^~h6THC9)=B3<#wG-r+aTGAMotwQLPY%_pBVCOfDX9>S%py`>OZA0d zUNB4h4y@g7y*3>J+On8S({a2q8v^*1uC`hK$LPuN4bvc;>A<|2x7btN4u?cpB9HX62J^8RRX!a0a!gwp)37EV>S%ZtZ&K92!-F24 z^7P{Jp~oQY`$Izz5&6&%GnYKDRUmGUcup=Ay<@Lr@rVl0JH{;6;3RpXNxF&K=hFM7 zD?g2Xhzkz5K;GR>N83b1-Oh?L!4UaRSZ<0c36@Q}`DaeDGTL-)IQ3v?z?AMM?PF!n zX~r6#@Tj2>xF0nRe5WrdQz_L~ zj`XMIM-QJCw+v^}(3LuNjuCBw1MT8+4fCv|K}N8mg??e>HP~=xz{RO-jbU--+Ah3J zXNYIa47Tu`g_|_=6_w?7GLhvV%by(wjH=7Y6#~DvA8+1$xjWq6ZGX7=^M_A2KX~Rl zDy)#M79mJG=(l(3Nj0lETYHhi#G1Y^R#k4bh-1@m9vrL*H8)>#3LZvmL6@ylw&zS` zSKL7a+zPo35jn(qAQ!DjwhFJC{(eej6qvF8D64YWnD=d}&drS4fJjX}ck1gy>#{kG z`dX!W6b^$U{6A?({W|d}$Zhrp!WksDW5@&B!NK^+cR$_!eDmGUaOPRTqv!V1yN}=jm|ya9pC)v z>yHJW1XTqBFsW4`cS%Tyn6{4Yt?ASUVzHpGv>K_{zNcI~zuXqu#cG%<8I9qxhbox^ zn6zIYb5fTBj2M34|EV4Y@c&S4Ext8*gRFq49&!-?*}T_9pzpz>$2|BU-vcnO)r`f; z<_E_rRo?PqUOIQ}<1V?E$gg*YxTFIGXOQK3%Cun-CVI(2$&qzg5&dAdk=vbWBq&km z6NJ&V$@2r8YS(L|NV(7Vy2zj+gbWM`CA4L#^xrxj+(7UZuyY#lQpKSI$T=(0o)(G2 zuL{mk2a@kWXNH(qIZ&I8Vzpi@6(^ew83JIuX>|qyg16w96Ww>{N85$bb=U?RpDA3@ z@&TZZ%05zEl1Q6}gXuoQ7Kdy;D=<#evYMt zTS#j^)?(7@nqXOpLv@c&UTIsmgO|pIg+2XclBQu0aR7zLutnVp%{MFsun!XiEc!cr ziG6)`!5e}k9i5y{uY6scBP|CAh>Ik=GMkmMoRk?k8L#^N6Da(0necrEgnbG)4A{ly z@;))Sg8xKuJ^uzjwGKlwE&JkPRJ+5BQo9o-FdRD$Mbl&ECV84|t|x6}yP(}8@M-AO zNAp+$ULbc8?eIE$*3U>>QhNN1-Vzd zlX;%b?DxR!^el%}hixVldwBmcOb-6r!LC|hD0YE5kQOg3YF_AWpT3NKNfvq@1?0MT zw>w4?b9S7G)G-U>?pd!VZRlbDnDkvoa8kVjTY9xx!9B-vvC;=ks=n90)Ld&*?o44{ zL+AkD@2%T~ixyvy84oQ>yMCEIJEe~yG zOm$B4rAAN;qGWPembBu9ua=onjgcN6=pZvw^Xnge_;5Qqzy0*#?)Ec%eoxS}xQEj02*2&@@=pX)P#PTyWu@8#E6tL_$I>55;ArPCHOka?x6kugeu zQZTo#kq^etrF)?fPY|hkXF5?iR8=9+jD8lkr-g+n+w$mYI8*`0c+7qJ*Zu*9`TWyk zUZrX~y7U_QK};4bhQ!PU&9xNaN zx%H>hE9kxp@7r(`;NR7^Y(^N6qx8Z`)UV7gS9Fjs ziOm{1gz|bjiaD)kvp*t#;0TZcgv0bj_c3_oI6Pr`_Qzb2ZoB={S2!_#__Tfh@qgMz zWiy{#bVv!yV8yaqu)w9ZRkGw=*XtEkBFvEy+%bdu(gjrc;%&T?@P2DuAqvfXdWBBD zxeXZwB2OIF1(2U$rIZOp=MY*wo-F+q~{60Qz94b z(H$*G+pA{@EqlU-PF?2C=eL@ro&kEQTdj#4$6NPyR7?ia8Gw59cC+V6cG)Ns2`~*y zFtpW(BB_86APB-KY5Me+XE^uy;z5X}X2+_XL62n(1Ynr2yMBzrM~Hqmr_{vAqrVD>+e{&>f;NC0t=3nq-nQz}a`3GX0}Pj1IS0uFz^$;6{D%<-wJ-sDX5i@5?v@Vvc<8g3 zq0HUbQ*Nu!ejt+=JV2hmUdA7~ zDt42jm?!+>?fZW_{_xiiUq0M^a%fQ(`1q=39VJC|qzsrYxyC^S0f-jGTUD2Ch0WB0mU_tG=2I|Tk@KH3gaCrE@S z-1G6r+s)0#oA-ABFlam{L&!61KRY2a=S4`^jzt1)O99Khn6K^CfnOb?T95hr0+!}V zQ$|D}g(pw&)*ajeak!?|*iw*;F_Q#g1^Ap~1g2N}C zxtKtCbYzH&;C9I(B4{aq#NY04;@G+mLICYK%GoYFdjv3T07$5}sIRo?SDQyR+by{r zR@>Vpqrxxel{woFU!DH3=5pLoEeJiSQ1)IU35mmXL|R#EJE|@_iH2%WQzh}zz%J=` z@)W6B9K|fAtX&W45SiAR8{1*o3*p|U?I$JIy~7TnyVCc7zVTC|9Fx+W;w&n&<_I{% z$pO)o7QO9Yh4qmM>Pdi%Wee%8WEB-XMr>+|)ZLNhz5O~yIxck2jrW+0m`)PA5`l?I zsg(_s^dUMlGO#T(49%}QR@zQ?x(Uk{x<7--eC;%h_`TNp4>Bp~cAEHX0!FVFd32>O zG^5;NIwU-mdUAec)u~%t8az0B$R-E0WfTL*v=~^uXU7bI`wrxk`&uBmmOEm2g|J%Q3{Gz z#T{0^#Sjl^DvK`LA`t274emMEKwH(NS4Z5&PKKDb%!8&n)refCua|Uc09WVoo%5G$ zwp|Mg`{k^NfJ9Cnntrg(ma?o&pj<;)xBm%&8ul7yrZtCHTx@X#e^uAD7Xfw5PIWYa zQGh=42*fKc6P9Zmfx#q-?syDvpBVFmu>RirZ3%(Mv=^>tZn8`5uiviMZb4yd#L^d_`!rR zr+bIuHmYl@0E*C8Mm>h77wMV{qfhI5@bK(nO)+>K_t{UU;3O^)7ux!FRP zmYmCLdJ^MWXxO+2Oa?HI^GA^cK{2qoF3yiGTYbvH6U`?C<8IQQSrDJo7R<@P?8L zKC9ySp8}6jNi;v*sd=0?`d( zSxbheY&S&gd2u}5@(~=RuD6$`kbzE@XUD;V&(y}0LW%DA!qJj0#7fG>+#ZkQOI1&BF{XXX}gKihP^ zaJL*DK7T&kjv;qKKs6&Apyw#yK)P<{=nFTfV$HZ~_P5B_Cl}MpL$O^%agcFrKsRreRrpAZBaY7W2 zTXYn3FdFffZLDE|^q*x73%|rN%X&60-NuUb>UL6EL-+!)#^5Q)ZD0171E>R;J%)NJ zVh^lb|grdeTH22zqVI{~IbH8C-Ew8i|qS@x>;M?dIX{C4%bS@Ni zk$Krc4vmmcAvuK9#>5uQ?p0lyOjcY@UkNVC)8FY#8xCciIVRcL3r8jFgZaJ^GvU`8 zP=@W9Cv2|TN?D-r)GGNfn%hIwtXv1&2!OGYbbNXDr;j%{{==uw{-v*dw4;5zqkSLk zgCdnd;Y+cElf&8M>LTS(p-^w>8fb$#MxFIIxnw1|%-rEimSgJKg50MCHKq{aVkZ`< z?5VbExWz%hY~pY>R_f^1J%T5balI52XHRgBVnw2$aUm$nxS2?!LXEvz|K40XxD`j1 zE${`C6>X|7Nok&8j-rS z3_Kq_1#CX=vG%4EcTbX&tKo) z4KAyZ2(Qx!{^d>2;FtSXFoU=ccPGHb3K4KaPes5rkO$<}2~G+Drf-DSM{@+EoIsO( z@(ox&N)q^~_wq8HZg%9=$p*^c+O~`~fn}@UFcv5S>G|edTBFg;7B*)BC{V(|4F*llQBq5;TJ6}?{E z5vLtt@7m6h$d63b4$-KuyG694b2oP=VTiHD5NFauLvxt1J%OlagdPljg~>*atFRYL=a23?V zsHIL*(DwQjTz%lfWUZ(;qzemi~O((ujq6j$kV z>d^3b8~x-QcN5TdkU*M8;nI$R{`4P(YJ~0!8i{16P$dVSWfr`w<%S`z3=zv9ZPWwn z3XKGG*&shxt4nGnLYs%v4uM*_yk8N5*BsJD?=Sg1(- zE;1ZPCpd@oi!#>@J|l$BOZai(|Bh1qN*~};=i-E&5p|u8T!f8k6=2sY{Mkiyz5POT zcy(`<6KfYt5@C>wN9yMQtP#wIDCQAsNJ=Ih8+lh#|R_zmOzjN z1%#Ov`C4mcT$@r!U9Z;IC3lG`S~RYnD}3t&XR4`51ce1a_*Knp=XQN)@OV>~5gyKHr`!T*!ubaJ2PmJk2wRv11i6^`*g|9G*c>)mQc><(o zPbwPxPIC|2+}-}=`rW_XT>V9!hV<$X7)d6ydCAR?9pPd)oxTB+28jXYm{bVp8;^rC z+hlYLTF8bz8<@Q@jRF+u(B=g1LVmmY!wqOxeRaD`bQ_X`{Dly zU#@cVpzJJfiYP>?)94O2AXRVL{4`j6F(qN9-lM+f^RvNkKK^Eaze1#tjAWU^-`X_C z27>bU+lA%v+Djg_uCFZRu263p1~m0$kjc2xl*o!H6aeH1)a^_>1-L;_cz%U~#$9Ih z-}yFt^)Wa@HWWH8Ju$k3C{5KXn}#y;Mx__fr<}>xd5|^oc%huu`upao#zW*@Jve)~ ztA2!?P*k5z*$j*3LIR*`Y6wDB_>9y84hK16eqdymh^x~V`vifCB;2J*#5&(SGYj6n zonTn8O1rM-nGa6eU2ikzb&XoN^-9)#`eN-#4mGB4v!Jci52HPL}e2#X^K$N&!N7-D1cqW1J=c)QN> zgR_(g6xo#)!X%2)X2fxYoKZ1}Nf+s&M$@UMnvWkCIR2=ErV9w)HA;^V7f#e~1S*sn z@_VItTSd{hpFJf}_E93Uhk&GvIJKw^SmdV&i~Gzh?mP?RERqXT)_!D#2jK<< z3YgoJV+BUpc}W-}>3OhkQs(#?QEnoLQZ7I~I3y)1S>?J%d#o=8g5g&blAW4eva>Tq zq>B`YL)Z%QPfL@bH$r)Um(snWMlpP6?$bM6)F8UXP5~-cM~6@cNFFN=!OmfNNNmjr zX|YcyX=m)xu@k;xw+gM>sS{G2p3#8QtDE#}oxupzGDlmWTd%~)^`Y4jsYpA^QTORf z3RloZNyZq^%_)tto7X_}XDovatCJSkamlMR%j$~C9$isASfM9b=r%s=X^Vf4mlwDk%!&zH=X*6xE z4Opg*D7T|jAep}I7RMydo*_e#c(!0ScflkWV(}GhUMt?oxFWJLz~cN95YL)5rJ=VR zqK{3K&}?k;GAe`GihyY*v6@^an6^v7T?ZUrbRkp`mq}(uK=gFnFagWcbrjA(o>Sjk{W@d`t0-)W*fu`Dto< z?Hh|UyPg#pnSn`%kZK(w1vGAxH_t3fLG0jodo`VH&eIn9wf4~c5{MMn>+_Cvywj~o z1lfZF>EsPHv{eJ-c@kY%9tx`4IS;-4xQ}2NfuW3Mu5NTJ-0jC2Gj;Oi70PAP!3??8 z&o?XLZyp2u_tNS*VWQ9XA%T1hO%tI4!QXRe&q}x`4sOWD?GT?Uf%kZ^j`$=+fco9+ z0-oa^8H_1_(}-?@bffu^S-=y;n-+$N-5L3~3I%L#(AELvz@ke9XKb=xm3yAlok~ld149 z?QC*&#co^k|>kY6nl)( zCg>JOn}{bVXh71-0fYEWUrT8g5%!6yB$CIDnF4UeB53N-lzkQvN!4LhN?m1#hrt)} zsJ+}Rob+`YS&>nbWuC=l*?#a+;772Y{S`K=&F$CE?{Bt8pKsp%n{+AixO1{~gtPcc z_#a-M4BVvOnT5cG=Wobf|CiI|S%l92jl6lNQmBNu4`t;0`xECaKrNYS_uf)|-F$nC z={|2W?i)6oEfRYePj1%V;KZO{og#UOFvFw57kF~B1YoyAg?@QH9-XlkD<4d%hdJlY)anzIThZ9or71i8}j z-vZtkQj^rr*7^+Tepr*xyS{^q>$AakBy!$j4xVQShu%(q{^9BSpMQ|5k$?Z&e=};u z%!^zKpO>ZB-|7~hIQWkLS`In>AP2=}43@S|J8*XM<;&1h5A}Cc!1|MBiW_KIPFvA|~z<(_XEYXH0iO%Y4aZ z0Y$Nn#di4RZaaMo)eF!KFA?pk%fyPhJOy+=cuEdA(@FcHic&_CLtDUnxeoWQKu0al zTMKy{WbHJS88|F>TsyUuu!~!r#q~~+tYFZbr>zEL^-1I z-V0ak(PLsga*L|DPmG372rNP!SkoecilHd_@9GI+BrL^?!w@NU+omnRv@A9YTmXM? zQv4`q^0^?LA=+$PZL^Ng?1CRe zmje`+SXg*`@-+6c4bnZ0fN4ZhjPnNYV?kehHD_v+dApinq4&UiX$xSA6ujW?B%q~f z(Ti^&C0G~2=Ix4E@)zxJuHBZz0J z5K5<0x9|%XrVpNXZ1Li_qC^0#r0p^dHV9@qkE;TUT#B}H7=W@aTNLYn-5y7Ht@Q=(6^Gmg3p z=?x@Mkz3^Q$ym@w06$KlUg|f!G(7>k?s?ixUd~U?W_I=`Adr?QB5EMe**Ir^JeqI3mGM)xgskymtMnaO>s89;-~_RA#;YXgfJFT!<8z4xy^wH>j=z!LE7rf&-B3 zQ_(E|vzWjcs&48e;f#Q-M<^ur!}Szk#g@m;~2(&`1Q++m~JFSiNoP3UAbw$KSCfu>_fu? z!b^xCEpG(sN4j?KPV$hhwx-U7I{*{RQudX&&_Wo$C-;dYHJd(zJ)IPS09oiM4T~pM z=OxUuIWXTu--^)}sYInrX zc5T<%(=L*@d>3p=#^0K-+97Rp~n-G;%YxI zXwaiU^}bGbss9{<*dv!J+|ff5BrgT*w`aw(Gv>a$%M(9y=~}3)04}WOJ)oyv!IFdy zcf556%eV@R4GRz0Um)l0`h3OHST)2b7Sx5S9KF|&GQ>d%gK?IDRgv-UVun>R(&xRl zI%QL=2xrCAef*24&E($hLbDElx#vB`Z4c_+$9V18ba>#Fs662QZlV~)wK<$S#Jc;( zkb-=s@f{TezMC=dAZ3el>JwE+=A|KAU!2yiUoMIM+=qW+%2K*`bd z^g68(l+Rb|lV)DUnNY7@klPk{f>9nBx^+n~bm^;G@GUqFNM(S< zJ;#)mtN}YBE3C?xU=C;Ji1lIy6R!`0^^2b-&DGccN`(nULBVQcii94wzgfq|G!Jws znVzFqnXdq!1$>3DvSvw(J?iP@sU9(?ZDc-ZM2o_iLn2W&1Bsd~!SSp|%b6o%)Du`B z9}$Y(zg3)dMlJA7&BDV9qJ#O*;Mphv6#{2?NmQLW8s<-ctPhLh#j-^?O{Z?qsxf)2 z6>YJCE!_C1Zm@4c7Ck{zb%TAb8#3}T1vzZY_khnmqii2Dzw)9|v1ndpr)K-h3V4}% z5P~pNWkNzk)c|%jJ*D@YghH=q&V^M;^H@6Lx_gJ{4TcT$b`j3n#qfk)ES9g0gBTe5ACfJ;s3^tv* zf%5J-@-^6AQBMfPLsCvjAmCSerlT>G)Agl3;p?X_AAV$UzxO}A`|LE2Is~iW-OR#h zQPHh=7%Y|XMH=UO>UO(MxA7n(4yp!G$>bx=w3W$`nv?oT%uSVRsR?$h$}iJaGo%ke*=ZR3`RR2zRpM?id2PcLQ| ziiOgNHst3=svvo5Va7HHlFTq$t{QV78-xV(z9|H~Yh)`0`0cyOt!US(1LcVSI=!AV z*<0xH3ibPchA!R_+wKoHvxxa-xrv19iR>NH|0m8jtA#-DM4Y|U*A9YL#X|fN1k|=O zxD(l45P~ooqkv#2q!^RH1|uOf(?if0WoW3gj_kX>qG{#LrcLl<55&P$gZ7FxxasN& zHeu$|TU>%0xJt9{LI~shJ`f&x+^7`K&D48kZOmGCN>IG$A22fxmkK z8Cx@UM+CAX=CfOf>F&hKm$@DUS&)FvcJW|h^m~T*JDB1LVH4Bj?hx0Spk+X2OjA)f zxKIzVMnoAa&uiT%Fmc!Wwo)SxJzR-&_KRo+T{DrKGuI^bR0^=HR$l68(Obx~l_^-6 z47GH68hPNta|SMy%mOP#__lYs1ur9!4RMI8-asY6KA?tfQnb)%?TqY0wh44B`cBmO-1ZtTt zX4lBqO7aPQ9T85tK|JjSvHS3@O<#Iwm=KkAf!}agI~tIt$Hdl*gh%%Y9m19oIcE9N zI}t4*-SGIBYQo(0@QFDMpt3toP>A~WNBJ;xJB8me1~i*neC0vmLq)CYCKa7Z8GN#= z{nAt^MT2%o7||kAlRd&WsOr)gDQK)@GI&DC#iwZ3xFA5LQ&#P%Zj-6iV5kyWEy8PY z@D?Nd-vg=#evL?<)P`F?aE6B=SOonY% zOgOn(fz>kp5ii5NsY`bod~;urt~${ZU1{Zou^WX~WMCrn1_YUFRCT5M`A*DPQOhLZ zB*AK6ObHuGnckGYZjz{YhtcBVg3?{dbMy}IC9#xiv<~B!(qx|Yq{(FR+}Lum7YO=F zHC2oiX&Uvp$5#mFhQ}p6lhT&*%X>Q76N@wxEvvMzb;|n?*-lG+Lbq4n+3U16cKmYq zkdZeNY|xk8<{Wi8tmLwQ5fedSO*kL0V@kQEE})YImzRt@h|4P?tg75C`IrvN#2Mz) zfkSch%9S~FrERN~Q<_UjMzq-Gn&~bXeo+D^;BepIQfk`i{;?--SfL^rBTzENRtjH8 ziYnRylpWD#_*o3%n}wIWqHY|RGMwBAcLJb{6Rx(;6?ISYfMGHfpU9lkiKhf3Ig`t9DE;R^La zU!@-z#e;PU3C`oWV}qF)(>K`;1o_ayI7Nqc2841?k$H&vag#OmGxm0dJf@`~k~~(T zNYKFIatEp`slpCanQ0%QJ?5xe2;g-L*>q_g9l{Xq0W=kv?o*g4IN9RtgOGtkWtBVL zMJ^ZjuxX1nucQY;gbq8mkYt?Sj#?Ow90RA;uvc;A-W6GG44nqm)dmf!D=iqO6zMri zs#3P=t9dK*8z&O5=6Vth9^?+^hR|Gj9odr7rELt^=)&dk{0ixz=$srMlsJ5tPlO+J zKawxGoEwiDr?W-7;^x&@%s&s5U+Z<8EizVt6r01=@Hs%Nz`}IX6}MqneTa$FC#dPP zQ@UDi7H^`yT;Fkexa6c9#O&Q21-Ix->F=a-Lu`f&=Wv0Pn-UTxVD1@`L8-l+HWr>b zSGiYGF4tpq^itbab)d17GWSh1H<8o04`{$Kr$S-Skwkj?0mp*KE!rAN!vX_ z>=YTVQy_@p9`?Gza0bb_*G?uLM=s#)3dQX_o<7kb&Zg+p4Zc)_Hzj|--y}nXa>oLq z>LCUW7U2JvyU#y-`17Bk@Aye>v_gCUy%lzboIhD9nLkRh@3{z#2e82ITJRl>Ao-3C z3ei^rp?x-@L@fG|leQRelM8@E04y&yu~_~MoB|Py^=a~#AAY{M{d&hkFd9J=8A?f7 zg%a^YcqiC*2&)&%?VC9w_R~2CX7?Zh1bE7LwU$O06!?Mk?dZhTESF%bg7 zw>v;UGn#Xe(- zM7zM-rEYK1(e_QW)ADjsS?c%C2JZ*|^iKnnjHYV|jts(zfW?|mtNZkA88888NT{CE zdVylg4!!Ky+(8JP~1W{?=jf532DcEj1s6AeC-&6wLN zWY7+(jkr69)xy5pi2Fw?>OEd=w&D8*K4t>tBZEV}cMfLg^nEP7!UKxj=b77FbqkP6 z4)*yVU(GLR!42665cq&Yb5AZS-XwQs#D@|iUM|m3wH4VRkW!kcfPVR~z>-s_5*#HH z`GF~adIo6fB>55dHyVttI?*=Z1n41_L5mJgFwi*SvA6)nCUzR}=?L#DSjjGe@9h`M z&qQ^zHC@713s~WS6^fSSX85Fx$0LusMIt(gu)u?cFL(AE=8^nRu@sB*!C!AbqJGH7 zo5A~AP-C4hG3X4LsnIs!Aayx1K^vSVcWYjHx*a+k!>?y^5g_*VR?6F0k%v zkSP4{pz-tXH+@Tx(tHRC-C*BHUl5AVnCYmng%s-`-2u6}uKz!8(s9vDlV2J*u6qAE z-TD?Dl7iEYa6J zN&N!~$x)SW@IG^W!*Jj+x}r|^EroWWPii_f$(Gjlc)4+1Ky~piTmsUUnYzI~%YW;e zxW#ZV5EhVGRP;V)8~v_t;|cMNy{Le#%iPbR31r?%oj6yJ8buB@kx*XsWYkj z_=$N+TpJ*M!|{IBsqm|{d^=o9j_6Y2Ay1MUQXq~)cjL3)>BdBIV5=p}4bN7%E?G_p ztSY|2n0}8esm@}jQ*hg02iHkuY+^19wm4v+&ym4{$HzTj%62^tT%zY>f~Ckn#j;>V z8C@^4Y zxNMN4mRE|I!^#6i8)&{V*n54Aiu0uHb_e+ejd!~Bd}}525Z)_BD0~i(0}xn2^*G5; zS^7QJeQN1W+p8DoDNDjGm>#5QIH9^YvGU-zLfhamIPx1n5Q1#kO<&AdTq-TUNE+az zFAKqCr*0tqY88cjeljoRCnJ>TSx)wCb%!)`*;GhCQS{jbPRVpc_0x?(HIkRfP*XMt zsI_OI_mwiTAW2Q9CapHpbRbJt4}DL48t!mtEch;SkUpVjNE}PRAEeXjxchZ!~U0V$cZoXbn}vN;E|*$=Iev zXt&BI#>+3$f zl50qH7VADA9V4@6G*HdJhA7ENO$!2Hk?qgOMk*`%&;g)c~4lK1L0>o<@$ z@DB=m=G`JpCq5M2ld*0VA#s>5c=Vo$tZCZ_dsYRAra|Kp|>I>i( zh$Oxugid?Q<9IKCID^45P@8`#A%C@5{1F9t3i2AGtVgg07E!uXGM;YWuTWM?^fP(dwx2l0J>D3>QXMGSq%yOZ;%VY~npJ-kC=3hbi z3n^@deSnG&`wx5O>RXt7*0SJ8Cq|7r>%t5mcLfmuIrCPB7DG|w+3|}`4R$u&mGEy8F^RAyLSvHnLmTh!Q-(W zd_1t+;|Jr20*%>zM6i=iw|h~OHfvd{oC#TQxblR$U{&YPT9hD-bcmLi5H6a1xREEK z>AW)adXATfvVvg(!zmk-^;6w4hd;p)k@ozGWo)l13t?$5F0Ox z_Kg0-ASsD!?$h?yJapd(v3OW#IuO8t-@hCDA7bda<3wKQMsMM|g9apKHuexsXSQI4 zs0PN5;UR#2Pt1yQ=@k*2u=n)~{E3q03(#Qb^qI}7aGPS+W;q9!U{$NQDbw{^l$5+D zuA_fIVVvxg5FTV>WT#J?$SnmC_c}lNrFQNF>`bPQ7;5QBX3pg0K6F$MgkUtM_QGbf zAAduB7HkIpv)>)8^$))md$f; z$*V{6vU6o_5fIVk_};YXab!OkW_ne*l<{%7M-L>i%^HI62&E)f`7sY=->E0pGeD2T z$AhXvcH;ko(ZvBOVk^d@yW8hueyC#wQuE3q242tbh{1d&#VFwpi;5sIzuce_VV3iC zEf4_zbiP=?DGO^?=6|RfJI1BW^Kx{ST=8-4JEgWM;CTS3p^y^8R9(z#M zO}h_d(O{sB6OR}moU|dJ%<(hWVDN+TPO=Oem2(wM6rpA*&9So~H)p(`s(NM7q z(7!;DM@{76K7y&RbgStG8BwM8kno0w!6Er<)y7ISoq8l#FQO?GbZ|Qn_%5lvg6oP4 zFj2)&wO*|fKXlJ1y68V<9PAlT0jUc4>^QS=_dL0}BQo*j>G#aIx??Ok^W+Vx+8-^p zZl)Lv_l7x?6AE%*R~NOEVuot~aH?uj?aNIB=HX3fh>u~7GBC|4nUZ>>KP8jvNBDfG z==Fbx2PSDYy>i*9{Y$urk?=x`!aa(M$K5R==+NqZWYDBMb02@aTw&{2HG*bYco0EU zm=1JFL_VCPrAvs~2w)-+SI73&;g;!Q(2hcDoLWamDyi@F=5HU)v!85PM#pD=^PR+@^P=Pi*byR&zr&~8s z;95=L5`S}d`OEyn{MPmbsnCDPZMG*lkkrF2iw6JHis%jxup1EWHq3_IIqAL|L>N2A zNO~jD-W<(CVBl}P4Wxo(w2Yvvyj6<}AYKf`^8WPh)2Ew{fy*m@)^b3g?wtdo4(-kX z`%YkX4mfyd!1IR&ylD8Kk)xHscns2njG3L+E3B;^{Ub0C0;Q|s=F-FEQc&6od?(6h z^%~DopB|FI8Ak@nUF=ZCqCLq@saTeG4uQZghz&<{W(%vo^n73;paFCRFnM0$O-cdl zV}uh#q9t~?_HBK-oy?(j#NiL3WfZI1?^B0&I8M$A7IRA!5B_DmKU5YtP7kcN@%xWZ z1EsNKuM?-yQRkGyQudnUKj2<0`Pz>dKL9CH`lwUe<;alJ2g?rd4;4AC@PL>QlxAq4 zYycJu+)b@42gC1txG1^t{-Nw}X@JhS%r8h*t$H**p31}Ycz~>YsC zy}n)G>Zi*_>4eSZmr(-)Y}ny#>ppF=zZwVyzu*=EZv=QnqsszlNTWna#H|{>NxW;! zJ8nLkA^y2}Alo!+qYi~qRPW%4DkOb4e3ewD?$Lbt36a~*>J6A6ht;MY?6rVXq7Zpf zth0Wrgo825ZPRZDX>{%0^fla@nrFbZsl5ZZl)~v(Y^9c%(NZwFLW=C93+VRiv$Urn zw4;u6Xd4a{`EPoCD14rKI4^ZS&rK;{a^l4-X&0~?$g@DTw`392iJK``J&;H)EP_?= zYt_Uu1$VdYU-@CixnZLWmzhG88a24T;yHz$84dBIXsz5@P+eMi_Nb4vSPqzjbdNy+ zrVdxm>8pqqByIoiP^;3E*|%ab20LPoe;Q>YYkUzd@-$HS^{%2;13{uHb;BSMt_ z60E`M=F<-!KK-~@e-EHi!VGbzJv;u7YDf!w1p($EM`x(l=(7%iZ9l5#DEF( z@^p-R@XV#DV_8Oyf+v(x+y%Cp@Kf;8X%)O_ve1%9;YrjvnCEPu9=O#In8nXqAXlb+naB3DnbHyoDJRwdtX9qH zce*w4r8F0?l(@r8^K!9fn05Hi@VvsPO#6QP(meDuSFa6gZQIb)ZNlhnk*(=%)f1&| zM_dlo?Wu0m=-^~m`B%8)z?%Re21GCrmUH>nfiZlZBTDqN$O;tOH;h^zh5k6Ie_-Wg zju}HSh>w4>hLQkU0bptZBw`)(`Q{~dV)WB5{8LQkXU8jo`YGfmO;)f_<1a``I(do% z0N!KDzKd&PB;dUya9G2V)90ivcWrhE#(a)~^-`|zOwE-2kgL6)kRDG;Snxf7Rm zw>ydPiDsv|`|Ho29}s+T_i^&`hlk1A4r!y2_wlsqeGC5G6WNW)6lkX*One4>?+hgMsexDPWDtUH17za1oPDIY63ca2H`xr z(7fZ{gS=mKzaZvfo=IyZ2{c=5>3Gt83wNhy1nsG)z_1;E_^^EY<1H9t1Jr{9X#8rm zd%r;FXab!A2MXx4bHWM=XA(zJZkVY19D0;I%9xyv@~zXiXDKm1{CJnr@SukJ7;(}7 ziQZ(H!$U9#2#A6YA7qw`#R^%iOB*Vk@`#Eh1}Mc-AZA{$IEB#o_Wa`PJQRJzH@J;3 zuiFq603BZ;tnBYgMwy}D4r;o;ZvOK>8%qBo8SJqeB-}bv9rmItcoRZhSR;47s5QVB zFOHszB^8U++Wlygk6o?>7 zPWi7Q7d;`Qpa@yN;MShHPa9*>;PvTpdg%EB6T7zYQa`Xj&ukvFGQ?V(-S_d$mO8sOX)(?uA~BtfM{;0keK z7wfgcX&vB8kMhnipN#WGJB+VAy|$+A*sWp^k@nwWHW=2pdPR0{|Ncqy&3}COroj)L zRdID~n_e7SFfy8w4vjNyq@FE~&6)(#1Zdk4v*x3SAC?|Wr*_sHMTgIg5r`{43qnx4 zLKwQ8+5lj|)6e&x9xiV`{`m0Ic5t}4fBW&%54ZQ98g4YZZ*UepaRItlE0|sCv8c9LgX#7ZI9_=DxYMk2WozE2R8FpDe~e z{$^xu4gLAcr^ZC~cjBNF|Pe5PX&@>yIkASgT(7-Xfb zN$jxOerPNZ3z|u%=Q@y8$dM#@_K3gF%TZ(8M~4c$=&yrV1>{Xwub`b_xd_o?BtG(E z1|ofxUC;450h?tOSbuo?x7+c%clQ-nV|`__F=JR(AY#fgVGATglC}8}wE1QX=lzHpi;8ksNS4q?&xK z`Q}4gajhMhCY*%d|qu7SNZdr>-HITp2 zUY!n4xM{e*6_Jsc9t;MqgFQiOrs*m%j1W)oyk6!wU2;d;7zpVve4oqEOMR z+!nW})lycV&>x;`?P942anI0n9D{L^>=kuGZQ+&Q9 zawptLtzimTg!_^6r8X@B{Co?FK^jpG`E675@)5y%&@TyEU6)xlRi z^#ZxszINbOzdCHKkIxZIY(WPe`x=b=syQP1^Q*@BQj%Z@SIDUjymQB7AJP+Jc1_w7 zcCakh%|6rweLA88nnj=^GFHH9{9IBS8eCk|v+C&zk>>vH``dS)?{7UkNjwC6SLMKJ z7?2XI&@L=`h$nhAU7w*6Lq(A~-6BH5fDw@CDa_KPU>+V}D>&lK#!8bvx%`u#MJg`_ z(lM=GH|511s7)u}&)Yz1JlfBxTV0LRtw~xk%Gtex^1PjY_t5RQ(yT*(V3I_*nbep5 zUBE(>J*J>L?Jj&XDRj!yYBaD6UhnG;eO)W+_M{0J7Q2NsL+^CC(Ty|8^wi~p?0&dgxwqvxbE=`YfmSZxQIl)U@=uuk7 zmWq5ZZ2FrWzDTi1>BI^LZB=+iNk_q>7laofJJ68cHh+*-ly_S^hq2QI8D#Vf$q|!} zLS#W2X@nR;OH@P@v{E!opek|~eFmJ>45 z|1q8B?M|p236LfS+pUK`%60b))h^?hZf9`TLrRo0i8gVeJu5gG)_W{@7_0y2>J_@> zxYS-FS<}80-FhjvQEF5qcu&E4k?kF8=DMHhjA7tX0d1SZ-#tG(I6gW)JUW3J%i;0S z;qBAW@NhmF{^HtjV;&$wUe54Uv+arb^&wgH;(G0#eLKczNE>nV)p#j5TlXimVjwX7 zl*K^IHw`IGnbtH@BrZ0-y;P7KKdK)&&gv1vc{kVOYsv%Cyu14+eNqyu`t;k&I~Wn{ zz}WcN^!Lqw|NSQ>dD=&C6Q`ktND+#WmrW4xc;+@pT--iS*F=@yKL3%#Z9i&x+uAB= z8xg%$csxa?Jb#8=@2F6a&;%M3ngBAb#=GG(VoPeq0b&&`todP}$o?C~bUbhFBib6hk49^`h|H=`@DR(>})kKZP5i0^<&m*$Qr7 zL~CFIk*63uA)0XQ&RFPF54X2=+r(114(3%GYwuW9&r5Wr@Q+H4?8BjZeLwYkyaHRbHkvl zq0MG>25RC+YG6Tp({*~XR;_-&dD1atU-I43gz0L)U_L#~g3=&-xcm5Hlj<5WT$&V$ z@-Ovh8=rbw>56h zn?wnsIui*kh=BC0DY!eKp1P%f+F*7OST+3w?l&k=WfAd@Nt;C!B?7AY&@Z5 zyt-_w83+@p%g;tA?sqA@di$$Gm@-e5<`O@H&RgaWj}-2`tD;WL3tzXm!gkioXs6Y7 z7Yv^nBXKKWGc0$6g~jP5WcFUMt?1P&DSmlPZi`GU8;GBvg?Y^K59fN5>bT0}6Qx>o zD~yx@#Nc#enk|s9C8-IpmjpK8bnsLdk`sXPl1YKc?IBt=00V{O%v*-c4nPno# z`FxiD{vPHJTEQE-+ya5 zCUF2uQ@*UkkJUvgD3S`s8ZM`zk}oJ@UF3pO9FcCn)?5M$#SIX5K*!-{C5BQfOrFp@ zpuY3^{9+FD^{+FB zQA+Js_vrYT*NYwf3O|0mak9(<+o#Z%$2Sk67zjM_u>j`q2E-gH{@r7iR_ zxL!zu&;sXOqx33YO4cN#O`+`uj)jdb4JR(b#LwWNcqD{GG(t*#6o^Q@tI462qSX~b z4-Tyit@+@Z8o;$Ci9V1?7RPNY-e_2|a-61leQCe#r`8~{;plu+$DYT-a^VzxF-_vj z&{wINqMcA;N=#zC*iKRs+Tp=q5OONq@~+RIWp8`JxYU@tZM9C%t|m8+li#CIszL{e z&%*x)lbM2KsFAd;3?0}QB=QeeE^<~a+yR&_lRS2N^(>xqxGjUYLj_wTpm&o{r&~AW z@GW?-UE$o<=(E$Un=;Bm-rYF@=W_P)Cig|U-FiU#+dL*dV^PUdcBJVPuyWT>a}a>3 z5v+~rq(R$>h%7e;Kn%GvP)&z^Q~2)&#)JEdE+t!-UiBEzL&uRF-Mg-hN~TUtG`Dc~Sx5s?Zz2#>E# z7Y9s$USbin3r82p-9~LF;fb#MHJ?iE8p=cKS?HKam&qyeuT>?{=PRKsvWvfJic6T9 zzhj$t6cVZNv@b4%c(v@+99mPO^M1EU$VWOz7KQQ*J^c7`)B5^-*#Q9H7b@~xoP(ZT zF@^+BBVxeB1VaHXGI<69SO8HhrYY3S37CP2ci9BI)@Nj(rO0ea%AJJ37rsI-vA)3Ct|lc^8b)vX>Oz6qlY8E7Q#x%A z?cftC&$?oXv6N;qsRjth0r*)pV&P6`%5d+hk>MV*Ps-tSaf$HX^gF?Z&yz~7Vd3b- zxksDELT}oeNb87Nk60BZpLe3kH2U8;Ab5g;;>$R&J0R{Y7`n~t_NmOw9{aQ{PTD{( zm9vW=j&=yFBsyY2q0Qz8Fi7aYII)D))KZ`Mq|WK zs@W{{xxESr<46C2%F!5VTZz!dfqyNmoQBr9{Ak~zfyfk0#XhlS@i}Zw-$Q8C`br0a z%6WMPn3+5SRyXiTlebUqt7Zpv5>>PH@V0LqbbtnjbXYLhXa)b9ha!S@3M)eY5HlhW zCdJRL7hRKi)h8&TqQ(+#ZBH%lPSxVUVo1V@bFn$~fU&p~gcbBkZrsJS&M%Pj8##D) zB<)d0B9J$a^wH8j$r6yjgH-y&02lea!o;RlAQ&3OuURW_Yb=!KA?_86Q=gVV_MY0& zcX(u=1O^p+f39+=3wGT3AONnRy!0YNa00ni}WCOJU#4)Nf=WpCD%{3IW? z=ylV}!^RMEzwjgs`O;IMPqC^pk53)L>Jl+|N$ORI$9>)K*~=LJ`0F|DtKOd<_;urv zTJv&o=B_9~2tlGjB5HYo*s$(**fL@S>#&*r7B{GqY zgR(Cr8_t2;3Q4&1_~`4#yFGJNE1>Mz`3v+B&vOZ!BPq~47kmd|hvisSH{M7qGI%wA zQ~*KE5z`3(J<7wS2ocbQ;CaPjN>xWOZxw|-d4U`ehkNTWVmpvTn@$LyKW%4!{rTY^ zO=^^GdQ0!g7vX!ZvI8yWkwdIW zjhswNmwWZq;(tKj(t%E@n%q+?&kzjJAUy8vLbyd6Xabw#9=}j8V97Np*HD;UPiBRl zbieowBB61JuSur?2cU|Pu-G6&Stx7^u3`ftn|?`)Cy$Pq62Rd!yoSqluE1m~pkzYw z*6&-N+^f&F{oz_LsqprXm*Q6Zx2g6O=&Cpc9$ucbsW)6CfS>sfe z9#f9)%0=iOVG!(gbEvztuR~fCB+y$xQ%A`Q(qHxn%*n?yQ?;4R(p5fpteE5)3)5B@ zw}D(4@Z+8%yF}|+clKzfj{CGzrjN8I&}$s$qjbRHr9JN-pEmEm{|g1=3zWuuF?*#? z2Jqp7347scTUKao`WlUdw3U2^#?o|}^>R`zQ~m9L)V^-l9#9Rp+AKP}oPBcc)d}OF z%n4*Yd4Q^J5`^8Xlc1hrgGruJta&#NrWda;5oG9I6-7aJvVcrs3A@nta(yaYZgDM@ z(cu1bX_AM zM&Z69N<{iL$^6>zvrU{PrA^0bpl^yUfsK?L_^8QX(e{L>x-__}93qeA>d#iEZlLIj z;-x!O-<>|O^I5*PCBb*Q0swTzPGDxaMt1g!2A#S%AxMJ?@&3fo3`6I2tudsWrCmJ` zVV6e(VaL}r`yyBVnc#%rx)|y*yV7G3$(YM<)v$hgnxM+T$P-u`8s&6|^FA%0PBm6Q z)<1C((w)#2sJCH(;i+|e*nIQh!#CRbqMRN#$C+C`I(qbA!XXq+Bcx3mB0cqTxmbBd z1eTfaOIRK4zOh7{B`!ebl?oT&+7u;FKx5e_gK)>DMw4#o>o?FZQm;$FxG7sG5WETb z*KxFVi(0aa>p!w49jM)eENPi7erGqH0boYF98TR%RrQV$xR=r)99Z2MPR?ar4>KJ` z_iTbUkN`&I#kBO|W37z{QG+f1Alw=1)?u&nqDL%9C)d#>8lPZiCe(@6W=0Lm{W7^+ z!Oh$K*5LMu->UdPcQrWxaC!s|Dhm`6H?>(C98f^$I@-kDwWN!@+Mr2%spC3+XOuDg38;KP7V5cP@dJwR%d|RLIzQ`&g!Y0A)_smFx9~yTetQ4EZs7(0 zQ_~8Qv2VOUB3~g0`N!};kz7Gm4woOUAW3qs`?!vS8xb+E+Zwvk$gt?wToj-xCt zp_39?w|W7BIt~;)OFBdHA%4jS3CXrg_z?a}uYmo3&(SB%zdz9+>EvX$`HeaAJZb(N zIkA;@K2~M*Iu?ae3u$DSwBR;?^}~k~`H*HnG#*GW=8s)yu*N6gA_YbJ+C&#SZqMgkN;)S{M zr7*YTg($NnlZlvC-759Z_AR8}3XZxS=%;o+sJmciCXGF5TFFfP{Q$K7x4ZZ6 zo`AF2|MYPG`TK`vQ;h_g(Fp$KO;2DG{TsFt_u=lg>wMeABMaGL$ceBysmn|AEb!C_ z2eBTmAA+n6#kq6bVft00;Rs4E1+T6H!!~=ogP8f!&0hf%Ael{HqfU}*$#>+lr+i#? z+527A@AcJBeg3I)6#9kBDY7Sn)uG~h+n_?VenHYh-WuqIr!e8b%*hX?^HOP^gaOo% zvvA6aw%~#*H}ce%ydaep<$VZmG1fFHi$>xCV$V8Zz{owjN2P1G#KYW!8Le#t=U{{J zMb8AOlk*u;hk+5~85BX7_;qVwSw-|7|>K z69bXXY`Ho!7i|CQd`6#xYkR0~77ji1d;Ly;oj&bX=K8?_W|m*tLF| zTjrneG>G4_0V46G$r3pGt)f`e`d}=!9^ra^Occ^D4hCThxR`^3$JWeI9DN6O*zVdZ zjzyoJe$AtOje?(agCh29ZGA}*YzUS> zqFz%ideM*FXosZADBW&^+83$5kez|^g0R`W4f4V%I2C&lXBbDbt*)td83WB`En1L^ zM|IQ|GMC_Fph`@?WZ&sCy66g;GO|$1NA1e`Rb{v>+jYLu=}opyPjygqXrMqQvZK2` zP=Xc%6hq+gg1;gx6bqvOFi?VpdqJo_MM&5Si>Zq2af8#O`5dxp({n_GU6$BUHaq6@->LdIb-6Km73N_Tlb_eX1LO3(LysY{mST zfBuY$!WOSY3@8_^VsRDho|INp{pT9BYv-CT@SwhKR^#ka3d~;?7 zZp6B7WOkwR229;E2NJG;X?%c;NK|%8F7Q2r-?n8^vEOzh4oyfcK*|@Z*(=2qr$_mE z@I^hnVxGm&&2j{DQKT((Y3aq`Ncz}JoFbSR318!RO6$)kUf$d9t3Yv>d1c%?9yl=k zqaSlmyPj@Vtw_%rFA9hmOhSe`ABfCXB}uh(-733vQ?_|^lMt9K?8crh2y>-zuiYi} z*=nZBr^qS4+qYkxy1^iuIL9fM){CwBY(vKXr>NfD}3z z^fOy&%N;UJA**H%Fk#gCj8`OAvxM6+_&!=HXd3bV3PuD08i@(PZ$D}4?;j0)QbUFC#{0JcoN8QuWkWO+gOXL+E^GwOsUQMO{EEcsyikX$9!K%qZ)bXkn};CBZ%D`5$SV}Y2!`-}%7U1@OyTc$)w4u@_q zue$VE!mFT5tE;YSJn#T5?NDYYHvAF zeq_v#)qte=_9o{MyeF4Gyh`S}0dqcM{{XjEHSW-5FSSVwi!u%e2ZylOL$eC>gt@@= zas2V^hr1u=;LvXGQIp`~5AT1}+pX6c$}s_QkwgHq1-u=UYQ2#%46vZimiZd^0T<9k zs7gcgiB%E4M@E(p??2vVMM@oXAXN%NPU}`YOIk7~V8~-^1k5cAJ-Rmoq7DTE#3h5V z%WHOmEOs!dPW$q>#1KIw0AhLy&5C@*z!@x|f!lvNI(X)Gro{fwR^f1&ng&M+;f%ag zYE4TrkDUss23t-BX6{a6JnDWd?T*x`DPknj<1!csK`7+?$_6)XS;XMgMYk9@+6eVX zDU4dk*#*InZ%8gvID*BYU1@Sk`o zM!ly!@mQXz#9tadqdbCiK+Abdu&O}3+w)iS%2>gz1MBU)203D^>Fzt1yc#)xM-Fp&AmG zw!mzJ5OiVw>J4SHA0|G0o;boBVaxrw~-h7LxmA#w;;K zaiPT$d2HE#lZn4%H#=i=@^~&%noD{+x+5mln$EOHn=k(AWb%AEo}E%lZkGDPLX;@* z0$>Z()w7g=(a_>}-oL@`2G5QTpC68n4o-%{;mNZj-;-4x{h_)jKM7V~vXfOyDHcHQQ4JeZE6lW=28Dh9V zoc6`kBLe(F&k`0hB!rlhbDH6p7;Uy@f}0n{)s)?3ua2o6V8npR^~6KU(Z~e=Ej&Os ztN}7D5rtUlA@fA9`gL$fKpgG`FnKuaEtCX+ec&s20rvN5i4z+wo_7NIJKeTjzBxVl z3y=0^Bb+`xTTNg0a5&ZIyzZDcJOr^>mL9_=t|pj)iuZXFyrQp`_!u6Wl6#ykHb6F0 zop5<8B6g%o6d)%^yaeq6y_8$)HDj2}lpLiog5e}v*alIlAq$x9_UrLmcln9jZ}8;? z1J9rkQv;eM&kRY%b)*rx-%qJ!oeEYF3YB@6Ph|WWdj!JD9|$frm9tWj$jn`A;YNma!r7;Kzi7ABg*=7eFYGJP7n)oUteNbi zEpW;C+mG))+}=}uD){fC?eP`~ep9y?UCX~Z%3&<_avq-4rPmYDltvY@>X>gvX1>D= zOaRDfIEv0)BgumM!y>_WOC#+CMNC=9({<2hpB=$clI!gU$gUvx_uC;_J+*L|pvFF! z+&~sJ^~E?13=(fK^u>(&x+VO(oJeeoy>2-BEIOh^GXd#GUW{uMbJyF!1hZ}LbV@D! z>HCN4&wu?hc9FMx8x+x=zq=99Yz!iEh__A@VUv*7T z{_y5<3@uVg58H@MILx=xZDp-aEw#8gDddnE%u^7#ehwb4Ts3?-99Ur-(t4#UM~&af0M|Aw7KfyN zKqcgX%AARVH+VB*&qlr9(9mEvhC-JCnQXHF3)ju_+?c(VZYXhXVCSda=QVPyaq9kC zU!&~_5vQo4mDgy#0gA%QQ1RNdW0E=gu}`}z0hqCmJpI%{AfGY+6}0&;2RCJ?HU!}y z*VFF@M8uniCdXM3Km^T2>{V(LYlV{sWy|#T?e`Dw|AwsRi@)98Pw(IV?N*!Nz3)FU z3^jELzrl`DnpO#TTBD>#Xajz`SNlcaT3A)p)oh7?W!2CMMu8p_+(AoKa(Q`mbBX+H zV*g~Tm)krnm$2FqRKSeWtr3W#s8U^CVNngdT6ZW2-q*LddFOB}@|^x!zv31Rug)gw zeYQC%KebT_R4e9YqLdq})O4mkt!06!<=xr37I=s529D9QPAF5WQx7Eq#wJ0-0m{S# z973s8iylneXa1 zrx0FqCVz8`0q5eT@cyOfb~?^%FN#cdIv4mnvCg2(WN*QF)R&qr&lKa;<>evc0e^|f z=r-#PCjzH$Kix_vGYUdLEv~gxD-WS_+s?$}ZF*h_+U9~#a1X6c0ZfUf(SXr`a6E#? zbP|4{cL)^$&u;s_al_NXcFp&doFWSb+{4Nv78^wdsv><`>~(>V1GM zICL@5;K0cy9Tqp$!yL8Sd~jgF#=?@r=YS~T=f%8^Y#64|)O;bTx zOlwJlA|LLjjP0dPFuILxX=!1Q>`iOuUT<2|?hrrJl2`iGiR~^=GX&XstMdt=un>9J ztY->T&!HF>|IurafoE6l)=knEXf@}Nc!lS6-pvV|RO+Q3D(gZl5W_sblFy>$>uRx8 zI8m(uY5F*d@Jxm%$*n2CT$C;KX*hGSVYm`DBFtNO%a*0?(O_+@^J%UVvyh;ojwu54 zD(yeynRDc+*p~WDS{R1+}gz%bS2xfjd%H#9&5Tt^ObXPFWV?^+TD%Lx{9)-a9ZAw zaScln*f=QVWsz%jg$EZicE}S5&ctAS%1c*HcN-lgRbwaT5wrDm<6pyuu(&$CxQ0z_ zLFXmnFw@@W)O3VrKWLrq4AP3Gd)A4jd-nNBk($gnaANYj5%AWl=(Da12x5)|xDZr1 z5_D}_k0Xq=1y7P<48%Qv;p9mr)X?=F{KWPI$_<@f>^|B_*w7V{oSgvLJ1)W0Ur*j( zAN&`$05apn{0)xanbk0cHH2k>>@NI_vGBgkik0#S@yYaBTxNq1FZ3b)e!%ogSlIl* zn5ixu9OY|ALIovsCpnXyS$c~E`(VFyuh80)^jXlDz41qMH!SQapef#im|NhUPA8xl> zFcY6{-{BmH`BhD?6yE}+9T9au0k5rUG~dy83wedfELSN%othI69~)+T86lM}5VlU- zE|Cv&qkwBcb)}6)rS>sS5KQ*hFMvMrbIjt#JVyqpHn~Ouswv%Vwr=1aygxK!cL(-+gJmHgzg>*B4P`j>~MTIVm112-z zELZ|3V9EnRS>+W9__{A0#*>>wKF`Zp6Md=0AagW?+x-|0>er}sz@U8QujR3UljJ4r zl$Xc^%1Z#*@)D_(W-pI$W6a$lu%(a0XS529xf7&$7=%Zp-CXz>0B}>5wv!0PPeoq7 z|LN`ho)Oc5)O;P{+v?O#fYlvOCO2@*BH`LLC#60LT(kg?`bqe#BS8X!5Uy;;gCam% z4ZojCHg0w4J%;7*iW$;k+l8_@;Sw%|yu*VtjGMl~dP2`98V?wt>NFvGvhZ+k#eN%B zH)nJ;w0FPPZkd5YI(cIkrL$m^UP=qY$D+Zg#RaE0EDb<`elmfqyJK}XSEJ$O!7nJl z;qZ(gj?4;fR-Qo18N(y{0`OD_-X)h6X>4ddEe;a+pOW3Id-UoWT|tE9hmk4^dn0>+BM^Ky);w~^#sa^|?+o2-@Gt8$$tkv;OX`!#% z!J0-!!UF&tUSl0lH?6V=g>)gQDje!wn3e?elxLW}RtxCVi71OcVMN69Jw_9g?zJMC zc2pvLgOfwDkr{YQG?to_&&TS`FBq>#+QC*7mOwKN$^|Qj&Zpn<%zJ@H;Sd}AqQ%K| zo&zp{ZSqBo64~MA=^Tx+Y1Ng20!_>GLv>33gXD=}=h|{$v{HNQ$!4saC znFrUb7yxLbNkg7Vra~bOlt2l6BxY&C3zbxqE947HCPFL2em*6o`GTHABEgA;c94i> z#1FGXP>>SGh8@T7ERPi2?nz?tkMp~2)6HR z&Yt-NCto1hk#&tm;P|+x%kQJ1P|;UA&4|&f8QC{j&hydS?B#AQZ*`>)2)(*FC#5T4 zYo0s?)55l3#RLmu!w3hB2IPJSZ}ng-l#~_~xNrOxh2-(3>Sh6=yB*^Z8lV5 zFrq;l7M4%%(5Im6yHOCL^VKXKz?DU1g9ZFq1!PXGW;F?^)GNKq5KJ}*f5mIoet*yGVDVEi+T-s z(9c#>y&%iU*#ciqRVn>yByT-BLSJriT7&Iyi?}Ex*j}-0M`JL95+7h!Cb=F1;8=O=IRCs zhOFjvI`^o8{t{(~*ZOvGQma$nQTo)8!NQJW84+MVA)gbDlE(6N`ZY1DUbT7k?*js)G^4Edqi>YU7)9KSu6+TJX&sU#6F7N&huavvL z^Kp37P*2;zWA*lHmn)r5OW8x^kHaDH5wfFBkZo5KA*`d6LfG*1+a=3)OP10A*(>Z0 z0rT9Gt8|#(x}$Z7gV$=YL(wdl(AQT|Rg>3JTTt*yEk1F!>f{Nt5v~GuzpuE``v?Zy z`SJA}mV^KuC(^A>!Hvzvs07xnaJF-JtsAl8ic_LK^t+o2SWK>&<_HQ=0U)6nRh4&( z1=guI7c>ac*Bm#l#%~<4CErq*bNk^CC#3ExDXE2xQBg`1^|-UJ3v}`hku!d?ZxVbc z>yVkH)~5ih+T!{-Yi>Z1VB)%6Av9r*RsfiNDM%eO@jwaojg-5BI1lL%U0G(tq>1HB z2~BtdF+ELmEc1udK!F)bSuk~KkqwE;v#^J_gk0qTrOt|xNyA)`PX<4HL+C8#lm<`> zWDE`LqlE%6Qr!I-Bmt&pZ@+9d##uc(i%`-<}-p_phUp%X&_RTIxj87sU0^x$_#mn-|%MUKpe zSA>kJ1#(~J+Rto|NKE~T{LgmN9PU+h>2ya z1Ed~E7N?&v`^v1q&9?MVLLERo&`z$Q>TW|tr(2U3M^pGXTc~8lLY0ck#gQtm00||_ zfQ+G_0FB%E6;rS>RBMG|?cB!UUKp%uRxKBGEc3MJsOj^KIwPAWHk1uooRH|s25`3d zE{)5Z$=m}UD=|xOfx5ytw_7w86iL*c4wN8C5j+W6meiL znl(%tVw?wjt82Vd_xafn@&QzsRowZ?vM^NtfJ7o8EN>Plj~XP?uZ6mzjp>~xiC=ac z-s<$}1aXH-Cz#wWS%-SxZ3CjjI0Ht3p}#>bQCT~t49>s>4467B#OKJ0g|}ewfXNFDz%u}>{Q`nA;uc#$rJbjm?F8rpAEKb! z`q@=CW0{Ii$cKfqa5;@n0tiE$+?kMg?b1WGD_->UVhyo}GElcPlqWZ+4;GM#WFRd# zEPJ%=mNg$)Q_oh5o23b-N~9l6qF&&8pxlNz;EO!Y1%}2JOM`cV+mKzG2~FGx70Xq) z(@f1bfBE^thnt`IFU2Iwj(|_a@*!c~E^oh{UehfVV(0i~vp5~!OjmGaib$n=2$+!N zTChqHn(Dze<8f%D$34}L43_CkXRwSZm|Hnj{7r5nzDr3KFxH90?gQUHV2_K62l4+) zXZxaAdub>f=aN5u>4}2s8K4_Ee=t(YG(TwRfzE)?$D73!a!iod8V%vosz)>7A7q?D z%Q>N{Jpj(tbe(R!kaz(S03u-+L0;N}26N}=!O2c0Q~5d&=Q`%nOruMW(uoR(X|$Mb z*2D|?q0xIDUO(Y&Up5I*@Vw_&64@j`vV^h@DERn&U?jvK%9r&1EhVXzJqh0s#`f%e(LY;zf1MEP`Y7adTQCfIghGd~^t>+D%Ml47rmwpI zPr6mNkV+49%E8=ysm$3N_Z6V2<`LXXlZu3y!~#5upzq0gbjrw_fj zp3Yv|8nI26l-J=B#E@>|HY?W(kM!OSq(b9yH0yH}d>ep3?WL~*c|WT}Pa%9dMs!WL zsY2od&mkEJ>@0(%BVaQ+AUmn>NQQ8!OM`F>wl{?_U3e&&FOiYPgqPGpOnLbd2rY-h zMgxwn$Mj8+8VigNl%ew`|7IC-z4Ukocyv2)2gF2#dduR!ZE|fINSC&k+*n!mgk9*i zkqv#JIO0c9b;iFi;e=|Q{&s-uoZV6vup|{Q34c$d>U%_14sXw%QOQ&VZ1xpAhdv*g zm8iquN5QaM$xjm~iQqLY@3s?51Cyz;M?B=*aVKB`g*MAk>HZ@ zI00)Td+=-pl*jNomEGK@GDTKE`vHDfLpdOq*L9=Ft|8P{7SV*eh7}QnAkK0ltk;`t zbM$DbF>zt0nudXgcd8fCZob6)d+rFfGZ`|!c!NO*Idr(b4B-#=WnVaCJE&dXpkvPs z_)-gOTVH_~>7N6!+;P1<;6Amb2INgLdyggYh0N7pRG)m&9a)@6J0{MAWBuYfd5~fy z0qEh@52%JO7^?ufz^8(Mb`t;{& zg?E4b>)pq#a|Ngip{-)5ps}cub8q1MS&RBOnE*9l6LuwJAqwg47bG&5FAVKcIIfzt zFg$)#N}jQto6xQtmbCb?W!xZXa3S~e(r)CLo-vO2%9$cCO(*z2{6|Je-zB@c9c(?D zf{eRlgJ7vgmo1$Kf$P;kRiri zCQcRh|9$SQXA&%7s~V=gGqWdE`lzY#YJ~#?CMRENzhO)JE-Eu0kN7SVX3pRS#tR3c zkw`ukfgy(Ylad}Yf+G;DtD!wdxZxV032#n*BE@we+Gw(Swuh$)$3_oO%Z|a%lzNLi zBt7UrQ(>B#*x4u={9~n}Dl%7ncQc+sNNEflop~#hSNQ-LiKqksK3G6xgHWiyp=^l_ z%M2w?@%r}RVzRuy{q+4?=AfzNdh{@moD#ozW?WM$Mqvtpc^GusLFBDY2WPwt3Xa0+ z>F?sH>GWxnt)MGoaoTUtuBS*HuL!thoiT{+58HRQKOi&YI|%L^=vqx-0V^*Cx`LOU zo7nbJbOzT;Tmz$qh7h+VaoE|YuaY--9|ey82X*8Dctl1-lryja--QE5?MaKThp=F? zSu?>*_h`G|oP|iG*4B-ZBFiOzZluC@M|oG}aX_OV{BSH~0W=5}*@0(_%6HehQg!Kk zaVD}88p6a+!ExD)wsQYwkM5s(1tO&NVC~*?lPy@Q25C7-O;Pr>_^qP@qX%43AV(J& zMN(TxAJ|})gaWq8LVNMe-OfECXX<ASX{N0W{)~Op1S}W?wa7s7=UaaBK#{%M)T(dRy zL~`E+s(2#^VW0m<9=9LZG=4Z#G04u&Aceuf`JbG{+BxFOLtfw^r8^2@FDmjlOdC|d z^zf=@Bye@V*#?#|6ya$@>Do zRhx{G(!t35E^r%}MtI}ef#q|^fO{h#O&aok#;x7O!vJ0;6rZh_vQT`YL?G4^2xNX` z?woY_aNM8clCea@xw37 zZuEucAEJt;Sj<3ffJ$I}5Ie50b9`jc$}0nTEOMES#kjaKKMQbG#pk;U!ud*5K!^kv zj?IKZVDzZfkmJ~tq(Jo)Hj-;bt$b2P-j$h=0X`~{NhLJv>I z0l8tWl?@BZ_mXue+XcRY5~Tx#b<({@DOE*WFqE0w$;}EjZ*!@U5rxqD#~mVQr;o&n zSVqQOa8^J?@iWj-aqVb9ErZO5QKkgam8X4m|BmsnPW+0|;BbG%Xegwxg*vgpQa@|z zOD!$s9Ux?}KTUa|UT8tDrB?GIv=F#yAhvR{pfvm6-+lb_&{XATeGIG4S}&{A)-`C| zR~9-w;C@RGxcBqv=O2E!y~hdUED_$D+(o-w`i>EW911n#(3t)djp-iLZX}B<|4c$U zY2h4!g7fY>L9=@AWB`faO(8o9 z6JlvLoLT@Cq^vR^v%AAPM&MrV6qkm)hspJZwLlaqXFTdCs^IFRM4`gQxkUGE>-7ju zeIjFF&_;M!hD>{NlP6_X?Vd3{aheBSE-p97!bL?JJsWZuyP|2BH=7uzFk9dzm@Qzl zka0mqe5i&H0bAUF4s+2Vl>5ZB)|97H+BW@jy)^}b zAfpg^opYrO0ogPe+x^my8FY5rAKrdyEAD7)Ng|=Wr8IJOI}@8swi!j56%iJh>VjqV zK5d_gJh0kK&tNem+eAHav~HU8OA{sihczF0Z`$E))~ZKR!CKb2pc}qThB8 z5=^1S1Cr5?2SSE%q34$>mN4p2^+M^DdRWv!X~#BKUHTlIXDYz?H0Lp>$2~u8*kV-z zs&)XTwwSbt^_A!ig`-~_!@ll-Pi)BP&H9ZCRf3Y)uO5ON6H|{x`N->uda~jyE_FVgx^-DbV1Pd!I5OX#LfXcBDWFLxGG7J zuHnl8gE79vJWS$ub}-Sw;EI42GB3=<_00lt4p44O^R30|bR{$x!G?y~WcM&9(}Gxa zi7er{J0ScYnJR+Gb3?`yI$9(zxly5S(NPq{u$z;;s+@s#(UKjekbjd?isrU5q zU}Rxg(yRuQ0gMVl^<>_jR*tpZh}jv2?==IoyW(&Xtdp-$2q;yfqYdt?D!suyDYEuG z`=S2tk`;-Ad4YZ034c>HVmp-8Mw~3mbh@{Sk}DG(%DhES6!?>AO)Q$j-S+%Kv(nzd zl{1wphz2mY?wfV}5-zYX2`=y7-`&4|_y^|FZqkXA%Y^5pfljI-QsPqOM`6+s`*j)} zeOXa&Y^;;Yvbr4kLD}#{NMzvy-|jxE=~7?Avo)De!#EjSJ5X}>d7QOHt5qi`zV6ec z5Tb(YV*?Y8^7pG_4H z-UNlQZ37aG5VUxYEe#nu(v+*~8(WqdWjTg2MGsE11*ek{Z^eLOMHm1oU&J)X^lyd6 zcoge4Y997CkNTSr(cJuZ^Y@?Lf4JR0aJC7>GRQJ6kug8{NQ`d`m{ip6VlqN! zad;5=ym?Lg4CwKq_U%`taZ@isws?7C9%0~_@LPC`9}G^|ZFgeti1ZE)QjLmB8bEk> zuu=3z?HD8= z4R%EYtBhlFv|m!mAu?ei} zE6|dT%o$rQm1cPJbx$CHbU{j7WaMi-fs-?!rcqhcsSzzMEdAUTH}E;934;s|j)1)o zJ%g$XTcwlPVT%e5pnpKA-S^bkuIu;Y*uu=g92FVI5ws7tgm>@Y@AHX1fAExP+HKR@ z9}H$lXb?*Zyxff6o?sNz!#zZCL-y^OQvVRSmg`^0*#tMzlB?) z2kLC`J4O)qzPtNp!v~mcw*83W8Bc_g(_^0C*zbDrBX{W`#rugo67GQEVD53h9nPWE z!$Ub{p2Z{-cJAoy-y_1){=5P=cDr4^{n4tuwA!{Oe@@;F;FnBJcDFdwu|r1*RBTap z<~W?M3vxuyMbBxcvekCTAXdKyLxvR7t?Oc21M6qy6-YoP5868*_RQOoM4&%8m|+{d z$q&gEtBt2Z(Y0PR|AK#I&j@%P3mAc4aWgp0jNXA?oC=f5qmVtH9)9au>V$g%SZJnC5%mR_PG^$~ zRLugkoH4t{GlCW1){8=aooA=jj<&@&osUn2$t1+sW4q{t)9cok`tn+v*Xhc1dP?X6 za*1aFPmHg3C0S{A31=o{o$-|f2}hi)ztvXl6$P737G^#j8-~ zBJTbAY}U+rn>qK@4zZ)|D2->8m}?V&2Exv!uQC0cv+DAQR2GayU%d`f2OK`iHllQ) z%k2gsQ$jI-1Gpca-$JQzp*7%~t`|6P$S8A;adKyDQF@u~B(NGO1&=Y!0rpd^r+lf1fT*K!2)UY9o%(((IBGHJ^vTNz9IEnxn*KC==>}JlBssWf z0*%iw!sT#u^|*qu6TnQNGAAU?Pb8@~EbR}hmR8(}1squTkOv>=E<8_I!6={|bkKfd zrsY%&Aq(j&snWyVM&g>7xGe9Fjlg%OOg!D=((V$sGlu1UaW=oWq+?!s5zlj94_=UK z4isw4T8a6?4@iEX!?=F6yt-)lK8QQ(>!1fCz)aa4TtE7nK9Nh*(nfNJO3)lC6kpIe zN-RY3{*NsABz)q`f?E(Z2cy8WkdiRh!m4zC6@aPg4j~Orl!@(ULZj zr$zr5h%~UciWw#BQ=JP1h`wK%ddh`RgrdzzD3lJL?>{|U-hTY?;iv6jw7Gx#@e{lq zJ{eI(Hg<0BA5e5ZNg)DT)BSbCZ$zXGd z0#dI|r0XaU8y=%QP_*dKK#|=-tmy)x)B;KD@qTjz&B-fy_Obdx0kIWvfsNpq_dJ(s z1wl-^@#wI^dycdnkM4gOJrjTqXN7LuF0*DFTshoW+*p$?@JQp&gi!}zw}f8_IhL?# z{yESonHr?BsqEmob{vn71bdey#O_k=7y*btk7Wt2oTr>@l>r&uCR4PQ`3 zlHn4<6dB0sm1X9TVkQo&5DA7m+`rmgCZ{AM;|57$pX!KHx3x3MF_t&g^DvB37WkkX zTH`uXyJ!=hZ>0y2(3+wQYnQBJ^iY$ z1|{ z;n4tsGlc7PvQt2(i`JJlaefvtPyToLbTmM`T!`}<#Bm)p)s?1Ng0EbLxf8CYt^2eS z1TJ!S0KLiRsxpkUx-?wKmR<&{fqN&r%K^&)aA$Z^9pU(rHC_yEv13JmqYj<{T-NOz zRa4M}%T7%~dL=3}DpohQYLHRsT=s~IQ!GWNTQ?Poe8e)^aw!1_*f$FTODWjOL=OG& zVOlHqU>iCt@I2dNlM%nb*rEZ1?d&HGM>(-HxdnNA#9n9@OuM9?+I_+U?bA^9v~|c; zm%dgT?0VnBq;@};C~SmKzc>Hyd&5i#(HxoW}UMZ0|_dmpsrfA z(d5J2*9{JOO;o1DE8FGy#pUG%YWj6r(P#(HL9w;d31nf`<}QFez+8ZUQ@-*lj~9i$ zv=+!cB=Q5>x#MlD*-$@iSGw)mhAhurU6q;iaHW32Dijnf94dR1=l(02HBmtd7Z~g< z{)KJ`%?Ko=Opm2>2XZhCW(MW<=oFY^d208gnY_paKBltpE$HYkz@f_aLReaFUgWU; z=gf_BiR|O{&m*1|LQSIQ)I7G`JKMebUT0Q@V#>Pgm{zsw^e+=RklXQ4xd1j5gC?0J($;z*%<;}*y8 z@msXi^lk~IZ@uXh<;z~}BJt{Gb+!m+U0zd*eRYM>eS2X>oud9|@mqLd%do`FzL!9Q ztXEf1`tx6YerUe=H|q|>1PUPz5Wdy6i*H}ad@IV zYBgV?T`CrHNnD-2>I>T|I<*`U3&68__FuWh)T`JxLbp2ZMuv$Mikz7*hT4#W5*rMO zPgiCFiz~uVk^%8v@PP<%tlwydk2AGiy^Wx%d=W6f*7+j5!S@KXc!yBa>PdSI9wO~E ze(O0vHwfunEXA#-{E=h|$uMS+->h6k=^)P(%v2K*^^%Ez!XfA3ihREf6LL{^7#uS6 zhUafTzGKFTZWErUy4XwxjWAGXH1E5ugPFT1t& zz%`c_XV*Yktzx|psos8g|0A<|>>pB6BI7}X#!9y4wC2*+?Qr? z_$d}Gun#G}LWm79%T-o5Mh=3+G43G99?k$<5j8BN7KsN1Ish1uGZ5cu5?ii-y-AM5@%EHEhxyBY*k}qB6vSbZRk!7UlW&L zkEucvKqi5scM{2VUqW;+h@)Ue@Fy)y=bbv*xgu)I>ySM%w=t0R)LDsHAMzrVVsbGD3;z(iKqbCRd z!0EmIfSv*VqNG8Fpa2mN@2g<3IwF8u9Q#L#N}LK1q2XPf(Uo5NKo5104MqTT)Nmpk zRljD%(*ySL&8Dv|9a=TWI7Aa#rf*yc9hdz4JvcS8sx+*8+DPuj}OEY z>GwIXZ0kHtvQ%@S2FEz!6jsYX`wryy4=^!H;js?&Zd;acrFN~7zFJ3c_4?WaNvy&E zc41d?z;>6TOD1pHyq-t)CfX}IXRHlEJp(i^>3Jel3N4l|j0qda4xP!O@cAsoOOT8K&CzG1hHr}iIG+g=uIFul!VK#yHHwwtx z!H)p1Lo+0$OD#%g?+_$g*-&~0*y|*%@KbH`O7W!G52b9`T5(onMR+syYD;F&;Ctjz zY)pkj6+;R%@gt`03LHJ&4E_l)>4b|4l*#H)o?7M}O!mrGw113G9=a7sm*0H&M&t|8 z*07C@hp0WQSryk>B}d#4mox*O3V%AV^%)%Ruh$efrSOZjaJxw?Rl`#`sv%jRKtl5E$T~_;BrEIvCv{dMJS>6@~{_T{0yh zg9llF>M``DGOO6v8lkngGj17RRXZnF8FfDWcD;gxLpKfY0iS<*b~U+yh{*!6;6`8K zXH>F)B}rm*@0i}D$Uy6SX?v|OKsO5IxAFtFA*#^GF}IuDn0FS?k@#{uvpX2_jvpWI zq$8huF&GdY>;NDFVbuq4ONtF@cg2X_Aj}Igy#-CQTZNRh;s~u@6#fvn5I~k8_I4yC zfZL0-gh(k5k23HnDBB5S)buqb+>iKy2^=A@&<2%>Nl^82HPfc+N--~v9RVx=j`*21 znI3+_2KS9>-Q`jQkaSXyl~37mQwlAeO@Ga8Rv!IVy(vnm|C-mFE;i@0DV+0x&K-4w z5~DO!dC^aGlEr=3F_7`f&FY1*G||P0Q>ZghE>fBQz%;^8^-3MVV5Zz5m}8KuQ(MfGd8B`93ta(bAEGm>Jq=4 z|2JhM04}s}VyUcJ$<=InfusdRiw?ati|)8T4r4IdsG{i70wK91h>E)j3>)T}Ojnrc z1W|slF#*X#?f}v|+rNL(eDjA7-!%B)UlN7ECosV-Ch3?i7j+^Gzt-0n<4UU;_34nS zlNK|z^n**=(A?Qc1x}YC8=w#{x_Bk<9Lb@N&nPnF;Uq0OZ_~0e(>&@9U$Qf&YtO*p z(xUU9o7c{hhYuC_8La=ft&$*$PhFZ=ULVE?a4Gl|4(hE={}O=Nu2L`UuA1`!Vm=tv z%#WJ10a8Sm$SEZN19B{)-5O0bz*g-$-E<)k9UnG@bad>M(9Bt;sBNH-3sRoes$Xm3%LA7`jmK7Fe>z=@&Yzd|#_yWCVx~ z=Nd(0@hB+TfnDsbvKngb?BKB0Gr%;4CODypu04?g9dU?o1IS`W;%;^7lZ1FFFBt|d z>QPva%S>>tSxJ86tKbd8M}-#nS`l@{rS?KA6ftqCe?-Xijc9dhCZ#{gtBWc8j2t5IJ57ky(;w$dE!gCs*?!-|R>_;DhgyM5o* zEL_ae&!eH--cyV=7Gnn24gQbyL7-(@BOBTTI=Yw0>xW_}7tFDymorHaI+3Bh(`80* zqs?u_LP54&HD&wGMW*0LJRpdP3$l8O?xnNA?BiRc44i*>`{}3U-QRETSs1dD0-^49 zxFXgnH4r1}f4!`e#>Q;;Iby0jO3+zg{P zsmh8UxS}JV4%A#~Qws(J7@B^>0_(A32M1#i!=R9inqrFTf#+w7Yp^M~yHB0tdbIf=!?Y7^z?@ z0wPr~rs{^Wvr-QUgv)M0fDW#^vZ#(ovrp5rod^0MTkemh-Js7)r^17K{Dq+>i-Y04 zdY{b#s0(^s>Ep$CNJAejdUT}{LiSszkHFGT#2e~R2)n1~@~lYXvL&9m$ZW$85a}P5 zZu_{<>&P=h^@}@q)W6-2s<;vpId<&8*6E1CIGv8kt~<^FNQN)Pz8O`PzJmnZGf`A9KS@aM+iQc`D}$CJ1{a@Zx)7F!_AHrwh!~6I%aXyqh9N)pWQ8;tc28L{ zwnyF!S52~u!6{JN8>|A)3}8sm4X->X{S4blgUxe5U%k|-mr^hbth&7-b#z~;A2Kcsjyvx_G z#!H0~XOEr}Rhk7!`wk`65XErR432KZoCr3Mgb6mL+5P<;Q!!KOpiZ~4Q5Li5?GJ@i zw>s56fR$CMYr;wbiavDSOyP&^L!P0)ged#ww2v^Zd+**8-eRg`|v7q6TN&WBv- zv;2TBr?de>E$qX2IrzO@p=e!C@9_7@OMMrXSlz&}ciPIc0@oo#!p+ZiXj;3SfFu}J zVFc~KNaDi6@~G}1nsj)(}{6V;jAy}K>+A)D9Gzw+}7;Lt}x z(jLMkfW4Z|^mJKxV(KdUhXwwjkNLJ4{%$xtI(RlZIXc0g;lbeW_UY*0WDdnoL<6v5 ztFu9Lhm&}sYIR`tkYgv?#_2cX=2Ao9WCE|xV3l;EESad7Fmt!S^Qr%9yt7!_tVQZq zA{G5OidcK-IKY>YU?<<3jJbOIgH~Je8?XwDd7I1%0RWnwXbqzgoGDdKpwk|5Yo~)D z_eeK|Ql6}@ux&=PGjKvjF=4|SW!Cq;ZrpXL@(Yjc<0U_erh>ECHOfLWS{N)lnNv3M zx4-jBFoU|)l*X+fRcw1XMPbtJ5KXkVFFAvhJXQMvI=)HJVxSU)kg&H0 zwkynKr7cR^=h;Bbl1BJV8G?7Q!~Fw9kATmScf&)_vRA`UjL!RfIf{3}F=^ouf0Q z^6;e50>zc@9vu*SBB2P7t)wW3-DWHDS)1CSPs`x&f)UiMcVZ7Z-8ynctr;uknOo+*CtLiwU}XiTRRD@8N!96ribCta1R>QG3;b zSHFRa$vL-rvxXN54mj0)h2;tf=S(J^o1fjsSNX+;C0GG9-z2}$wMf$RPO zX5ztF057}xW&VDCXLg;*6k3(k=GY0zO!&DVug*?*#Z|*oxwqJVA@Ic&Ojz{kLt&S5 z&sPXVYSpOdOL>rq?5q&Pze0*J1QN9x@vZQ~OI~;>^QfJ2I^C{MU#z}!LRywW2TLt+rys9~`{fr=i+I&SH zFn4`aA~az?|7ZF17?|MFYOsec1-U8teU_r1zQ$CHGH-0vD%T0_iK-e3qPZc7r<|Sr z7W_B0UhtIxn*qBluaoy67b}V;0u2p^AZ|#$@7!vCuRcqVDIW(o-NSRJs>jss)ZVBO zMvw@hXs3(m_UkqSOa-*BPv;ku?Dd%gGNwYpT=fk^ZqG)Va=d#s4c-cM-QZBwqH|Oc zVWnu#qN7x|(D}J_#j0t^Lzt@rJg2STV|AtFAPVnMXF3`Yf`<@3UM**ZWH}-Ya8IBt zZ|bW{M!_rEI@@4S)yE`{zQ|&`3#T5QG(Usq#e&*%Q??lGs@bE&w)y$83ND7aC9e1r zm_m|6plBg#$Dh++zs(Uvn>pHf#QM6mUbJ|jwta=PwM|UP3YTU_s9~9-YTkRanw*o_ zurDtWyDJipuVTIj9(+E@ZED!`k}}sl1w8V|!3>>@2!1J8AUrYv4=e?%ws4bOeNgx4 zaYoGvAW*`OKR?{v-+s7zOC=mhtJ^AaA zteV-H))0!W*E7?YS;;vgxGEL|$CYq@55mhDK}t@yi|lkeaR)XuD^hl7ev+ak`f(qR zH%Qc@Tym$sMdn;?lxw>m92`wl&MP534vzI`tCO$eVNrXJ=_QP{>USaN^tpB+VJOM) z4*!N@>>GQ9lXe$gPS@9P7+oW!%V^j!sa?U~NTM6UPJkJ75?4q@^^Z@R_uu~oId_l; z5N~xi5T1qMjnwWSzQVYL)0?g>yCHJ3!lW1?Wm603MOI~!{}g8M49{fVos;du6VN;2 zT?1EYGa0R+7dT%WtaQcGRs*f4;?e@pp2bczs z)qeeg)nB&TPesE3E%~uxf}lna3)CL!56_mbRA3;RafjCn=oh;MGe~fHMhWiCppDX$ z*K=na^jp{|=xMFbFly?71a&!HU_wgKkCx;0F^`tx6*EZ%6_<@P1V;#I+Ep^%bObCO zhX1+7$*(kNpbvqUcm-rnf`y1Vl;lvAe*R}OIQ}e81NZmZ2f^s82sQ-uG9>`!WD?{q zWn2G%Jx_0KhGvU!hCD$g1BPeE%M@f*j3#sC_HN5qR zn_W!{^ipL&jwFlAr-P#xaZHj1-%eqv5Z5tk_Z!O({sLjn9sLgXl?H3;6a1Nt(T~`2 z0qGACs50hJc>qU$*9n1zp~|RGG4fLDV>_LzmiB66+cLK+{}S6ujJPi`T+oyFPj|r1 z*S;lu>HG_{s?#sceWe-KYsKXS6X^b0P*IxF)ivOdOtxs#+eyBP13fBYS?LIJ4MXzs zhJ%B)D#WwXEXqk%aB{Ko`cf2agMf?>fa%5p&xJ;;yo(X&^oi9LfgFr)s*GAlT1e4N zpSNp(MNK2IzQU8@Z?#(B-wmkoW5Qot8zKw$_He=hEU92tmo|q?bAu1~zD3$#H zyFE@U6fXp_*U%tbs;s(y61Be4g=74otxt@_j zN#}-G_8`n%UPUx@3=GzYFxP9qf6j~$*P4jo&lN;}{4WT)U8!FOuQtkz3Zu+OUn;L= zprO(TD74S;VzdXOZ6`}GrAr+$VxLgld4MfJ&j;uZn;REy0q2w&n(Mw|IJuGW=_+y^ zgdm>`Js4^WZKqbM3^@u)EU918J4Ej)WHN-8!x=>4ItfyX+<`CnPWxYwK(=XdgTolF zu)?lB6_NnFU=Jwr+k+_}7L!4W%12Udc(3MJ=)*nPi$AeU8fLx|zWL027Je4M^d_rM z_kVc;X`u3D^4xOh!6_*q{50Y2AZ;1?(Whw%7nvy&De~$?ulqDSi2QI%gJ`Lo(6!dm z1oG()If)EV)rU``N{L(%RQTHlbz3blBa{k^x5-yv#)Y*7Dd%*Ps=z!rA@yjsJTib; zMULsH#D(Um1LeuLoE6fs$0C7oz-{BpR}Ag1xr0`(-Xl&jX|Gb&Rnl{S3lWw4F2bz= z_ZZ+8t9d$2wSauHTAg|kGtl59&lWr)%16UmPj<<5R56pCyjEW~?z&n6xM_NX7Kqwq zd?C3OC^;Aru|xmCE=?&@*OX+_1J|epA;!+uyl1`my6AUT7_lHua zVi3pI*Qm(VZA!K@P)~*nwzkBOs`4=z59q+npRNbfHIehu_REVH#Al7xCd8*%1n6Z$)G;$XkZ3?LSRaeVvt+vZJj6kiM zDajKm6K`2|Xw$2@cLQUcykwBhnKM^?8BX-3fIp%?_XqW)qTEgkIGh}%>PEhnb)OzY z>of{Dt}a&LzcGMdX%bJw>fkmhbhL6Qf(NY>eDRS|AuqK=IC~%nsHxU)7t)o0DBD!w z?er(&ca`N47BH+^*6y(A_CuxL;fcOPa^=~}!*t5&`Hy@>`s4dwbEa|N%Ypi22E~}i z3W1te^kRV`LXA#|bTG~3->n5D{_IcJ5{`?!m+A-83mAgt@07NMYXh)Bp1Bfj=GJ11 z$w+UMQ5%g=A5o3avyei$P;0e}*J+{4er<+6oyC%^@b3EOxA(W>``fp2-zci@rVf_i zmEEPR9oWHTI5XY;mWhA?J|th-a~PKeIL=07dzpi5ahQ#v7YjMJeLvRQUdn?NfZ5kJJ8blHYp+C@0gRV(oO>h6aizzS(Pu<}6+$i7U@ttjftfDA5%LnZ(uW%x zs+rT(1x1Y!Ju30{8LT-J%zYJ!A*d?FO$-UZbRydy&%7okw-ry_VUsIcGGn`X))buV zGo?C*cfh`)SPN?&uZON+`t;M?{X_E~1Cfx)1>)DO#5xoz1nipC z-2&&uPH4JFvN=|dd6o?@{2~JdVH-E&UvR8~V%Z4DmEjDRp|yjP&112(=uX8Y9n&39 zkvRnMEse;b$TM{vv5e{J>gA|=wH&tLoEThKCLiv;|I76K-`;=@8&3WR%}r7nfqeC?wyc0USTzv59y ztFY@)>iSiW+WCRd3jeBE!HH_utk`90F0oVe;6|F_4AVf=&=B_rTHs`9I8PQHLTV{i z69`&H21pasfrJ_BRhY2|K8`hvz2%9LARx#n6)YhhknHf5&{Ql|6Q*kfvMMk%23YV9 zJpr;&c__yKyVERA{uE-jBCIbbju=XjR$wSlPM9QkXbQyE?bk`Jab~}kGvQAwrBnz|3a)##z%m0B}%i^b>A1}yBPYpu>T|3E*$rmD9m>;g z=N{P@fFJ8OWGOfrKuz^t>Q$wO1S1XFEy@mWennnXs!7lJP_@y10m_IQ&plfTe`TDW z#r%O0`=Y_n8t!&c0Kq;5^Y5`fgrkawz*3l(ne8Ys-5QQ4moqFpqGg5oFV;+HwRR%a zKSU#}2HWxmc|>8-*g!+Y$3q+j6D+0@hz`uw*51JIx@e`-jyJn*h^J}w>c;hXex+|T ze>fwDt|nl~@m`0mx}!R#oY2q%#fu}1ZR(*K;a0^Ew zlD``MlPbo!fp)LJP`n@^i$8t|on{8%^eAN$y~DCGaHWCU}1rZ;3}|X!BhES zlFv2%pxr8HUR}L}S5^jQzxH*|=GfbaAd5w)5_=VEQ)TtSNv^VZ;f-saor}#i5=0^n zLBJSoTWgHn$8mji)A3F*F@*jp>hyC=E-8C>8UtPVc{)3P(+Q+4I`k~<*|uDwt6!22(Ob3 zEsB_DHZv%|GteTRx;(~crsHGD(2fg{jYkhYgFrc^Jn<id1pr=sz z$9oURLE6pa45`3cT)#wdb)dm5ib=u;iqV&UL~c~1z5VhKqhe5XFt*nTX$}RJ62zl^ z`5gceKy%^VSbRsP@3CTn$+zfh$_U0_5mLY*{$J3U*YsqA)&r>eC+Zf6|Q&4;H>GOcS`kae= zaT{AmJV^JnwZDm*S1YfaktYwxf!l-RW3h8cM7kHxY(FKUws`97+4<19#K z&LGr#R7RTi;B%FDN;_pGneg@#;ja{GTe^q#^kTE{;$c5G)#@>JDylF%)7&k3O-Vwj z!N9pXA`< z#ObQj0}!Jhoy&CebrHJ9CRnW)tu-aRg4_+-*|+Py023%MX-NUIj|>rnld3_00tc_n zN}1my(=5UZa3W!CEu@fqjoo9+%gJ`K|NWEZdt54Lf&>f;5h%XNbg{47PC!=K^@N3$ zo%$Rd2p#<~(%UW0n&P*lf-xLe@v%sDJiZ1`Dr~|mV$RVSvmd9-`Q^G#@4=UdXcy(M zmCyy4+7i2j7hSpn#Pr?~tC4{0%XgSA9C)$VPq`-)x%TM`Z2o^Ij#nnsD+55JJZZlD76KzpiJ3}Z&%eyJou86T3$D$s z$bdQ1mL1nEqt^b@gV%#4YOY_t$iKodNa`L|0IRi*{~vAd-`&P>r3ve!;LVB}X& zo-UA-;T+}(8Tn;;Km)t2SA9kt%&o17j3$9^m3@RW5A5xAirO`iH=*TdLT{=<1m41T zs7tI@4;Ar}5%6j=b_1o`1jkRbEUOb(v7xc#5-IEU!%+&nvL)vZp<4SZ7YjcP` zLlhy>Hc`10(BX@lV9pr$a#x5ztKDvQ)1|p<)9~ii@wx4n{RZHj09;|}y*vJEcmVC- z@QtxBVE`v8iJOYCw4rqQZuD>j?JOiu$Q%^tI~B>W^X`kBgx6~Ex{S7NKx2V z#3w-a3)CwGEtMSda*QcSGlQ2dwLA# z;+j-JS2dNw_5whL2v_oy$h*YIGdsp85xK8Rkg#*z7x-mp!%#f%FvOq%E_kp%+=N;e zGkF{zP(k!1^|63W=IvLkj(|A(;^ZGWHq7|-rMUD*kHLg-<-aF_ubpu z4>}3;(qW-7>vsZqeF;W};hT}cj27QSWWB}{sYl<>zV?hL=@g;g zK3{uy0I>_f-E$jDwt(CZXmC$`)8-JnP><%t&pR@_hn-W|TImRCXLJFy)2T(DEwSK8 z3Ou)zIQr@9tYb*qG?)XFDohkOm$l|^8&Gsfo=U;BN%}mn)$q;TeXhhcR2fpN*C+n- z)vQs${Z~KpbA_uBthMKvNq$J>-%kNd;N_+DU^(P3}Ay`-V8caaQ5|YDdg5 zB2YanLbHVhz=u6p8hYO2>UzI7c~cVfK+TR{|9rb!z-SZKRGi_uC%BrR95|#Xp}K?8?d6$%>}QPe1QYKD~Xb z2o|-OuP!Ljx$Rf0RE+N*dCG}aLl zG%n;uz5%>cIyBWIRt{ZjsK?65P5OFFxGt;G3hvNZrLrZ1-(D!+)L zpKCe0z4`+BHzK4bS3oxUf}By%7hkR1FCs3rN`Z6C9S$M5)v!S$7}*5~w-9jgW31PX z&n`ez{Xj`t;`Q z$2ad7WXnW3!9Fn}4ArUQjJU+q>9tL#L}1@~=*C{TQb@XzLpA`kSS}g+YvHnH&>u92 z5l*|^xC=WvzC(N*>b9K#QiD!S9F`|mR;5D%;k}uiUoQ*kEmt7Eow0EJc(&Y9KRLTnDrVD@ zir?d`VO6`K71|(G5P=P?*?NVN$t-(jxsj>dxkwe6;u;W2HHaTRtTLud z$MxV9{I~N8JfLW)_WZ%_YRez&KEyZrZgBrO6aIxMvKC=DkeXBIwIkv@F;2VNY5)Ue zgS-T{05ckx=p@!}(^yzZF$AdbCAr5P`9>Oh;3mrdtPBuV5{l6I`*(kS^Zoq&k3W6_ z-wE&SWwS-4f0+kIZLOL4=y@*n3Li&^h(PV{}ppry-vK z2!u^|EysqpQgvCU_62M$>YD91_ z;dY5aSjrO|SBV1_3DKUCa`ABl1bD+TCJ&<7r5@X9)8nB~L@?Fc@8554-`;*pVA@?E zz{Q%+pV1-3nJqM%p9%ynq!GA4S|EaQq!qxm5SRPz!a(GBfip4^rqd$~n@X7KTAAp1 z!g+;)NE-_!$$by*{qdU>oG9g8B$}754W7&v0I{uIay_N=X~D}G#HrjqAJ;Q!*IJo? zhU7Sx0yNymWz6C%_V(g#Jr2VNdBLEk)7|NUB(j}ax7VP-vezKP1DI3r5&uOsKN|jX z@m_t{2u|<}xa1a_lip2{m<}zcs)K1u$nFG@1 z2qmEdbiyyP6Ablrcjay;VGG?Mq(Y|e*x*K0l<9Z+4l^-~@^L%V3+OMGFV4@7p{Ji# z#&Gubt>nfkGboi`K!Ti!FP@A#*IEazD$PO2hW!F+l6B@h?_he|{2 zcmyt2jEIiXUvL9LjS5w6IsEGB;lblaj}IRm9gZi5j~}rD&*YF5ctDtWDqILKGXco+ z+1xD#qS5X3|D?wPA}q^6m>{DEl2dAO@Jlg18*&3>KNefWU(K>@D&OyE1+Mk^aZ!5Z zprkHyRU!hlRgwILIueB(VAVxUy4?oYB#K2lKnA03*O4JK-G^j0jb<=G%3wcMoDz_^ zi6RDTef#0f`$!?|tq8MNZjes~V~H@~lTwXL>G{1ru~|qUhA4L!L%8=gQMxIOe)Gc* zzezy@v(5bU>Fy~k4)4~PPq>2*<{ZUIp z(SWyXSyF2FqqPu}W zNId8 zLJ|@%kQhl|qn9026Z{kLisEhEUWoh!Ih6rVkO-*lGiX~&!P-7w8OyT(-)dBG*>=?- zu(cX^Ds5^2jCA1OA%ip=jHlrlPN6w53}Mp9p%EA|hDLYme1kY77Qqw8fzX|Z7q7uQ zrA4b%5xlnA%myyJ52~sdV;>$Eo=eZ}lt+G&UM7ZeiAzjqq?y#P?!^om?FIDZyV0ZR zy^GEH&0?Djw9!y)v^Y9f7t_i4!7slEjc~`1yh9%u#e#foQ+zL1ScNvNUMcW(tRVQU zeATGLFR#o1LwZANbN5ID^|3zfdn0W!bq&t>eHShcQ@`I3WAeho3*1d*JTy>aOr#ls!O(X%q_H-V0|`k4R3Jkb@Ob!KZKEzW(d234`0e zzx(!w5AWZ-`9Bf}nHz?LW_T2OMJy=WB<}V}d4C+j$7F8x3?PiTm#8KsbQNaPsMD42h*g;SUwBksxryS83y`lm4CX}ICx z8x1D#PZ+R(SN6xAVlyV;w-45kktN+#<)O89tz@&vN*s>3Eu{`8O>Gra(H&|mj!3hH z)Sb1ivXFAJXeVO_YjeuS2s@D_^MO2&gn`E>f9wg#kMajHJQ87s!l`Hz=3WQn*g1R*ryA>Wb4N4#$6s zmJs<<2xdewzPLhg5pffBw4*V8+vBbR44&GU7mc4qGK8uOW zQ%ZFB6ibeR0)DetGXoQojODA{M2OS;vtR$^_R~-E*Kgnc36*q(D%lR*+KZ+qa1~b~ z$HY~=pcQ8Y>CTS=6|2mApZmfDD-KBpHf*?{Wy`vLnZg2|UGRpkl7U{)8iF$At`k zc8t28kUotYm@WQzy}i0mb8xQ@XBmKccESwth`|*;VU0Jl1C?@b5JxY-i$(2$2m2m| z`i%tN<~{*b(f)GTl(q+&->1yn(*f>;Fxz2TA%m>h^ChZ;Lq$Ok5zzv=^Ixp5UKN?1 zO4uzHhHUaBqufuBBFG^K5w?pLaBsr4tzOWk!z_&0Hvd)B;OQEwaJ{-FZA^JCnmhX= zVVo~^_B$Vm9FJc%5Km;n$Y8#!AQNh_2~7g7=QWdDC&gN-X;spK0ey_kiJJlmw^7I` zRj_nF3P)E@O$%CGT*8@=c&OVdg((k|yu^tcGh2KIlMEfP`E=7{z{)>hBq&~jJV5yI zlM-*P2W6hkw+`-yB$ zJ1j@TCOPNfLYiOMZJ=7TYMBfbC0J_s{m6TAftK2f`%1MVFcwM^vl}&0@Mf?I*WM#L zowPiaCOqVuZ=&EbBRA^TVwqAJ4mjV2{iN;SJuH_r-ODKrb$59OBz7fxlUN6wUY;-{ zXqf?t!C@HUr)7~S+qu6_2UEUWNY(-G{^ZMrE40yhJQ&?1Y3GcE1MIFh<>oZaE1h^L7}WS(Bnyb zskvWHIxF3Dm8SqJ87Sk&9l4+NRp#-NTz#k(t0gQW7ZM#txQ>>ykMP4v#JGevQ+O^$ zLY$@%c6U3Qp1N8Im5fY}tix$`>KC|T9q6uCjtz~~K?M6LHvL&#L(B_xA}I3Y^Dicy zDwvbEpML&gdqR4}V82WL(we?l%Y&hnVZbrND4P4VV^ABj zWRNKb_i3Z|4Z&ndHmKX`8_#Wh#l(?HqO2BME)hby+d<8V`xw9a*%W-P{~TYlR5?|9 z`9?&Wfsw#jL?%n+-Rb4w6O2-BvMMS z1p{Is|MFpOG{3|u55J}}>tJd|0ET=Al0NNePoIVutq8=XG`VF;1yM2J6T8$==iIPp zh;sYe`u*Q-KbVT|K8-~`{qVbQfBcTx)cg25dhmxo7@2$Uza+%^QuF5JyVrkudpr0D z1~K?MF6P&I)#A<1`-k&1dpU!sO2v`}Jfv4Ifg*uf_(w5Xxj`Q@;EdoHQ-y|zOO3dJ zE6cRbRSR-*pmlO4Zy5Q)a1}iWZJ(Z20ccI9Sup@>Ym|u`iAL}OzIPMx|5V{r!JtJ5 z{D!u_pm2(WfHY8oM|iAAL$({Dv2S&GWbAu3#3XlR`V1TUM8yu*M_$C@pOVW5>*8dm zXIt4y5kTv!J)9}PNC;-k2&96QU zN?BA9uN0uKwvF`cL&GRD^9bLp&adF9hT{a~0>h`2QAYpjp!hEczZ?xVg-!$@hxxu` zB#rr^!QpQ9MT4i{c-(F?su7SvZ&c3!)mcoWBRn29Ot7g&7ffROUBe)M4Ig|{A)w+H z0s&*qL7u>_aG{AMozd%b3VLsmO?`KI_UyDQgg$4q9BwzdtWZGN9d_q$e*Sp-E-Vcu z`#I8y9!xN}ePcrGsBC92#5c$lpk<2f#;m4V;JQ&(H8MOb(MCtl^xI%+z1p6=+<}~| zu92w*Zpo+_{Pf(;3-AjZq`CsJ_^0S9=NZ&N%YZW3g!iH>@_Gky@NL^6_A2qq)M%qUEA`L=9xy|i{aTVW|S8~ zZ2(6eyeiT#lVPbM?%Vh8zHjARmo(t|+X1)Kp_%K&9S6z7{?vLSbhA*k2a%NYKv{q( zeQA}rcjnR*YM6#$8%~QKawc!4X3BVTdyK?Pr3nv4A61}ss3&8Eok^Eibwr%6)5?;i z@=#(oAUComXpQOnlE_eGjW(hLIS3~h(01L4aBfk+CVUbB$0+;>XAwP`!pI3c`a#e( za;cz}Vgb+Fw(;*j-7aqbe2)ygl(FC{iV_uJE&2~nB5PAh=Os;1POQeXPdF?SDU%qy zN9KT9u?_MEpvH2Gjyj#%H+u`B{0EA|TOa5mf>OFV*|txQ%Bz|wy{##C7p8a?j+@va zrxP(QCvb4W;i4tCW2DetkXgl(OPCvUKlp#RHH(_(9w<_8q7z$aCTENFr|;ASl`2~z zEULlXBE7HMR-Yx(sMk<7BK$~UxX%~61Hl*Py*))FZ@bn!i=`{Av{rM{-I=tS=+khn z$pvy~p`^GV`Uta6!XCM}?$SW`gv80*Z`~eW8g)9`1sGBNSD`Y2j4mDiGyRxk&SOAN z^tt#U30S7dyMi;Vp;)^7T*0^2P^V>8aBGO200p+0NVxv+{#*FfdtjJ88+Xs3knJow zKRbG~h?PFT#Vt^hYpC!g-Eh)=<^bF_5J{SR3&xYHyPONq4H9PF1x`p{pL8V|GP6*r z1EzynOeOi-+?tMiS?}qd37sZ-C-8j9=44E)BNf)aMw(~9C>Ss>J&WZ_N~z3`XG|`7 z>;|h`?`Q{D1(4qurv#$j?rRGWEny>}_NyyC&>IHm&9m!lfu19SF1L<0awHpxO(o7X zXTjX5cWa}0Iu&V0wKrk|O&%Bv_$}Ma7Cr;DqhM6n*XC1jD|YHGfG%|{&^H{3lFWEw zs2qc3VIEx%`<;-C1hW8bS1D*ut3g48i1#kPk%Cuy6nfe=<`#Rv22Fve!}IKHuh(nT zb{&~Bm!2it3*7*qI%O3DOHJ76vMGRLgRh~G#`u$L3qBiU^hd#1pslkL_#4qyNl&Bw zCdR>j+^5p0ZSMLuE~`SUJ12uLk_`%c<%Bs*UQRIL>IrHn)0X%aaN> zlzy7jKwad1fDSOdh6m|0z@ZMTHVflG^Z+p+528{5lcyjSgQ;rFZI`RZaa7F?=kgrr z_0cU|L(^(bU49IsAETrHh%m7agW{tk7@{-yV2K3&%hfV)Dic2FLy12$#I&#A+j!+ zy9-97LdG+JPGCTUrV)qv%hI72kJ0T(n+?yH&8m3p1X1e`u=}WVy8^F@r~#}llsgWy zI%8=sIH=e9neYKhP1*ylV>8KP}i zNb5SEqGDuwM#-$DPQ8T2c&g2kW;9{CULSO69(8x|{=3^9i(^0`&n86N$&$e)O@r8g zVY2xvIfH1|>xpvB;D=&ugc@8`dmr|NO$LU&o$PiwoRJWCq3}eLTsZHuF8j%WKg20Q zaJ9(EdU+l>?FeyvA0Gm>Kj;?iZ2T$Fpx>-BEgw?E%Wf=Q)?BP|k{mvg0*8wgJuw5@ z+SQjGHj;);Np)aSSYPE*_wiZAqc*+91($Hw7M=ulrO&|$=ZI!P%Pu_nZ~tu+;of2A zQpAqr0ioI}R7CBD=X87h(d3Am*(FHr_1OZMO&e%XD-u`Q1#@=FY}XKkp~PR8p)eW? zc?mQYc%3JoCk|K3Z_bzrZE*~(4AuZaD$AE^2GJcH>FBEh1L~V*zCiSU3%L#L`cANJ z1GPCijkYfyY#0i-a;fjzp3k21_%N7uM7xOpHjP2gT4Bjoi^1{H zrNNL@mb2%8w5G`W-)>+31=L7Fbh3uI-y0K2=*=_a$Dk13(kWxe)<|WuTJ{jJ$JaaVZpuQ0pWYZ>KzoATpO6#IgN0OGX*5&q;sDFC{o8UPsVgg3E zbj*Z~r!n0c5e#W%{PrE9I98kjI_Vr6)Yf&U|#Arz}fVXBWhDy%w#GNR=5VBy{78 zaJST|I2CvocsUe(z&>fDW6~qj6U3FCq$7_#P}xxjY97BG(gQHX2xjvFrBe(mJIDC5dkF-U;;R$X$o}A!ohb89APw! zd;)6=?bv<%TwkLU16(`eCrs7@OhQ7z?j(ZU`;Guycs#?f{)n**AETeOntN-JnLQ~eKs;ECfGmC`5h z;3kN>qJu9B8#dJ&evQ+FFE!T)`|_Y#M#bVvyP^g2f<3l+eo^*T3K%a8Jtbc2X4UgP z9fn9!yN~I#(7dKMec{=B>L-X_Xe;W6f~HMmKijO`jNu5P*L$#=LPo!&*MTu?5UJ@b zs&%8SG|=&6hcvZ4Yh|}rA0>z+cXBM8C!#g}g!y6dp6(^D{Z8Tp?hz+#c7xb8LZl8F zSgcoWmzURFSWl5523$sSRX2$Ksnq1#N2)|7@E>!@4EptSdJ^Q8ko@eV+0{xSBuuL6 zPzL&?Lj7IxbBaPRG=Fle#d2p>skZK+xxXV6&ub(47%O}zVv~xJP>U~_Xvl61Z3B2F z^D%8`H&?vdb?=uoFt%}6$TJ(PJ2#qGfPbB2DpQdrV!9froD4>Y@)7%DG>D#*Pk1)y ziejK!T>i(8iq3F-b8Qwk+>77ZK|Pys-%A3Q7$0eK$kOn~FI+{lw=_+<*^US~3FZ`+ z--=AD<*EVqx!0SbxhR-9q@U|qG}}HMfqE{KsMgnjiU~_xOZg{mV|jZWw_=tGrrINT z$E1(MmVSE4LULc%=Lo&!Q`WPm_8GYYjQ~}#%{)E5J?`}MOc1aDb?pxbWaY%gEI?a~ z<5{1ad3Df$UN`QN$M_wb%V59I9rso-)>@~MP1V_^@wDNh#?rdBFnTB$WtderJW;@7 zv|WLba{Ds)u~v(hRI`iN(86pT=@58@?tIIXk-~h0LY;FAS9qO5&0T^NiHMR)ZkZ^Y z=O8?GbB6$lr%@DT4but}`Q3~k+ra@^WobgAc&j;q0^MfgE3_KyCdxNS4jgp^%t6^N ze@l}AV@3qvfl%&XouLgs}RTF zYISi|G)Bl|q~#NL1_g{RNCsiXC#w3?f=X8}nq&|x8^U&9*d=u-9Avs@m)>lo$?mSN_U4cy$?u2UHAl z0bM{}OUDohboh*u9=;;lwA6$BoE*5^EmRUP)Q@nF?C=03ibLFsSoFb$d;d^f_N0yFoTULM(B_vwXxtmU2AzWPhmyB` zBM=s4iUBhfPlLzBN&xcTdK@8*{MT|}fDT3#J4@s9`Wg$bbDT`kYV>X5t)wD6e>nVF zdAUMm>l_sT#SL>$f*uRzufyxq-j6DR-l6X6rz%yIfpKM^@xnSNJ*k)iC zWZMGdr)*nr^sO{ZWcR%K@8NiOlgEoe2j$ftaWDrue`^{Pu#UKobQ*%UPLtT$PV@g| zz0M}1MWnL;4#E8(GK{F*|C$)};6bVv2PE8(+1dA2wJh$!h8X7GDSa^vsDsc~rLRu45 z7ygH8-NY0B`HDQOSj=Z)_VG}bdO1JYb}9l$%CLKKW`#Tkh5X(v{`{_#{hYl~35%-y$t%pE*1-9{%;qpn)6ny|!grU9*_ZBCz* z9p^<(rIx0ms40@`OOcQecc3rp)0Du$k^sQHezkdJKF1U;@ADs70_+D4iH6ZBS%tV{ z+xC1c`-b3Sm456q!<3;6EL_YEVS3QZwIrwQ)69k325cYI)&gB)qthK#oJ(zE(^u^1 zu)M7d;}fsr)T}N>e|`TJN$uX=x>~KoFCln5d&P*&tKJ&uEfZaB=VwUy36DSN`a$Q) zwpm_xqM)X-$V+HRR~PVoQ>r3EQB-W9`iKc;K-aY4^z>vB%xY%>Jk3uOy2Np>A|!%{c3EuG~zRfKQdWk+B0P$#OOY8ZTFX zPdHdwQ5>_2_yKmn1+H2jYM4GkPx~`B0K~o!(rHA+43RP%1&IVIJ-ww{5ySKNmfBp!kwvW5-ZvXt|-R*bK5O6z0UX?ITEPuTev(IVa z%&OKG98KerX--!}y@ZCMRl#9EdW>{H26}Oij-esQW*2!Ddwm{(1$7z34b^WObab7wb?Lq?1U)sjb&kDZfpaX){c9ZH_#3#mGQgp-n{!B8ZC_NH|lNj zS3tN~8*<^NE)mSzM7HMS%BM_nYs&d-HyB zft;Bi-+zz+51lMCYoYK>H&T``%)N%LR3UQePAUoWcq!%FqL0%dF3JyV2yvVcDMQA$ zFL2nnPlow`NT6RHREc!E02=%@!dT5y)be6t40UezoC2iI{lkb(13uCfbM`#gG;+8U zE+bwledD7>;k5@FbNy+uV7XF#tXoDfec-|8I5F+K*Xy+?B}gs|{V;LN*4 zwV?`b@4iPT*~? z$d+5|2%9`}mDD+x*YDSD0%(O!Y`2gxN@B4jzUFe!1OqcY0e-z?#Thf7#0)L+iaN8- z0Nq%biep#+t|^ZYVbI9gHBtiZ%&txV#94%BZL8+K3-Be*b_$->+T$Vs?5c1tv@cpa3%Rd{D8G|{k9wRIRpU&w~B_SIy zw`ro-X-#{eUEt_)`AZ958cn{MOdcIPnI1hl!k@{(m{kW3j!veNUmU%Wvw|vnn$+6- zZSF^0eE1AGSu|i~umsw#P@9IejiGyu;}kWGQq!+U7AM zOU;=6GHNu>W4A8)g>R4uX3?oPEQc|Up>DS>N09xLPNRBA`KkQ@zW7=PV~*Vj(Gr8~ z&jxYb{-df?!KEF4w-FK^fq|rg0ela&3VSFYR87+C;c;K^ED+~ApC#Ss-Zw$-iHwo= zBSVv3NY)ZLOIvR}jM8e**_3J5?#kOllQJ;+VuSKP{>wLz;ek+nN$A;)`UxC%yT5(= z!|M-VZIP{;NP(^8R^;|V+qWkt0D$iK??^4Qo&32t(d?QjkQR{;ZrQCdvkdVpZQNBOrAHTK3aik zbmc6pz!N95G@n|Bwu0LqQdzroxkp3mF)#M*Hd!zbX*be+*x!vG4%auG-Z1}X&pt#% z87vU)Tu+O(!s1&Vn&ZD*|FpUNKJoTVyRDR4(i{QCl^-Bf*??gf8TsjLyn_q!cs!n* z8^DEH%)+$HxO+CY^x+zTeNyCB2jU4urAzCU@bIKT#1r%KAaSdi{vz<3c~?oU;A+QX zV1|5L;P;LSZj#~s?kfYmL)td+co4oTjHzmeyjTD{tMgY>KN(ojlTPXn@g+E-je4f- zF?gZ%R`(;YT#F#Oc!hH2_3Gqms>4xOF|oGgN*g6%qoZ#e(hl{9XddJ(t5Z2b)tAWY z*prD14`gMM4!#1rUU?r2Tmo4H2hiDY=Z=~YdhhVGN5jqfP+5*GPw|<|$h4DiZxAsP zuQ4V}8z(Mo&un_bG$jIO_$f>-8dX!Lt9}6;e}F~s?~%$DHzZh7Av0T5bA=H&8z3^sh_KtCPUpuDZ@&GA)_uw*DB-yF!~!@k zgO;~w40{TS9Pxm|I|R-aMxx>9#cxC#A_LisqUKQN3!?Ddv(33HUg?Mz0U8%)Nb%=E z7I1>N;<=FDmBKWvCM5$Gp*E?mOv1McXRK|VoUh_kq)@RGuplfp6SOIJG)gc52EZv1 zsZ_cm=1{4?mFA1|q#D6Hq(!d#F7QcFjZbCmXomj?y%@857|@vc^XL*Bnl!<5PeiS> zBc5%yGw0H~%>i$6O}@*aVQ_#=%)^h`=%a~=0rhN!b(i$fw)jq0l!JpYs^_`B2^+2o zaFWm{4(m#DcNBwQj*4M;u^b`~7T(T88UyB+(&=jg_Wj5s8bzp$7~{t6$M-)m5LSTW z59)Q==UePyu{Zgi31dc=_RK&=$Hv?Rky+&zx(_BPAe$&4$U!REVDV za1Rq%px1BbaUG6Nxen%U>ANHfbc!{%>s)o{QprRM}Wn5CtaYM_0Za7+ss4Q>07gt(7ikR*$noYf_Su={N)T&pOD8m41_Q_l2ZZhY8KOX$OZOpuO8}Wl(4~>@-IRLlDh(; zN&t#OqQ;X(3qCwT?~pAA(>}*(Ufy`93$+@PDR`PDEu5pAAkJm z!|nIK?^HV5mj>_mJ|5N@dE^2`TX`VFAt{3_*VKMvFPS*+_oHj5c#sCgUL@zKV%QNl zRX5J*g%#ILPMm1c*4k=NpN2E-<^p~({-f0noVrvtAa0=>0_~5V#r-KaKt0*LMPV4l za{jr&C=(P6t@DjIlMPOIEUbO?=G(uVe7ODhNM1O!u`a)L#AKWY1;o7m@FTFvSP~F5 zLLf8UieZ5*)FmJR>jR}^Ql^h8V03x_GAbMjGQqO6i|rcK92xaRpEFkV(y=h>=wdm4 z49>k)&>TN*kfi6kbF?TPzxZtk<2ItLq)1Q+>(RW)217Lo76pttlmS)DV2{`Okd{#QOc0-^Qfi|TyrWm8~ex8Y4 zdRiEBAk40g_XcN1@7@VKZM0ECQ*^_L!RPg**SQd}09rnNhFtl+P%fi%#+2jls}Bwj zaovDl-~cw2^B)&+_ItZk4*&jmf2QMEz zGPDw~J)uUQXWG}TKo)o6ZrI}pKcx6RL=ZL}Qs@PC7z&N-^f+fLDwF%>gTgpkf`cUe?Q)|fi^L{SeH(L+N_jJXf3S~Ietl* z?Zz5jt@aVoXEyqIJK3x*bX#c8?#B;l1L_6NDQ;ul183)f8WeYp+2W^94zvp*9SNiq zA1}@zec~VE`^ga%1`{T^lo~}mr!@gX007`!lh0l{W}P0R6Vh!7kS3HV0j}mk#63~~ z<`NzU*=Mln5OmkW>U<-%m_XCyD;>_6ZZ`jtufSaZ>@hqK#e^e_OAt3zG1T+ETiIv0 z=`RP*l5lVf_<@=Jho*+RT-MO3q22!yeftW#<-cw z@QAd&8X(TB@zPRD-w9NXNV(4?)<#m$wu<{CVRy8C*!tFH_&K}ibhduYHG;V7*L=Dm z)Zl-MB~PyMNE&g2Sg#i7mmw7{Zyq0w%3$pEY=_9U7{lz7d+u_?#|`B=LDgN5)~}El zOv7W)m=r)WNdU(B_hg1U@3}*2(B9BcdUoPLd4A#e;N}D+k(sw_Og8rU^3_JjYBl5O z-#$Np71Y#oft#Cv)?T*&4(AtcK*y`q)fhyQf2qbA z7Y?Lp0ebVnHVFEeW#udG9Lj-NrMz5hZbTMMr_4*Oh8S!BgD0_S@pPwCA0XEgxns`0 z{rKjuNaM2l>+Ofdhc|yUEiq(I*c?nrTzU$xs!{|e&FLighK+XOoF!b7AjqAqPt7SW z{kA7TAuvZ?Yu#$U^)VFxTYr&@61d#gQC_cLG&< zg#p;yzJ2}vJE{D|1>pMq>+i%|05Ri62xIhLL7eE~+A0Q*0M>!p2M1`|h{I7QLfcmJ zbc$B;W_Zw1$6^$bsFVK*byE18ZRV%cmf#p-%#PF;9Mt44jN0wRJ=>D#V>*_O1?elm z3CwP0XXng9GrF&1%eDh(Ez1RxJmjmx=IT)<0MJwdSKwP*Rb=)!8&OzNs6P69sy7Of zv7S`oM9l5g=GA@pQ*2&||M6eI4rPp*b}vrOT2N|)x^yaO8UmCgtwN8?uY}n+O#o1!LaPxs zfB)l;pFSd5=KVXl%g|`7Bi0{O`kjSFWnmWWg#?4?fPPddopcp$GCFn=VM+jPY&UkXP ztDd;y<-_T8agHve3l*M`Dg-mShBtAnqGJ+EKd^utxYt@RQ5kQ7IoAkJO(8* zpleRd^Q{Um%gfW7Dm0zmpsb5`s+{C8RN~N;`iR`5_ivE{>)zfB*+1iVgT82q)B@ zztp*+eLjij>6mnSuo`eHm>dX|5%&@W#@vxO(K&xKiU!mk)26wfYB$BV#+E*TuV6rG zB9yQ=>6ElMF&RnRHK+-BYbP^d4{4pdth`Om*#^0`M4A}YZv#zA8$S5>Ir6y7D4-50 zxCVNKNWcaXSt5-J>h(yH*Et|*DERqE*cP}Jjiy9vqS#_Jfvuom8@EKm>|jYLK+#jj z#npg8&c{1sK)J9(6$?7=3NX!bqgQ(%2hZ=`e?r|yOi$2H_k^fA4ZZL{8%7E)$auqZ zo&iD18AacUs%dG}?5c|9Ty|rqbP<^X`N_r&c^0Zg(REmN)ak)|gzB4OKWSzAo$`J# z_$@A}h|t{Uk~+m3WCH{BwZy{rAC3J>;`w-RaV% z3=swgey&UeyTcxe%5g}+(QVK>b>PCr=Z5NXnNZi~b(YNt0e<8DK>!aKnP805YOW#r z7I8zcdv#RFE_AhAO(_OxVF>}HSZhubF}jEPBpM)kf)XppFUbd zDRDlb%+e9*bGWo_zFVV^@wAeL|kPC8&>A{iQLmIWZg&nba**N_&t|F{Pwrnsbf zB(Fm5u7;#w))mz&L#x|jXg29-jZC2kM#(zU@rGcxT6C$ToqX@oU_PM8{|L&-@;_Y? zfiW;-oY@`^aAs=`s`Cp z_lpAz0dnBkP4~bX>MW=}#54FL*ka&IshQ^q;l#wkAv5m9_PM8QFpS2t(QuTG#B#_g zXfUJMXx`@2AAZf<9V|a>a%#AHI~$kN6=I&n8$7xT=MVo>*02Lmf$`@)>RXB@)THYg z1%A??3qaXnb7G%x%=(?;$~UMbxF$4XN}#lq)=w>9PCZRC0E!v(?jksY{kSh&eZew= zW*q$T#GPQ=+lay&DCjcDa=c8ST}2KT&})N6J(mm-A!pM0L#FU+a}(a2tx#C+74kbQ z&aN*;`c|5mp+qsJlKdY)1OFcMg`V75(1+1C-7+$KB;^EX-aQ(1;ZwKyX1<=NQ~@ro zE=s+!;s6E-8{n$VE)mG?ECDIHhIuAFpy}3JDi5^-9y6x%!JZ&Kc%8O7vrc}QsxMP^ z8DbV!$=wGtp44(EtYzZwcn%&Mj}_H{7KB;z_^06+g8C5j&88iS4zE8PXA3mJst-#5 zh#a>4ct#v(J(D%2Z(o1+_xbC$Z~uhq0zf*2luFtrOlrj9^~cv`R37%b>iUAJjo-ch zaXR_an~y}Gay#EAR`fe@M|PT+Z(gmhRuUelwwq6L6(L**a!t~p3&%iMkw$F6-CoUS zn}zTjRQn+_GIDZHmo|fm8j$%KvcH=lE$IMrTiz8oJ=AR;z1TzKD;p zQ%*$h4|2sOHC>dGI7Z?F(j<)Xh2T{W4b}%~c}U3Q*(xrjBGN~O%2PwV-RJ8!~4?o5r~d1@M68!Ty{_hspZioC@Ttzg}H zgo96}SEpdYPgls8pvszzH(8xu6X*pGpBdwTWO`d<_JC6HCnQH0*-N~cdfN+x^DGM! z0n5e(3~l`WBt-_#9KD(@38BK9!RL0l=C)766Bo6(Zmc?Oj|TIF*rLcJpdT}l%3iCs zisKun<@NE=$Ty>qOz1r2Go3zmuXGUQ0us!^v6$ur%+D38wv^JwoW1}?y4tL$nu}wb zDTPv8xKc0(R_<@y^EcDqbr>3WI(A3D`S{i8-%j4X|J(fITPD5<#gj2aDdj~lf@0B8 z{i&PnclL<{tCRqSG?62Xhr*46B-7Bzvu;@GR~UGW5pj0|IeY4S(!q0&dH0Sx?lA5W z!$1`#O&Cl?yp+-_HQw{vUqVs#*Y|I}d+<_BpE5+BvD`0roBB;c7=qs9u|=g{!faF| z3JS=#U9CvFj;Aw31LJ*=QcDGTlY8C0D4nkT<8&6Bn*jc=i=Bl6u@h}CH?&s9yFOd)CGSN$D30Wx@sm3x1)Tq( z5s_PZalDqL3$zwLg&T-oz{`LJ%+4>&ksBE_JPf1h^X1;&oS~3tNhDnvEoL<%FjI@f&A!IX22dwE`wW6&aa zs&e-~l6C1mA1Hq+C^=w$jLXyIY%xASo~+U$uiR~FFv%o0ERcu<>_E*eSKQo!NVxA$ zV4&Ks^%RJNw5T!g!!&vEiG(Q=7&|=)wn&D>4JGggbaes+_c(w+60+hlIHTBr;ynPD z{;c!ubZO#ZM@)-pA>8T6wtX7@>2Kkjt^Gt@GVl_!Nl4^Mr|&MOR9%IaBB7#sw~g*o zgTzSM*%@bXjEG+829vw_eZja1;V1UoBX7C13zR__URkFng+8;{0NK^C-ZiUw_Kdh^xpXY0ozW^GZ&P(4R_N}h4iAu0C_A6AR&l%F#5>&)T6ah$ z7qiJ?k0qto*SN&{W>Cw?^>K@A!%pRPy-y9mA}r@Ut%&D{lGWk_bxrpWhhCpPT9}U& zdMh&>fyN$Wyj7xw^$ejJ_BI5-K+?DG5F0XyWHw$?o@EEdWJE+plX>mJ4JwerVCM|0 zInp0Fekg7U>)Q`+;E0mBTi{d5BdZ0*f`8a&it2V5{WopIldY+H;)**Ql*S`wrj-#u z$uv_IiYtaT5iUx7kVu^l4aAUKLLrr^d-RWCkNdiI2KX9~j@wqXOn~2Cy5UdNun@tY z07b#Ph%ER$w%-|(JU~-!9fr1Wq(U+72H6aa(5=RFK>0AiNsfp;{FFZ^!G!;D8I5b3o@~Pj&XRcg9Q*FT3DOyon@p~h;C_s1&6DkUD zS$&KBLocr3B2M}A^Fuf0N_K(@Ij5f=?T%;d=%TR~Ll-8Q;t=%f^kgCmVp&1*x!|-O z!p8~g--G5(uQu3DBv8&?A5&)H`Sm`g<*o$vIa!=5+xl!L=5LY)KLj|LtY&%!VJl-| zJRk%#e7$KDaZBP_8<-T=NG%!y=ddVXO8JUPNs@RARNTd)LJJZ`FIS#4 zYG!Q`EwI}c9BukkQ{kcReNV!bYDo${>n+F9XPS-dfhUGm?8K;qNgq z9i3lMK;cDTKXE3pu1F1vbjTb*JaCN)B~)4rwq~31{5ed@{=q;2IMkwCCCJtyyXfG= zV-1E`Im_$O&Mi3J?ag&OJ}W9Eb{=#0O^EUT$3Mi8*Jq^^17(`Emkaoxx#u) zNO>AND3A-Iws|@UCz!|&j>=@@BstlbP}NZZz)XMr)R3E*t?dSu~!i& zP2=%B>N7fqF^1IYkkJ><<}7osYamIDF2T93E}yNSdX{N`*W@RWZ_JzRnNnV&dV#x= zhc5GJ-4iB~;ntE1!0#6P8CsneFnL#C`_NfG)6~C^OEmQfr(UJ;h}CTvd3%W&vK&_C{Y7@D7==J-pP5Uwd&adrTchdj$cc9VtJ>@d(pvW@ z`06Ff%Vp4b6oRAU$?`t`k$bECz`2bs=x8p{rGq-ud4{qMdpaR^%r2juo6jp$J)0#W zSTBLbn?lsP-MjZ6Za;qd@D69i*gXhPCl_$KYB(Ti9jrsUX33(FFQehX@bplja0R;E zMu1as>h4S8WKzquc;z1PItLCQegxu5E2)0*;ZJ+oz^9)g;R4Vn)vr+%4T&Sfmr`s(cIY^{-xi-A)2?8!nMPud;8J#*`n0tI3xnM3xyB`!@FiCXVIz_t2 zC;#@lDs+R;TloRrpkOn@r5C#s4_DqI(WvA$R-u34RdJQk4;NZIeGG%lfPrkt9Ei&bU&ay$qr)og(J6lxy+#O{OIX7_FX8B(3HMY2 zfx9kBi0acwRk2pe3XkyuS8E4I6si^C?rUO1Cz{72WHD6uAP z_cD0*Ehzz#LUbVO*-F*!;%I0a{Wjl8fwlbUfPp>voG#&`WHm7)EhFSpdq`hqlX&jw z8ZeC(M5hG=I!)?y3J62qSRt$6=9;0w{;Mz}>AFZ7i<pt5$M9^|8y%{$bU0!sXYjR2#BmCKA_fa(*s zEjE2=>-Kr=au=FDd=B6pV#gjY-)^7tOQiJRkifl^B-PaUV78UM;klEdf@nCCf!!?5 zebrdd%}ZT2RHk*XQ%h95b&X3SRmzmdHD>Y=hNe2ECW+{kfw-KI5ZNR9b2T5 zRmPYt{&>xdW9aPlfd>I2+xR>7ysB{@IE#xmJYDe9Us+%V3O|Bi1HbpC>7p^kj|l2 zPS<*s(6*Z@Tx_YCfhv|oRbhW=mbaRIy;9b^yHcSXOx$(LeIKnJ@sm*JM=~M9CNOVM zYwu)h)MA9D&m;tMO!1@;!MP}5tvElJjzH@mfT6lsD1_m*YVUfwA8|EZp~O93Zx`6L zmUVYu9q+5V?fVA^Y2c$UIoLV&>4y51ILEu>d)4qbxRs_n*H0-I7lwkh>q=gR{%MEy z++P-Tg$m^LpjZxrbSRpx&a9jYI&pPBBh0O1RU;m*xtQ$2Q^zF+RETC@=$PgE4nqae ztxVU;IY~obrAXmJdH@nbsA!u*(uM;XVxp3|hSL_~;8fw@C>K5cn z$P7cbAom+gB}HDSx9=OzV}AbpSKI*7|0_lVw}CgIEgEbO93r+%>c6~LJ3H&dd8l8o zZzgG!pQQT_#O7B9-(ml8g+0jY4%6zASTt#o*K@hJZm;Ka>O#52(PSDr?}<2A5?Szl z%L_Bm!)QJ=1@fn|ogj9mA_f0Z6c^U1 zejMQP+|O~sB}gd0?bC4S@US_`g<=}KxYGKyI3`q=Rc9&@F_D?;0Cb}C zYukgwBGGyuC~VAg-1&$|#}e+KKo=3O8Mkr&odzRPx62vk9(^E%9_&i^3ercX-&8*} z;?f2dF1qws5;ZIoVpg;FH7@iho=%rFm+1j`L$@8#ims)~=qywMh7is<*&GMCOLkV{-$5BA0TBEliF5mN+-q zXP{=OSCsBB&0J6zU7CBP7BT@g&iZ{OjU@VRGhhhy5)#3jUS61o1h{|VB!Z;ztw=&_ z#=eRNT$z9jCYOjWqLyLCY%T-M7C((V3^%vmvf`ar=_?J!G7viy^M|7f)H@^yl8J?J z4+v}G8A`|Io>6q!#Rw-6Ldy+cbn->Z8@c%%A~KI>*Qn+uJ-q36AnmCLj*WQmFOx^$ zSRWwXgT&28|99{;4@Uo;{;b{t0>VIVV-*g5K?zp<$H)-jCfDIjI+@gk`U0tQAa$Mm z+r^>|{Ou5dKxL4xUM|lvUek3s=*4N2g1jKSY0w{%TeD-G}>>~b>0 z1Ee}#fOlIQ&&((dx+VuT&Cxr2>ZLRS;Uv}JEGOp*9+cR}=fqLMY{5XdzHFWc=%HHm zRZ%~s^tCFHMw(5ChbP{Ru?q<$bUO7s0bHSd#dY83(e2eOjjPKqK&_@WLf_~msoQL(?Nu4j?q=a=Z?}&H)-L>axlYbb$Gm< zgtjk5jg5OUi%iCVZGy0NN&6QEM|Eb|60xgd!E*zc>Ux_-@e=HJ#If4ev(0?B(xVy3 zn%>NjhMmg6#rw%STV8j*mcfkttK=xy4uDQw*Z=^aUgJBlqCGzqN$L^LV_sW&yjJp< z$CROY2gPrI=epmFx0>mIc)llEb-R3y+zq5j;gklWRrd7Z?(J+ozXmg|tN`~P9=sf{ zpPW9Aztzq08msFthn3;fL6hOL1}*{){)tUaP~ZNll>+IHBSTHI&t5rsLSzE-i*#ySHX@A4<7?!> zut1XSnyh0+gKdw#MhqDkDeAtvvOwFX;SIDIJbD3=V8?mnRh5PMZfEDvHqMQvE|3@n z7aRoQfr?2l!F_3+UX?7~BotRU4h+!L43o>3kfsFv&;cf5%IeCl&k5h{cmfMSEHN!o zj;@4e2@Wb)YL;@>GeiXeV~BRazEU}ReO?$>l>|W6LsV1~Qg`q(ZeH-Dl$H*E@tu63 zl3Lagnki=@Wy}QZ6U;Bg4f1TVC6_7wV&8xX4h#SlMkXH40Jw@KdVT45n&3-_#bGpL zsXg=-A4#Yw`H^J5YjHr^Z)ZruiWL>ac77P-fxvDkLwSYNDo*e{H|oHjT~VeYZ+! z+b8IQJ0F}CnIuTK&W^Q7oNe1Zk5-dEG6K1ooPYW3cli4NAGW$cz3>!Kik=a>07L}A zM_GfLmaNx@@xfp+n(VXc=ze7Y26nct5R`zK)(6HCKd@A_5N`K`AxuX?m5R=-vMQ4$ zmB0&U01aq?W~{TE=kTP0!eDkm-wYk%UaK~&fxT`FN`X>6+V~5+jz4}WekJGw4^LcoQNKi-dm$1K9bt)SG%b}e{N zYcRMdaN`PHWeCKjfA|aLvy2$YPw#$y^ZmQq??#yAJ<{vX~}Wq zkp|)=)cc$;_kkDKNU%23$xDpiLK=cY=mk!JgZfJTqh0CII2`ZNd(~2nPLol$!9gxr z)1^!HD!_`(CEzu9V*I%buQ5PVAia~ykPfXT!TYARJsPYP02BZcBVJ6fXvgN+6%XBZ z?#CuB^$nD3cEufb)Lv?Y?F%rHoCFQ@gySlO$axL2mSR8@+9O)}6XZST!A3m)Oa;}H zvqI7dF^nz$X2-d0)7;ZiT_DwPds)6tv253oQiHfp?{I~jgpF>4?iIln7|v1C#@3o} zh%0Fpm5LZ{d`N^31L*a;x9`9Gi_9RRR%qe?>-XLYy*2SBv%VZ09zH%ee2Nn8)A4kC z`*8eNmD_oa5i0-)VX;Z#ZwHa4qkt0t1Q2x$gAHISF7zb=Z`XrOeT&U=8AVvTc6M=;nilH)uCraAFH>K`8%c|}3b7Rw@?qDu{~dg*oBxwA+J zR_ls-26t3Bz)6Zwg&18biiYj5*D--EqM}Cl3t2kK(S4e5z?QL(YW)?n^4X8jGS;jA z`3HQb{DQ2QC7rQ*HM^&#RI!@fYp@@%C{In(D;>)iYH8sILJQD5X#Mh&vFKtG0EXAc zC&l#f#N6fRI)yE6MriG*9KcSFzoqN#E}F3~R1wgY`UHX6%LxMYK=3ueE%t-G-cazxm-ehAUH4imeGl2O|1( z^YY~EWQA-5>eK7;usmVx#Da1>4JG7yuj<-HM9>C9DFtdPs z^0#L3D8JqGj-EJN16^?-2fC(y^6sojZ!#<_+@z1=wTrNEeYvLK)$%aHwcuem_fV7x zyX+0~lrF6d!S{#iS_CpmKPeQgL%(gU7?aGm0d4_2t}tRa#%Q3G@THR`j%sVQ+Wfcn zp7$U-1;G&PG=i{Arm!Y|xOYU3AFw4Ox)eCC49r?QZOyo}oo~&|WF9CuWe^@Je*sYa zQn-(TDMi^zXeW1D;JzrGSr-=>-9(YasIdWWRXsF#rD98WBRG)j7c?JN%5%LyEDF*+ z^C?8V+qbX(dTZWJ+rPj2_JbhvIp(m-3t*>0Qd2Po3_=9vY)PYcHr~k}SsL603 zbIZ&eEZ>NiIeQUhLX#DjnU1* z+b7G-R&S-RC_Zme$d_C0i4AL?&Yli%HEoThDxhVQRRS4fOl?4Xb^8k|95g)HTu>;XpH1<0U+Dz_t6Na!eIe!a3YNA*%z3iOJ{&q*``6PF&6i6^-?G#F3hDs z+QivOwW}era@eMJN(WG}@)HVw*pJeRPGpq~`P|W6Zf{NR}Jiw0eH2Rg;H82cU zXOk18imXabv_%zNsgrOG#*_FI>bo7$v*bnolkTw0*iC z;HXxtS#X+nFsvLpbFZ@)E{>HQ$NM_wKp%RE2^5}m$1ikT#bWp|-=`WS3Q)eu%Kk#l zH9wqpQo>p8cHv{m4VF!Wk^=Mr!DAdiS8~r3Lbl$L?XccZF&Q*=Ev!~8R%=FfPdez< zxwy0@aAnq}Q#hdMXqgJW@N_AoQ_dRU)~>Uwtc^$21b}wsq_kk-!Qf|Ej4!^;olZ>$ zFbkl98yL!5q5(WA5R*2gYBk0Uu=P6ioNnuQ)N9d>+G&+sYe8$fPSl!;(yIUA*Xsq# zHK9_JkLTt1_jWbhJNbRel6c=AgJ8D@Iq(hfUOR-nl?-b@GXBlgk$#{|W$r9%hc!KZ z{qrq2mO?z}KD^!B`|0HE>z{uR&4{EH$lV5xCBy}sd)gjSFTv%YW0cFbRAizb z3Rg0<#Cbrv!w0lEhBR~-0s+HCjjq|KsO7{JO;W0U_xN!1o40R`Q-@a{y`@x!fhHdZ z|4=Of7j;KyO-RsJ&rJ|Dy{y(HbhPB?3;E(A2hnYPC&kyY>ZzA@f3wp2f-um_Tx4|L9 zttmKU{7grRQ-|n-i2ngkhHB>_#sN!r;Smc$Kq8xVuVvO19HQ*gQe}U4S1YAWEA%is zzCPX)A;>@nei3&I%JvrvY|W_K;M0#Rgnb^R(^JF^JQajV`%ezVOjfzx!4PeR;}*dz z>m41H$~=5>_Ob)yj&)!Y*s)XaP4Z3KZ6)S@l_?n{t@gMG7rNR^P6V8DEA9DtpuFeH z22;x#UKK`m;@mZTnvsW-SdQHBS5KZkdHfX0zr&-)lj-=;liPot9vmqnE=~!GH$w!r zSf3Dr%N4|68{z{FiW~XfAyr=9JA`T}eSSrsg)U{MfZVO`s-OvvX45A*hET4l>8I*4 z09sc)26!RBlER4k9Mb}Y9}xV zDog|w71FeWb&+N=UubRvHSL)i-P9Y&B`UGuE*FC=JLJ=RNb(&dh-LMxVh>wLh15bw zLmY+~`4DcDOcCI=NB1AvT$)(Fha->+vJ1+hc|NK?HGAQQnlM!wf-nj4+uK=fyarsE z)P|*Bh;F4>0`oy16zuJdslQT#o$SZ^ZP86vbe`?7h>uK*e{nvg!sJHK4qbAVq&4+(4;DM#0+j}uh`L&i=C!oZ?oBUrc zH9|8v-kMz&rv#he&bNRK-EMMQ%E!(%ry{ z?{1XkS|~_@%T?v5ebTWCM-de`Q4&_ZB15!>|1e3l{np%Z!q&(^xX&cq?+pKZhFN9@ z0{3EIv%bxaNgII9SlwhVv(Az#BZWJaTp5b)rOOV~ftP<2gA{q%&8pjL#ktdN8O7`o zQ=b3aB~-z^1nvz7Ps$O=t_6JnxH7=!5&mz=_;@D^5f3~ySSy#lusNyzH{^SPim+!t zyngrY_U+hR&ebLbVFac@!6Lr`Vs~0M)~DP{eN)lGU<@Y-Fo18y-p%WG8k*@Gib-Q? z7&=UXJiaa%&7#n1^2uOp`w^T}>{^IvRRnVr&|Y$g1kz2attVG^X||qJ#TID`r9dSe zO$Q{V%I~4KP zN{I&`#AV^P^yzdNLeh5|s=;7t=gi)ido`R3jHm&L7<4YZ+RRP1DZU6g2jc3lmSYi3 zAvh=~#^EMxE_^EHOX8FRcmT~T5G?$jG~@-!C~1EpGcz{ZP9Q6 z0ZM>f4fj@v&*{4Rokn3w)Ip;r#bYjyA($a|?w0eh-6>6+3QpG_^{&1I)az^6m+%B} z=EWK6hIxr0PEfFm(@yd6QN>9Ez1)roG-@E*$g{ZVI1uzY^%}uOU5>+YyzFT8x_xf8 zG%0jE&8*jlh0_szv}fgrADcc?=yjYwdTP{8zh;*4O3*h#oS_JwaTaiKW{PZi?bsea z?sbo#dw)rzm~=zkm}Ahs2g%v}bW>4@qmdmv@yVw_aZ!99Rpy?{RgV9%;&(B4JMyZ8ks6N#Ai3lKJz1 zpj~(wRf(;vcJkHWmL7{)gR_S78jF+e!N@(DEj;reL%sd}{l)w5ZUO(>Q_wdyoj+R% zGwxcWF2iEY7axk@pQWJp#1l%@uxzE!qb{AeH|i6n5}y zXJ+pk{M;42iEYo|n6gD;=m8kh>hGewF_u%H_!RRXKriHH;o#_=JNo>BhKoqd+>qxkTJV6o&pk}oSXjn9 z=eV{@Slr>V>#{{(woX>9_g%cU5;>8 zn#$y%Lz-JfbA;k$7Ku3%jaci)*B@`a)zJ%QfQ;b2VmpRHT_9UE8kq)eR9RaN>h$_e z{v@r1*xMvD@WT#%f zI5SR^q^E8ar2keMBb5mAY@vrXNf?BawwbpA2Tnp>bA~w!Y(w2bGg6R~Y8P)Fm!Jp> zsZ+;a(CUsTNJBR9Fgh#mo!6@s} z8>b~fzr%rycN5PNlX+E`df=yB`|g#(yjS53Si}?)0)u!qtKCQ|z7{row?qiHiP-d+ zf!&N=N}xwaRKhV)82_tF$w5r-?M`~47rYi%AdW%Ne8w>7r+NrDq`|BvQx2_fL))iy zGpynv20}bTP?!33j@^&%Nw~ytsZIZ2fy9Wd;&Ey$v;BTefG!rD6G5djY39i@F~#Jg z$g>oys9TW+hxkX~iTmq4_dA2{0sP|gBk?osAm-Ty2?*JCN`YoqUr>Fp^#sdFks2JH zcWOp>Fg!o8DT^gUs!~qfjfmVYS!FSHbe{%$vB06~j|v%RH(eMGX3-ip&_`O&Tl)h9 zcqLjBZUgk@^@GCoW+F0AU~qg~n9$PV#DIRQ^v&jJ3(sszZyr2*G3kwZEe4*{Dte+J zt~EVp^wo;NGiWqy;fDuH54G*}`pWTO+et;GqSUlIm7zRBJ0^L!-!R&AVKiB&@U8V% zIeFF*bGr`r!ByMz_)^7;Y^k3>o?V9hQH*2W*OaW?|J#ny`vcLi~) zAD$QhSdbl*rR_=5%9cLCS7-*Xv9JufVX&z7yS=)_-6B309(C?(L(tON7v*^N6B$;K zM~E8lC7L%6a(jwmCr1AtI2Ax2vu$C!5?SOey;e+xX_QW`FXz~zre?v<$QAYG{k!|W z`D*j}$CFR*zWojB`H8~-2LZ6H9E_unw$GPjyE?f#Sxag_f3>5zjNoRqo~+QA+jvS# z9n^2&^L#a;s84=*IvFLlNJGf(I1R>0)!!I2&@EQkRDF878xg zpXsQ^g-#%~!pBHt{fz#V#3Oy3`tSe(I3Eq{LJ^?7rxMKDNBRZU@LIxzmPe^6l`hvK_`M z+lHgjW7``FX1PkB;_byJ2sd$~i8k_<4QRhCUrb6k#F!1<2L+hb-QsqJNMKglwdIw45r?jVt^YQVEmArqBC5S>qJ$7m4@!D1pia6^b)!eN)e zu3U*g^-eq%N<2}esb@$f-#Ig#PQ4GXD)j118h}-o(lZ9cHZ8v${YSn*N(jrpj%=2n zviOyq2>To!_9T)P@p%uwrbCKZckBDYmoR1?DZr6V3)qmPh%04wOD+{1VCWm5|IB%V z^=Yr*y1}ys8pL2s{!|1mE>uslvi?C#gNhFHm}?an6|kiU+RTB0FnXDwrXH=Yn!ut0 zPu&1BWkp=4D{VjViWY$@l(^zj57VH8!?LoozsN0nI5qb0AZ*2a1$i_6HQytdiknhX zayA&*lwESQ5Kex~%2 zp#iyWjyY%@pF<4L?Xpc%RMza=y~F4=hT-5DY~rTIM$D-`Bd*jhP9oUMqK0*8q0?!{ z3ScR7-oiA5&Y0xl47oe)eT`zKIpoeT=kXI$)kBL2aHRHdEU72)*py`0QTuIrs#^j5 z-|;I?JdA_ycBwe^_0s$~Z8WkQY?1cGDbVm3j&PAuODSYR3DbRiO`Pm>HJqF?+~jy5 zu3MQYCUA<3vCQIw(s8m-$;HFcr5ofDy+7OJ07_FRaM-1Ly0kPNo)IJeF5knHgWem zb^Pc%Z`mxhRJ7V6T&%-TDsH1vAw?*Q0_hhdI*ZaHU=7FU5v?(NcD7LTtPWec)_LNt z%Fgxd{BWc#20Eb6m)YRdMF(}m`#dSQ5(kLCt z1lmQXh!Iz|UTWriBZWbe3-IWPM1;;K>>H(T;e4ndSiuuqYsYh9ss^mxF=Ch0YGS-j z0fnqu9jwW&%{l-AksL&NOpRS>`JBXe0Eco%{UrTsTU@^bmtsekD)i86(@Q zCS*F4S@n+J7zFwabjPF2J8?^UuhMrmb=Sc#!lwsVfCZFM^zHY$@z>s_r^M@P_zhYyla##2DJ3yIoSr>YGcdKwK_# z@avj4rgAN#XW^8GiP^ZU>vhNt3^z+llAK#BBDS0p4Z()6KmqnzuOqOX~X@Zbqv}Xh5 z!f{?p%^9~v5=1r(%O2(@#hexVOG zUfHZAVDHYC*aa%d5o>iNDudv8Mu2~Q9EYJk2k{MfDCjgbqk0X{A~_&cmuekO`s4Yj zvCza*c5T^KFjn7benDC9m3Dv62;S?7f4sUd^2p)c8+_S*74=ZJO0?!05UE6K6o7EM z04x=LzEF5yX zE8IaxDO`nPm7`OTfCT{Qo+ve4$PuPS$UPcL-hna={`aCSQS;)+-kd^$#z(e`O_QK2 z^q|LQ$VzHqg5(|SGB84j(1%#DmY3qRT)t+fX2uiDBst8ll~Ux`r5{5OiUM!CdD4-d}X;Fd}{km1MiH-l0Bs_k=ef;Uu$L;M~=wk&(E}IPXn|k(gftV5e6Yr^>RAiv%rCYCZ_&#}2>Ycf;nmRPl zPB+iIzVKHltt0OV@2$+KJ*81v3rcClr>YjU=4@9;G~xPmwSmj@JJ`E#?7KM4aP6bC zf^X~Tu?#$GuReqT7MhDocy7Qorf7ns8sphe5GnnlYQ2m$X;dCy3(0U`V+BJ0TZ4od zaT`R!<=2vbzEnSCz9D>Tqr)_v%hMr6jMZ2X66See4sx2gzq({Swm_DWgDsDa>=Ty=CLQL3 zq~C8f-GOnE-3$qFR~K*`PzpNLwXmePoko%YsD8|k5{ynxa@cU80d~~eqJs2Uqs5zS?7Io754O-a@{N^Yt|xyv|5z!7DK@ji2`H&DbB*-4@1W zbUF95Yu24^vb+VzF(4=D@=AG8x_QQKZwKlLGVDPd1#d*_h4CcWnFZ&v*KKku#dX*( zdzB~>VrQqn2HU03L1zBPpu17})wKh7So7g}`>5tf8{2DHRVI%v0j8m6L#@j8(pB)`x)Qv*JqF%6Utn_NJLK+S7(dLB`)!mO=UG*7 zRFPJ}SSU;Zmtd}v)(PkS^7#7Xd|l`OwHAQ}$X^YQ&}R%_kW$)a$kcC0M&!{rQDSMj zJ&~Ck<43Ukr4elg0NkI&&fO+c3IrE}!oF^qxdSg&Qo;>u`jmtT;t>Oj<{K0lwcn<9 zHNF-bn^<0m8^lxshLQ=++{IlRsAMf1lX#ws-4m%#!2SS$S(opL4B0N> zCL}ZmMl8`R@-2dVvtW12GdEp2CZZV~VIx~7hWh;olk?3<4fI(8qeQ1AadB3qW?smw+uDje}lUvl;-Q z32CHc257>Z3&}p(y*OLoufypREy7Jkc##rlhZDTKoF@&cb^@H0ilA5> zIR9;7#aMj}q5RCnrB)!jJJ&Y72^bETndx85gGLjojp0{=#DQ1O+*e^=q-3D4p<%w3 zHu-6rmEeRQNdN-?wmP>I7MXwFH1G)9dks%jw+iGMJ>%s8lM^Z@g zdvvAuTF~k#og^18W}A}k@N^h~ef?h51I364qZ7|I@4t~G`Oy2_C zMz=vrZi+Z*Kv1#zIfnIG3?z(GM(%K4k{yUVakWD;*94Q&(t_23aEH2@6LbeQ&rEL% zdid4T!-L0<9v?nBIvh_9A3r+0eK?&QBE3%%qbWoml+^XEupAhm`3Ssc0404_hfC** zdL`D%fwiSs)lSzbkY%W(-5O2Tax|DiNX3ZoInOSyArPNYt%qt8B_alDsBS=vH9^mS z0IVae*+)>9_hB03Sz&8+29XNkatMAq`D z4GAx;=|yAh;oYfA>&LdR*=FaL+^&IqElBD!*iEWQm^S~zdv&#<>dbu>pkeio`ye6I zvtxB}0D<7Uy2#v9-cub45NX&rUnhYhYRqMNW;HonqR#s5ELUsLup-TYf=aj^W0{$d zhC&ioKKz>gufLPSv2dq+D)5XvJFMvhs2o80pC-3@gwxwb-Za;8;A%wW7UV(^rEKK# zYRzn;==D7NZI2dTyHSKQWOv7-n0lG1XxlywH@=b%q1mgPtT32i3UE|ZEWtm0)7$rM zubyWt8x9#%%FrBdTt8MDgo5D-bM`DeQ-hm@F(SbRgwH!5N4AcbrYcx0HN@NbFG z@!ya{yr0Zsu`>*xg?b1{R}1%*DLswhz{~__v0&fFdl|0MMlMP zxEP~C-50zOs889KF{FSTPeq^rnd%j?x-6AVtT#poL z+mK8QdHD6*=_MEgL`N>46T|8pQ5eEbk9em1w*Xa4;0weatzO8r-nXmU%xjSMOP1HQ zr0cR_6u|@dF@o7s#Tg17)+11l4ND2)4}0!m2zG;e7!DZ~0;LqE)*3C5PLh$)To-=M z#cODrKJ2!)|NiOr-N!et-|jZI-`>K5od-mE&vsPq)(5!t_=1Uj$y60$Z7ywwDd0C< zLgqSgu5kHaXF(6Fa6rHL>z`CnrRX_`$J}{YUJUHer>YV*5Q;eu3am)wqeUCVRw!i1 zr$Fige&;Xt5MGjrtUt!lOq(&)*a9R>HN-B>@HfDZo98l+Z|!%m+rXQ%vETy_qu)Kx zrKJPNh9(KW{L0Z?o#k@``tZTnZsrViuQVGVKov({C!NUyWX?ggbRL7RL;6lP=#3wn zP*izILiH2N!D|kboi0HKX!*tEbx)}FW-V@`=72MG=UN}k73K#cx5JqN18pTKfjH9{ zrjTMM(FiVuPGcuhb-Fv;8>w3R%qJ0UTjy&F+|$px13*+Li9C^u0!n~6?wL%FWWWq$ zfrBfRX$x)LUMAUyzKVR(c=nXm{YQ(VFZJU9FTAUS@HX(M{9$`L)XwQq>oD{3C5fn0{U)8_=O zC9ElYUGGKRE>p`ep)}m*3SUVmlA}%Vxu*3XPUQFMBqq_lp%fTk{)LUf08u~)Dux#sJ?gfp`~5N!f5(G19Dq7>js1jY0BKmPdsT@I4duqM6H z1g;9G`qV<3m?Zd9s7tHpf(9@L1P%OK1P%Y~f(Ea$pfS)}1&w|u;P$Y{A^mRf`ZTY& zoKpLx(&eQF{DXUQMb<2tOU?soa^Hi{S8 ziuMOrHA5XD(r9OHY5p-~%erfhGp?c;ppSPUXL#O{Z&H_#jIZnh2K&0s<_L!GGKvvU zU@T12CQyl#7h~3U73QKN0IW(`W0Tu`t{~O>qD;D7V&6LM%zApFOr37M1h~uAN?Crr z04L5*l;RAp-E{r+A4WMPuu>3>ehYPAdmD-n=3($na$TWvF2fte(Q5eOO76w7grABn zrjDgfRE=-Idobr`15au!H@$?__ddt4nFytqn-HhcbZFik_vt)1~3_GvlXWTeFh7VmN!P zMrJ7Cp&YKME&M`DSRgu?#PN7oerqZfzz>q^L7i)$RqEd);~3L*9nY>8Dlm=eFqZGl z9ePZ&3BLcBC6G`MD+C2*PxqB^BOHkWFn&p^Za`ThXV$Z4O9>8=+Qc_T4W;g3>~xkT zcEy`Rx|IMd&>-T@V{jhldw|A22)yw+6{eA$7Ql9OD!hWZ*@mvdt zd-!+K5OfK2xl>a&?8fbiG$1XCWFdEAXG~OB^XsoikED*na{m9My$f?2*>x?fpMuJ* za#6|1mjEb=O5$;mc!-Edf&+l0#IOBoUCD@j z_UT6VIs5GQBUOBP{Cgq^EjJ*A_Sbra`V@5ZDCiFXp~!rpx1fC1Z-iQUGChF2LG?0V z)%!iz9iD}z;Up7$_0xhx42rjIKz0x#`VU2&Z!VXpi;XV`i4dkm&>O404p|R@GZ&Lt zl`NLULa-glOb{;H1oY|5JQ=`Zcrp+SNV-C+l&*9LM1gXN*pZV^+Wja=xynp83Ae@i z=)x9sd5ktuR7@)fNA-(lb~$EySp8;kO$BvWNH~|PIV5}kS^TPzBEIC=3DUXiOFOq@ zrCB%Xt*}(Xg+=;OmsC9-Fs}622pC^WdL|+8bSy8jb5NDsIk1vDnf**>NWhXv5uVy$DABHPRf-m96o=3+Anw5a2tfEI4rFQmZ& zUuD=YKxHVUCk-;g(=&PYzwAHJ?Sxn!=Z1y9*MPq)_-_Qe&iu z`Zr<8bQaA=)$nNMG^T8m_6cA zrt%tXR#!8`D=039>p})Z>&%EJ0fFc$LNQx0kjK?PpOtxmP5<-}QHb}eTmBdIe}s29 zzo15l)O9B3Vj?M30_n3LU|lZ8J9fVX;cK$T4S&5lL!*<_}H92jhXr|#CI1ahpu{&R2 z3GZ{h(6vJ6i!7CYu}G@T({{&7MNoYO_g*|w5ruvukYc+J zkOl&z$6?#RcycW<#{!Nac+?Au85a+E97g4HmRd%6%I}P^nWZ@m0zom?a#O27i9r?z z`X}H{hFu-)I0+pX=JPlb_r%$%s_YOYG$<`Gblhr$M!UFGvyRbp8S#GCIQUtkG|UzN zfg%vUiqi1XDJ6G3{9yB>;oy@rcOPGY`+p>VDcL$6!-wJYAn>Z^(^+%uVKRTzN9K=Y z$`DoEOgtL^l!{S8D1`z7kqY+#1!yIgVAu|d$p}x6=lf0`!8Df6t+&c1ax@w&O=(@I&WL`@ z6x5ObbX@6Evo5U;sWq{0fcb&`_HEih`DH5jPPv+hU#1VZl`mVin^xq`*=uF4a(E;+w&V(Kw8#G93=N~ zpxt03tWw9FtYs3W8|gk@->j=WuK;?UQCLVi%jv#(*DOIqts=AN1wX3M^W+gVz6Gg_ zpm?>?Y>P1udJ!!x@`AmzKUM3HLayJwegA26j^^|CpYE#E2FNIoK6>HU@iHU8`XdjN z571*ad%D{l`7{a6$Wub9nxEeyR1tL}L&}|8o+9KU3ALsUKY(=7h+DXw@T7%#9m;$y z#1lJYK2u%ks~Fb0Lr$P%O|jZ~%eeu^jZk)apBfeM3q79G&?yp{-S-NJ;@{0!5_BN( zpC)eYc6(zL3XKL#uTq?cqD5qv(v*z43$?F;K}ufDuo@y}PPW&6G2i(9|rnc>EpHjSdbv}RkG&kn<7}h zzpr@#_3y;icd>U<7_L9mF4!1@i@@08AdaJdV4LBLz!5&KwA#Es0!FkQDO^OyQ|Ue4vy(tMl#1gSgW?51Qs*n3J^#iEtqbFnNL*yXck2iAmBb z1Xcz|X@Te{p~bU20u{iq0p!NoM0MC-12OYUL0(%X)skOXe3X<*8g3Gviaea{Va3mc zF!qOQ4nBor@u`kKJEtYJ!OclrN1BHD?{E|;s`aQL0eK!YfDLOdafA#sJSr7T>m-~3 z^P>B+T~Rzn_AO!RfO8g)qSNc-d7G44>syMtQT=IN2BP5Ls(!9aQIMjEzC2`~w= z$dUbuivzpF8NU0|$@yZZrN0X_v@1kC?{i;{7)29iGrmU)64up$VLZo6ybkaqkXHC- z*p?SO#{Y)5DyD4R6j88$48?Jm9nKjMx8Nl_$0 z2zF@#%VI=N@ldV0E~|y9r#SWAIr<(KjUfEY)Sp*gr{j;WKYaQ@7DE$^3Rp6NAgp?J z?singQO{(S68qA-Pu7))rLlDyGeRA8tezXGOqbRA$o{cQE^weeMhr2V`Eze#KiXZm zZX;idU|${Yu(Xx{%`^liL4!r~I~1%&`72ZU(q$4hk?3%C`={FvlTRPty-$m|wMzh< z{?j^^@+#seKnGU0tS8@IuINbMBps!cLXjoKHQcGSeiSk!A^zIJ$EQ2bIuA$#HEY{B zj>r1Ebty>@2vD&wHI;C_9gg5ZCF@Y=n?jP&NfF{bwja6kS0NvZ9yuHBgKO8hkT3|)DB$^g zmK@>=SwgA&_6*aeV&Na7sBOM`_Dic#+n~AD_ieYI-~WHN+k2#68tX}78a$4*+*Z_; zc3XeuB>qummyjO-Fn!MYFP}H>-~1;Mx>t~Mmsb}X^X^i(jHT$Gl2@aUq+}W?#8RzR z1=npt1{z@^hoRgz+61|;OijHR;4d?M-&C7@cyRyec~SXkpHT|7H+8wCVVkPCW0Ky> z3~al+Z{#->%(lc$fG#x0m9{Tx_-;`Cv_Cx?l<63SY@iTAhf|Zo!Mejyuh+buLL&kNBc z2{U006tYnV*qHfquvcU}3k6XQSQL>cNoxqMox#)C+^I+Hr0{s|IbL01rv({DCx!7O zr%C|^o0J{eVLJNab@U>ybF-oKiTAHGdOxxQMTB=wE3FCa^ca5_P!0{UVH8%A*dbL4 zZj%s0=Em=+Zox7rGe{BJW#N);G3=vM@&gP2?1m5X)i;|7vcFAN- zCR_mZ2#(>rt8B`kyzu>?vdf5MWsi7! zRIgT0>W+9NgkUj46zY=hP`2m-MU~eR2C4F)TsDc-gUsc9uMrTEQ7!j8IdbvUUe1oq2mtXsr%7@ zm|%7ku_tAPk2EISaDvRkjvoU5x;%NlowG-2%rlQ9-|W0V24GT=O)b$MP^(^F-DfF?%b(dXMZYH@%Z)y@3CK!{f&|HS7jdvS3-Mw0wYSkb8ngqN<^E+?RQ*JhapBmb!_Z>`Y+su#Uu9*~*i+F5^i3uuFREQwN)1Sd zq))12OK(pGbWALnFQo&qb zQ+Fl~j*jej;aGaAG1}I5s=Zw-B@tV6EY}EP5#rGYduHlT(BEwE*L<~_wOQ+>0-#+B zzuI%##B{0UAa~Uv$K0!zOkFomv)Sur`_!}`od+}{a%XDTMA>J~t+jMW zvmpPOo6$px%f?(6Xcvf}yMr;;vYF4`f4p^~FQH9Jsun~CIyY>v&2vw^U+Bvyy6{78 zt~NJec!;y+)o5L`Qyq#1!F{pv5wJt9(5CT0;B=rwHl6^tI$)#sGBcr+h*KoFzep-o z7sJAwRT`s2dePZ-g3dp2m|uq?=N9B?f9uP=@YC|*#gesxwbGNx@d_c2Rz=t$wuSC- zftf0$jcI;H&fUU-*)_^bC@&ULO)9t&12T7DqiH=kNU>`TK+baB4WA;uBb zPlRct2d*3W%4DCGK#T?ZdK;NENe_T#%Op+&!YV;UY1k5K1JS-RAzP_$%EOA67jGbK zL}OgJ=Y)CS;?yc9qn{BLo<*L>?a) z)FS^{3o;~52C~`8d2iDXqMG{WXhn6ZNjYD<82lA-*l_s8d%XFd&Tsa^m_{W@+PS(%qrR(9)P2- zx8EU+41vL@NxxOlJiPpNQg=}BUbu)ceU6BQW#3X!;FZ$8FtlHIea_DxaQX1=ND%xNU`ss=6+S!dQm` zSpMt}^oh2|&}1eakMdp*>Ihx9r06yE#k1M$a*F@A?JPKO4b@VKw9r^>4!xaS9Rlp@ zi)!}_Y}~%ReFv%YE%2KAkQ7l#G3iP~07nivKM$2%;tH8tO(^iJaOD+5$b1XjDpwx( z1u`PC;Fpm~8WF7x#k_DHu}yp7JL09@tan4)Wi^(W5=`CFcuK{W!m^EOP5AwCGr*Q> zLR=VjNr#j27$qFxZeTJL$Jv?dQfW=499u*3UeQ!*hptU+i%@I|UH0>x|4j=J+Ie#m|n1bh(W9sv$ zASZV%D3Nls|NI%zzzjYqxf^sf8IBq8%e7yhF6OWe(_~@sLgj!qR=nSRJkR3uN?|?0 z^ldUlTpq*F^F4f)(^7#%k~qYTV3;_pYZK#@sjUCt2~Y*_YQzJRN11<_o3Ui0Q6zSU z=I8up$imTf96=Yr_M51n7}2M30bmFNDy(3MyWSqh=S4f$?gV`!vC6Zz(U{;FDgZHd zsz^(w5Di316tk>fqs`AY7gr#Q0edx*=)ELRXlW_)Ar%WMAiB?pw%*6ggBLUM{L((^ zWT2R%8Re93EE+65!Egm3hM)-OzF^k*xYF-ZNdqTBCU&f0P|OU_+UbP59|pbl@`gUO zy0?HscLe>NoSn)hP!9MfVknhi4Fx3&SUpgox+3B5dh3@-aQ1iPHkVMns5I`hgZ6kT zzs>~>$pXcUV#bwTlcyN30(YCa>sS=%%l&I6>COIxWIe{P_Rk4$$qnWmcI}M8EmFSk z;L<3$q$5jj0yj3c8z4mT5ZoJA2tEn1n1le{%{8{bdfe0UA&-Oo;bEwGmMkOBV1xEB z)Q6@G_c_ls4F=OM=B?tOHxH1uA&N<3<-UC0K%ND&tSk!&KtWfHtlMILJYi=^G6(3_EVfubXMgJVfDp7=LafADC)M09YV!K(elk{dQ)}L(T19L*};l85kj0z(~XqM|E|6 zjk1Xp?;IZxDl;^R7|np5gX4IBJPJao;`$Sk6gR%&Vlu3LfkK24fj?ARs z3#^1WFiTFp$4OQtSLYG@lOyXT^Y&4gh^Ldguht@UJ!N-|zPqYl$I8<*ao;{D6yx)$ zRKQ-t(i`<^HbAXsLMRnDrwAN3mBHe~xI95ON;reo4W{xmOdUjKE~}6qpLcaOONrJU zi%T?mO(qwfbPBR<2}xm0XH=gn1WXT@t-L2^8bN`a%pKrDZ-rOq8+pTZQj~tK+>>w5a8Q^6ai54_b1B!SX^!SUk{K zUS1A_lq^${Wy68SMU0v+L6+zv%}WIVPHL# z$|7LUIUO;eftXQEZdsJ{Nl5LBDT0uJ`iRW$VJEwud=Ih;%g-@KKuzfuO;)iPQ{56Tl5^qC9xT2swV}4bKw>q@;d?5v(f*(P4Z` zg3Uqcd^_wSy>Q%T>P)ZYvjugLHz9^&6Ujt{-HsX|`;XxqStm_ESK4~6LAZhSb-mSJ z+Zoz0-g@d}e3&@|9o?)(in1pr@S=JJ>}HhKCFpF=AQxRO*ANoeP@}2a92SqvUi&9V zQbVgCkYg(~v{{U}J*LYuHr%v2u1ibQs-q0MS935sV0|q~q`rqGGnM{^VpWJaHJlO3 z&w9GE@PZ= zw2}x=pmf%8b@;$-_7Y)c`9m=u=eV%R78!urjQKt)N);z#x5RDNUMolQXRt%udi21jpajfbMH38trL zh`S7e3oC(VDKUJN(b&febiG1s*JOhhout}YTv7?%hwr8IXrU~yPr%NR;x^g(0>S7% ze!9CKz{2+k9Vg}sh%p{*I#l{H^kn>>_KUKh&>}ivVqwdNG2pxByyKlNrtqy6N1jhA z`2VQNG#<&RV;lm}C%dYK;mca+qfE9@h00!9U72GXXD>x!JHA#REq4x^OCRHTyai*F zCEFqo!e#=GyOuntJ{^~!l3F@%Lk?&lNtT2DgvM5VvYbKm#zbla?W4$_6?C>H z0-J>>yHNsUs3Tq|y&r^m$bERhWM|VG@`I^pMFj1K*Pnl^%e(;!LqRVbJEjFIRQsfW z4Kl1pw@=gj5h3TOyY}kp!jv5{2e#YBK-y?*C<7@)O=w^x$}{P=F%3fynfpBo2|!OR zzlopFBHV*`YMEMmQ;ke3>$zWQ?XRhhn*6-|%x_0(Tzix~MqC+_~ZY=^tE-QFT!! znFN)_LgR8WFFyV1GCtgLMnH_V?_PgyeGZZtpFZp;>41xEpDjC)4R-p869T4HWE_NR zfnYeX_D(XmqRj-m5&D-^`ogN`zlB4F|7Xj|%hG%~c>C$U2JhcBp{i$}(4rFtEUqc< zm`xuK{%de|d;jImYAurZ{M+Ea2e%(S-vUxT@yWM#cX2ak{`a4MeE;DV6xa-;ddr^P zbTO{aDLMJ!pt{m0i4~lzp+KHMY!rzSLNHxQsp1U9_;vB|m`PCpPE<(1sLnVz#1#&r zDF{X$28BFULqsgY=6mBsB$VD^x436e&2X%GwbQwjVF14%ptbU4rQvwSMj$(8E6}Nz z;KAG*p03OQQBs{qGkbw}uIcO*OGKi+hnZwLSM{I}!Z4hJKa z*E-lg8tmQOez-+vr^o+}K;kx|S6r4B#0#VBd9V;me&fpbQTseo9<5%}tCYfVuW%G~+dgtZVvvqpGRkLjS% zPH4~v7(N0gfOB=S_sipf3WxZGEeJRl%})GB@pZ-Lh)Y&*eH5`BH1_OrJq40r2)E!o zTC4{;$Xm{&D~x3*D$jEVZVDqfFG^>;u&0sF0((&hY<`J%gsu;{m41T~7*sJR6f{&wtum{RD1KE#GO}#QzbF&T z5HlbaVzFJI6S^`<)ndCwUx-&E%}M?P3ux=;kuCTbPY!}^RAb_ajt;M2`q~bj44~N% z({K`iT*n9_E-su<65$`t72h#~$zNO$2#jDmixbQ1vl<>?#@60b1@(#xl!D*?MQP$$ z=zzK!ViC?NuJmSHf}(0Xxzrsfs#rRh&-#=SI2^Z#`B*IxVnv_`Pp4>T6rX?xr7dBo zA&AOe!7xrG(R=-JWG7v^Q()Kf}zqYl+o}40^itTe%jZUO@O#%0-XQYP` zJ$OiBzB@Wd<5YXwqYl!wZ?Z5sg^vvK>(l_eC!~+@=#?YT@VC#NKRbLr9*z%=4oBnR z(`UE;GTuL$k4L|VBpNRQCM5lEr)!a2UuTntNX|5zoTd{ zW~`yy*&y1`_bSq&G0;^(Z?bX?Gnw`R2mER=7e?Bje$at&$Z2YrC~-d?yqa4%1_L1hqxD-bL0{lvkfVE(-XYuaO*@R4CD zEsiKLxRE!Tbz?MOjmK@b4t7uk>{bOTWrhcWqCF;>RB*kc4t)c`Yg~QzT@=(ivfnX3 zINGFZ#gMpT+bAS3$2p`cF$%^E#E3SExI^t_vu>@~CB$S7Or`m;TP)c|HA!NG`{jFW z(FvBPlVYsAP^nRmBQtDTKC|kj7J|00AwYVHQ<$?$8mGz&eIf_AnWzAG317#+XdfjZ zr=H<-0l&we^UIOMQt6c^uy08&hzR>XCg@Bb`MZhCkBxrw{U1K&v%Zn@R9B4$U9i>;p zOUb2F0`#Hwq9ov()vGNtV>hR;v!5={EZe9vigSdAzztfk{Xv#SIxw3L{pw+g)`3T9 z$H@daSkV(A{$PMq{@c=~L5e_Xv5J@u>*@x902V!ZeZKEi(;L8IxsSI4DwP$i`;0VQ zxbZ`1bx5scgr5F&2S~&+iYqo#e9gD843eP~fyj9y{sV0?xBmfp09{$egK~hi?8`I$ zY*3tPQ%v(_=+pW%GleM4;4tsWWhS{R3q30$GSwNf-QV9q&AIy(4C@ODZ^ayUaryoU z&e1?2Z{Rp+xwZ^^1ZY8*sQ$bM##Olaa78}d2K_+m=n48E=?JnxQt&v5J0rCu;+ZOl zRfszd^gX@*@ykztRIWsb70^K-R>;B}8PnhdP5cT^WO8yMQQqj5h=`4V&XHuY z2h2FdgtghOp&c!dfx*bn19S#>bj)s=*ZLvms>(t^f(il<;#3mCBkI@GUDtMra?*A8 zhhL0i!dIkDk620kE0$Rgi7W|KbNI?pwXGeX)>UlL-LPH}DX#QL>5&S%1T{RKexJ1` zU5X)9fe|U9+P$OP`(}cESg)fxZ}2V^=25PUiwR7dBI*dg z4NSui6dzvHjMgYoR23(EJ9I6r2Ah&+Bz8e_L^LLoRbd}~lDRx3FSGvT29e5EL>0L( zmN=$+M3EB~BbcRx+6&it2G3H+;DARYF0_xXI2xtx&|sZ}66PeZE(Mi@gfd#HNm=n6 zQKONJ*i|(kuHeAN{N*c9Xl$?oFz%108ES76G!bCo6)m|P5ZID*l~2gTPl(phsz7Lu z<&J_(%95NZwz@~$@1NkphnyDPkVc{h{sY`W-;fohowLPeqj0|I!qT`#V{1Q`US?Rk zWMjWAh)3IfeTG{%h-zkaiMYTo(6~cZL6Q%d#jLRviSH?7N0+jkiJi1iJw{of^cdMk zg!yDwPupI&NH>Mf<0*>*b}4s;>HGK%W^Y2K0!-#94=-ADb|>h*l5P*X!Qw&E0m?s< zHNl)0LZ>5712jZ13xC~kj;3)v!)Tq-*Sus}%y+4{XM%35ESjh{1I#GQnWA(&0VW=! zu2{)!yU^nE5!;2hZR@whKXm2i83zSs3-DVQGu78;JNWSF;}7;9hH1FIalMRCR4Syz z14h`*upW%C!;cv~G-D&hZ6=PKA75-1YjoijoW>Ff8Y4-i9r6JQqlC!G%U^f*|H*$| z{k*zO#ZYrxfCI!t7`H-OM$|>4VxfJ5#0d~Z^bx$jHNN#s@D1U2?)SfK3$nAGQ)I^` z@)ZNV;&CKNyGX_u=cTSc6!#S1;zo>0@*^$yhDa`=fBcD zvwil66%9p(CSvV@6R6R;Lso4;ZR{SovG1mf3MP+fndDnDb}bjNX=nqG!PxTI%D+-& zN~Tj-7;D@xgw9YQhMx&?mkUkjhwa41be{x=xt39$e^V_s?v zhvFU{iyfWfP-n&+SSVluRUt)K^Ft*z)|CxIXM^SOatY>$lr*>z;?LCLwHz?rZM&SL zLF%BM+fv`#or+$9!d0A@;jUIf9ay%vGfW0n3d1&V47=800>yxQ0s;TktaGSqn4f2! zJ*|kf8lA2pDzOY|P?$uNSSDODo-n9akJ`HazsIQ`X`tS3tN@K3Y%jl%9dc-EwMDSgCX3by3*#` z2zeF)wKiM$_*@;b)r&n1KoG+zA;e!w`i* zNg*O%iGzV*v_G7&-^7|R4N^{vlYiJb_!5)NQdc&*ygYeU<_dt|Kr_N1>!}%)@XXI7 zX1mlOfj7bYJTL@?ax&`Bnz?w4mQ#i?bxnB8_mnCvdnJdIx=0tQUy?5S2Z;eldd3RZ z{qe9g@NhLv^K8)AYVmu4IHmSbf-~;q(fx;HrF|3q44qn4r6XhYD=NVy5Of`}WfYF> znF&Qf-UCOis2nIK5CY{Y;CZ;3YzCk2@4mdb$4Pp9e}DJ>k6-R@x7)qFpI^WE&)c`( z3|@bD{{zzD_l9Ksi5yaez`@b}&==>L5&0iVhNJ`&G`jqLUSiI8>uGs{=y1ZGBp(P3 zQj9j@p)AHQl=aY@K#;yEw3-lbJPhJ*&^j!w*HYzZn6QY(B9~Xi7rC-Dgiu9*9ePws zm;7y>TrH0$@VUBH2qo$0>X1ViS0MkIJqut}(M0W=7!&eX-Qa;&dtAT1}Int>y4sgx|>!funzDf75l3+A;F zvulXnR{;(XL??T19uM9O{@4E+oE79{6IFejpghNs#_A*uxhwwkK%LO$Rb@0AHfzFw z3)B)=A{XW%paRB$1IufuM3w1}bk_m4N1&04XrH0Ri=P#$F*1`vlj={FqD)f3Fkj;6 zE-u^!R!ioFF<-KM`DtYP_S&LJwz9(YIRzXPQ$ma5Gis{B7r5Ghc{{4GdJxO(Fwu!L zXZBT3e9sKu4)POaB!^}o|4=o;_*_?QE0fz0@t(=9a$LOs7p`3Rf=z1ZFymf$hfhNG z6-pGW6MKZ+Z?XeL$8D!AKp`j9bbh%7`9hHT!Ix;6Z3s(XS*SgE7n$m2Q8&=oz-1Qm z@5$yZomf^1BVj2(M#*sy6u!7a;c@3Vpy(uBKso5OMM`|t1*L=rKoSBqHi)6;$6jl@ zxYpX#TDfAeSsA>4Sa)P4vR$1)1FGzOP&i2FmgpVeNWF%1RMgH@o!sKuwS^do=3do3 z%^ddmBKem*cDfl2f)|`_zzmE-@vtMqTInk_X^@~7G?1m1@y>%i7637M z1kRe}RLN3KdlyaZIMqZhHIS^2^M`wd zQFKPlVU4V6Fv!tGo1sK}@<<*6^#g{u>_WnlQ;x@RsW-;vb8p_?U%=gSd#5e(v2GL^ z0!!ed8gtVd50F9hn+1=&fxM8c4lZ7Iz`DuE@ymV-5_h8nf$qG0|M~SFKiqEL-~B&r z3$tvnEJ&uo{#dLUiQzAxGMq$Jexq}8c4>_0)-d`5EW08S3gy2@TOn+TAS5U^!*NvR~nU=0fjy^ zQ%BZEeXjY84AbI=^+SO(AVU^F6P<_C708RYs|~oYm`ocxrWq5FSp#GMit=)WUMMOr zQ4q)$l+vKp=fj?1-$5*riOLrpd$_nf#Y@{CZj`C6(c0;MTzRLH1~)=4kXc^7ufcCH zp}K)RXaq7_mfY&pE(O z2^~TCIHrUyigblLF-C~eL11(3!nIl z7w{+V83jdod#E16b1=8RiVmCaLqp8d0a;1%3O-3oSPp0nbx?|ePISkoBHByFf0$TW zI;JfaVaExw_WYB&76bKas@>?U;dk8Dq0cI`6>zw@Lw~`H>QY*`$`FGoZG3 z1uij2jGbZ&!|4HNVIi$BhTLp5M z%U0uZ19U#bcb}fFh9jT>g2-Q7%#b6v888vF8s?}WLscl$92NG4s(%cspjx5(5wh1Ed+EJab%$-6)`eH;j8bD_X& zic_OZSSE((S}&!=cCR@Loo!Jyr5y9L122+Pl-<2tA+Q!d4<<_Ki6XCp!o2u6@q&hT z3IrX1@nUSj3q5Z8ll5`fVu?;S4fckuWCMX*F!Dlg8S9&1fo=GaHF0x7~9!hMZ z*!>BoZq5x)R)q3X?YSxfA zX+G^0XB&ucUw+oqKkkqu8+Ks)?}TRBlAuy&a(}nT4PxB*bL0h_=5_|FzTFJtaBE!8 z6AB{InHK6_AJ1hsSeQqU854=ntHemLy8bNHyM#L__UkEL<{TOBj}9IM0*p~~8Ae+t zQLY6xz#vdCZ$MyOOc9&29VA6fwAcI9IVBd!D;9-Zw%m-uhAnzZBRSTAPAINnT#{gM zJP0b?Sh6&FL^#4Wvd{>+mz{wyV|@d=A|ny-=i|X|emD4^Jr2N3Q2B+X3~Cn2bIU=Y z`-E)t0_ztR2h0-@1A1MF zUZ&V%4c8xTZ+~XTIwjcoqI!r+2@XdN8FlJQJ`N8~J?g6xM@e;Hz;Y-0$ z#1;#hoh@Wxyt8Omif1fOX0Pz|{Yi!(GKh166-*rrl#l`oFt8j6dS!p3)lJ7yfr2rG z<;b%m%)}%M6Ar=0+uOI>pYQM9zJK>_i+V9h{swJ6XJfJ1i^UqfOhjXwF`q5tn0_ZZ zyTbYt{-CWYBq<^=s3)h!06s3?u0dX^iPI;<;$Xc82LMwll0H*8N`x&GgYj z(~ZqKJ0jx|Un(krWQ>LA;tYuRiz}gly%h%d$1mV^J!Zl*tUF+(z=m-p5wo>mfSIq* zbg&bYDKWGcm|1H|yt6QYlp6;8@$gw>7EYwqr^FCMYMLoaxz=UVQMOkRzqF-v#QR$J zw)*8ncbOQfsTxE7Eu}o%o6uwg+7p^4pis&$vx-Z8vy(1kp9%2;`XaOH?X_LwVn9bJgH-J=ChY&D@Q=KoaUhhh`VH z9z33@;1>m9S)Zd0NNEUys*e_--NAAx;jYorJ9{%vO+$;>#-!$=Jrgo_z)M4LL&+V_ z9a80uC@%=Z1%!Ik0L^X3sXT}~A&lFM!i$Y%ArH9TX)IEc-~9OcuAnt`6nLB=f=m_A zZ(hkhfYcW&K=P&P<|;J{)w=Q|I?lKj?Ktx+$w3f( zQQxR7&liGFK(&7ouJINgHA<;V(se|UQtA@3#IKrRKrOk-58{?dl95n zi2$<|>UF+UE(+fRYYoZ^1EXo4QjP1@+M)6xU05iF-{7MpS6%r<|VJjsF z7tuHK8yN6jN-bugq5|-^jJ$*Cm161M|7i2feu8khho+;vGr;!j?#%c1zny$Q5v1w+ zKfV8qGUS75b_&CTSV+6}`4!6UONDX+xbxs}KRx<|c{_d{TrKb+A%K{h+-s!0?uJt$ zQReK-0}9luGz&6%0Tb@QnRnjxUD>E3T!@9#4jN^`T-KpB;KL=#8^x4q%RafIXJR!& ziNY4@2D2Q$2_~$_qV6=PdbIaRVx9Fxy#n z537B(+PaQy-75X{@em+WgEBg92GDQYDc)f2Y6G>VikPWkjyN!@y8a8J>TjRd|C^1E z4yIFkH3YePW6Ip;-6^1(Yznv@p6Ix_GRGEYwLhHDbbya4<5*l8EvO40Y7s0Ba{|Ms z!U|UlUOuHS&n0z+<&7YZ7H@_pnA`;ofbXKUNdZ-oVW{)^!EB-WJT3h>5N5WSSB~Wh zpsB=r$&!0GhVJdtwbd-x-&e~Lblh#EqK@6a3)k~$wW~7cT%u<2YY3TMLtSdM@#1b#qmyQn(6)nw=kCdLxAS`NZGXO~k7j z=(lja3wJ4{NsoOwatU3a|Vie(XG^7 zH}2U#j++PyH|kChp-i%rRcXnWB4F9~g!+=pmmM7K!t;xhCxC?FzY*?Tj_C0^rie?Y z$xF6Gm|76ZSd+3Hlk`J|ZzAAjXm=ri2pwn+z@#C>4sdFd2OL1sgta#ZWtTFwAV&(m zlfE6h`LKs1cyVjdv%Afv$ETG-Fx`vYHE3sO0b+5C(wX&%e@hp_Z+oju8lo_&v+g0I zh>)p-ZLqcs$-7u|d@YEiFf%}!>}QD7lg4!Zi?EU7Y(Ewo0D;o2)NGHhj~8dhXmp5U z9^`7fh0I8x8E`6y#17tl3^OKUAprHMxDr6u>A4V8Ow(?s|8>`NFo^yKxo@TaeNJ}0 z4jO97-|{})>G3`t$b;{5y6b)5cKuu4r#n5~rvrg4 zij0PY`uz20^gZ6LZ~xyH6s3Cq`ong^>PtVpPo0VCStYnQ?QYopbta&6@RBt)pF?Et zm^6~CK%hikO{YtLIB4QIHQm~X>{XcKjL)1wg7&+^cnayx(j0UI!1%$NHET`$g{Dx)O~2C%?9xK>85`}G}|Z-@kl zBz53a76f04ILoz&hLB81nK@z|DXGV>L>Tn(;M;Eph-qVt6;|f=4+$IyvH@)vUa>AK z2~YJazp;Qbn4;Mf9tzUG{@R~~cJtuRj{fGK&1=z$On=j(WLyhtwfk4a^jfbgb_Cn+ zNwwV_?7&RuzJ{q+_JDXKKdiZxgdi=FVkG}HgH~`r6>XpX3?xWoE zkIwr4b;DEHzZulW*`<)p2LX8v(BLq6Re zp36Q)iA@67X5w8osqw;7IIi7fCP+l^0c`7zB*%=U^#5Cg2EGTM3(!dMt4uc45Ln zHzs9&3s(8H&>cBjNl(zfb9*wSCg8#N)d;o}Mt3A>%%i{o%Nhh;ID>XdRMtl^+-TtP zd%^b1>IN2m9b&d($c`dBLsnTUY!zuepcV0Fiu@@Df-og#eF9oREY@ZJD@4)eIlFIz z@jTsWB^%f$X(SGs-T&|s)Jg$KurlwmK}~xI)Slm9k#kK}yVUM*u~5Pg^*I$clX)oY zbad&F}Ch(pjernDv(fyBhlZtXL15*avMBu-e9OiQOH{FXNbwT#Q7|xfZ@G@ z1|c*Px+l0X>N1Xr@J%8>2~R)EGp$&3{bst-4+3vUv{)C;O_4dMx(Tr6yf9bp`yTtX z*i{LSD4t#Ls7JjE4#puI+66!O3Y<0OiG#cDKl}>(*;n94Ux7dW3LGhD55M5>Yb!MT z+7b=FwnoFJP$ytzIXMHL0UFF$VN-03=g5gi(TfWs7J%AV8hff43blw2L^ha>+j89% zNO($4XG#IADOJ}%GVed#ZdvVx|9^O({_)CT>~-lhkVhi2I6ol8CE1OU$_jrpKm{|N zH5~22SG@oU?F`aaEpieD@2AFq*l|lnfk^dG>7aD2?GKBs^L*xUcr@1pK3XfNGgMBpb7@N8c`(41aGvP76PRGk9v&TG zQD7eCH^Y{U^uf#Pb8D@u2qPP_0YE%!0fN$Mg{rA$M)a#7Tzo+(EEjktYp9@Im0ZvG zMsNB9CY1h8+^iaLzJ#KqsMi#yvbn386Qu2-IdOO&niJ=D=Nvkfbwcr-2=q)rQiF^* z4a5$nm!a(~tdL;ZG>C_*<8w$?YWF=kogq-ra)SU_7a$E52pa-&5r6q>L;n0$vk=xz zrMRD{jgH?&(u^rap?QJR=}ZxO%ogoB*4gp(43)_c6?7pqDuFhfcqfwN);pU<0g~`o zq8-X-l?5Yo{wd}~X=l<%rnEuALbrynbYg@9SgJlVYO!;D;0Rp=_s3a;aEX?1wG86c znsS2P`gpTEUw~#S$CuIVNb*I5q@+7oL%xA3Dit0CpqQBES(Oz|WYrMOH21JuOG@{! z2P7(wo)pXJl+!oAEKsEqPpe#_9@-XBMMm1IY4fpJUY-vf0hT<4QG9bLC5;Wb{hm`{AXnf|5E$xva8wrtJY&U>?{~3svzndNC|= zCqmEU-cI$mjk0cY_?~O=v-tL}9vo;kBWd5rcjvRKdD_ zZaMVm#l_WNf{HY|8Y&H*{PgDMFTZ<(c8#~cJo#z==MP^#W9;3BPp|Kvy#C|+-+lh{ z?j8dwsEdDJ-@W4r~~tHloDhS z$Ct|+@0V*yJpu(2qk}N&a`D{l=4QP!9rI$bKs{2?mau_f#oAbLG<>;o^A z>(eU>of~@9bRT3*-J`2$Kj;PfpAU3)<4T7}S_n7D+|mb?;L-sWD@)n{4mkPr)E(3VipZI#gU*N_W!wpZ+**{yf@hRX9^*?FoDTSQtQh-p2)Q>dVp+V(|m#L73Bq;>^ z7pI1C&Ew6=n}IPykuqV5)uAv=0me8bV_L8lBbYZKt{}9Rdl%4H4$1421&|Hu{nm4uBGI^0_jlRlJW*VsA=9$xC@} zOv%6#oIj#&hgYazw3?Soez=@GeFQx-iWj6j)j|56x7<;xn72!`Eou6AR1$T$1&eI< z^YzJmL3|9h>2wU(aV7J99oGXL7+4|#PR~=Ertmo>n202C$7djzTsJ*aq7__3xh#-7 zAMu*T4($CB!L*!KMIpb)@IXK@b^|BfKEa&C~Ma4XQ&~fiPR< zg2oF`+|dWFZ9GPWlN?%Gd_=|g)gZZeYtIj4KoQ;_k>3ttjRKBr528!~v_ISeiw{9< zj3nHY1J#n~i?ojr1f$0ni7L#!b)* z2aOzY(kiQ`-X=FUK;g^$rjY$s(_=*MZ4{wyi!taKqbbEQ%SYR5CjP?H!t@F#`2zz@ zrY!&;8l+d0t=ZBZtVA?cC8+WWheCpC$X(==v;`wVL4* z(v&AF9X3{yko~kQUMX}>VXtjF&=%_Jj=+>tB>%m<{R`c`+x3r7A8-K^l0&v=8&B?w z`b5|uTofh;SFpT}vxESwsT)SHUWL1p6&6gLEC$6)+5C2Pb9LF8#u;auVR~KL5ekj0 z#m&OWR)?G87YxBCS+62DK%X@ z(uDb$R$P)JBS!70_LPW3nr=xlDybnu9)<1$nQ#eQfnMp`~{)|)ynDLaC@?H12_NF%7qza2opk<8OEs+qU8;Suyq?RzS`Dp?*zsI$V7ahG zWxl*L9DK84AMyv3!@Ww8-{LwEr=PRvv?{@D6*j;zW;G!5`VT0EViqz&oL4_PaVr^% z3!V?P28;{i!meMor;W=|Lemx#keP|&0R~xaW#4#(D-~rYMItN-nHPdPXzjN(Oh2YB z2LFP5ed_bd<+fY~p3!y;9t?dCvDm}fwV}neb~9*cA;JuyoOt)ekYOg2VXAP2A&NC< z4=Elqr%WIfe?&e=Ud{DlvU5-GYLxpu)*lNl`iBO!3aQ!2=!A!|Cgnlht!>x zDT2l;>Js!o#a%ILu(;U@j!!;ff4e!vvtBHPge8Rd89;qg__pGk%=XSt3Wz>QT_95I zp~`QiE8B*qz&H%2+MUj@&b`_8!43@Lcy^;|SlI$}IC?790e#v+8=oPBLj>P0%a&{y z&eJ?n&rHh-(kJz&6oA+4X9)>kixWRpJWZRuyrhIez)6aH0MCE@iW_j(5o@uOR zb#i%k`}xg=ufVe?mEZibIEC(@jZ>H}aj=S+s1gN_aSFaNudW@xauyvqU!S#{PI2Od z7+G8xI*;cv^80a~< zF0?}61S+YF_%Swv-+#sY*~=#of>$XVkey-rQtXO+JK!9?AtD@Nwun5(gZ_5_tlDIh zGS$TlB9zkB8+hKQDySJ+5DrD5`vhr<15#Yu+csg;`Q|pR7*W)}E?j!|BM>e9wMST3 z^zKI>DjJX24Ilqs(of=mbt?`#An&j$RUMdc(IOkiFNB0~kxoyXOYgMKuP7+hF5?QlQg8UxmROs4~r|kpx~Zzto%Tp zmafavEIM2rt_07TuMO1ZVnMt5a<$ltk8tmOd~^HcTh@8A;!=&q%o7981Onz5E-|3^ zBvm3t{0+$eVaZCqt5WXliGKhe2s5!Hhq%-;WF_|0ukf_x>{Py+F_qT6ZI(ErEg&r+=P*`1I$={Rczh&Mm2GgybR@X)I|ICk|%Qtk&2yZHMB@W~@oN zf@FWG1bqNk(_vbepbQ$MvFC@!=BlVtzK3F3^-!=bRPZQF8-q;hn0-({eARh;$c{#Z z$+pia11TcA*k!rYUGlLfsn~3LgFRX{_~6h;VIU}&wxw|d1?FS^(TGkyqdN5p|%aJ+f>=J@HRDCE0 z5W7!D>6ybVs&c#8fFz#lgDpW6fh(y)g!%Yjfh`s}2UzSEsHbQ=O`IS$>|~{D`3r-w zS0mIa<1WoIdaO7l3h0g^i7eNTx4fwKS31u$a)OP3oZ9o`3d{;f>Gk>i{020+(MT3y z#m%=Ox9$-L7zHyd^I-2uT%e}klfjUL){^HC z^6t}{+qYltZkHcle1b|~e3wR1*q-VNvAEPNILJ~cPJ z1Vj)L3oE+gzi@O^U=#5ybPgH%I*nk8=vHH)bBAB}z1if6J&*%tJNWz~yfcF@A3v+F z*uc`FX#PdG&-9;EvDD;7Q2tti(GMn=&_V=0Yq#T09f+O@x{+@QGwo#W7bX`L zS7wf8r86~IXFax~L~jw`0l*Qy5<6;vGGGy3q2#1f#3_< z3{eOd$zmkCP(ZB@HR8zVruHt>{Bk#pPu*&x5|{eql79?@civ$vV)fG2x`m(VM&b(fjL5LUXJ%AH~2 zL-}jHdW`?H{Jl+=JerQStP2esw5K6-$f!Xs4UNr7ArnuN!OQtc?vh4Jy)`#%xc>Fx z;@mqNB2&bbz(OXVCp?hV%z7;eftZygSa5!|?6e$}ENXeq3ZEbe$873~Hq- zttU}<4IJTrwApbXDDm~=<>k;(w9E6n)bx1R?8<%hVM9LlHH{j^G}|7Hu=JF%|GS~OQh80Jd8NJR&`N=?H(KgC`+ zJVyETc}m?CHICxZ#+8f<<(=fqkQdlm^$5xcqAUbuUMY)*p{V*5u;t@bRH*g~ZHy4! z7583}oM4$GV~?*YbC>9_Ml~rDfiB~-*fv-#h%dXrV(fTxR#T^3MmM^Sm2C4Zxm1nZ zt?i<3Q7=j52G`SML3KiU8ibVCxty+VU>eEvE(S8KyI!7cj`=_~azmnn30=)-omg&0 zZxD}3qnKzLjQJv#P*+pfX3)%2WfG@gzFD)d!c(a~bLgw6vzwF;Orc9g)~2&3L|kAFjC#})wlDDUDR+HfGBcL6(|$f}%)TToqCz5kRcl{6#gDww31A$3;7Ay8~4xh#_EG-N_)%-uT*- zUY3H_K{a)^L58O${-!u3xhBmhDnY@DPN5EQb)^L(YAI%aczlHh^jV2sjMfaEk#@an z0@*bU7Y%ynC?CyO&Qy+RBZ zgSnvmHgu7bas-kYOem0OQTqVe60u8QIO~2kXQ~1@4i{&`L?%??hTyX~si;l^(!C;a zW>p_~U)H$FhY4mnaPRS2;;pyhLw88hSR?>b2~*-P|B!ix!ASfu1i0oR2{B-|nXCbe z|Mv>BakAl?;gU##`d2avczbaF<96~ra0L93mx!L#rO53=3BtqCGsa1Vu}UE=uP(}z zw-qk+c1G_~tlEAzR&D=;p^qx`zr93?&gcF6Pvc0aqJJ$cRXpBIb+-V~g?7Ce(@&;d zg$R!0gh(+jC`sRi*aagK1N+F|3-N!ba_l(l9%zAAJ3$oY8SF`CAT0VfB`2pVn4)|l zJ3fb3w+F1DaJvLF6d)O~+!qV~s+mp;750RMQjN)z z!mKN;e{l|a8++QJ5Y-6`Vg^J+%BLshAw8C-U)#OD$y?7*BZ((&%sQTYN7g&=kV98y zK`!y;*i^<4ij})J#n7zi${HS+e4vAgx_X>0^}EITphsofU#o@cp=8~71(#*9RzSph z(felTRv3cdTM3u&FVEh+dk2m|-jMQ{P~2?vaK;m7BtaL|!4YV8AhC~vuV34GLrW_~ z!EQXFop7pwGVq~d1O5h?MeT-CssUzPoLtRQZ+INRK_Sibfc5)~#XLrBWIPh0FG4Y` zkg|3XYN5_-bT(__6C0pbPh(d9VI2jJNnTQLE3J!A6VI2|hF|G&?yKCBJT|HnXq#X< z^!yLs_!%I2xwP4O^Vm;Y~0-KqOPfT!zu1iP@(F4SM(4g7X=$L89^ z-#S2QyH^*D_aUtUpI}`YICMRxtMDUNerc?PzoHg&7`MME6I(}Z$~^AylR+!0Mb44hN_0cdZ5wgW~-3TlZrRmw>fSMA3ht15QhAaTa%#D_caQ? zt&@}z13Gfz_*m~5{qtOrcn0IPxhe%aKwn|i)pP=8?^NB*ff&auvs7dCh zDs2T7Oh0CdH3}nJckq;zl4E(5hmtQLk>Um81|L5K$xPzyub7LYd3^*allW>C86|4i zpIR|VbJ56-Xb!$GDhcrCkb<&P@6XwAw?4SLtiyL9Bp!6qN+>VKl!%H_Ds2 z1qbA?0MneY0nr>Kc1vChjx(w#C!#|)DEgU|SO1Qpt$7~H<$#YB1FLB>fReVWdI~g< zb^u;g9GfAX(f!+`r7sj{>Nz2D>?A=ZZPZ|?Od!^$mNlurv~^_sB;skjsQIg1;x>Ez zyWTS21zdXq`SudE1hKB!yj@mL?173fFDBe`qMGqQb=g=8*F15_xe*P2T;A&%p{5h+SV@X3+sj4~n@0 z2}>c1Y)_kYOc)Cvf#ixO%O}e|Q>-9G^y>roi|es&9QPLoU*Pu!q}L|yCMNn!y!urb z3Wf=3Oo8neofAwLt)J3IZ(gNuf{bfkNsH>Vs%%JX)d2<9qd&{N=@Ofg>?9tWaoNq1 znP!n-n(+TOdWU$ES1M5sbkrB5aeF%${`LR@=<}n4!-MhY;Ar@4c>Cnw=^PDaohI^N zM8W-(-RH_k?-W1n+6+X5p%$&qR>b4PJ^_T9wgg9@U>UWeqwhU-B)~Ars=wLJC}O5j zcMF0L)Jbp~(CGAcvglMJV1Z;FunxyPI0E#;Y!;abCXfa1w>K=%;O%d`WwV+%%go6? zH6Bjs@+m8t& za4Q(bDM94ATBweRpifGS419Qd`%Yh7k4|sj8SPmk3KkW*j#*C+>*W zuD(+aFrCUe$#A5FTM>%{0hFmKJcJ_Gg^?b51oIzHt;=1q(WhZCRxCjZ^f1q*`qPoP zl_17|$YDunW@-p?+qe&NuxD>~ad|~Qp)Kt-|8&>4&!ZHeH>EjE!i=J=OKDpv`f#V< zP+Ohy5*YXd31+qRN-H};&YCHH>W}9r>$^(_>H_PFXOc1P zPoWVGdh&&GOMIJypE?28s#EO$TDqNG1Gn8sG`h3X4lL?w4nk_Sio|H_Mnq^El#Hn84Fq z$EiedPwYMeQDJ%jzUds|%yAT^8lBA~l@0T;CA*iF%{NBpM6Dw?Pw48l)k8zxxYBR3 zmHCR%V^#>BL3pPK^=8m{cc`>ROwLPV#N-^d2vQXa@X!iId~;LmM~k@*Bu&in%#(;Z z+4amMEk+5}lG)zQSF;&%obkBfL9YR}oREG9o-jDHZ5g7_5PaO(=G7=NqY9{>=l;_I z#LnSSYC*BjI1b4`FxaE;A}Z`o6qXJ%Gp7%TXCTms3qmw@s-XpvQyfX-v3WQMhz&=C zrEg|jYpZD811CUR9daT1V3@%q>L|8@czjQ`RUKMchgUQ{s^jMqDNESm}M7= zzze&~VHcs5;UhwaKHSa`bhHbgSL8yZf|dAVlDvqWQO(cNs44$}7oOA70Xtr(ApcHM z7l98DZz^i2m56REm0__U6UM+h229+`!~LSAAH|)$a4G1nStEqd(LM?#WUbr63&}zj zgFk)x@cRD!hugs$RNcF`6CC!E)*i3poq<{(BARNVB*7oNZD$@+0n^Jy25hTX#<+f> zLW21XsAC!#=|QLJ(-J(t*4o^l&7@6B_!aWl=Y z4%FH^!998X`F1-&GFDu(m=3P77~C7|isBr>OX2pb{>Si8zLhgV5Cyl)DaAiaBA!sq zrKqxS23b1kz$(V8Fy#0C#-@DYPr;Qc|1Y6gD~?3reH zajD-gh^mE0n$2v>IAC3C&UR~uGD2jai)x2+3NEzs(qP_&YVD1TVnbFi5Vew31GIy3 zf*#=tv)F*A1>uKA5ADZJAYIJa&4S`Aw4``tG4i(W5L|``X*8vRX6?Eeg`peN=k%z- zxLn~*v&da;E@cy|4H?|@UO3kfap+*_E5ztY&KJVE)bC>ftqqlJW`c^YSLAK zY&()FgI^pa6IqDO{l>A%Qk6((S$R}~9umf)-AC)}=)(0j{A!$7{l7k_jV<9)7G`=O zrPpQV3gF{mh@m*Ty1ufu;P$t+z-HH>SHSX;$?TY-M-vMavc0&-?S|3&PDPJRVuo0S zs9^3A(g%Qh)NQnrKv=qdA*L*kr?8t8>D+moHk5~YY@>UpX_M70y{)q^Z;`nFws&?) zf>bCEc6{~SM`|fRcW5KJ^fxEUazRkh$qdRRuj;YOhUjM%`{K$TQ6={A!MUFikWw;; zoe4GFwj2cYnz~#q!LFFY1Lr5aPX97eN)9Y8U=Q#zTAd`LG~~K9prF2+m6J-RzRzmo z8wzy7HinQymuGl2S;eUEM;x9}lnBbnUU>x@YJ{G7ewxTP_*vF-LwB%(`KXhp74Ulc zRv^u6K_xEAXl%p6Kheaxe5(%$Y}l6KSb%oVd)26FMj{rj{JJ|R=!AmM@N~1S>U5f` zyg7#@L@y(8)h)SR#5bY7&=|8m0$rO5iH4wIbl~Kq93>Du&fD$`T@pE(n4Vsl`$4$lzVLezzb%eRYrN zIgYx=?2N-I&pSNXU0|v3Ab-K>vfHfr{jLl}tBIhV5JAHF172kZeRh1Z5Hq(I_7hme zD?3BNepSQ&a0Ij&@aR9cU;SHRpgZCsA9425L^w54^BJ@ZuuCRwFho=nya)ER+Pey% zrG<5x7V2{ZT5&bQSdD8*g9ykg6WE}tz;Mj;SJMcJ>qZ=u@LsS`?u&&lQaBtL7iAa- z5tNn8fJx>{k3&8|DVI_*EXVCkkOnePda_omDL_MM6Y3x+ES~I`-C)YKmlH2(wRtBY5+XkYtzPqJIMJBu$lE z1w#(&FCc?`d9`)}WI2Sn(0Hr@;tVNg&?)fihzGfRGDall*-PV^MzB5blR`NbgzGxH zUO<83 zEQnaL=oDp8gTQ%|V1pe@25OM9Z-%2L$`6ieBUV8jxy8#qx8&3E{@h;s8dD}SFuAD6rm+f%0t){GJWfX zm$pz?m7B$~T@&3PQ0pYI1at)^N1s+Fqb1ZRzI!05ttn+|TFFrj#VcSu{P2S|yb)$F@1 z+f>+wNPy;UA(DoLk0F1;T(?16WQ;fmuMDLHj`e|4aZ45ROXV%Cv>(1o6qqh}gcFJ| z=uf>QNQFlwphqKW34k?W2Ajn59~02>-w5zwG#cLAlv*e{NTsoF|G3K92rzUDz3yd3QXD zFBNQb{-K>qFm1b8o53#ou#fXgkeFc(=w`7-t`K7KJKSqEIqeFh1?wW*U!b;slqz0< z9=j*$r*S5c6!lUbkl3>p(f7@SSR4(ve^I)j!)!V{ZD;_OJAv$VAto!jqe$MzP%b5# z1?W7MD{*8d$#m+Gj+p)ezCgX)zI*-o9zDjl@OPtF(p#99pvH}*!J?0SmBp2Jj_^`F&JKzK&>mDbn@ly^ZnWF#~+Yl^>lOh`r~I*s{E{FCbTH_o9oIN zRq(18y|vL3OfM%C%^dG(CDwL;x`o@!>TqS@#@ap0Rq(X5!zxMbQ1YbV4V@mqiG^f# z8h&Loa;sok0vWIo7nFgsuqtu;Ao1@=VV`){1RNfz1*Ll!eIJcph80?5WsRxp+4b^* z70pCe4){|RUtW;Wj_R^wh9s1-EsGIyVI8tLEIJH}iNAC%nBq|m>Hy_4wVWKBSG&`I zv^OS&U(P@nDI?fFL5^f9`GXxWr^h~|d$FMiV3~$$29_C5!@|%3i&^Fa25XDZSIkE2 z>z@9rTyFmhVNWqdBZ!WTc&FVnQuj+_8{;>~5yA>v5MnM_2VPsUkPbvk7R0x4ctRG1WsAdBi7C|{|nb05C?1ND0x*%IR;?ROLaLc#s?-*xK9vF zqveRX+>WK}fLZaLWKVkt}BfIOf`qKa|h2U9cIKuP~W>Qr&n!JjdLC2Hew zi9&?xVN)6cz=bvtrE+W(LYgT90_kAB#}iSSJh__p{^`%} z-v1N9R2Qv(D8)orfnsM%|dSohF9 zl4>yleRE{g+VcgDj3&8<`^Xp#HDy$?8QJrcPYPTsn`8w?2^<3jg%qhxOqmI@6|B1T z(2#y;OYT5A7QdcpYpnL?86M53B;nO7U>F%S5lvsn-}0kUPp9bzoG#J&Mzfb_0y?c+{gh!Cbk;+)z}1>K93U)tS!jkoT5he_1ji zl#-m|2VWVjRA7j)_)?P$%5pFRL!@@1?@Pq_DK0NaOUc=X&mLs$07o7FB$s=IP1jE8 z@M0WDM8MXedivc#5hqfH!4_p|{By~=8AAI4y#Pog5qdg%h4U8P8qxSn*GkBfZ=;N= zQqhXCM0hB+*h+dM+u-*D{tA@{7J^do+<)YWs54wWar6&Aaojv{{0~3zpn2lKKm0`G zT~}ZI^dElWVe`a8Jh9lQXA!h1ypXH8>ucs&45LuCzJOPnecX{uhtMi?RLXd7Qox8= zenlFBlK#w6jXy!=U2iWlWEH@!V{T-a(Sd6H_Xkm}F-)iA!5}>-bcL6jB9;G4Y`Gp1 z$>17Xt`p)-}B3VX(nnlevR2leH_G^$Apg@gbev5l4P zme<^KO-w`fh!eliyEGDcSyh8?!uVyeA0ua$5=C|-HU=pH=4f^wy3XEN#NBFOMztZ0jMjhT%%(tlpxU9V34=SOoenp`H!GYL51R)-ywD6}N=I=kC z%J8_>Ktk*mN z2nmhkSjMt)+jy{b=-riszwHz$na0rzcns4a?3%TJ+d_q2L{YJE+3!8hsk0M)>jO_U zkRFMhK_4+V>Vbu*;3c`;nPpkRc{q57_ZFz8FuCwy+v|sx?c16%3cUx^)ILQP_ zuBoGXXu+jPvM1_iyHy+p=b|;fJAqw^Vr(-1%EQb#+R-S{AhkTMRAklk+I9{jM0`P#ckw! zR1D~&jNZuGYT;ftE?Ds0^xl!ciNk39X2k-58lK0AVWNdGhim{GRW|cR+>jRPjbKt@ z6jPv_0h^`Q2`USxUg=<_wou*daK38KT{PL{S(X@=8sYgJ7?1YCVZ^taIw0|L2r)X5ljc${xVPX=qySq(|w%E*d zT07^v1y$w&h>9gcI`P_3t_m6s6NQNs5hCjqO2}M5>4jATqm*RiHtc=NijtOq(IVs0 zNLk6UhJf;1Rm=sRHIa;>|FW0zfD_NmY)N2~ffzNE$1o10D1zba$>DS!b`RuH&R%v4 z-nb7EJZ(wGHs83L878NK-f>B?S zn(tUOxd=_p@)Ia?WGTsC9s@!%;w5E@^%_kS^M$18N2qLpiucC|NxXPDf(IONajc5h zGmO3Dc}ZzX-H?kuurqrGRmh#^vOv1l8@l!bt2B+$G}`X*Khk{c57&E&8QUYsq0WMK z&KVwZQkb4ezTm`j64eOHg~_dykP(vhSIa18a2oE0ffbgAFCV;<93*EPHCoUY5~Ddw zS2Hqc{$ldm;Rn;-CNwt#ib;^)!(@ty0{S4F58>suohwJQbS7GDkR-$Z4{QzBNevac zW|>#OQE`w99SCT$t3rg`rpg24oXPJPKkilU6I*9iof_6`9LmyC-uK=Pc|$SogE*@| zJqtDI2n-Fx=zVq*Jss%BivcZDwhQt?gLA;@Z2*t&&HE1Ft%KN zbuz%u<2&)oBLwJy7dG}n6@ES7`t$_(y*`uXnmhkr{ZDUoAfbuu~F-y!)e<8J zfF|7ahcYTs*q9~aqlT_mhQ&P?%N7HVzWjOf{>^{3&v%o5CU)7yT>5wu6+hF3O6x}ls2zl_ z4_q8oAP9r}%A=Q0ssr^+Bz_E((y7Sg1HLDU3s@RUSHN70s^L?}VveVYv`SQGOb!GA zROos^36%f1JO%+lr9?uCwkxqWw@*>J!Fx~<*6$2yRM%=`lMljVdXTz;>w8#}!8GO6 zT$~6vIh}zcLg+MXhg3GfDyJT-UL>d>PWgxT!E zkh)c8Qcb*!paP~po}=IrmLDB8P6qX?1{!x!KLgtCQ6nvSIdRmpcZC_vntEM3RlNpr zfREz^&f>Pe0hosI3Cz(>x#p}f&HtToC6fC9IW!_W z5B*UDw}q+W5YcG*NaFwdBUD?vpV{xGA)X=c?thIi*%@#wIVGv4@!Za<*DtG%^}WMOIRoMP~VLINhUVD|NoZk0efNa7)t~ezSur zHl?Jn$x$=vu&gCjjc2K>sH*6+p-pQmW;k`=@?=WL&S$GDFa9GL$45l{xRdVmElfIl zd!UM-Zx(ej`1gMw&`A^24ND0hvE@O82txw&4AKQyVEb7%1CQ;7X4%~Ge z8P@S}Rd8Pb^<5OWB>1nF_S?u0HM^4q?t10z&bjV^8sTk@S0OD^MdeQ+DkfFHYiz;- z*?YOlDFuV9hH(-`^K4!$&4XupYxa~BU z7f`K_AEGKM^YY|*d0L{_&vW|ofhOXar2%4)&wK}Fa%0%V70U?Bh~fj$(l%U~64CUT z7L2&vzW)4^e5S%J3ImnVka!&seNNzplIWb5bDvGteZG^}0W*dTG?ZhC8mQO#(j`Ow zoUZknLVz$2cu+{X^be6X>SbQ4;w}ocvC7vh0zgWK_b&t1hocnL7Lw5kR9QPAl;nnE zas%nNj~|(!gad3n0YwnfSTqVGWzOy`IL+za($vnV-k%4%G`sXEay48V;V2O$`l9oE zb^f_oR;sTC$I8Q9iS^}S>J&LNxs49ZJR>21sOAQd#R(f28Y+T{Z&dI&*kNysO%2x* z3lVYhl7e?B(sqElMS`na%vvG1h3N*PBRBjW=%KJ*V-&|kE}q0s@ii6!S_d5`~TN!W3)H6#Wbp$hJVjZqrc~-@y?qH zvj7B0VVLbM!szk6jHY+JBVWK?pC%qBM{!Iop(hVQCl5kTlWD)KFaiC_LU^2=c)Vgg z1%#X*k?M>XJt+%U_knfvRWlX3wAD=20W)7A1u|3NVahh?@oGNDQFJY$5?rHp{;^8u z+im!pE&>Tw?#B}eVoi*2oPcZa(%%GquHeVPn|Pn8MIO*GWc?8M>T(-hy9g6Ies8r| zTCOX|ger34u zqN>leGZ~9V%ae3w$q7R{qS%4upWiH3Q%^7{!2v250%C5KsJ$4>7`x;ndO0Dl*}q)W z;1-ic(d1{z&K>eqfSjn%`I#Nnd*S&U{dP3kKR7ttKX^WRx<4L{QJi^r2)lBK^hQ)v zO$qHbRiK0v&W16vB?u_Y`J`8sQ@)@L)`iTc0lG}Lj;aTwYuSJL< zC0H~u{>j|LFMtL@ql+bHWtPx@3B0;|5IjY=BygjUw&ap^DjuRC(C=QBizfxWD6jxX_O{*#tEF0j;n)8m8E;(l$u@lzc`W2D8w7!*e{xkG%# zw1#1gJ9=axzd3r3pXg&SFL=vx-zU=S>XQkdd<)z9WgU%kb?8)&8J(eOySHGGqTpgPkUMm zKmP(_SHTN|**(Mu`IA&p#C#zRtDlp-7KH#4j$p*;?J>j+tzekX2JX~Pmq1G7N74;A z!}cJZ-Ix7YNg9jqB(_zsM-`RRxuZF~RF?W@2;E(cI7iH2>thBz<*=ra9^#x@{m#ki zPy~_#p8tGkC4*8#_Tu6qRT^k*4jpBL>O~kN0MrkH^)Q+#*9x%MCRoUx3}AxQ`%r5` zVWB8i#f?x)q{)Zd*LRnJK2Hh$57hj@SiLJBm7L zhEwDUOn(G(>TU3^f5qZd@bz+z93_YIwA=RQE%x)-4jV}X8C#y5iT?;uMrId7i3ryT zb`*%f?_drz2d2L)F3{$c896MdS`l!|B}ZhyNustELzlURA{JfPG8=}!dcVlkAFI!Y zSfD=eQFaN?M0kd=#j1QHkcdwXQUj@sUVi@B4zuTHN^wF*P`Y4AsK=~1ZY9~E`O zqhUni;-T_m0E*}Ym8X!2(+|;;grJbedM4;bTWYU!Ih@w zMJy+)r8SPJ2Jb%oEPVC|68v-GX4`5+Pb8`FjSsgr=Jt+izJzp(S18;pJ*S(MB4n6U zXp+k!W?v+pmX>5Yyh2|N>vsz6oYzF?@gV~zBkr-BAS?m*NM?}qH=B1)j#ty|DIHmi z<4;%aI#O`nb5lMdVoB%(6%Do%1|4;lbypO0dhRdGyC{rK<|6;M|J()e45>%1iFbY zE>10x=Y&m^ctueI*YYQ+j&bVF;qg2?7!J^fL622=;OG;g>nIZJgZwr4cZiXxEWh=E z%N&B6V281_Yl8|{v0#z|OhfdP;;3;2I%a68+PQdw3_5hYqBw@H+p~mY{E2cxyuU(R z6=4Q-QsthgR>pud@&3xp5R;=Fiq0gR^?6$yBfDS;Z0clMh! zLmr}76L02H3BN7OQRr;W?#yAwd&Mu~|4@-}c(#(Qi{`=EeDbmzP-HkBKs_+&IF_m& z3+4{h7V7UHzChKmV&g7;kURBH0DVLm9Jo+EB2nBNUl3wx1Zmg$|7Y(mfZIschTkj9 z%F9C$g&hhJIu_?%p2wn^M+}|%*@REbZ@Bfr_TQT z3`nD%nVz2Ro*s{j-7mAXbda@lK5sCQJJ+)@ilJfD!$WzJS8kj(;;4MCTPZPkPEhu= zJQ36(x+(;k%6iop`pjZuWG1d`s61jS)QTKbQ{L>VM^jXDWZ6o*6V|5!$|D`4m@C%d zj!o%3Ql?rR(UD6z*hIc4-cKrq&nw$N)QYNEqvr(mIxSyb!%0?#8eWe{Y8$dRcVr7P zeOi=uDEYg21KjUk{bul}r>#@ntCCiRO3I4%{@^NNT%59j;^nj2y^O)GJRzhM6imOl zd;N8$N3lab4y{$S%YudyE8i!(S&2O!aj5=Mfe_W~$Z^A!$CPV%+>$GgEUQz+j*z=u z9#LZ0v|ql%HwV+2;stz}NEtCVLw?k2_Se|*kEnfltBf#lJwjbthx$cT8ih`8^P zd5Uszh|Kw^2$z|oXa)D^GNt8&a@dJqZ@Xn4sm|dLSDUfrqg3L|kdJza?oHytE|d1x zM2&h0C3lhy=<*(d`V`q=O4(vr-WIp|;=g9~;^i?x*_CokWTo~_d4Yr&#HoSkh$Jid zlvvhCs=r9QBrK{zyEaj|8xu>a-6iBzOug9`SJ!WGdokRTj<4 z|4_jfF*{-n567HaUO|Jjkr}4C3tSev_gDjC`#lq z%{>YI=CU(|d@9MKCY?#jUX9{-i73|6vn|R+A`WQvm3k5TP#JAs*;P@^@Eq4myev23 zn<#rI1!%2{xsfwXE4|4^7O&EhJRp^Foiaz+Adw@8mSW{8KXEY00Vg8v2em-H|5qEP zMvR80izx3@FIVax-crL{ZPyI)hzNpY7ZI#h~cn^!qr9>ijf z*AmKys#$x73jQ=Q_aYW4-#bfcd8c}bq)GlkMhvx)wz(uaCETxQ4k=L(;IQ!)J zuFO@Ysa*rqkJWmk$*%AsuPN-iu<`c`i#u|WNr>xI!~k#d50U)J4WrEEgGH&doahoN za(U5MDru?2u1yYxf}Pqukm~6&E7$_>1}sHWwxtE61$Ti%M-qGuqVwi|7)j zW?Ld(t}U`IdH<*Wbb0e4+ZM}QLdYe z729%TkibAOYKL;l%U4rrr!O5Z$oqV{NHfzT+mpGXas&BKB_CSBw4#sJC`L`8$jW^R zm7=WX*%tNdTxA2~7T2z&)*bkH2Fl)2%6YQuP6d&*X{AQB8eMti5IbCEKOXNwRinrc z@aPyQKFMd_C|}{TgtBE+QmZfJRSP%1B_yvnmpC5Ont@WHT&ui;Uc1oAIG1?D#A|ua zE1_6`eoUUDJBV!4x5|_IM|sO72P0L}+_&epTAKHrs-#Ecktj-*qFn8h7{AO`QbJz7 zD%Td329?Fg+d*Ai?E)Qb+Jrcqt(8O5YfiW}OKoLSYvULVPCj5N_poxY5U*YnpG{w? z$kSF10_ibBlqPDHsV-l`9aPyMpMHplf(_nvzs87e9Nrgv^|C9E2=NB3$c2>OMafF7 z3Xwy-${P*!+vS~!a%6}#J-P{qmo3R(p_C9Jo?i^A$q1#(45Jb8q&{O(&DFYochA`uZZ7#d(HYhkioJ4yR8(ZiiopA%`AWOfwGlP zzDY{F2tMd{A6BJS>9Q4MaZ!GTI2YCK>!R8;NW4W{+-4|`fBC7`DtTOpJ!|lp>zn^Y zJP+#mNM_`%tkTn097?i!MqX>`m#t7%zB*jgu*(9neDAuvt|(ceQo>d`p4%cH1y{N~ z$)iq!y31$xDP5DMzPh`)N>HxpXUk zDSJIgj5jEr>5-!>)K%8-oS@Xf8^tMPP{DzbXf z-XY3=zghG@E}(v!{47z#{pZj6A1oj%U*xlX%2xf77~;`tQFZj2B$3&L_O>&%YavLq(^D{*@rS;iONAbOi>jZcwg}mQXu4Kw3Q*_skDBO!{xD0(R+uFNnBCgu%^Tr;VD4Q!pi+<|Gf_hH!V+uCsuWp;A995Cb&G13(!LMQatM3{A=9m)XjN z@b?!JkI~yb>d)nARIs=_UkfNtqbsLX#KX}ZhjtXFgmM%1%V&vRdukJP0ilX}-7pOuvvg}e@kSCxsveGpe)S>jiJQbbo9@w)^5<0CTSosaUNuiv$z`OZ?V zrs^Gs*lJlb9C^>BPEfW_jIC5fJVY;wi?VG|RO89v6$&VibBlVo0^&(4r9+>3`HvV5 zr9-EdZ5?5)i}>+}c#tYMxVbA_RR4*drnM^N5rdZm2a6VghzSNU#p6qqK^(*#zV=0V z#oyX@{jx4!;yoaWnuPRpl7-i(Ix|Ji_U!TC*{C7UH=q6v;z=@*T;fJfVo{ULbBelO zMXo4rr{ptf5o2yB_eARR6Uy)p+5&1duGd`UHcKAv+^>t79!raiMa+wsqCHjdPs>EM zP5l0IOc5;%zhA~I`fmCu9TcP9Ua>7o1;f9v!TSD`4^0NI~cdx}cEDtJy& z_N#JX7x%Tw6JFwu#3DLVsyAF}H!80uIF(veEl+=$0=mZ|PR6oy72@N@I*ThP4&M;17O1y@yWn>hvS> zQn84<7jU%+bN%Bdl`Shj$|uF5{ILJ9Oz8&I|Eq5l%Zaxa{>SZCKTbZE8ZpvSlv~A5 z{8xWM@2)LcwsGarYnK%zpRZP>is&RHb2jl(hT0X>T+C;p$0b5!gQ6p0%CjBdB?g%JBHMB$hg-Kc1;b&;WXviz7`Z8%TR)_B>Sw1uQfg;&N&z^{^@z>kL zsOHPUWU%_?(TGh@E3G_cC|}^yA`sx!tKpZK$||xzL33o8+G_N{Wg>Tm zPm_W1*FEyf63WV28Y_dK_<2Rj&yvX_vb>09oL{%fbFT7{$_b<#$D&G9TolDbZn@;g z2Uaa3sz1elB5UhqiN0J=Rnc9nvbZmnPgN=7t;xx9bc1rD1FJSDR`trYptb%|3c@`@lX^=iRO{3jjeNs!@d+U^Up~?G8@uH$q4T8#u2hHUGm~!YWrpS^0f`fwUTJ3%j3(LGZSPbu| zE%Og+DJd*#BE+-4vTs()b}hqNh-wI>E2?NRj-03_tk~D3#8bFFxq!@jxm92)#@pYf7&Hh$!C9=uADeB_mzXN ziPj7w^aoG_6tt(?d|y|7f` zxI?3liB>9699_gbIo)@jAL}#|t`z?-l{o33n1f>|>n8S7R@Y@@nS{}FIzMF@^|KQv z^`2iq%s=-J^L5d6I-6KV+cs_eQu)P74woaOr7l`l@n@`nS_P}GpqLzge&Z}~?IU4C5_ zuPOO;*+iTpVwyT%rlI;zonKoES-+V_oKyT=kaUSI=F891MQpVCc`{wqf9m`^9mM3V?@T3;D#6zf@h`=riB!6A$u< zhxo(+KC#UwF62`X>nRTDN;w(CwxZXwn^V4yx&m<{*Oobd zYp*z`ZmCzCOZUht&h5FfINyi*#3OuSuY*G@@3pfR}67Hdj5-{OX3-d`AL1^WIl0npE!k2oYE&w z-W}n!*G!aAR=QBU6Pn^vs&h8WE z@QHK!#JPOp+&Vw8i{()!ujI)^`J;r04IXi@h#ex9Wj{H;r-&1Y75s?DiCFum?7gt? zwkBg6`SQmWjyA#WHjc0s!JQm!-JRPx{hhiT;kq25>XQa?gy?#Xmf>aFcdG0N3$NC} z)k&#^i=11_6|QuJ4{RUm(sgZX_SgHnEqaS9z-f0lop!y^?Qj^KPJO6ZZ*hm(U3R-o zS8H0xc~P`AZ2;n7~EEuQ{BSg zP?y`$xlMR*xadJ3S2S2eidbD1XQ;TPa5)_&v)Skjaa+uKvq5ijn(ZbvIpoX4!a8@5 zYv}#Wwh)IqBqYFQvg<8QbEv~%wggxlHjBgM3NZ$l)t?m>E=GL`SJ!YF&2ERu;WmXh z4OV?XK!7nM#A30V9Cp3cCElS$lCy%*CIM0fY>qOa}8FJ4EhkW(HLqmT5T4W zngGtWVJ*Wv(#>S_H-}nmVuU)q*{L@;Y(~4oZnYQ#^e&r7JB!<<9zV|Zom|1rw)zfj zI?FT&2=EUHv6)O_Z#qK^;%l51x54N%%P+OKjSh!J-9Gi}nme6h9bHwfl>-3$O>6twxbzApv4ZxA=)xwcST~@QvZ49wlomOLr+in(L zYI6q|LM>u{IowwD=ZSqRjwrE$$?k73o1Jb;XsA={J8=kwI>aGswAe$P21kI?W_3q? zS46g;u4}RRTZ|zNo7p6Gtvn#A$sGV7h{5#@b8cT)C)+2(Hxb=X4< zX1CdG6i1TSI&r!ftf4lmLmX%}t3HbF73&7O- zhnDTtZSUG9}*B^^~uMS9n6=D1H#`KU~-2B7;JX&AF-ERF1y%CHkZX}HQDr`F7-_D zPV&&U4t2|2R<~Vm3$;7kA|nkDtBA8&oHQoA!yMwaMjRWSX(mpD@Q5UL+QbU(0MTLH zX0eFe*X(o{tTwC2E^Xq#42WWnDHjm+%S9?%LPcsj#C8XWB_PE4 zyR{?I&1ez3S?ny6$tre%%c^&|Ef%vuoKbpXNPs@7uWxBoPI{w%fZeTkxB{$Zi$$cd zKGbM7iXX4H8AA->Jh4ReXMok_kr70koMPRG?UtEbh`fZEtR}NtFHSLs{2>7@x6LjNBx4k59^SI8 z`qlaXlinh7VX?GqS_~BlWwVJ(qPRBc#ivA-WMbWjueOUpM#V8^4t45XdW%7CcDY?P zlfz)Qh-YjMLq&XVfOtKmNEVwou5Avt+bPCL4Yi9L z#t~{4S%b;w)LWG*bfwioG%^OYbBLEp*6iG_di$=fPG#D6ZRa(cF>!u7zr3T3TMlVb zy;J+U3st%OI6^0?|eBSeDqMi(;)TX-j2^St?7u z(M9n%t5gKCBpF>4j|(tgmJ#K0C9o`3L0PjQ=ga$RX>*h{1TyZ7192Em$K`kopP?*! z%JmCjQLKP<(TTlqI8MdIxCM9Nemsh&@hQH>PncZXlF98!ir% zu~dBD7mO=zP37mLkc#P zS~*`i&V}0N$vZ{Q&y{y>o}ZtCSo2&v{qMrSQRQ%X?Qc?Z;Md~kp zw>;iO^>1RSNc6N)kqKm#8g)uNSag%Pca*VNrz;}0=yX9+QLS55DiWiCRBUgkRP402 zQoBwUCM~Sf^_CXV>4r#)>U86!#l-KF7T4*N^HyX!t7TkLr`s$QpSM$5O4h)sv8n@q;$j$xTE1P4xDGZ#2R29LcoCnc952G|Oz(?>aU?3ok62F2_h&PGAuhu; zxDmJGUOa>+@GM@&n|L36uNNPg{vBhGKgYu)mASMA0EMzcpk6fZPc!7&xzmSXZ(q=VyN4b z0Fz-F%!Ju7FBU=z7Qs@eT_39u*TM!Ej4o`A9kDC+#(_8-$Kqt1iSuy@uEGtt6?da{ z9X>{U8ZY8?l=b{_zbV&g;Y;H8_!Xmx3#oGcV{x}pz<3yZ}b8#`Qz;(D8 zccN_Pk=uC$PvUvJinsA0KF7EC8D%?>{JdDA;3!Ri$uJFO!t9tA3!w#zU@0tzRj?K| zz+iM?YwU3=kFAm0$I3B0sY+Q)Ta1Cz6?YI{Y z;R!s8m+>av$EWxjKjL?cA#NaKI>y5!moF3u^UFamjy@U~0^SIZ&%_G7{UdB$h*^9#WiNT0K)^raQ3} zcEoO|)h{Xal4AYQOrL}^aRF-eN^6O=dP=RG;Q-TRe?XaUY4u50i2u`Z@}K5sA|3zR z<+8JUUi`O@d*Axdf9txa{l0{3cM23qs-$aH%!AtR`v1=(HGTfSejeTCe0qd0@dIl0 zu`#2o>5%}ncD;1OeyG*M`V(8QC`98SeKsMWWw zB;J6&?SzM!uGO<%Aij?G@F~7Qt$tN&M~o9gO{c_|3NxZsubPk8fJ!@~I4MgImqo2U zwKj1h48fMz0kwM6KE#7@6i&n$sMVj!e$FzVjZHp~2vcGP%!XP%_}`YtYO!8JbYKf? zk6o}g4#JT*0jJ|UT!O1{BksU`coa|LCA^6b@HxK2uNa;4A|58iG?*E+b{_fciA+}$ z7RFLo9<}xzt$n@;)0K8Wv3_gfPN=o(^dlaMV{kIgLajY#Iq^Ew+V^)8A4IJk=N$1> zyn~PN6>9A_vcJCky|Fky5@HHWk6OD;9^yh6fW@#3YV9>Oi5p-uY>w?vYp3Z&JP=3V zc$|h>`^+E2t5EA#u$}lX)Y@g_^9AzvUc?)CAD^Mt9`l7b8s}SFOoFLVYlq1}oF9#7 z$C9YEzf>izgN@ONtx#)s=|ykS6t#AaHpF4r1N-AJ)Y>OK_z?b$ z=kXe9?HNyqU*jkIiLt4F*V-{s5@*0{m>2b^wOo>>%EUNAWaXLalw`0r7KuhhH%|_2^o=L{j23m>F}Td>%?3cUpTy zVd7F)9;;zp)Y>6JiRE)t@^d<2ckG8+`@Cg{z zqd!`(CiZo|EJ7*FB_ypH$qDZataC_8S- z^ofIsF%@RS?3fP?Xu}d%7OP-wY=j}$5<6g5?1O`G6i&n$I3Jhd8r+0CaX%izGk6(q z;X{0Z@9`VP5I3|ko#JCMOp94C7ZyY_7Qxb30jpy@Y>F;ygJIYM`{OVii&JnmF2WVK z9=GBiJcNJadAx>q@d>`hPxupKCsxxb5vIfpm<{uy9<5j$gRnBz!iMO;7T6xUU~e3R zBXI&w$9cE}SK~(9f&1_%p2kaf6CdDne1~5#dJ;8#;$c!ugPAcW7C;jg#!^@wt6^Pi zf}z+NJ7IV1heL4;PR3cd5SQaR+=9FDAfCW;copy9V|;}l@dw6As-{yyOo8b!E9SvM z7=XpF3|7LL*Z`Yhb8Ls5u@?@+5jY;F;avO!SK*(y9sj~3cnUA#4ZM%f@GXA9XrjSW z=0|Zc38uzOm;>{p5$#wK%VAZlgN@ONt*|3@!@f8KN8==%i3@NUuEou`3lHFNJd0QG zHa^0a_yNCTOwn+yT>mjSrb9o>js9rCq8Nx3u?E)1V02?!49A{00Ego^oQiXBF|Nc7 zxDEH>VLXW!@H*bZr}zdxqfRvFDA#{XjHxgqX2*PJKpU38vRDOcVKiVjmog zqi`b5!1=fo*Wf1HiTm*wp25p_3m@VOe2?EShN#F^uK$<}(_$9Pg$2=!MX)qh!0K2J zo1zQbU>Nqm{x}TB;uM^Xi*N<5$E~;r58>Z<96aK{5snm2zgefrtX2ZOw zM=KV`AgqkFupv6I1-8d7*c%7oNSuJvaUL$g)wmIN;66Nxr|}Zr#0U5s-{Dt`o?1K>{DHC3sOgjtQ($_`ig~aQ24FEPgO#u*Ho#`s9NS@M?1cky1dhjPI2ZrGRrn`v z$G`9hp2CZG1MlNAe2ZT&T3R)I;$jj^jhQe9=0_viu_Ttms#pgbqZ33|tBwoPlcn_cA8~ltqQHE5m|Ckt4VMff3`Otti zEP-XQ3f9I(7=kUa19rteI2cFaM4W;1aVf6BO}G>H<1svgm+=-p#25G;zhMl~fUR8r zF&U=CESL)mq8W=|X{>7q-DL?1BAp7>>m$I2#w?3S5s{aStBCzwta?!@Kwd zU*jkIiLo=P>68dlVg}5Hc~Os6ERI1~8EaufbYKf?k6o}g4#JT*0jJ|UT!O1{BksU` zcoa|LCA^6b@HxK2uPC2Ymd8;%Op0kRGv>qsXu`r+3d>_Ptcy)B6kB5_?2i3#D2~C& zI13lza$JX7a5o;r6L=1<;vIa9uka)Oz*w2pbV`URFg<3)JXi<=uo#xXN>~#cU^8rv z?XWZU!htvf$Ky1di+|uM{1dn1Uw8yh;YGZG_wgCN#V;5wi<&-hF$t!|Oqc`nqY>>` z63by#tb>iwiLJ0BcEi3n1V`f}oQVr?8Lq|6xC;;9aXgDx@HRfem-qp{V@y9aof2Sj zOox7$8~xFOMKKU7Vhya1!RW@e7>+%001n4-I2GsMVqA$Ea2xK$!*~)e;B~x*Pw@?Y zMqO4led1tZOobUSJLW?J+OPzc#VS}E8(|2x#17aM``}<4g%fcG&c~&=1~=hO+>gib z3|_`t_z+*2bE#o`!*m9Z8!LFzj_Ys>?#6?70?*-9yn~PN6@J7Y7%QimP6;surpK(9 z2Mb{U7Q-@F32R~lY=+IT9d^cEI1oqRc$|iF@ef>uf8uuh3y@_ywco zQqw0cCc)I033Fh6G@>0#VmYjeb+9oyu@!d2ZrB%x;AotLGjRbf!?m~>ci{m%j%V=- z-o{7x5cMt`(mQ4GY2SOe>0FuJiVhGS10fWvVdPQ^L67+2y3 z+=hGcFrLH*F+J~$Xh z;Y6H)^KmJz!A-am_v0}Q8b9GrjGa&2&P13J zGhjB%i+Z$TaSX!BSPL7X16yEw?1H^<5RSwNI34HV5?qZNaR=_hqj(xG;Z1yi&+#38 zML7nTa{b4omPUcO)wN&V<+s6{ctFb!O1ua7vgeUhg)zr z9>f!P4zJ=Je2lN~BmTfx1=Qb{5K~}!%!+xi5C&i|EQ6J>CN{uk*c{toXY7RoaRiRX zX*d`Ez*YDsZpXjy2%f@=cmwa_Gkl9*Fj_%1ed1ygOpTc^2j)j3+OZ^-!>U*Z8>16j zVMpwSeQ^km#z{C67vM5ni<@y59>C*x7O&uKe1tFY1AfPt{%SfUz~q3|tBwoPlcn_cA8~lv&l`}FQiGztT z6=uZjm=6tT!xC5)t6*(xgdx}xJ78DrgM)DtPQ)2FAD7}9+=M%EKOVy~co}cuLwten z@f*g_tLYRUlVMuSg1N9Dnz0C$#tK*+>tRzALtHESr45E*5A2V_a4b&2*|-Q-;CkGO zd+-qcjpy+i-o+>Q8b9GrjBQZ2I}xVD444h`q8_bS9D}ej*20G9z!umZyI^k|gd=eR zPRDt;1Xtrm+=2V>D4xbkcoQGsb9{$iQI6%QT>mjCroqgZ6APdi3R+pOFqXpdSPko9 z6AZ=H*a^F1KOBlf1)ALA?hh(9ovN&USEF$Jc_te6K2 zVE`7xGFS;~Vgqc3&9NPJ#$GrON8oszhI8=`T!nw)cKi#E;3>R_H}F0_!?*YaqnXw8 ziHk`vHD-R3$C6kMt708&jN(-R%JJ6E>M03OG) zcm;3cBYcS;@H@t|sN0h{LL#Fz>*Vs^}j2DD)bEQ?jJHa5Z#Y>6GP zEB3*`I0`4?44jWkaSd+5owy&5;TgP)x9}mp!1wqKV_4O6ijT=KEoQ-7SP;!v1WRKD ztd8}tDY~!?hG7rvkHc^*PQlr@2v^{G+=_ef5dMwl@fzO6C-@pa;ZKZhQ`0FCro;@G z4fCQNtymm`urk)dhUmZ+*dDuJZybapaRN@qdAI~u<3`+p`|v29#!Gk;AK-I*hhI^S z#jRZbF)60O%$O4kpa~0ODJ+lGur4;iP;8Bzusim{p*RL7<1Ac=%W)lU!QFTePvAMc zig)lazQT|A17j6d(>68GIV>Kq27voCYfZK2{9>$Y+0k7jde2Q=IGwO<|=@SPNV=Byu*)bm) z(1sR1n(q6^z#81}&aI1I<)6r7EVa0RZ%t+)pd;oo>3ui;&M zg0Jxt{>0cN)O1RODKP_P!@Q_RD;CEftc68#tV0z4od9V-$U@l;@7yrOj_$O}1zwij2!i#tV@8dIki(fEWX*GS~ViHV^nJ@?DMi&d~THo_2Wi5;*j_QAn83Mb+WoR3R!4Q|4nxF3(< z8N7_Q@FBjy_xKHC1gYs1ACqBP%!0YFAeylVmc|NL9qVCJbYU9|!yeclhv8V9g0pcE zuE6!U75CsF{2R~XHN1;Y@HKwIpBTHWnofx@C1${Em>2bE#o`!*m9Z8!LtYiO#n#vfyJJ5bieqpx&ccPb9M|C%+>HnE1fIjIcn2TjEBuH*Fjjdrof2XSOpjSH z4;I1zEQV#U64t~9*bJLvJM4_Ta3GGr@i-0V;vcvQ|HSS17aqY=coA>leSC&*@e4+) zpr%h;OoFK~6XwADXhb`f#Bx{_>tJJaVk_*3-LNkX!O=JgXW{}}hHG&%?!p6j9M9qv zyp50WC4Ru~7_*|9P6;qMrb9o>js9rCq8Nx3u?E)1V02?!49A{00Ego^oQiXBF|Nc7 zxDEH>VLXW!@H*bZr}zdxqpp&gK5;NHroxPv9rK|9ZCC=!Vil~7jW7gTVh8MseQ+?2 z!ihKo=i^dbgPU+C?#E+z1~20+e26dbJ$}O&mDO~LkI67CX2D!o5Y1QwOJfDBj`gr9 zy08s~VGrz&!*DE4!P&S7SKxZwihJ-7{*CAH8s5bx_!>XqPmEnfO{YYd5;I^n%!_)o zVsQ+@%2*2Fzj_Ys>?#6?70?*-9yn~PN z6@J7Y7^|9^P6;surpK(92Mb{U7Q-@F32R~lY=+IT9d^cEI1oqRc$|iF@ef>uf8uuh z3y@_ywa?SJNjhCc)I033Fh6G@>0#VmYjeb+9oyu@!d2ZrB%x;AotL zGjRbf!?m~>ci{m%j%V=--o{7x5cMt`(mQ4GY2SOe>0FuJiV zhGS10fWvVdPQ^L67+2y3+=hGcFrLH*F+J~$Xh;Y6H)^KmJz!A-am_v0}(q?iUXV@@o9CM=Alusl}7y4VCmu{CzW?${59;uxHavv46U z$91>`cjG}kf#>il-oeNC3P0ixj8#`nr-YaS(_>c5gM}~vi(wh8gf+1NHpAxF4m)En z9Ec-uJWj*8_y?}SKXE($g-7rdUc?)CAD`h{{DRTysp%6JlVEDhggG!j8qtm=u^d*# zI@lPU*a|yhH|&c;a5PTBnYaL#;ac2`yYK)W$Fq0^Z{s6;i68Jg#;mWVQvytm>Cg{z zqd!`(CiZo|EJ7*FB_ypH$qDZatasB566 zPaI5)sW2mE$9!l&8@F;B$P3Uom=PHGSe?QcQ!HF((#46Bfo&SRSikU2KA( z*cv-wckG8laSTqzS-23F<2u}eyYV2Nz;k#N@8Dy6g&*+;#%iLbQ$kFE=`kzj!9o~- z#jp%k!kX9sn_+Wohn=w(4#W{S9;e}4`~z3vpST_W!XtPJFX9cnkI(Qee!*x>)%1yr zNia2L!W@_%jcCV`SPrXV9c+wFY=s@M8}`K^I2tG6Ok9A=a4l}eU3dVG<5|3dxA76a z#1Hr#V+O0~lmL@sI`qTb=#LgGih)=WYhZm0MmM&_aO{Z#a5#>`sW=B0<4W9s+i))) z#*=sfuj4&@if`~U>YAzP69*GxD$I!4F&`Sxh9$5pR>9iX2t%+XcEGOK2M6OQoQN}U zJ}$*IxCwXSemsU}@G{=Qhxh{D<2Q`qP}3RtKjIIJ z6{@CFLQH|_F)QZ5LKuL>unbnhn%DrFVRLMUov{}V#1S|ir{P@u16SdnxE=q(BX|lg z;tjly&+sjN!Ducued1ygOpTc^2j)j3+OZ^-!>U*Z8>16jVMpwSeQ^km#z{C67vM5n zi<@y59>C*x7O&uKe1tFY1AfPtZZ(|}U~)`{ewZ8m(Sk)W5G!I0tdGIy#t=LaR$!ErMLz+;ZEF-$M6hZ##{IhU*LQEhA~>G=@cK6VOq?Bxv(Ib zu?UvN3RoTMVN-Nr8w|r9*dK@CSe$~haS^V-^|%%H;351Q&*L?`i%;-1e!`y^yQP{= zi7+K*z-*Wo^=QT77=)Fv7B)l&w!rq-1$*Nl9ElTfI?lr-xEeR&4%~-F@ibn-oA>~q z<2(F{(OaqM6AzPO8qAD2u>hK|FqXpdSPko96AZ=H*a^F1KOBlf1)ALA?hh(9n^Yc-t`VhT);Suqb5!T>CWWv~*~#0J<5n`1ldjJz?xC;No?f4fS!Bcn&oti#zFfpdW zjF=tsp#g1J0?T3*tc{H@1Y2SU?23JGFpk2BI0NV7Qe1HK#9p~W^ zT#XxX2kyh8cp5L^O?-gQ@g07}=pEJciHAus4Q9riSO85}7)xP!tcG>535H^8?1bI1 z9}dMaI2mW*LR^mPa0~9ngLneZ;Z?kYkMR|L#2*-|lbTKmF$Jc_te6K2VE`7xGFS;~ zVgqc3&9NPJ#$GrON8oszhI8=`T!nw)cKi#E;3>R_H}F0_!?*YaqlKyI6BmeBl7@gP(J7PENi$icUPQsbE0GHuf+>E>M03OG)cm;3cBYcS;@H@r~ zSJNp0CdYK>hq=)oEm#x-u_D&M`WTFEY>VO869?dM9EVeJ4lc%(xB<7}UObE^@d94Q zd-xRJ;AhlzR?{aACdO2l5wl}HG@uPjU|Fn!wXqR~U`yTxzJYK`Q_yk|$C;W-AyQ=Aw2vcGP%!YYUk5(*>L0B1UVMBCa z3v7>Fus06EkvIXT<2+n~t8pXlzs~u#Kk0-8Z%)I%#TL2V@WKBRk02>Mkltyj@S+R;t(8-lW-<3z-71=H{&im zfXDGHUcuY=2w&m{{Ejhus_B#flVdvc!`$eP7A%T^SP^SreGEo7w#9Jli34yrj>D-q z2N&Z?+<@C~FCNB|cmc2DJ$#C9@H6Uqsp%636JsjOh}kh88qkI%uq;-=+Smv~uqAfD zuGj|$<0zbnGjKjG#WlDIcjA6LhG+0H-ol6Y0^j2|jL}<7r}&r*(_$9Pg$2=!MX)qh z!0K2Jo1zQbU>Nqm{x}TB;uM^Xi*N<5$E~;r58>Z<96aK{5ebjVHgefrt zX2ZOwM=KV`AgqkFupv6I1-8d7*c%7oNSuJvaUL$g)wmIN;66Nxr|}Zr#0U5s-{Dt` zts{LfC1${Em>2bE#o`!*m9Z8!MA02X8D}sSCctEv1~XxH)V{Y6u?34@DJ+LoQ2YJ{ z#G-qV^8KP2R#8-2D~j8DMNu456o-xCKpc)^aWc-t`M3mE;Rf7_yYT=X!_#;Xuj5^O zj4$y$e#L0f)a{Lfi7*AG!z`E+^P>T+SPTQP0#?I1*chGI3Oiyq?2AKiG)}^qxB!>o zTHK7g@Bkjivv>t><0E{DAMiWIjIO3z0!)tS&<}H?KU%OT24Y35f%P#M-Pjhxu_q3| z;W!Sb;v8IzD{%vE!@YPIPvQlzQNC^i@|Y)i7^#s#O#<44QRs>SQe{bZES=g z*b+NnSL}m>aTHF(88{!8;u_q9J8?fA!!vjpZ{b6Hf$#Af#)zq=Q+!N@X)z1t!h&eV zB3K$LV0EmAP0@vIFbsQOe;kHmaSG1HMYsaj<5t{*hwyJakJs=nKEc=c34da2k?}`Q zuhS*Ml$ZgtVP4du6^mmKR>oS`5FOY8+hZ5(je~F`PQd9n50~I-+=x4HA0EZicnNRf z1ALC}@GC|a7h;({@h~Z-!OWNw3!n)LV<{|;)vzu$!BA|Cov=Ih!=X3^C*v$!h|6&u zZo%Dn5KrJayoz`5F}}i&_yc3bQPU|Qroi-=74u*r48USo1}kArY=F(MIkv;j*b4{Z z2po^oa4!CVtME_Uj(_11JcSqW2HwYK_!hrlw76>e#Kk0-8Z%)I%#TL2V@WKBRk02> zMkltyj@S+R;t(8-lW-<3z-71=H{&imfXDGHUcuY=2w&m{{Eji>sp*selVdvc!`$eP z7A%T^SP^SreGEo7w#9Jli34yrj>D-q2N&Z?+<@C~FCNB|cmc2DJ$#C9@H6V-tLYO5 z6JsjOh}kh88qkI%uq;-=+Smv~uqAfDuGj|$<0zbnGjKjG#WlDIcjA6LhG+0H-ol6Y z0^j2|j3I7hWWF6AlVMuSg1N9Dnz0C$#tK*+>tR!LVH*s?9@rm;;aHr4vvCow!1cHl z_uwJ?8_(l4yo*opHGaaM7(1bwPKhujX25Ki7xiex;uwULu@*K&2e!cW*adszARLJk za5~PzCAbmV)ViOF- z*4PQVV?P{G(15pUpqe1>oF3r0(#rcYc< zf~heR=D_@DL_3zma#$7XU}JP*E9{8furCh5(Krcb;sRWTYjHE~!UK35&*BxljgRmp ze!%Y-GpU+R2{1XPLqE)o{%FCX7>E_I2G+-5bYoi#$DTLslO4jHxgqX2*PJKpU38vRDOcVKiVjmogqi`b5 z!1=fo*Wf1HiTm*wp25p_3m@VOe2?ESMshWs;$t#Qi&-!i7DO`^!O~a(t7AQEiY{z} zVb}xv<1ieHQ*bse!WFn4x8fc=gn#3CyoPu23BJZp_!DENP}3<9ro;@G4fCQNtymm` zurk)dhUmZ+*dDuJZybapaRN@qdAI~u<3`+p`|v29#!Gk;AK-I*hhH(esCZZI|1l}1 z!OWNw3!n)LV<{|;)vzu$!BA|Cov=Ih!=X3^C*v$!h|6&uZo%Dn5KrJay!wCIy9?+j z&b5K#0|b)d?(Q1gEd+-E!7YU(5UdeMf)w`#EAB;$mQdWKK%qcMf#OiKxI0BcxzD@v ze=mDdW=YR!zpwY+opUC?ncXMPzVpoN%oF!sd$I1ESQM4W;1a0#x&^|%f9;6Xf!r|}|Q$9wn`Ut^rKW_{c+ z8K%W7m>UaW2`rBuSQ{H+bM(Ou*bRGN9~^`uaU4#;*|-pw<7(W5J8>UI;c+~NSMU}- z#25G$UF3w5dcP&Yl$ZgtV?K1p(pU+rV?At)t*||I!XOOCemE3I;RKwHb8#_7;yT=l zyYT=X!Bcnvui;&Mg0Ij>Z`Q{ZlVTdojJdEN7RPc}6>DJwY=&*oAG>0A?2Q9)1dheY zI13lxGF*ilaR=_jLwF3&;$^&v5AZogW4sJzof2XSOpn7L+g-x*y`e7Fg!Cp83hvOKWgfnqIF2!$g18&Ff@kjg_&)_Azf%owlzQMS1!riw0 z$K;p}vtk}Bj3u!GR>L~j2wUK%*bzU&Q2ZPR;}`fPPQ|bAYy1Y+;AZ>|f54yc1pb1* z;%$6{zv1r~KeJh<#Fz>*Vh+rYMX?N4#u`{3n_z47#m*RvJ+VIy!_hbqXW%?sf-7-7 zZo@rz5Rc+%yolHF9zMm_7)LIkP|J}UCd0It1#@E|EP>_G18ZYLY>qzI0lQ%j?1O`F zB#y%=I2#w@a$Jp@a3}7=C_Ikm@Cx3-hxh{DqDxk@PKhujX29&258bgeR>JC74;y1E zY>%BV2*a@-4#iP80jJ|!T#S*p4!7cNJb*{=6kfnSm1^>M|dmcSE8E@hPe2&o=FS}W% zgqQ-;V>Zl-MX(fBL{F@X-q;e`VE_hV81}^>7=hz)8qUE*xB}PW7TksV@i3mm^LQ2S z;A4D=?=V3Qvrb7cHDbm8}!327=pcU01n47I0 zgefrtX2*Q!j-{~@R>ykS7+Ya`?1VuWj{R^bj=~8z9p~a=jKp=g6?fwSJc6h20$#(r z_yk{}k=Lw`D<;J>m>F|nK`f5tuqxKV2G|VSqCa-U?${d#;s_jzlW`U}6CdDnjK+BR%sM5+6qp{fVO}hPrLZD;VqNscme>vhFc8DAFAl*79FNm* z4lcqKxE8nIF5HiY@g$zdt9S<=<4b&p3G$nDN`k2|6XwJMSPaWz6|9L~*c98KA9leI z?1ckxIF7+dI1}gNQv4P-;CB2Tf5e~h3|_(;cpsnP8;o1Ptj{Ny9MfS|%!7roBv!y` zSO*(n3;Yy2;%69&pW|Ts0>8wm_!WMQ-{2bDjNjo8_!FMMU+`DFjgRm*{2k*LH0zWY zQ(;ETf%&m0mchzc1M6cGY>mFy8H2GW_Qzp38YkimoQF$rC9cP9xCam7Q9O+o@jBka zr}!G<6f*1MhRHB3X2IN82uomj^uXHK5Syb9cEE1f1N-109Esy_3eLubxExpGCftep zFba?3IlO|m@FBjyx9C#XtWzRPi5W0E=0kTZjg_!E*2Biw3fp5R48m~iheL4`PQd9n z7Z+nBuEVXk8xPbu@*MKX4n?}u`71R z-Z&6P;8>iDvv2_}!&SHuci>(;gvanKUdEgF0H0$t#&b98ln_&3dd!A-u?UvJis*@T z(HmQ0I}E@;48y)S1S4=fPQy942v^`*+=9DsKOV-Dcpk6f9ej*0@f{{8YSt+Urp8Q| z6ANH5EQ?jJCVF90Y=eH-1w*hG4#43!1}EW6oR3TKTik%#@q7Fcf5tO-32)$ie1>l@ zZZWeypI~xKhgmTX7RHiT0jpshY=kZFQ|ySJVJLo%gYgUe5~t!<_%(imYj87uhd;O`eJ7c#-7+8hv8_Ph%;~= zF2R+!9=G8hJcvi}G+xB(cn_cAYm8IEtdAQe!?c(Mb7LVaf#uNyYhy!fjy~7{yI~LP zgM)A+j>9Q98yDhoT#cJ>C+@>2JdWq^3f{tp_yXUeOG&d%i7+K*!0eb0-LW)Q!s=KL z8)GYMkDV|G!?7O@#Zfo`r{i2)jFGqwx8iO*fJg8YUchU37oXrOG)kHEamA#V1~X$W zEQrOi99G3z*Z`YhTlB}S*d2T0KpcT%aWc-r1-J}X;YQqnd+`t+!?So9Z{h=dj?oye zv{|Qwm;%#dHq47fuoPBAPppgH*b?I#EU%aX0du2u9#|oQ8975w5_sxCM9NemsmP@jPC|JNOu1;yX+b$DCe$A9QNQ zGht3FfW=VX|6GOfn&^d1u?_lR7YsqG`6QRs*ye+rezYlvYi-KMTAQ*PU{hwdO+CM= zFpxjqOn{C!aCi1AF5D9EPKDBF?~hxCB??dfbM4@E{(=(|8fD z<2`(euTkGO@5X#fhG{Vi=0<(Ldt7yjch5 zeez}kTlf%P;9GQI|11%vMEyNU*%{A= z?pPWtq5giPdW<*5R@fdpVGxF6KOBmqZ~{)pxwsf3aUE{O-FN_x;3>R-*YGYr!B=R+ zHJ1lhOp0kRGv>mASRBh?Rjh>#uo<>Rf9#6gu{RFH5jYkn<1Ac&%WxHL#2vU758*L9 zixbBW9@p!~zxwm>DB9sXo?x7hYC^zp4Sj911QSRb39 zKF;LJcxMd8p4cCU;Xn2GQUcnS1XE)s%!zvaBd5D;bt{WiuqJw;J}%dWaX;*WA=nG` z@i^!FGwbU-K4{kAIPdFocm;3aLwtd6@t^)ZntC};#PXj4(_t3W+y6fsuivkF{bqIi z{$u+KzO>^%eLeTFwx5^&t~z~eJN>ckNN={|191e7#mP7e7vM5ng&T1P?!`lR4A0_a zyonF+IYwhV_S+I-3QUjLFfSItQdki^u`YUJOKgV$7>Hrm7l&X3TFqDexO08%Tpz3N zH~4S;yyE=ce{=bEe(%3o2j} z4j%J7(p2{U^m+FMj4#ENxDL1CZq(E7-2XC{Kj-IRvkrgv=V9mXE}3<9{_c`l2j}lD znRWPI{oN(K9g6LCxFFlF;#dx=#@MdKHeYOyw^?o1|Ll3%*d7nl+wp(e^#h0H0ApO4 zX}0s-o`(8bS=+en{I-mjV%$q9c9a6iM{KP=2}4-E)(Z{inJt7mWrbEIQ{f6vbCy9Rd(kvQA1pTB>o{N}kW zlt)7Sf;$KB-{wPqd?d)PL#X6XFJOiQb`1{DIi)>@dxwyqpnza$&-<88p?*OURINz^ zcfauP(60VH!`16_4h`w4$`I>L9TQaNH+83KtM=E%NMBug7y6iS9`d-3tKlF{%_ALG z(?MJ-ySQ2o;yT*JsrQRj`&1G1>#F0}R&nZD5FJ<7L0p7gTs;SIYFX3y>N|*=Zx`p~ zATH7_PF*){r*hnS;2*c5%%e#HnN1I$sM1aq8YK9oN!9oVrI)$Eju8YI@bR!8%S|zho6x$1YB7 z53J&v*~PVW5a(+b=i?ww9fQ~H`_w^PAG^4A4&v0ccsidtFJd(v>Y8R9=j$NuE4w&9 z2XV{n;`|-Nt+$Ko;2>_7U0g>8aZz@00S@BM*u`~n5T~xi)^+LZAnuV}To(s%(ROiN z?c&rmX7ZGw&h@FzEv~8lt4DLl11c^aPsEH<k-^ls9BEUuWu#C%=#yRf=b%Zus? zOaF=V9@48WT7E<^xu~{Vg``(;>h&s1uiGGlhKKA|)Y3`po+~fI_W2S|ay915M5=s6 zq}Tb>Ho`vNNcpEoy9e~3dhh9B88k{HGK@NEfKETB)*<$<8#%?*C?}7p*HyL9udA+M z)c+%chWhO`6{kD>TsL{ZKHoLT=PQq?d?lpU`3B3d{vR1M)Ni@%wR=Dhs_mnFz8X`d zF7l+xr}h>8kdFnUmt3@{et%DQf5=DNwP~)#ONmwa)ODU#`JTzeSL*sw-RZ%9w~u`1 z7s>R}K2;y9d>JwrhPzHCTIH)GHy7#oQNcmJ+LAASEb@g*J~dy}^j30^FGTX?j77dh zl25&^%BQaPw3^n{1! zd1l?|!I<+mO7f{~t7=~j>8Vo9E zq?739#F*_HzFg*q{Ey04M|!LFZO>vDndN!i>C`dvMXqo)vP+Q4r}sNQ)V?#4FQ-l> zTIGw9eEG@eC0e!bwdC6ni+s-{-(~XY{mu`yZ&g;qSZTK&w`$*sNSVLVC^fy_(p$C9 zM@{S?>FKQUxvY`;O*HfA{mu`y&u4*QsO_%qtn%gdbThh3kZPaa@BC1{J(AC-w9aNd zKc+~&adl%W~hBJmCsjttM<*iX&6;?5{c7;G4q|DX_{tJJrpYAVF$+)$(sOy+L@Xv!33} z)7*?(5~uQYagguLz1VFpU1rMkN*OMD&wDP>}tn#g2 zDC+|WQtj&_y;b|#OTI8yoz1#^QIc=4tWZ?Gz7Fyoi#CiO-lwyiUau9BOd7B9sajaI zZ^m20*edHa-C0eqSEQQ}k-*G1&_TW?vU62KCljsmomlH;+wQ9N4VK=jebXdgL7l`w zzTE5Hzu$)1<&#bFzuO>##x9pQMkXnZ?sV#L@__y4kKyZO`yr31_6?U_w{MONtN&5! z3f2802Y$A8m%`Ag=TyH8b==eeuD0zsVYV0*r}ll6y1OTFQF=sFudBK>(%ZLhthCQp z9#id$kY2ZMj||K1k9teny3GS!ZJ%NFxPC3A-D<+PCUJx11;)zblciVrl1r~%({6Xl b=osN@sNa3poz9mcM%+DV-&q|b>bQRa5ptUY literal 0 HcmV?d00001 diff --git a/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.su b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.su new file mode 100644 index 0000000..acd0979 --- /dev/null +++ b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.su @@ -0,0 +1,6 @@ +stm32l0xx_hal_flash_ramfunc.c:115:30:HAL_FLASHEx_EnableRunPowerDown 8 static +stm32l0xx_hal_flash_ramfunc.c:128:30:HAL_FLASHEx_DisableRunPowerDown 8 static +stm32l0xx_hal_flash_ramfunc.c:305:30:HAL_FLASHEx_HalfPageProgram 32 static,ignoring_inline_asm +stm32l0xx_hal_flash_ramfunc.c:376:30:HAL_FLASHEx_GetError 16 static +stm32l0xx_hal_flash_ramfunc.c:458:37:FLASHRAM_WaitForLastOperation 16 static +stm32l0xx_hal_flash_ramfunc.c:398:37:FLASHRAM_SetErrorCode 16 static diff --git a/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.d b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.d new file mode 100644 index 0000000..3c195fe --- /dev/null +++ b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.d @@ -0,0 +1,89 @@ +Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o: \ + ../Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h \ + ../Core/Inc/stm32l0xx_hal_conf.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h \ + ../Drivers/CMSIS/Include/core_cm0plus.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h: + +../Core/Inc/stm32l0xx_hal_conf.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h: + +../Drivers/CMSIS/Include/core_cm0plus.h: + +../Drivers/CMSIS/Include/cmsis_version.h: + +../Drivers/CMSIS/Include/cmsis_compiler.h: + +../Drivers/CMSIS/Include/cmsis_gcc.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h: diff --git a/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o new file mode 100644 index 0000000000000000000000000000000000000000..72ba526e773856e1fd743ec595a3463cd91e9cbd GIT binary patch literal 579912 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

eR5-?<`3IR3h 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%0AN`8Q(&x=Hso=b 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 K8YqUT&i?}57clDp literal 0 HcmV?d00001 diff --git a/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.su b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.su new file mode 100644 index 0000000..14262a9 --- /dev/null +++ b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.su @@ -0,0 +1,8 @@ +stm32l0xx_hal_gpio.c:156:6:HAL_GPIO_Init 32 static +stm32l0xx_hal_gpio.c:286:6:HAL_GPIO_DeInit 32 static +stm32l0xx_hal_gpio.c:367:15:HAL_GPIO_ReadPin 24 static +stm32l0xx_hal_gpio.c:403:6:HAL_GPIO_WritePin 16 static +stm32l0xx_hal_gpio.c:427:6:HAL_GPIO_TogglePin 24 static +stm32l0xx_hal_gpio.c:454:19:HAL_GPIO_LockPin 24 static +stm32l0xx_hal_gpio.c:487:6:HAL_GPIO_EXTI_IRQHandler 16 static +stm32l0xx_hal_gpio.c:502:13:HAL_GPIO_EXTI_Callback 16 static diff --git a/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.d b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.d new file mode 100644 index 0000000..bf92654 --- /dev/null +++ b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.d @@ -0,0 +1,89 @@ +Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o: \ + ../Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.c \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h \ + ../Core/Inc/stm32l0xx_hal_conf.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h \ + ../Drivers/CMSIS/Include/core_cm0plus.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h: + +../Core/Inc/stm32l0xx_hal_conf.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h: + +../Drivers/CMSIS/Include/core_cm0plus.h: + +../Drivers/CMSIS/Include/cmsis_version.h: + +../Drivers/CMSIS/Include/cmsis_compiler.h: + +../Drivers/CMSIS/Include/cmsis_gcc.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h: diff --git a/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o new file mode 100644 index 0000000000000000000000000000000000000000..49e20f905c4cc1e26e74bdbe1b275377bbca72cd GIT binary patch literal 646868 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 Msz{ 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

BOt_3X0{H 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

vn;F^QT*PQbVa88Td3+bL2##QLE-YA6; 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 literal 0 HcmV?d00001 diff --git a/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.su b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.su new file mode 100644 index 0000000..b7d0802 --- /dev/null +++ b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.su @@ -0,0 +1,79 @@ +stm32l0xx_hal_i2c.c:522:19:HAL_I2C_Init 16 static +stm32l0xx_hal_i2c.c:632:19:HAL_I2C_DeInit 16 static +stm32l0xx_hal_i2c.c:678:13:HAL_I2C_MspInit 16 static +stm32l0xx_hal_i2c.c:694:13:HAL_I2C_MspDeInit 16 static +stm32l0xx_hal_i2c.c:1115:19:HAL_I2C_Master_Transmit 48 static +stm32l0xx_hal_i2c.c:1234:19:HAL_I2C_Master_Receive 48 static +stm32l0xx_hal_i2c.c:1352:19:HAL_I2C_Slave_Transmit 40 static +stm32l0xx_hal_i2c.c:1490:19:HAL_I2C_Slave_Receive 40 static +stm32l0xx_hal_i2c.c:1617:19:HAL_I2C_Master_Transmit_IT 48 static +stm32l0xx_hal_i2c.c:1688:19:HAL_I2C_Master_Receive_IT 48 static +stm32l0xx_hal_i2c.c:1757:19:HAL_I2C_Slave_Transmit_IT 24 static +stm32l0xx_hal_i2c.c:1807:19:HAL_I2C_Slave_Receive_IT 24 static +stm32l0xx_hal_i2c.c:1859:19:HAL_I2C_Master_Transmit_DMA 48 static +stm32l0xx_hal_i2c.c:2006:19:HAL_I2C_Master_Receive_DMA 48 static +stm32l0xx_hal_i2c.c:2151:19:HAL_I2C_Slave_Transmit_DMA 40 static +stm32l0xx_hal_i2c.c:2255:19:HAL_I2C_Slave_Receive_DMA 40 static +stm32l0xx_hal_i2c.c:2363:19:HAL_I2C_Mem_Write 48 static +stm32l0xx_hal_i2c.c:2500:19:HAL_I2C_Mem_Read 48 static +stm32l0xx_hal_i2c.c:2637:19:HAL_I2C_Mem_Write_IT 48 static +stm32l0xx_hal_i2c.c:2731:19:HAL_I2C_Mem_Read_IT 48 static +stm32l0xx_hal_i2c.c:2823:19:HAL_I2C_Mem_Write_DMA 56 static +stm32l0xx_hal_i2c.c:2970:19:HAL_I2C_Mem_Read_DMA 56 static +stm32l0xx_hal_i2c.c:3113:19:HAL_I2C_IsDeviceReady 48 static +stm32l0xx_hal_i2c.c:3255:19:HAL_I2C_Master_Seq_Transmit_IT 48 static +stm32l0xx_hal_i2c.c:3342:19:HAL_I2C_Master_Seq_Transmit_DMA 56 static +stm32l0xx_hal_i2c.c:3510:19:HAL_I2C_Master_Seq_Receive_IT 48 static +stm32l0xx_hal_i2c.c:3597:19:HAL_I2C_Master_Seq_Receive_DMA 56 static +stm32l0xx_hal_i2c.c:3763:19:HAL_I2C_Slave_Seq_Transmit_IT 24 static +stm32l0xx_hal_i2c.c:3859:19:HAL_I2C_Slave_Seq_Transmit_DMA 40 static +stm32l0xx_hal_i2c.c:4040:19:HAL_I2C_Slave_Seq_Receive_IT 24 static +stm32l0xx_hal_i2c.c:4136:19:HAL_I2C_Slave_Seq_Receive_DMA 40 static +stm32l0xx_hal_i2c.c:4313:19:HAL_I2C_EnableListen_IT 16 static +stm32l0xx_hal_i2c.c:4337:19:HAL_I2C_DisableListen_IT 24 static +stm32l0xx_hal_i2c.c:4370:19:HAL_I2C_Master_Abort_IT 24 static +stm32l0xx_hal_i2c.c:4432:6:HAL_I2C_EV_IRQHandler 24 static +stm32l0xx_hal_i2c.c:4451:6:HAL_I2C_ER_IRQHandler 32 static +stm32l0xx_hal_i2c.c:4503:13:HAL_I2C_MasterTxCpltCallback 16 static +stm32l0xx_hal_i2c.c:4519:13:HAL_I2C_MasterRxCpltCallback 16 static +stm32l0xx_hal_i2c.c:4534:13:HAL_I2C_SlaveTxCpltCallback 16 static +stm32l0xx_hal_i2c.c:4550:13:HAL_I2C_SlaveRxCpltCallback 16 static +stm32l0xx_hal_i2c.c:4568:13:HAL_I2C_AddrCallback 16 static +stm32l0xx_hal_i2c.c:4586:13:HAL_I2C_ListenCpltCallback 16 static +stm32l0xx_hal_i2c.c:4602:13:HAL_I2C_MemTxCpltCallback 16 static +stm32l0xx_hal_i2c.c:4618:13:HAL_I2C_MemRxCpltCallback 16 static +stm32l0xx_hal_i2c.c:4634:13:HAL_I2C_ErrorCallback 16 static +stm32l0xx_hal_i2c.c:4650:13:HAL_I2C_AbortCpltCallback 16 static +stm32l0xx_hal_i2c.c:4685:22:HAL_I2C_GetState 16 static +stm32l0xx_hal_i2c.c:4697:21:HAL_I2C_GetMode 16 static +stm32l0xx_hal_i2c.c:4708:10:HAL_I2C_GetError 16 static +stm32l0xx_hal_i2c.c:4733:26:I2C_Master_ISR_IT 48 static +stm32l0xx_hal_i2c.c:4879:26:I2C_Slave_ISR_IT 32 static +stm32l0xx_hal_i2c.c:5020:26:I2C_Master_ISR_DMA 48 static +stm32l0xx_hal_i2c.c:5160:26:I2C_Slave_ISR_DMA 40 static +stm32l0xx_hal_i2c.c:5305:26:I2C_RequestMemoryWrite 40 static +stm32l0xx_hal_i2c.c:5360:26:I2C_RequestMemoryRead 40 static +stm32l0xx_hal_i2c.c:5409:13:I2C_ITAddrCplt 32 static +stm32l0xx_hal_i2c.c:5504:13:I2C_ITMasterSeqCplt 16 static +stm32l0xx_hal_i2c.c:5557:13:I2C_ITSlaveSeqCplt 24 static +stm32l0xx_hal_i2c.c:5631:13:I2C_ITMasterCplt 32 static +stm32l0xx_hal_i2c.c:5774:13:I2C_ITSlaveCplt 32 static +stm32l0xx_hal_i2c.c:5933:13:I2C_ITListenCplt 16 static +stm32l0xx_hal_i2c.c:5984:13:I2C_ITError 24 static +stm32l0xx_hal_i2c.c:6096:13:I2C_TreatErrorCallback 16 static +stm32l0xx_hal_i2c.c:6134:13:I2C_Flush_TXDR 16 static +stm32l0xx_hal_i2c.c:6155:13:I2C_DMAMasterTransmitCplt 24 static +stm32l0xx_hal_i2c.c:6205:13:I2C_DMASlaveTransmitCplt 24 static +stm32l0xx_hal_i2c.c:6233:13:I2C_DMAMasterReceiveCplt 24 static +stm32l0xx_hal_i2c.c:6283:13:I2C_DMASlaveReceiveCplt 24 static +stm32l0xx_hal_i2c.c:6311:13:I2C_DMAError 24 static +stm32l0xx_hal_i2c.c:6329:13:I2C_DMAAbort 24 static +stm32l0xx_hal_i2c.c:6357:26:I2C_WaitOnFlagUntilTimeout 24 static +stm32l0xx_hal_i2c.c:6388:26:I2C_WaitOnTXISFlagUntilTimeout 24 static +stm32l0xx_hal_i2c.c:6426:26:I2C_WaitOnSTOPFlagUntilTimeout 24 static +stm32l0xx_hal_i2c.c:6461:26:I2C_WaitOnRXNEFlagUntilTimeout 24 static +stm32l0xx_hal_i2c.c:6525:26:I2C_IsAcknowledgeFailed 24 static +stm32l0xx_hal_i2c.c:6599:13:I2C_TransferConfig 32 static +stm32l0xx_hal_i2c.c:6624:13:I2C_Enable_IRQ 24 static +stm32l0xx_hal_i2c.c:6695:13:I2C_Disable_IRQ 24 static +stm32l0xx_hal_i2c.c:6758:13:I2C_ConvertOtherXferOptions 16 static diff --git a/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.d b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.d new file mode 100644 index 0000000..c589720 --- /dev/null +++ b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.d @@ -0,0 +1,89 @@ +Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o: \ + ../Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.c \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h \ + ../Core/Inc/stm32l0xx_hal_conf.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h \ + ../Drivers/CMSIS/Include/core_cm0plus.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h: + +../Core/Inc/stm32l0xx_hal_conf.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h: + +../Drivers/CMSIS/Include/core_cm0plus.h: + +../Drivers/CMSIS/Include/cmsis_version.h: + +../Drivers/CMSIS/Include/cmsis_compiler.h: + +../Drivers/CMSIS/Include/cmsis_gcc.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h: diff --git a/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o new file mode 100644 index 0000000000000000000000000000000000000000..d3076a52df939f752327f457304a77cc14bdc856 GIT binary patch literal 580220 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 CD<(An literal 0 HcmV?d00001 diff --git a/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.su b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.su new file mode 100644 index 0000000..7a23bf0 --- /dev/null +++ b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.su @@ -0,0 +1,6 @@ +stm32l0xx_hal_i2c_ex.c:97:19:HAL_I2CEx_ConfigAnalogFilter 16 static +stm32l0xx_hal_i2c_ex.c:141:19:HAL_I2CEx_ConfigDigitalFilter 24 static +stm32l0xx_hal_i2c_ex.c:209:19:HAL_I2CEx_EnableWakeUp 16 static +stm32l0xx_hal_i2c_ex.c:248:19:HAL_I2CEx_DisableWakeUp 16 static +stm32l0xx_hal_i2c_ex.c:314:6:HAL_I2CEx_EnableFastModePlus 16 static +stm32l0xx_hal_i2c_ex.c:341:6:HAL_I2CEx_DisableFastModePlus 16 static diff --git a/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.d b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.d new file mode 100644 index 0000000..3123761 --- /dev/null +++ b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.d @@ -0,0 +1,89 @@ +Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o: \ + ../Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.c \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h \ + ../Core/Inc/stm32l0xx_hal_conf.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h \ + ../Drivers/CMSIS/Include/core_cm0plus.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h: + +../Core/Inc/stm32l0xx_hal_conf.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h: + +../Drivers/CMSIS/Include/core_cm0plus.h: + +../Drivers/CMSIS/Include/cmsis_version.h: + +../Drivers/CMSIS/Include/cmsis_compiler.h: + +../Drivers/CMSIS/Include/cmsis_gcc.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h: diff --git a/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o new file mode 100644 index 0000000000000000000000000000000000000000..cda5e37dee9ce657b13e0aa09f1338bc9ccec494 GIT binary patch literal 581416 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�%X^9cUQk>#BE|2BjJ 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

G_{ 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 Apa1{> literal 0 HcmV?d00001 diff --git a/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.su b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.su new file mode 100644 index 0000000..fa2f762 --- /dev/null +++ b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.su @@ -0,0 +1,7 @@ +stm32l0xx_hal_pwr_ex.c:70:10:HAL_PWREx_GetVoltageRange 8 static +stm32l0xx_hal_pwr_ex.c:83:6:HAL_PWREx_EnableFastWakeUp 8 static +stm32l0xx_hal_pwr_ex.c:93:6:HAL_PWREx_DisableFastWakeUp 8 static +stm32l0xx_hal_pwr_ex.c:103:6:HAL_PWREx_EnableUltraLowPower 8 static +stm32l0xx_hal_pwr_ex.c:113:6:HAL_PWREx_DisableUltraLowPower 8 static +stm32l0xx_hal_pwr_ex.c:131:6:HAL_PWREx_EnableLowPowerRunMode 8 static +stm32l0xx_hal_pwr_ex.c:146:19:HAL_PWREx_DisableLowPowerRunMode 16 static diff --git a/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.d b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.d new file mode 100644 index 0000000..b7c6915 --- /dev/null +++ b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.d @@ -0,0 +1,89 @@ +Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o: \ + ../Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.c \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h \ + ../Core/Inc/stm32l0xx_hal_conf.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h \ + ../Drivers/CMSIS/Include/core_cm0plus.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h: + +../Core/Inc/stm32l0xx_hal_conf.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h: + +../Drivers/CMSIS/Include/core_cm0plus.h: + +../Drivers/CMSIS/Include/cmsis_version.h: + +../Drivers/CMSIS/Include/cmsis_compiler.h: + +../Drivers/CMSIS/Include/cmsis_gcc.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h: diff --git a/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o new file mode 100644 index 0000000000000000000000000000000000000000..d03fdee8f900c67d0cd5803699742dee29ab9f77 GIT binary patch literal 587880 zcmce;cU%trL_P4tLcJ;Tv1?=W;hXQu@w|fBg^tXEf_V%~?0Dk9hhXMBWxBCJ1_qPWC z4)nLb2OQ*Y{{Z--zx@;7&;Iscz+e3BUjcvfw|@s5;%^TH4EMMH0Q}S6{tNJLe>(zj zn7=(7aD=}-5^$8iJsNO~zdaUkoWDIDaDu-*5pa^fJsEI{zdaRjn!i0AaE8A<6L6Nl zJsWTi{>5w?86#|L64E)WNwdJ<#vw696`i?3r_cr=fnoJSB8oN@%nbrVbKm6TNA7=UFkAQrF&qvS?;Q{%77s}`o3G1X5h4msKC7POp149dW zJ$2T(f@_A>49gEJFrt%-Q$A7L&L)&inS434Z=f> zAw$C=yBk6R2g(?=qQ|Iv3qkpWy^ZxTF?;tn7VNs%yerFD$pP7oN|3os*lJ zl^e5dJm&FtSVZ5G#313>fUINwv1WBYf_aGuV$Wl{hlk}46EOoq(x0hWeNAPIiCKNs zGR~ykeJK%HUrXBU>oKH-q<*R4VVz;KkJo1Xtnjc-UQ3bnjY%<(+sJo>Hx?LL5|W+5 z76+xkhBaw5c&orW?&Yljw)~@{Gj%EOB_T_^bGHa>U*EDqv%=;BiwueKa(tfMiN4tl z@BZQKhxa`f*vtF≫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 literal 0 HcmV?d00001 diff --git a/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.su b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.su new file mode 100644 index 0000000..786182c --- /dev/null +++ b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.su @@ -0,0 +1,119 @@ +stm32l0xx_hal_tim.c:269:19:HAL_TIM_Base_Init 16 static +stm32l0xx_hal_tim.c:329:19:HAL_TIM_Base_DeInit 16 static +stm32l0xx_hal_tim.c:371:13:HAL_TIM_Base_MspInit 16 static +stm32l0xx_hal_tim.c:386:13:HAL_TIM_Base_MspDeInit 16 static +stm32l0xx_hal_tim.c:402:19:HAL_TIM_Base_Start 24 static +stm32l0xx_hal_tim.c:441:19:HAL_TIM_Base_Stop 16 static +stm32l0xx_hal_tim.c:461:19:HAL_TIM_Base_Start_IT 24 static +stm32l0xx_hal_tim.c:503:19:HAL_TIM_Base_Stop_IT 16 static +stm32l0xx_hal_tim.c:528:19:HAL_TIM_Base_Start_DMA 32 static +stm32l0xx_hal_tim.c:597:19:HAL_TIM_Base_Stop_DMA 16 static +stm32l0xx_hal_tim.c:652:19:HAL_TIM_OC_Init 16 static +stm32l0xx_hal_tim.c:712:19:HAL_TIM_OC_DeInit 16 static +stm32l0xx_hal_tim.c:754:13:HAL_TIM_OC_MspInit 16 static +stm32l0xx_hal_tim.c:769:13:HAL_TIM_OC_MspDeInit 16 static +stm32l0xx_hal_tim.c:790:19:HAL_TIM_OC_Start 24 static +stm32l0xx_hal_tim.c:838:19:HAL_TIM_OC_Stop 16 static +stm32l0xx_hal_tim.c:867:19:HAL_TIM_OC_Start_IT 24 static +stm32l0xx_hal_tim.c:954:19:HAL_TIM_OC_Stop_IT 24 static +stm32l0xx_hal_tim.c:1025:19:HAL_TIM_OC_Start_DMA 32 static +stm32l0xx_hal_tim.c:1182:19:HAL_TIM_OC_Stop_DMA 24 static +stm32l0xx_hal_tim.c:1279:19:HAL_TIM_PWM_Init 16 static +stm32l0xx_hal_tim.c:1339:19:HAL_TIM_PWM_DeInit 16 static +stm32l0xx_hal_tim.c:1381:13:HAL_TIM_PWM_MspInit 16 static +stm32l0xx_hal_tim.c:1396:13:HAL_TIM_PWM_MspDeInit 16 static +stm32l0xx_hal_tim.c:1417:19:HAL_TIM_PWM_Start 24 static +stm32l0xx_hal_tim.c:1465:19:HAL_TIM_PWM_Stop 16 static +stm32l0xx_hal_tim.c:1494:19:HAL_TIM_PWM_Start_IT 24 static +stm32l0xx_hal_tim.c:1581:19:HAL_TIM_PWM_Stop_IT 24 static +stm32l0xx_hal_tim.c:1652:19:HAL_TIM_PWM_Start_DMA 32 static +stm32l0xx_hal_tim.c:1808:19:HAL_TIM_PWM_Stop_DMA 24 static +stm32l0xx_hal_tim.c:1905:19:HAL_TIM_IC_Init 16 static +stm32l0xx_hal_tim.c:1965:19:HAL_TIM_IC_DeInit 16 static +stm32l0xx_hal_tim.c:2007:13:HAL_TIM_IC_MspInit 16 static +stm32l0xx_hal_tim.c:2022:13:HAL_TIM_IC_MspDeInit 16 static +stm32l0xx_hal_tim.c:2043:19:HAL_TIM_IC_Start 24 static +stm32l0xx_hal_tim.c:2092:19:HAL_TIM_IC_Stop 16 static +stm32l0xx_hal_tim.c:2121:19:HAL_TIM_IC_Start_IT 24 static +stm32l0xx_hal_tim.c:2210:19:HAL_TIM_IC_Stop_IT 24 static +stm32l0xx_hal_tim.c:2281:19:HAL_TIM_IC_Start_DMA 32 static +stm32l0xx_hal_tim.c:2436:19:HAL_TIM_IC_Stop_DMA 24 static +stm32l0xx_hal_tim.c:2540:19:HAL_TIM_OnePulse_Init 16 static +stm32l0xx_hal_tim.c:2608:19:HAL_TIM_OnePulse_DeInit 16 static +stm32l0xx_hal_tim.c:2651:13:HAL_TIM_OnePulse_MspInit 16 static +stm32l0xx_hal_tim.c:2666:13:HAL_TIM_OnePulse_MspDeInit 16 static +stm32l0xx_hal_tim.c:2686:19:HAL_TIM_OnePulse_Start 32 static +stm32l0xx_hal_tim.c:2731:19:HAL_TIM_OnePulse_Stop 16 static +stm32l0xx_hal_tim.c:2766:19:HAL_TIM_OnePulse_Start_IT 32 static +stm32l0xx_hal_tim.c:2817:19:HAL_TIM_OnePulse_Stop_IT 16 static +stm32l0xx_hal_tim.c:2888:19:HAL_TIM_Encoder_Init 32 static +stm32l0xx_hal_tim.c:3002:19:HAL_TIM_Encoder_DeInit 16 static +stm32l0xx_hal_tim.c:3045:13:HAL_TIM_Encoder_MspInit 16 static +stm32l0xx_hal_tim.c:3060:13:HAL_TIM_Encoder_MspDeInit 16 static +stm32l0xx_hal_tim.c:3080:19:HAL_TIM_Encoder_Start 24 static +stm32l0xx_hal_tim.c:3164:19:HAL_TIM_Encoder_Stop 16 static +stm32l0xx_hal_tim.c:3221:19:HAL_TIM_Encoder_Start_IT 24 static +stm32l0xx_hal_tim.c:3311:19:HAL_TIM_Encoder_Stop_IT 16 static +stm32l0xx_hal_tim.c:3373:19:HAL_TIM_Encoder_Start_DMA 32 static +stm32l0xx_hal_tim.c:3572:19:HAL_TIM_Encoder_Stop_DMA 16 static +stm32l0xx_hal_tim.c:3646:6:HAL_TIM_IRQHandler 16 static +stm32l0xx_hal_tim.c:3834:19:HAL_TIM_OC_ConfigChannel 32 static +stm32l0xx_hal_tim.c:3913:19:HAL_TIM_IC_ConfigChannel 32 static +stm32l0xx_hal_tim.c:4012:19:HAL_TIM_PWM_ConfigChannel 32 static +stm32l0xx_hal_tim.c:4126:19:HAL_TIM_OnePulse_ConfigChannel 48 static +stm32l0xx_hal_tim.c:4269:19:HAL_TIM_DMABurst_WriteStart 48 static +stm32l0xx_hal_tim.c:4321:19:HAL_TIM_DMABurst_MultiWriteStart 32 static +stm32l0xx_hal_tim.c:4487:19:HAL_TIM_DMABurst_WriteStop 24 static +stm32l0xx_hal_tim.c:4581:19:HAL_TIM_DMABurst_ReadStart 48 static +stm32l0xx_hal_tim.c:4632:19:HAL_TIM_DMABurst_MultiReadStart 32 static +stm32l0xx_hal_tim.c:4798:19:HAL_TIM_DMABurst_ReadStop 24 static +stm32l0xx_hal_tim.c:4871:19:HAL_TIM_GenerateEvent 16 static +stm32l0xx_hal_tim.c:4908:19:HAL_TIM_ConfigOCrefClear 32 static +stm32l0xx_hal_tim.c:5038:19:HAL_TIM_ConfigClockSource 24 static +stm32l0xx_hal_tim.c:5192:19:HAL_TIM_ConfigTI1Input 24 static +stm32l0xx_hal_tim.c:5224:19:HAL_TIM_SlaveConfigSynchro 16 static +stm32l0xx_hal_tim.c:5264:19:HAL_TIM_SlaveConfigSynchro_IT 16 static +stm32l0xx_hal_tim.c:5307:10:HAL_TIM_ReadCapturedValue 24 static +stm32l0xx_hal_tim.c:5391:13:HAL_TIM_PeriodElapsedCallback 16 static +stm32l0xx_hal_tim.c:5406:13:HAL_TIM_PeriodElapsedHalfCpltCallback 16 static +stm32l0xx_hal_tim.c:5421:13:HAL_TIM_OC_DelayElapsedCallback 16 static +stm32l0xx_hal_tim.c:5436:13:HAL_TIM_IC_CaptureCallback 16 static +stm32l0xx_hal_tim.c:5451:13:HAL_TIM_IC_CaptureHalfCpltCallback 16 static +stm32l0xx_hal_tim.c:5466:13:HAL_TIM_PWM_PulseFinishedCallback 16 static +stm32l0xx_hal_tim.c:5481:13:HAL_TIM_PWM_PulseFinishedHalfCpltCallback 16 static +stm32l0xx_hal_tim.c:5496:13:HAL_TIM_TriggerCallback 16 static +stm32l0xx_hal_tim.c:5511:13:HAL_TIM_TriggerHalfCpltCallback 16 static +stm32l0xx_hal_tim.c:5526:13:HAL_TIM_ErrorCallback 16 static +stm32l0xx_hal_tim.c:6011:22:HAL_TIM_Base_GetState 16 static +stm32l0xx_hal_tim.c:6021:22:HAL_TIM_OC_GetState 16 static +stm32l0xx_hal_tim.c:6031:22:HAL_TIM_PWM_GetState 16 static +stm32l0xx_hal_tim.c:6041:22:HAL_TIM_IC_GetState 16 static +stm32l0xx_hal_tim.c:6051:22:HAL_TIM_OnePulse_GetState 16 static +stm32l0xx_hal_tim.c:6061:22:HAL_TIM_Encoder_GetState 16 static +stm32l0xx_hal_tim.c:6071:23:HAL_TIM_GetActiveChannel 16 static +stm32l0xx_hal_tim.c:6089:29:HAL_TIM_GetChannelState 24 static +stm32l0xx_hal_tim.c:6106:30:HAL_TIM_DMABurstState 16 static +stm32l0xx_hal_tim.c:6131:6:TIM_DMAError 24 static +stm32l0xx_hal_tim.c:6174:13:TIM_DMADelayPulseCplt 24 static +stm32l0xx_hal_tim.c:6233:13:TIM_DMADelayPulseHalfCplt 24 static +stm32l0xx_hal_tim.c:6272:6:TIM_DMACaptureCplt 24 static +stm32l0xx_hal_tim.c:6331:6:TIM_DMACaptureHalfCplt 24 static +stm32l0xx_hal_tim.c:6370:13:TIM_DMAPeriodElapsedCplt 24 static +stm32l0xx_hal_tim.c:6391:13:TIM_DMAPeriodElapsedHalfCplt 24 static +stm32l0xx_hal_tim.c:6407:13:TIM_DMATriggerCplt 24 static +stm32l0xx_hal_tim.c:6428:13:TIM_DMATriggerHalfCplt 24 static +stm32l0xx_hal_tim.c:6445:13:TIM_Base_SetConfig 24 static +stm32l0xx_hal_tim.c:6487:13:TIM_OC1_SetConfig 32 static +stm32l0xx_hal_tim.c:6534:13:TIM_OC2_SetConfig 32 static +stm32l0xx_hal_tim.c:6582:13:TIM_OC3_SetConfig 32 static +stm32l0xx_hal_tim.c:6629:13:TIM_OC4_SetConfig 32 static +stm32l0xx_hal_tim.c:6677:26:TIM_SlaveTimer_SetConfig 32 static +stm32l0xx_hal_tim.c:6811:13:TIM_TI1_SetConfig 32 static +stm32l0xx_hal_tim.c:6858:13:TIM_TI1_ConfigInputStage 32 static +stm32l0xx_hal_tim.c:6901:13:TIM_TI2_SetConfig 32 static +stm32l0xx_hal_tim.c:6941:13:TIM_TI2_ConfigInputStage 32 static +stm32l0xx_hal_tim.c:6984:13:TIM_TI3_SetConfig 32 static +stm32l0xx_hal_tim.c:7032:13:TIM_TI4_SetConfig 32 static +stm32l0xx_hal_tim.c:7075:13:TIM_ITRx_SetConfig 24 static +stm32l0xx_hal_tim.c:7105:13:TIM_ETR_SetConfig 32 static +stm32l0xx_hal_tim.c:7135:13:TIM_CCxChannelCmd 32 static diff --git a/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.d b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.d new file mode 100644 index 0000000..eebbb00 --- /dev/null +++ b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.d @@ -0,0 +1,89 @@ +Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o: \ + ../Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.c \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h \ + ../Core/Inc/stm32l0xx_hal_conf.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h \ + ../Drivers/CMSIS/Include/core_cm0plus.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h: + +../Core/Inc/stm32l0xx_hal_conf.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h: + +../Drivers/CMSIS/Include/core_cm0plus.h: + +../Drivers/CMSIS/Include/cmsis_version.h: + +../Drivers/CMSIS/Include/cmsis_compiler.h: + +../Drivers/CMSIS/Include/cmsis_gcc.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h: diff --git a/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o new file mode 100644 index 0000000000000000000000000000000000000000..4bb882a3dce52395a0dcedf87b91a1e0ea561d9d GIT binary patch literal 577360 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

e&E4-q+ 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

am!k9d2KY%opeLdM%b{ zxnA5ZTa?=w5ffwl&cGx|s^UAVoh{*JtH*(1rhFzu*F12SX^%TkDO(n&n+j(<#RZlHkUctr{5{T zQ6AmhqaV4?8RIs)qTQYtNk}7P7rCqDrm>kl_NW-A|Jn$QGr8yb`J>$Hk{x0qqC8%g z!y&1!-RrS9T~0|ZU2G|S1d*_?6;d``13#^JDA01qaw_4eSK%EcGFwKBiu1&k1xV$cQ_=D z&Cyo7RerqLWsS1Ped37g%Vl5xS4YSb%jdR5OFAvj1$iLIO&=i_x+BVBaXH;_MY{gg zPMajuZm+}ZaJwy%;5wo`F1PF=X-HI*+;WoO#kF&K@ZX%Wum8AJA{V6|VK%4D9%GhU%%grtgfGVBmJ7)mN1V%ZTmNcv zgw5=bR9LoFZBo$^Q7)G}66M)smQRT*%6R5$_orKCag=M!9_=;z%npm$?u+rcY#xi- zAk*1@g*y)a&z$|%d2u_@g*xPxhrkG1uI~6tcR+WKz&Xt?1-wgt(N!4 zu{a6m<2pQ!4>6Tw^wj>Puq@WX7C0Cu;!Zq*Pw;O{Da91^xmB?-cEBDu45#2KJcwuT zCf>&<_zK@)7AX#?@6Ck;(2dox33fnL23GqG!HGBrm%g`Kbm_QRpL0GHw_+=wUe zN4$vFP~AA{xDsPZOpjSH4@O{BY>XYS2M)t2I1hisNBA7y;CoCg#bPbKFb|eMH&#}2p&Zw{yg)b<>Or~4P zye8A{%6ul%3uS(j=}%<=`Q0j=DQGgKR?3gesw^z&tFnm6R9IQmWU?rWnM`Gr#Z9Ja zN=bCdW%usj+xaQx@haWCogM^)g%V8BXo_h@lH^VmQ!H%e1FYs!X z0#?I1*a%x-JM>~_?1}wxD2~R7I1Ojvd|ZMnaXoIu9k>?{p{hGq=jRlj!z*|l@8BbR zj&JZiCQ6`xUJ6Wyq4|{jEH8?s(1B&J64tXA19p~UeT!yQ0BW}Z;xE~MWaXf<;@G9QGd-xb%;#-WDMF0Is zP<75w@sR%5;{iN^C-E#^!fSX7AE0WxRG;@6-(dnNK&a)(Fb!tH9GDjiV@b538!KQntb>iP z1-3&kcE+CAABW;-oQTtK7S6{dxDwanR@{Mm@em%vQ+N)q;B~x%kMKFZ!S|RbnI5mI zO-;pbI?RH(Fh3T>Qs}@kSP5%jJ#2!lFcN*(6?@}A9FAjgGET=ixDc1&YTSt1a3}7^ z!+0Fe;03&jH}D=l#+UdO<4GA=#bXjog&8m#=D~tk94+X?a##gxVFPT2ZP0@qu{-v~ z!6?bUcAWojEBC41G%Ef^;sn&n@v?k2VWYgaobX!Qf;(^@9>x=R7BAyF3QUhixh{t%oqPzZ1)2HLQ#O+t2@hTm8mo{Eij44!7dhXw++bNBAWE zgjeu4e1fm>Z~WiJS5fx+Z^zsJ)8mjTFYP)mhgGo-Hb$dfssrJU7}|a@jOAl-3eLoN zxCB?BQ4jSc;oW!;kKt)F>YsigdjU zw{9T34R_%IJc>p=>v_Ug(P-~|K=>IN^{cAkODhLpYRrT=(WqA~M%aR?547690vheY zMty2imbbwu?2Nt8s7D<^cszcDvv2_#^{1+jwfg?VqywoiBj&(-XrzN?!v85h)`aa^ zqX#=-PaJ^5aU4#?PjEgi#nre8x8oi>gx}*CyolHEHa@}^_!i@HUnIk{m<4mA(auwX zunkLNC9H`?`%ZJh?NDn6l=IS+a33_ZHf>sg%MZ|js6-&dyUa=qZR9o{u><$8~r$p zb{eBU$5_@I{W@k6o`**JjM3j?Bg?;hH2RNJBy6<5)F<2w+oBh{pwaF!i10|9fYZ?EZ(_8!82wJxvVIHhz{yb?FyHr$0qyU9_)r|>)){bp_wHrh*`5q^WJL0^4; z5=@OoJ4sH$`LP&U(1k|(NOi*Xuqn1dqaTjZF4BwT191e7$B)ox4>9`ZEMxf^+>BqL z(GH@<+Nj@m9F2ZEmk9rgM*GL_gkR!cm_QzE>T{B#(e4r2pQjM(OQIc(_KwPgYhgod zf$h;~=jcYbFAl-cI0=pRjZXmeGcwvS zGEyI(1M^`~G^5deQJ%2Y4@u&?F5xEF8jW^~PK0}+8tbIa({LPzMtj94gy-W@T#cL1 zXs6gi_z-@NXYe8#?Gv{NKf)LI7FAy-b$mvMx$M!1L2O?1N-AJG};rU5T1$ia0#wLqaEQ(!n^Sx9>ddU zv>*IJ_!d6I=lCZY?FLDc>+zEYGh;3+fJS?Pm9QHtVhya1Mms@U!d~oxy>SqZ#0fYJ zXX8R#j%#rX?!bL`7*F6?yo}fJEG&xw!q0I%et|pj8$5zP;5qym zZ{U4=ihtmHOq^Per&O2`b6`F!ie_|Td8~$Yu?e^t-uGj|$<0zbn zALAVS3|HVf+=^f0e*6wk;!k)5f5UtD1YhIdm`Lt56;CNK17^p(SOiO91eU|9SO*(p zE9`(Bu?P0YVK^42;7pu{OK=r##4m9-9>imK8ZY24cncrmbNmzINrR_~pQM-uGh;3+ zfW^^@Zmftkus$}!w&=w!*c%7oNSuJva5gT)<+v8N;11k}hw%iS#mjgd@8V;8h3_z- zG+e8AN`dJy8-`(F3`Yl+#VS}E8(~X~#2D<3{ctFb!O1uS=i*{qi5qYm?!p6j6i?xK zyoxvR0Y1YwXp#mU6+cNZHD-Lw1zlJHt7AQEifu3oJ7X^#h$C=3euT4d0WQNe zxEa5~z4$F2#~<+${)%_-cYKL|VFIbhR`HY^(_vQ3gN3jp+OZ5)##-1ATVQ+iVK?lH zLvS=s!s+-aF2c`oJ$`{Z@f$pXKj1n18E@cye2RbIdrX{3kEc|a5p!TZEQ)4yVtK5F zb+HMyMh|wvo;U!9<2am(pWu94imP!GZpS@%2*1ZOcoDDRZG40;@GZvAtjA9>Op94C zHx|SaXv5N232R~lY>w?P8oOd29E_uIB7Tf>@H1S2>u@W6jr;LCJc&Qy75okF;S+p~ ze`BI7dOW4X4457BVi7Eb5m*kZVjXOZt*`@j#2(lmhv8V9f-`X*F2Pl}5x>OUco2`_ zX}o~H;4OTJ&+$);msO9Sq?iUXV=gR!#nFmxtcW$RJ~qR)=*2GB8wcS?oPg7CHZH{F zxE8nI4%~-_@dTd5%Xl5{;$wV;?=YcsSks>Wm>#oX7#7BGbYNMmg0-;`w!}z`!S2`( zhvFEVj5Ba9F26rRVccoQGsGkk+4>Byly|1mXY!km~Ni=hQwSOKeJ zJ#30?FbX?kFC2&?a6Ep5vv2_}!!@`WzrwxvEgr`o@e=-uckp+7iGN`NX~5Q=|CkQ5 zVje7nCDD#$urk)dhS&nzqYt}bUmSv?aS~3)PjL}`j_dIY+=<`d5&Qwq;m>#j@8eVa z1K(rfoO(Q^!i<;$^I=gmqZ7+xHLQzGur+$H6ZXUbI2^~}RQv?z<5FCWn{Yes!9(~x zp23TF4R7Nke1UIKjTKhcQ8G-6Sui&i#1d%3(pU*=VgqcB?Jydch219rq7 z*dK@CSe$}0aUL$gRk#tq#NBuhkKt*&fWP1^e2CBSPmGsGkDsKN1~X$WEP%z)if*ik zHLyN5!?x(fF4!9f;Ygf-({MH}#O1gax8M%khllY5p2f>}9q-~}e1-2YVVE9IDKI@| z!!Rt2;po7!SOsfiBW#J07=zuh9}dMaI2mW)TwIJRaRY9{U3dVG;we0jSMer3z-Rad zO?mbBNrI^{6XwMHSPU)b!U|X&>tR!DgHhNSd*MJFf#dNboP`T;8Lq+2_!aKOZ}B+( zh?nqJyo0~vOZ*EHgi5ggtQp z4##mg6+glGxD;38CftsD@DP5FXYe9k!`t`>U*KC*bA4#fe@u&6FgF&&5@^HHSP5%l z18k1%FdDmJ9~_LMa3X$;bMP};c2{pzu+x=h|lp) zj8{mHpQM-uGh;3+fW^^@Zmftkus$}!w&=w!*c%7oNSuJva5gT)<+v8N;11k}hw%iS z#mjgd@8V;8h3_z7VLhHwV0z4kVOSW$(Sc>L3f9I(*b*Z#2D@WF9ExLbGS0xcxENRB z2Hb|b@BkjgQ+OV);!S*j&+rYJisDFX69v2Y<(x_!lN9s>f4uOov%94;I3bXvZ>G8Eauf zY=P}jz0*NGC%U1$npz7F!O=Jgr{kx%2tUX5_yz97Z}15IfamaMyn*-eDgJ@)F>x{d zI8$Lp%z^o^D4NlU<*^#p#U|JqJ=h6*;s6|u<8Uf|g7a}HuEtHc9rxfN{2tHXMZAW$ z@e#hjx2Wdq(w_gA7PDY(EQlr0hNV%xpF@34O>BV8u^mQZSL}m>aTHF(k8uuuhAVI# zZpE*0KYoWN@h7~3zu`T6g0Jy!OjJVueJL>mX2-l(1WREAmcy!82ODE6?0_Ay2lmHd zI2NbiOq_>Ha20OEFL5^>#AA3GFW@hD3m@Wh{1fAq)Z-^9roqgZ3kzUzw4xg;Vhya1 z&9E(cu?zObK{yg8;53|#3voHF#Vxo4_u*kYfoJhDUdOxm7+>K#Oc<`mQwmIv*)R+X zV>mjnELOqV*a%x<5j$g5AYejK~pI` zev)8n%!D~HKNdp^y08LP$9mWl+h7!S#$GrON8ot;2xs8}T!w3KGk%48@moBOKjJ0) z74P8h_!9rZ1ZF*+l4Cl|ig~aQmP9+2!OB<*8)6G=k215j{`|+jI0Q%IB%F?);v)PU z*W(ws6TiVD_yeB9pYaCX$EWxQzQ@EC{kT(MM$Ccvuqc|*iRG~x*2N~+8a>zvd*T2b zj^l7DeuDFHDXzv%xE=T4A^aZC;6=QKxA76az_+O8+|-``m=?2OZY+o;P-ei^_A8B* zuqHOZ=GYFSu`Bk$!8i&h;>S1#Kf@Kc4!7dhxF5g6llT)}!Qb#6KEc=cHzu;_zc(dj z!0eb8i(n~?z;aj>>tJJSg&nXX_Q3u)49DUWoQd;r39iD8_$BVfgLn*2;|2T$Z{b6H zj(=i2yBB(c-B)_QRn# z1}EbToQsQbC2qiNxC;;9Q9Om`@haZL2lx!%peaH>-XxeBGht55kHye}F06pnu^u+X zHW-DSu@?@+5jY+{!dbWgm*E=Rj9=ki{1%Vnk9Y}x#XI;rzQn&Ufm4sC#j@8eVa1K(p} zmmW{4FeB!`d{`9C=*03^4eMePY>gi5ggtQp4##mg6+glGxD;38CftsD@DP5FXYe9k z!`t`>U*KDe@7Cid8K%W7m>UaX3AABptb{eO0XD~W7>!-A4-UprI1xX_Irtf_z;(D4 zzsCLe9iGIW@CyEh_wWh6#=kL9X+54&Vg}5Pd9etV!U!yfRk02>##Yz?J7N#)kHc^* zPQjTt50~I7+=yS|Zaj#`@HAe)U+@+_#OL@Y#w(-8Pf|>SnK2g@z~X2{H&(C-I2#w@a$JjBa0l+g!*~ME;$^&!ckwa4!grXktR7D(Fg<3&Ff5GW z=)kgA1#4p?Y>AN=gWa(o4#hDz8E4>JT#PGm18&1zcmR*$DLju?@g_dNXZQw9<@EST zf~heR=EVG13@zxw3RoTMVN+~_QP>%K;XoXLKw!rr2!*19Yhu~tYjZjUMcTJ#hdI$8k6n zKf(F96j$RW+>U$j5Ppwm@FHHr+xQ4y;9HDeQIDTwm=?2OZY+o;(1xY464t~9*c{to zG^ms~%88AEM#UfY= zBd{D+#X8s+TVV(6h&`}B4#TlH1!v+sT!O1`BYugy@gN?<(|7@Y!CUwcpW~kxud*IL zNihv(##~qci=!3YSP^SreQbtp(TiQMHx9y)I02{OY+Q)TaV>7a9k>q<;|V;Am+?B@ z#mD#x-(kWkdOW4T^q399urP+B1IuC+tc{JZB}QTlcE^4=6vyCXoPl$3F|Nc7xD9vV z0X&MQ@H}3{oA>~q;Ttqn)#E1#rp8Q|6Z2y+w4e(sV0EmAO|cC|VQ1`x191e7$B%Fp zF2H5D1~=nZxEH_0`+Q8c3y z%VRaHi%qaKdax7r!~r-Q$Kh1`1n1*YT#cJ>JMO_l_&uJ%i+Bxh<0E{5Z!vxiJ${m5 zTFipEu^^T}8t=L@nf8WpWzBzhghVkN&E?~;BR;j zpWti!8xz&k<0&O(!0eb8i(n~?z;aj>>tJJSg&nXX_Q3u)49DUWoQd;r39iD8_$BVf zgLn*2;|2T$Z{b6Hj(=jjT6+8>#Wa{1b7282j#hMIMXZ7Ku^F~SFLuG+I0#4L1e}Jm zaUm|pwYUX$;66NzC-5v@#_M<&ALA>0hY4%z@stA7V>S%K!WfPYEQ?jJHa5bR7>P01 z9sA)>9D|c_2F}IBxDq$uHr#~=@FBr0Ui=o1z(dhJA4ej>bti9Y4iI_&Kh}FK{P*gGcZOJcmEy4ZM#} z@eh2DiR`;x)XDkMIS)#rXC0_(_IoF$?C#f>;7=SQ;x~O>BV8u^mQZSL}m>aTHF(k8uuu zhAVI#ZpE*0KYoWN@h7~3zu`T6g0Jy!Ow>S+r<9lhvtwQ?f~7D5%VAZlgN?BjcEFC< z1N-AJ9E($MCeFhpxC%Gom$(}b;xRmp7w{Lng%9yL{)zD#>hY5l(_m)Ig$1xUTG5Ra zu?E)1X4n?J*adszARLJka2n3Wg}5Bo;uhS2`|vQHz_WN6uj5^OjIZz=CTyg~QwmIv z*)R+XV>mjnELOqV*a%x<5j$g5AYej zK~rNrev)8n%!D~HKNdp^y08LP$9mWl+h7!S#$GrON8ot;2xs8}T!w3KGk%48@moBO zKjJ0)74P8h_!9rZ1WojKN{;C;E9SvMSQ7161}kGNY=|weJ^HX4_QfGM8Ykg&{1g}A z=eQofz@7LF9>E{*9R7?q@IF4pKkz*!ZmP#qD$IyEFdr60Gdi(6R>Qj31Y4sAJ7G^8 zfWvVdPQ_1fJ}$-8xCyu89z2BK;~Bh&*YGwz!WZ}!<2TdeCmE*2ESMV$VhOZiX{>}b zu>m&6b{LIau@4T$Q8*Dl#yR*IuE2G;6~D&)_#K|apYRI)hWGFZzQ(^XQFA?>QepNmcj@uhgGo-HpW)i0Xt$3?2p56EKb3hI1iWLD%^-);%+>M$M7^>z+dndKE&tv zC&p``$4^pBgPAcG7Qo_YMK@N&8dx8jVO#WK7wnCLa3oH^X*e4f;&NPzTW|;N!^3z2 z&*Ejgj(71fzQT8yu%#YPDKI@|!!Rt2;po7!SOsfiBW#J07=zuh9}dMaI2mW)TwIJR zaRY9{U3dVG;we0jSMer3z-RadO|A6!NrI^{6XwMHSPU)b!U|X&>tR!DgHhNSd*MJF zf#dNboP`T;8Lq+2_!aKOZ}B+(h?nqJyo0~vOZ*EHwASM(Ii|y`m_FeB!` zd{`9C=*03^4eMePY>gi5ggtQp4##mg6+glGxD;38CftsD@DP5FXYe9k!`t`>U*KDe z-&T*GWSADSU~VjkCD4YYu@ctA2G|_iVKjEdJ~$Xh;Y9ox=iq0!0@vYI{2KS;cX$$i z!YlY2-oq#O8vn*b?eus`i5W0E=EWjd3L~%_R>eBl7+YZn?1(+EKMupOI0a|oJY0gS za3g++yYV0%!_#;Hf5BV$5TE0p7_Yq^KS?nSX2x7t0E?p)-B=N8V0~L3f9I( z*b*Z#2D@WF9ExLbGS0xcxENRB2Hb|b@BkjgQ+OV);!S*j&+rYJI_U9}1XE)s%!&E2 z7+TPU6|g$i!=~5DFX69v2Y<(x_!lPd z=<$>s(_vQ3gN3jp+OZ5)##-1ATVQ+iVK?lHLvS=s!s+-aF2c`oJ$`{Z@f$pXKj1n1 z8E@cye2RbIdrTaq$5SfIh&eDH7DY2Uu{>78y4VC;qX#=-PaJ^5aU4#?PjEgi#nre8 zx8oi>gx}*CyolHEHa@}^_!i@P_4rAKX)z1t#)4P^ZCDyBVNGm+&9NOuV^{2hgK-p2 z#E)?feugV>9d5<1aX)^CC-En|g1_NCe1fm>Z%h=e$5TqofY~uG7Qs>&f#t9&*1^Wu z3Ois&?1BAp7>>m$I1}gL5?qBF@k`u|2k{u5#tZlh-ol6Y9RI|4K0SVtVj9ehxv&5h zM=QFqBG$nA*bLjE7rS6@9E2lr0#3u(xDc1)THJy=a33DV6L=Oc<8{1?kMR}0!-O$< zJf*<&m<_|QFovT8%VHI*jg7D+Mq&(h$9^~z$KYg~fpc*&uEY(v4R_%IJc_6AJYL0{ z_yC{b8#Hy)<0lEG#!Q$K^J6izpbINtb*zU?u?r{tIpvtk}BgeB3AWw0{V!iLxa+oKP=VP71Aqj3^W z$4_w)eva$$3*3p{;1T=*&*9H_1MlNg`~%-(;?8PUcO|Uh3 zuoL#g0XQ7T;Z*zt=i^dbjhk>g?!iO&J)XgfcnxpkBYc5xF@6_4ev)BY%!0YGAeKNI zmc~k06B}T2Y=_a<75m^|9EB6{W1NGZ;R;-bTk&h$kKf@*{0Xn%Z+H)%;A{LF6Lr<& zDJ5pW?3fpeU@45ia#$7XU}J2B9k3(z!2UQ4$Kn*6iSuv?uELG@CGN(9cnnYD1^fkX z;X{0me`36Ddi*5CG?*E4VF4_TR&--Utbz5h8MZ|)cER2_2uI=soQAV;Auh+YxCM9M zK0J&k@GM@&>v$I*<12iJ3A^j@lmgRZHVnhU7>*7si&d~THo}$|i80t6`{7U=gOhOv z&c(&J5;x#B+=U15D4xRecolEr1AK;W(9}bZpCp(XGht55kHye}F06pnu^u+XHW-DS zu@?@+5jY+{!dbWgm*E=Rj9=ki{1%Vnk9Y}x#XI;rzQn&UK~FuNl4Cl|ig~aQmP9+2 z!OB<*8)6G=k3Q^%eQ^km#z{CGKgC7(Ij+Yqa3_9)NAL$chd<*DypK=u4}6b_d+G6% z3NvC3%!ftMj7}_%)vzu$!Pe-(PS_I%;BXv=Q}Gj=k4teiZo=)j2M^)*cm^-xHN1_F z@CClb_`UV`Nrq`L3+BdxSORTW8Y^Ke4h`{OVii&JnW z&ch|R3OC}HxEl}RF+7bI@E5#=5AiwviShdC@skwOU}nsP1+X|;(Tx?c2G+-B*cQFm z1$*Nl9ElTf8qUUrxE$Bw7TkgR@Gzdhvv?V=<6V4=ukalv?5D?53QUjLFboT0I6AN_ zR>9iX2wP$##$b2sheL4;PR1EH7Z>A7+<@C~7aqW)cnZ(sRlJE0@EN{AQ-3{vl3;4g zggG%k7DEfVumV=cde{`(U=()7UN{g(;CTE9XW;@|hHG#$euaDSTRe_G;wAhQ@8IwF z692*k1N3-Gj_EKf=D|W(675(9D`PEeh%K-^`mh`J#UVHvC*gGb6c^#=xE{a2o%jtN z!5{D({){*9K0d`i@I59TsK-+(%!oNK9~MP3IUaX3AABptb{eO0XD~W7>!-A z4-UprI1xX_Irtf_z;(D4zsCLe9iGIW@CyEh_wWh6#=kMqU_G8vVg}5Pd9etV!U!yf zRk02>##Yz?J7N#)kHc^*PQjTt50~I7+=yS|Zaj#`@HAe)U+@+_#OL@Y#v7u?Pf|>S znK2g@z~X2{H&(C-I2#w@a$JjBa0l+g!*~ME;$^&!ckwa4 z!grW(s2)!#Fg<3&Ff5GW=)kgA1#4p?Y>AN=gWa(o4#hDz8E4>JT#PGm18&1zcmR*$ zDLju?@g_dNXZQw9!}Rz`f~heR=EVG13@zxw3RoTMVN+~_QP>%K;XoXLKw!rr2!*19Y zhu~tYjZjUMcTJ#hdI$8k6nKf(F96j$RW+>U$j5Ppwm@FHHr+xQ4y;9E>=B7QI<=D>Vd z6wTmV)ViRnQ(j7yahcpqUz;u`eb76iozPA)%2bRG~SOe>!@%^m`OZOt}`=uFH zQ>v{srFgF?*&$82Y&6H>WSow3a3L!Gc&EE$GB@SOsfg18jzE(TiQMHx9y)I02{OY+Q)TaV>7a9k>q<;|V;A zm+?B@#mD#x-(kY|dc38;^q399urP+B1IuC+tc{JZB}QTlcE^4=6vyCXoPl$3F|Nc7 zxD9vV0X&MQ@H}3{oA>~q;Ttq1;JU)pmk@lpNDxR?LHiuq4{C3|7Wk*brM_ zd-P#9?2AKiG)}_l_$e;J&v89|fjjXVJc2*qIs6%K;C+0Gf8cveED67wXFe5X#2lCp zi=r8wSRSikU2KA_(Sx0^Cl0{jI1Z=cCpaIM;%eN4+i?#b!te16Uc_s78z12de2ekr zL9ETgk7+Rr=Ej0p0&Q3tD`8D+fX%TTMq^j(gM)DtPQ;IK4t|C!a2;;NuW>(qhbQqT zyn?^sJ$!<%@o!9&M31MGm;tk6UMzy8FapbARjh-Ju@!c}j@SeH<1ieHQ*b8E!zH*1 zH{zGL8xP_!JdGFd7rccJ@j3p9@sjHClN8fnX3T{JusB-LjTNy5*2iYp7QNU7d*dJ+ zi4$-d&c=nf9M|F&+=2V>FrL7(cp0zbU3`qM@Es;hrpHqXOpnAk`3eV$JyonF+8NNYNay@>MU~0^SIWa#L zLkqgF0#?U**c97f6n4g5I1oqRc>D-w;R0NSYj87ug?sT^JdQu&CHxid;P3bn|H1@P zkWuM&a!iL=F%K5Pl4!>=SQ%?!Lu`TV(TClzFAl-cI0>iYr??0|$MyIH?!<5K2>yWQ z@MpY%_wgzIf$uSKN`LHOO(TU};8rH=o*cv_9347uI9FF5~Dt?0VaVf6G zO}HKR;351T&)`M8hPUw%zQDH_Kb0Oo$uKQu!Q5C7OP~!)VQtR=Q5;I_S%!@^^6h>e+oBh{U~e3RBXI&w!`ZkHm*ZO8f;(^@9>x=R7BAy@qZ{-5X0_gU{@nJatF?)&cleeawz=QHu+cc1yqFf(^% z?!8zVD`5?+i;b}rdZQn9!5-KThhhXy#2Gjrm*HC6jJq%rkKt*&gg5X$KEt>81>>dC z>y#Mn&>pj49xQ~;SPrY8E4pJdY=b`Nk0IC#2Vyvm#VI%&7vV}=kK1q$9>U{z4zJ*C ze1tFY1AfPZsr5P~!!(!)b7Fohf~Bw`R!28%ge}nvJ7N%a$G$iON8tpVj`MISuE9;X z6Zhj$JcSqWI^M&l_y#{?Tyf!D{=X%{l$ai~Vs3QA;#d|dV=b(YO|dn$$IcjxJ#hdI z$1yk=XW>FzfxqBZ{1p%4Z+I4e$6NRiU*LQEh6&Q@bxMkGiS26qpXPpaT}f zVps-UuqM{SCg_3fuoHI0Fzk=Ra5PTBnYaL#<2u}eyYT=<;TgP)H}L^J$9MP@Mi-++9p2w?r z2Or}r{D_*pULPAwj%hJ7=E4G46iZ_ztbuj0F}6Z)^usRL1N-4njKGOF1Lxy1T#K7= z7e?YSJdKy|2HwYK_!hrlybOAs5~Cg3V>Zl#h0qzxVHI>mcWj1j&ALHrHR;_rA1AL0vqkKZssX1z{H zF*Rny9GDLaV@a%l)vyjW#1`m@9WW5PVILffBXK-V!@0NwSK~(9f&1_Xp2Q1y4e#O; ze2t$lj(C7VZb!D50@Gm@bijgG49lPk*2H?)1U;}FcEYY0hW&9Ej>bti6BpoeT!&k5 zHy*$!JcF0tEoR1CSOAM+X{>}bur4;nR_Kj> z*adrFKOBk?I1y*yd|ZZWaWn41NIZt8@eOVry)VoiP}D;s6|uV{kIg!iBg3f5ENzD;~t( z@GSn0x9}mp!1wqK6XeqCloV5AM$CcvurQXy3Rn&6U_)$yp4b5cu^aZm!8j7f<20O$ zOK>%A#2vT~kKjqXfYqI^2T0@c>5Q8N7@)@c}-^clZ_K=ho|#1XE!K%#L}{2}@vktcta< z0XE0B=!*duioJ0Vj=*s^73bh$T!kBOJMP89cmmJkRlI|b@fChVEstIw8%&OAF*D}E z0$3DFVu{Z^1<04#%>v0?I!9#c)&*2rk zjgRmpe!%aTFrQwhWS9msVNT4CMX(fB#OmmVjj$zpVMh$Y?${TH;3%Ac({Uay#WlDI zcjA6Lil^`*UdMa*6yM-yjGJGtPa;f-=`kzjMn^1;WwA2W!ur@0TVs3djKSCw2jFlV zgOhO&f~#>O?!bL`1W)1xyoPu23BJZp7^k3KA6ra;=`agAU_mT~ zWzYp{Vm)kv9@q{$VOI>p{x}Rr<0PDk3vfBE!!5WQ4`39Y!OM6PAK-I*hhH(iqh6;Z zm81>-sCbxMqOXph-24;DgaEQeLl72UBJwm~2C#}Mp=12G)O;uM^X zi*O~b$8ER=58-h!j|ZT9We;I zV_zJCqi_OF$9cFE*Wf1HiTm*=p2CZG9q-{&e1o4cZV|mci7+Lm$E=te9kDo;#mZO< z>tj=FjqR~B24hbgfWvVNPR3cd5Le(YxD|iJgZLYs#ozH3KExOJ9=~CNqI#W@VrtBY zIWQj<#*$b8t6?2%h%L|)J76Go!#+3|N8)&#hI4TVuEveH1NY$(Jc$?Z8s5bx_!>W9 zoML)?Y%v9&%<1ieJlW-<3z~#6Ox8QC(fKhk` zFXK&ofY0$Ae#Q93^*SZNRG0y?V_tN^5?CIqVr^`I&9N=|VgQC>Zybapa2!s>Ik*^C z;Rf7}d+{)y!1H(&@8Dy6g&$FK*6U+~$uTWv##~qci(+Z4gf*}(HpW)yjegh#dtg5t ziV-*wXW)EXhHG&%?!rhshNtlo-oX3#4Bz4xj8{UhQ)0A3d(4J;un;<9Ijn-N=#I@W zfyVZVb|@Z0Fx~GHw4{0vOq1oX3c8{@Hp4dPgZ>zTy>K9g<5--6vvCow z#Pzrh_uwHsj_2?S-o{7x5m7$oR}Yrp!)oCMaHY68#cn0=!G3I z2#wa0c&x^>9>ncOlj3r%N%6MUq&N*QDOR^hwZ1AdUJL7EQ~al1uO|8HVk2yUZBcC} zof+?nJ+Lnh#*sK4r{P>&f~#>O?!bL`1W)1xyoPu23BJZps6IDu%X&+J=`agAp!&Rg zF~-ZF3)aMXX#JeLz8zaXC$HDR`Z;;M4%W}f>vgbxPF}Br^>gxi9ju>|*Xv;YoV;F# zzxp}(*q#T9+ux@1OK}<8q6F(gO~9pKEUVr4!>f2&d-uyDpcQ-l%4Us=!7M(JgVsWw7XvU9 zd*dJ+f#Yy0&cVgF3OC?(+>3|t1fIvMcn2TjEBuIBTzz}6!Q_}0Gh;3+fJL!1R>B%s z7aLddk32)$ie1>oF3&xA5*C{dDp*?29 zJXi>wu^d)GS9Hf_*am&jA49Mg4#aRAi&JnmF2a?#9=G8hJcP&b9A3fO_y}L(2mFo+ ztd4Hj2wS2TcEliz?S3&A`-j-RA6NUwzx)012-;!2o}zCz z-Pteo#Uc3LvR;RvAm__ri`CgxyhHkF%~ny}s7#gL)m#@PB<7Z{h=d zj_>d*{@cGtQ*Gx-*#7M>J!V05{Qs-*>i<>k-;A!`|LlChlXm>K@8^DY9sPf+zCXKP zVSV4K?+2{!TlG4q?bLdHqu0ZF|4gsLKYe^u+g)srSFt_*7~Mbqx1E>9_Wja7Ri~dF zr+;=F>A`Wl9}dL`oQN}UJ}$$xxEXh0Bp$=lcnNRdeSC&*@e9V|ye%=>p*?29JXi>w zu^d)GS9Hf_*am&jA49Mg4#aRYTCZxlb$@K#AItAI_`mvo#rnPf`u1)8-haIg*6;n- z>tOxff4vUY@BP>7@IU>%|LXkX?>;a8yUsV&bzOBGJo+t{ecbC+0D7MGp0vx}JVri@t z?YI`(e6hXWW^`QttM_SRdp%4Y$Nz254;&H~7~_hSX8Ii^TTL_F_ZBO`Ue;escb1BA z(|Qr}HK&lC0ij;r!q8ydj%p~>CoEKRYVQ^5r8#+rglJB3f>W)^ZfzU8)~z1awysx5 zs84X!pg>>04vl&Sw(A%i6zJE>E7UJ2@K3P~eFD6?=%JcZu#dk}dmry^9oqT@`UZ)Y zFb#Wodk2f3JvW={73>w*!AHFCk3abHlmM@G!6L_x5P!cwAC*%qissZVC?LQmP%O%i z7~f#801;HVVO=M$(9mE%?{1;;bvgtGb?YLE61z@*=1Jb)RGqA?JYO3ndii{3eER5d zE@HZhD{CRn%`C2*g}CNsapf(viSC;z{V;=;}1Tr9** zGK;HhA#R>oTons(tIXo6T8P_f7FW$eT%=iCbqjGP&EjfUh`VAIC-+}Q^?P6zSIa`& z8?!i93vrs*Zq<6LZ6PkHSzH|paq?QW%I9VwPJXsa#mVRRjFwk^Mo`7ovk)hr4OVgW zEyUF_i*vUS*VrtsfrU6vvpD(ul+kj?Yw)UljV#24nZ-4>5GS9-Q~8=$h?CDWtGK2X z;%1q}HM0=6%q&jsYmAn6qgkAMp3Eq2k6D~NJ{!eFnZ>oT5O>im&ci~Sd=^{PrL~2) z7iMv7EW~{=i<9@M)N;sY%)~5B-s_W{t$2pnyi=n%evkD1Zq!E|18c? z#6*AHbz++8Wcy?%*P(gbR?#4N98#TXUznJn+92o2->ki8qoRJy3l)E<&udd}5mFRGfUa)BJVYiywis7t`eH z77@LA-Q{9f{f!vZHi~>QPIYSDVllxyUmuY#yO<{P6%)P6w?ho8zY&94l*kupHbD(; z5%bLR%@X-zvB}H$PFL?${lh2o` zP7VIiKJqy)v(Y?hUug^Zif0t3jVhVYDBq;zHm37T**c{KK?~spa{YGzJ zl*lL7tIVg)b7IOjLgdRSVpM0;zAqx5d|jDOo#(`qZ>7jLMkNy(<#Sje)~}c^^SOxL zXnm9sI|zAvQJqn~NRiJ|1j&3=L~oRDq{t`lGpkMwMz5d4N>M*CQ|7BCdZT=!GizEW zl}u=qukk7yEnLi(`P6w%O!a#&@?BR+EabZ)^5qlTgv?h<^hWKI->ofD{?Vz_(U&*= z+8_VF>O3c=_Q~(!j?MPsAoArCuPWQ;CVHdxrOBpgoBn8>asAvxz8fM==2Pc6F}3fA z$hTVU{6(zM@;a^)>sK^N=2Pc6G3D!?O9b>6J)KcL5Amb9*~jbo)Ok*f`4(uJuSzB~ z%Gam5t=2`%m+e#MIWgtCBJz2Z_>s^k-xHCqw0I*U^QrTknDUjrsA=+ZV5(Dt(YF_e z!M2(_*OB>}i{5Dct`ZM{v{K20M){(K{8-+W7V_C#7Tb$#IGs_x@_j@H5fgg^AuZc0QtNvj%=P72&eEt^l`92rNmsl+CliA|`jpYrrkZ;9HO>>MzzDe_J zwJ`F@{fyD_o)qx$s``L>E6SwDHsY}h`LZ?sAx z;?!XD_2Ine$NyV*3;Ei;)3kJAzUqwfC0!!+2O>zeFHH1C?dvJ>g~aeaAbR^8M7{xH zha&U!vXJk|S4}%8=Bv)AeT&wJWMZbw*GKe5?OXp%)3%HKn(7Smt+my{6YBZ;S;*%f zKaS~q>1X*IH`|(yyRv-)EaY1!@)b~x5^-uUdj0x{eCq#gkXgPcv%e98+T{dsw5c(y zkHcb~`TLJ6;>X=nifOWaLqxCYcTo(>HpqR2?7E7bY4T7}7&aFU5turMK{lGB8WGCZ zl%3RUH=((UIQhHw5n}oX(aU@(MK51d1vT*gLJLPuS2?C8H=dy(IPbf?JgLb_Yz_aOa22Z-if%K%vpF(~cbjG&XE zm0v;)>8xzj=*(4Ph_to7Wo7Et=Nq0s&#Pw>$oXHL~sNv}f|Z%-{D++jJo73KdItX~cMe`o!WJgxFtpZ88`vAwdhF7KbV z?#QT#bqh<>SJmAH^q+evtN!zc)K5d;PmdD%C+N|h5NDCl-X78JjyWFDHjnTukMJE2 z^DGZ!g}UjgDZtVwlcG+uXJ|KL97@r~creC7R((D`{#qWn(tL|-U}GsDA%b6*^jL&}hn47RIUeYyXJ;mc4G)#5r;eyc{L(vR zCR!?HcC-N-+K-^=oji$hMGtCh9yO!QjMZ}7^wpG~4xKneian6+D<$4Xii#FSqD4}) zlw)D`wxh38*X6b68D`H@f3asa_>K0y$e!Do1r2*{W~JQrj6%PA$WyxcTD6sF)i!yo z>StQj<8Bw#xZ(8XG3wK$2mlb{T?+(!m_#h^|?&*-*6VMHsu;A zNq_0tPLOW2^+i3~9C+_YY0OHzXE(b~cX{#1z)0_wdn9>f*hIf7Nb@&J?`A=b!AOmf za_e5;mvJ5A5u%{12_KnXC0xd|FSQOj?CBnph|DFy-1%RJJ1C9{$g5*lW$(3dFPFn-JrTcv~=k_vR4~R?hdKp@Q{RYVo>*XuoEaj1Jg&%M_?lUfCohi&Z=1A$9ccgG1 z@5OvPrH6NCHW5F)GQ|Js3~9eVxk+gs)@% zOZN43Z-04vDii!K8eP1nGL!T6R0!)EiroLU$J)bU-k#!;sgEe0{Cyv#_(THUM{+pkldVh70pxJZA2R84#3DGjnWh8$@a1xQ`oAPp59#tpUrqL7ep^- z)i26o!$`BQU+n4J{#nfaDY-m7ul@hYQ@Q&Fqnh zNZ_6OC?2FxB=H^lV$S9EMI`Bx@`AWPeMk`{_t^KfZ(I)#W^^N>kY5GR=rZSiDT7Idb4&3azq^FC&84~=$nrY2eG>>dh2gy!oQ0zLCn&H z(WBJw#*A2;LDRc)*!VY!_{0=$1&S=j%;@)zSUyrH{_wT-zl%XF|Bs15Z<@CKZ(|VI zHmp|+v#mL2MO0@{vMs^Jzfr*_?!eEOum9bgWkest^7;Rk*LP;~^*@SO6tAc+#;;o< zR(WCWGl_GfHihU3G}6M{vm;*>`5EqvVxJ+OPs$7lb5F;);k2kNA<+p`!a6ED1!*K! z{sD*MM9zu!wMB%HvZr03Tz_|%zkt(VhVOnPe`dg}}6K_%)3 zXRi9~pfAKU;_X$l^U9(XKGzL7A6{xfm>e7*Y_{hNP6J%5J*iPavcVN;a`9ToQjdi_ z$in_U((S^=6ekS}bFN9n`iBIwUNq)V(7^7cP{SLb=Dt9-H1JiKf5&x;>p4EMI(RW> zbxY}K#?4$YmHIfdTc#I_sLH(@XEul+UM~-&_Vx05c@R96%cf|-b9OUFy3=X!pz~Sv z2c8eGOH!mPS;0+Iy@8ghxMWpm@kT@ zgoLKT4#UZ+%|PD@XJ`F!=9XSZI@$o`{vrINk#q1q?#V4fGx-NEp2^esOy27SGdVc^ zVJ7e8oypmrpi5?Q95_5(Jl^>|x8-}qb&cy`^on$WYjjm1nFb zJ1)^`iIpJYVxj!;zB})d)r+vhvEr~I!bVSAd4teI)jpfd>WqG zT%j?`?esFECn&{0?v<1$+8Ky~5iI2~FhtPC1J9#D7~9X%+Q%3XS@pG?tol~`S@0*} zZ)^S7mE+kt1z%_K`D~{!ES!FFYqd=b^DnFsjNPks zG&$JWrE!-O<}L`17_wEb$k?J-fq742!r+O-qD6I8z!X=2mY@O694Y`9AH8ai;Bg z!5LX4zV`l~)sJlS zZ}l^L*6TyGOU*kP_{oNa**@=B@ZO=)JvF`eFr$|T&ojL;6P~y;-NAKUFM%8xGt+;gmfwEHSjMC$TMio=FU@o6;FDjPx!1b{YBp z-KnhvZR_4Bpr?tG-$f_RNaQ@LG5W2C0Z;1R-Kb}Vds(h}=rljfy$F<5vKKWzlk7qi zb;U*=E_u=(>vy>LNh#KH*cuynxM)sTE?s;1l(DMo{ee#z>%HC`e9Bn4^?uK%j5S5? zra2^c1mxDu9@Y4Cau!?7WntwuvCd0}d0Oryt>h-w2|CQv641tq{1Itloxf^S!bbvW z6yZ}QjSBjdNh5!sGHImcDU*I3p`UbkxDO_*pFKAGaO7EQY=Oh!XURI2SoLs74!>vh zbPCUTuQ9Efg5xcRTQ>G|DvH%=cHo`7{g0J*Z`{1$ofj$l)$^Xj zHtt}ltu!O#Nm6NWJ9@%D*y_^UkjseCeBD%|)eR<*P6HV576dpcD%El@rups`^gKiH;J z4n1Q`e59~Y5zNx}5})6CehB+2ivNEgttZ7xftGm5QB#tN|3OPx>F@10ImeUKM&edD z5<+QVDNy1X%~(w=6Zfl+R<2D6_rcIWL*^D8)R6p8t)<6vG&A>uzKB zB>i109cC-NeX8Zr+LK7@J$j~h^Y(UFKZ;rYD_3qUPPX>3{cjdY`U8J|;;)G!N%`?d zsqq(q{1g0HvE%T^Ulsfn7b)fGuN?lo5wdL(?OpjEv#q-ki&H7?^rRF-KfWSqn?yTO zgQBjWIGu}v_MiquoS+Ep?pp`#It_|Sf}%|>3L3whVurhnp@*PIN1Sh)M0-brBF4}o z7X__H!?7NsC>?I-k?hqYG?|YwolgHiQ^3%~ho)^3t$Gbz{S8e_3S-^({Q0xz&!6J} z;<<;GNzXBAp3_=_XJ#RN$kt94Hdpaop%|HHO&I=>P3*Dsj#Fw>n$pi*sF5^5iefbE z%^A7{AUd+HRnTRF&Myxg?L+yxz;`EMtRanA5emtv>*zj}zhC4D5A8iCC$ooKQOcgh zMutU-a~}=e+#|h?_TDMv)-p9J(&uhp zi4J7io=M#74vyap8@8$Q&TD5@<87z#uzuK=XE(me&kpIHwgX%ybsgPGQa|vwyf(Yr zboJoPtG~W2#Nq?A;%|E8e$S`w|G+y#+h^FD&TIeP-kIIK_9hORWmD*u$-F5cy}4({)7m-#r+K-B}B&_1%%zG8z*h!;~^!JBV_*sSd7D18+ zCnjO|N3&67ygk5gSV&irMBeMI)sw{RjwiphK);wbIn1tzNGYVFdA~#)h+243Phk(6 zWc0fgD=U7sl2xB{ox#r2Qc+u6VljF*KT+JsC2~DD z4Xs<^nZzhYBW`a^8oDRIeyMIsBHa_D2)K8I<<_2a(_6EM+<1G|+hV>u&P{!W-I01& z6vWOI>5T4DY&cqP@Ei3RQIp>n=AIGx+k#vYKkIvuEF+RaCU%t`+|!Y)n13M)-jxX5 z#9I&le`Fi2p_S5qvWd}Rqose9PHPq4Hd9~l78@rqGkO(^ZNhF~>1}2ywt{*4#zs8+ z*&EMz1f&?jM!f0cY^?pm2@#JGz9&S%SPPy>4(*o$TcsmXok?y}Bn9uW(oL}ORyF0P zHz$qxyA)<@gT`YKbZnDU z!@P+(y_#+hPT|g>Z4YPsk=3ESDMxmvJ5cYt&6MYF^l*>p$2|gbKqk%B<{aR)Ruvw7 zyT2g%(kyC5U*hnc6H~f-qi+gZS@W9(&>^zDj6NpcC96^I(){X;t6u3muEzPqRl=P~ zq@7w|titwC{H}`Mz8Epm1q*SD(i=Q9cIe69S0bshzp*pT4k=_ca~D8baX;pEhSkhIU~|@gx%Mzt5N+U5dF}k)u15a%+Idb5 zoC&bSomK8RLzP^WYN=AA^0HLkcg2UiMb=^-TP5Z7E|R3ghJXzqdy!ePWU;8FORJJH zwLTuN7H&xxi>=HdMY34cl;Z&QziN?`riFVG#%ddy&mvju>UFm!DW2krq$Cy|Nf^6r z-~uZSDAdHBeTlAFJR~I~;gU2Yn6y!6;h|J006_8ljgZ$?65!{37Rg#ZKh%=6?F1;$ zRFSMT@_&K6P3vZr)av;NZl|v&KEa=38Xf_XN?)6^r3G3fwPrzrGlDSe6&Qg{Qg!5Q zOIE3pTB{(z89@z$z%Hp}h@fDkCaJXx65JW6ZF7u5Mz349xuj*~qi+#PuEtQ+bnWvTM5?nN(B5cTm$0qNbNstEBDaHA%`% z7n;0JnF=z$7TSBV;~@@z{7G_anKJ~qZ==dKykrd+R~zEm@{&E^!%*Pb@scax&UuRw_ z6%bD^l>+Kq1m6d|R4t&>6qMY&R3l(bSr{{sm*N99 zl!XbBc&T2%=EAC^b?2o90fWjzUNSE=@vlpE?7>UTq`=#6qtc$TvWJXUM%yMk7U6UZ z#(M?*#;K@O0UgInR+K8D=XlBPU#B_h+rdk&fUDJEg`K<<7;y6hTCjz$n^lx4drMQdLS%z>$5lo@mJ^Io!a}2(O7qmMZR6&Do zU|>ti^Fo?rFRNVg3b0p{D-dy$#qg}4wiwb7@MNY%vR6?G0pW~vyzE$sjO+7_vgCNh zwH=B`u48Uha#Ugkt1CU9A~~wDg55P?7=~9IE4W-e%UC5xEmjD0{V>WRIbLIh{I1i* zQ9(Uc2yul!16e~>C?Y9)rlQnXsRg0J3XZqsi=<>3KgbSx=Q9cIS`B})1dVwGt&)^* zG|$n}vIRsMQRbgmRh1ezJ`DU?g|Y`LXp-ZjFv?4=w!1+3abaqb)fL+l%6?jyEKuCF zu`ZhNS;Q?AVqDqHP)G@#3!YN0eT~8Md65k$lyQacf#w5Qp}gz&*HHB!R;c7!{4Q$y zk`=1C8ums7LqjP()Nr+W2|QngZAAs~u9Xh(j0hz|){_cYDVh|t7D5n`Lg)d|A5fuy zbv_COtP~=YBgde?C<}*EkSt)`0jx99`Lg3p4XsM}*&;cO&iQ13f;aG)IjydPt7OSp zpB3z`+GkYB$qnsdUEplSFoCXJuK@E7E97@IEQi|OV}%e`yDGr6Wd(H3jXn^Ypr9Vf zS<2bfaharlT>}C?U?h^O_9+ySS;6Z1Ce122d$EGu)dH^Q?86E!m&<}`KVgMHSHpY2 ze8vj-UH#+0Gk_IBT+86)&Vj5@#P!lu6b7?Gq-!pssB;)A6ql5@KSgP{(i-Y0b&7&) zbr2a?y90nq58+DAjdFDxoal^)hSgm><)B%gV7dyrW!EHY&?$sWd(eg`9K9o4AAlXc zQ*2;RM(jtW`*@}G0m$DX$RZ7K9tv!S_k5U(IkUql&t1%Uv>rWWb} zIU)1_;5{f%z}g9gz;dY&?35J(3G?d}%1!flT0ozFwnu<*oDa>B$EgDd#F*gF`mn#8$kp6u~!~$*Qt$x=nMlZ;1#3ucxTPd(^=pAwX<65Mnjexoz**cX8|4w zBGHg$c{&T&TELoJlDo5j6_{2&o%N$BbCn^JJBZm?fKT$uY?r6AfL-mCnUJTmfE6;k z{H3$D2Z+w%&S7>I;8vJXw6R{E&H^?HShGuVcNVY$(}X&x`2mE;p}d1=;V)+#H#=x( zKxOJ6OInv`>SwPL4G&Pb6ZK`bCnWvJfM-)@9%3w&`QY<32)2CJ*q9UU>;z9@tInaj(2CTwXsP ztdQphsQAa2g5?I>Hmd=UGye29Y}0@bDoa`m(-vcZoX$xQlCgCr(c*l^(ZU2_h9>8~c<#owp3t%sJ<>5Gkf{kelV1>M7R2P~Q zqe*f}Zi`0D7F7aZi#gb&0bGM7Ld5fMHd~YqD8&7_uM}Dn^R}#WzA}ujr^%=1;q&w1 zn_d`vC;ZV@k~Dzv%{Tc@_*cs%@07n+-jc7;PxCk*DK2OHV)D()!?(bPZ+99RGM4j| zV|)bzjrNW8ubfNXcpttelQDj}alXNfucyh^&A%My>%#5gHu=J<`$1fie^CqObecq; zU&XxG-6$tZq0cU&{q=ag=oYkNzFBWQ|BAWvsc+URg?=y_`skdm6ebQiV|kF#4&A>J z@hNFb2Xck{OvVVT)Y#x^p3iXN0{$uwKHRB@fDJIf3xh~Fv6#Wi`(UdAD_lp+U`>3m z0@DD2A2T(Rx!aUk(2&UoH4!kGfRFLY6f1*HKG-E*nPO!?ry2&YkVz|pVM1ngScMPP zP(vmU{zSm|0GC0Od$3OO!4?Hp)GSs8D}As6lYqgx8{i7~P9mS}*5&c-@he(cA_PXqvR#uae$@%q>=xBqzj zyyK_xN;u{T&PT^Ta)u?p!FR$>jDsfJeNLHtru(Gfr%QM+9IO5keLq(ahclxcmpUU+Sq`5^emEC%mg zAFRN%Lri=EFv;Zd<{0w$;3XuJ2l!C0JmIW%nAgD0@yZjs;tq`M=8v51boz#MNQbWHtc_%gFoz&3ped;7j+FKDDk&^CTfSK$6o}oW?G9q9a z0{%LPguTQ9%#8TJb_Ukek}be4`0xr0)-lofp)UCam)FgZ$NPtnOdjCtyz;~XGs*{h z)GJTSS@AwtAuj=PVvdK>Lc(jW;h>W<%7z*C(*5d^y=bNi`yd54-S3_4U{ump4h++A zR0u#9I&@XiRtyYt;uueM`Bmc-3kQY`+=PMP@@ql>OPUl>9x2)MNMWOmA%0?0#(jba zSQ`PK4kBSwvGK$(GO-(g6)kDO14=L`=x+?6 zY|>{^C0S?;w2&GP@1Y?>Qn~k(H6(KHF~<|&_Y8@aG_l<+Xw(R7KJ>n*wE?$m1s|-y z&}@)6mxwz7?@aj zxPJ?2>eR9IusClu+^wXYG1e4cCs~GaQj}nsA z2>4X5JP}d5_+Zz0<%unAst;DkLqwHIj5>&ZD45qC=OYYz6x18!wMTCtxjl*)`tea~ z+5_;aAo?470Q)Yme`60||JEKw4S9L&0ryu9`Rc9&OPUV8xRV~>*8{)E%Jbmo3ad)aZeEpHr9Cv*g?L3qAk+TuETbF3VkGRdAJ74TWfOiMCu$fqj znLY&U2w+W3S)4O{2v~uka2)ei8v68-S2qI68Lvee?YQJ@=&PG|M!o(wx&dwj_uuFS zYz(lub!#RGUj^1jw-Whm7=PRH>ej>5ZJYBAu3KNJ1hr3|=A|Wvl{2QBw9}mR4cd~A zaQ!ZiaI$`*2FV%OCfx{UbwL+4Ck8QVgtHNaC>%LRC1;0%ueFnH5qZ3F6f^A9+F8Tk zV@uT5&L%4vUmvODfcda-1I`!7B5}V%=#kcfzIVimu=FyoFcYjp4kYK$-Qlh8<^>q|oG)ENlkS|izETPz=AB`&!9SUdL?b4IEo1MK^H+C%(v+X)P0cJD1Ceo;pkJ~hkULWSh$t)$X_Wt9>hr0gPdw9y2$(*Aj{%X;=g}8@6ItE| zy%cC6^ywE|ANoR%!7Wg!&?lk=;3PI4!HLJEeq1cAqL^HwV4Ogxpb~P22s?E0K^F&F zR6bnT;R_$MK#eB3!-U+8rrZIB+>Kl=Q82kceD0MyUdWx~gU;~Eoh0P0^g#=`(;zo` zr;y9rI@pl8mdhk8lL^EfugnY~^N0^R5S=J0o-Jhl?t>PnxsWNngl&ct-o6qB;uNF9 zTShdoatGW*-oS1GXE?+fzZo+;5in%{{{lq9@W(`lxA#HM^eS^wboc-tv{2^k7cl$~ zA+|h585jGtA+`wRSE(y&Wsd#(wZ6l6*Q?g9~0(vl{&Tr_1E*q4B1ir_v(Yz%y`0z+G_>HyQ= z+hoe@V#wqR8zNw}0-oxXDYje#<#CD>O53i7y08q@aKuoj!ZRSv*`AN>GRK~DJe;b?Pm9&h3;qKd*S_jySJ!pgr z6_BzCxSZn#8fX(kgDXq~Oku!Ff=C!h9B*P1ZDL;sR;VS8H>>zy1*RF?v=+c5^Oz|! z)sV^Eln9tiz-M@6iYwJ7KG;oOnc@`A?SmCE+d*bOfJtUU>??UYhuXx@;I2vpOeWxg zAQG;MI|k;e!+g-?fEHE9^BC~04_096L8x&Uk!1>9VhH6|BIbbv;6uGav6^5)%@YZr z=NdxUjS1Ttm`4&oGpX$GM2b#ED5SRXc7AV&OknYtkgT16Kk|yiWX44H_dyqe2Z?&I zGGZd}-lfScP*@eg2OD0;60EA%2it*A&UhIMH$En-+Su}uls5tZwvwoGtQ8iCmaJF03snXZ#V|FEU=>Hyx|yFf$+#n0I7q3hJpYK&rTnwA@6R11l74 zfv9AxOx`JP$Xsa1%rg`K4+T+fqckvT1-2Tnxs773On~(o#ax-}F=Z~(Uc52^e5_Zd zxO5+E$OLw&SEjghH&-UW3Ykzc!dRKqg5|kw*BCPM3v9nwlrt_s4IX`4YvRzL34b4>lP2EB=*!>7=xmgGN0dT+r2dC^aH}O6P2fR` z2$+t5R|Apo4iPBLDIeIDz>5A5fwH*|ufV`zq8AF8T;3o<9`7YWGI@Y6^vV;H!FnI; zZm&GCHb3Hn74k3{NF^$F#fs@wuf2kpy?(A_*y~k|9VW5a3Y!vUkiiuVgTxyO@|Z;g zOhLdKf+)8^P^XFg0NC6HY376V8ic(`N{o+8nGFn?e2BUYKESsbGQE-f6Cd=?hEQ)L zpX7rUQsXgTG604NrDTZaUD42x%DbKjSW5w~2qMu^F<&kA!M+Wws9DTcyM3?%L-W-^ zfJr8o*Tj&=yPl9t9^iAl@g>xDr}4mF;+s2a&L1XJF~LUfGDE@c^0yOcL9+wSl)#!u!Dg$)nrR8vx|Wh z7+S~RnSV_dzqMd`%fahCN$m+ULlW0VoamXn7Xg1=G1){KsjT5Rl_;1sN%4=3%@$Q zqBh}I=L!7k{EFIcC0HzJ?V|@Eg;RlcGp`my; zW1$aLV0r@-bE!AxfRSF^`MVi?su{YERK)?V(0!yTuKk7XBUN$j-#(hgj@Rz{RWVa@ z-OYgocs10XTX)T{EU+zs&8@q6K@Y62?iX9(LZ+!#cW(D`uNt~HRmG)@(7mbJIG5d< zs%>9v_g?CY?GE@Kf6?8vJFr2Jom+R)?!fx!USdTD?0lSF-6a-KelvA<=J6S49-nb~ zeP&}WyI09=cS16s0emHD&uw=zyaIdhFS=jw;q}oyW?o5Js#;BdKg)CW z_=>5VU@`69m(@Aeq)o6?H7IG?M{|rK5dJ3tdmW-ysm;Z44bZ#jkbi1-i)TKlk0Kb-crnf?x;N3%S-+! zXVfuylV$J4X{%z;IoeB0V@J-Qx30NgMa$xQ0DYy{Ni8(Vk|BpF^bMIZeFE|A;S9L~ ziIvL655zZyzmSVkNhz0P11?o&E`s{<$ua)Hy5b+^|8Ajta$uq9b?}OmrMRT)wEzV} zK}qqiuE*)G>J5YO%_@Px7*b0}1koz9#8%0Nu6E%Xg)z=#xnZyj65JCu41QV1*OG!| zUFVe%T=$a{yHR&F;9UTi!U*6e7}QsFV!(UKi~+@l!Gy<);*7xr1PXN-0N;PI%C&SI z#9pB|lU4kSfHxQ!J7w|*%Zk6RUIhZsd}>=k%HW$;1>};2Nq&gR+FDq&l?mZ(4K0T{ zAOxV2h4aZlT71ZqI*ca_-_sVDhQXE)Nh$(vYBl2~K)7#p1c=blEkPPdEE+Dq5=@0w zdTaGPW`xK}(krZ@VyehQr2rvn7%<&&evM-=;9XmEBU$j zx;^D+q|k>(7ky}i(#J?CQqU)mCuT~~kv-0Qct-qM{@K5YcY-%M9<|Yj(Bc~ z<{+yw-cp>yGF&kRY?{T%VT<$<0;X=aJpNcU+N!RUJIMHPku~yH)nrLsF9+HcN!=i? z#5KFRNuKgOe!66{Oz)=SXH&4ykv7Z$nY7|pP)S9{f=E)FlsO^Cn95aLv=aQx34*lSM_d&_R`N0my9 zCF})+Q&sBm7D1-YCCXVUL7p@wNbQD1zo{ls2L4L$^dyp)P?w}^no0C?@qV=`xknRa zMQkZlsZc$FH$F#@udWm2Y`n&zO0Qj^=X?ZWRa*2bQHIo}JX{^mgR_b9<|cx7SwoZ^ z=CFD&v8mF!iA0k{Kl~z%xJ~(qjj8@MpAn=;7UdtUBHjtO=TfDi2*t1fUPMu)W#3Z% zSOQ@?;0#QauEY{NV=_HMixd2-qtv<^>nXot1koSvL+$$LJZm*34OL3XCU}P!;<|%F zDp>w9Nl$!0kd40)?_T^+gDSOnNY7V739@hx@y7Nb-bH`XbNO__w$cdOn7l)(^E<&K zh7)D0_5?Y{TKeQGf@I+b6IAIqvsHckNQ5f=i2a``1r;aVuHh#rRH+T7PgQz8nVvb7 z2;NVoXN>^Ta9Re{aQYeLJ6t5*ayN-<+-F3e?+&Y`$( zzX9)EsgnP0dVaf&DBtNv@UK{ZonV?rv3gc)BlxP9h*AzF%9l@3{<{uT=cOG~zxE;3 zoFEhB8y^!*Xg1MEpAfv%Yedt0KVhFl(6d{4;{6f7il9oDtCIaEWDsO%0OfnmAg*Ht z=~?|Vs;ve#`l^)t9zDCK({t`5;(g5eYxm1kXKYD=6f8zup{%E*76gB7D$&1Ik7~Z& zo@mBDCt3ZmJW!=qD-*m_5^?p(NBN68h&~;!xnWcWk>+W`2(lfQco?}Gh_dlJlpmf+ zwM_^kngXv9Z%z?KTMz zYk~iFBlyb};{B{A$?DvM^84Aij=M(K2_F-Dc~{C$!LLfe=5h2afyFAUQHP{lOeSpB zU4kqxK#)6)Ne35xmIG1q5n;~`ru_NS1nL4aTjw-UHp1^_z#2c2thS6xuSk@OpVG4>e&R-zGN%%@{XpWq zn4h>lVLf#fn*;bj6u}o)Blwnw#Py^lK?1S#hadh#G=sVkHtGpsJEak}-*kFT#EYzG z<8^}X!;f;IErCRTk`m(VEX`i3$u;V3q#-1ST7#1Z?O(X2PSBQ7byHs1@ zDO7)j3j`T;kDm8JiEHr3^nAi*s8h^Jub(H%wTnqgRW=@%ts(j;IaKEj{Hht^!}}!b z<`R0A2_$;QHzeioILZ&MO8Ij`>6zMvlAwR$ONO6Bx?h^u!+qEC2_Xxgwb(g)`|n6(*wu^YtI z?NP#9*my_lWxS}m&2r*-4P|FKRQzWU>L!NeNT|6 zeMFgwxS>hyG{Sz?mhz3tk@T|h)VjGC7n-!}E=fGqm~<$>Bz9>@Iv;(Lw5^y!`R4Vg z&bKyGennNP`N0sXXN5w~V_21|($CZBIUKXRCLO?vNR!r9B(Col5+v#?g8YOx$TTUq z49N|GL}+-1p0`R6ih>(TR!-eCRKqwH7PKJ+WVQ6 z=-aj?{VN|L4L2MoYwtQvyagW-JnRDY8MOKgsY3Cw#JKlCSNY}Ecvj7!XjSWAQBc=z zPxEX1&+WkfTDRhW)Nxe>P2GhwSJms+1n}2W@S|4hTgi_>+58#Wrnbpf2$0Uz=RuF8 z59@>eqYg#z958S%AgOXBEn!B=B`A)KlCvKGHCirL2b^PM?I@D5a;l2{7$>)S1(e^) z&1fY&N8U^d&z0}3g4B8P&>cwT%eQX>w?JM%p=+T$xC9s$$<5Hs>SDQlQzT2|5pz)I zQn@LuO_#|fUq!N9Zv74@SIBpUB3UWFO0jm8{2AVcS69p5bVq58ya~?8j8yvMWYk{u z>};r?=qwAGr1chv?SAP8Jd>}{0;Y%mOxgfJV2lkvF{M_h`3(7rezn0<>Ets|RQ|jt zo>gvOTg2$BpGAUBn>Y_oTPRI{_REV=pQGHjLT<6S%KMTn-_0kGUiISlF&QkGZknFQ`#e$IO8_@F+(4pT`*B5I- zn~j(E=76&1!Ucf8^Fv*imR@Pxpmqmy1PJmY3;gCAIQB+Tr&DU%BcJnhN_WgR9~b zj2yL6MQlFR%2A5|sp4!5VO6te^j4cY7m!!SHNdlaxut;A4c(1=quaFVZN8tz>ie@l z0K|RgDHQ&&?B~$8-v-(j4U!*5p)g#omJa+x`C1haOqJb90Ddc%qQJFG{tBZMTf6AK zP-vsfbl)U1`H?T%@MBQEQj)tF;f&BBbHPZK&%V+zik# z{gy`YAbICmzy`~8zd&i4yz)Mh>GFt%s3u*G{RX&i<>?Pmnj>GP@iAAf{w9FS<)-)< zJq)la@es9Aj@|{njdB>R8#c+420_ARxz$bpcgoh0AlW7FIRn1k^1H_XJSIn11j$eG zLkgwGuebaGYxfYvhCH~QUol=TzV>SXz!mEmtgiXw7onQfe7W z4=e@WM3So5c7k%K;=Bt9qm>m6AYqI$jdnBB6bTcAI$de-DR6U@KMz9rc}hW?)u^kK zWpz+mt?bMK$#y03EtI}jq`6{nMlP%fKy zT-Qy2*HS2+zc%PyXjE?tL7H604=JiG0%)b!uJS8@blF8SOY+B?0qM02zbUBp(Z~fi zXsv0Q+NiC10{kZJLs}&5)Xp>m-9D{64a6hb^#VvvX}41WJYcKxE0TM*nYBfe2X@{F zVN2z`zam*K*E@_FR><$}gs!XQq7>%V$jNt6S}S`_LROA^{&!HGmw){U$wfJ-1(Hj0 zN1AG`$kA?;uF4ImNx#a~UPtLS`4IVyN0w-h{!~ur3(AR>Z|ERrl4ZeXz)i6<_6KmP zrNBi1r(2fNDk-i+pSOE&~eAvD7OMl697Y zKLfYklGGB(MoSsmuWhniT7lAi%UIeOJg|&hjnX5F-%F_av1LzRG|Xc;L6PjK<&*iS z>`zOX<|sY4JiLKqkn&staIlhyb8YzBq0vZ&DYIOVK3v&iM>0a$_Xw1ulyh{}Gg|qG zJbJ9sl$02!G--iSni4?k=n2Xx8t{{p+RsquWaX2FAepMjHNZDb$$E@Zx-yI=yctTz zv7nr(+@yWo*Gg@ia;x7ejcJI_QL57>YJsxyIdBV=qA#JeSh-vZr6tNYH9@jWN$vpl z<;wdbP+F-pqm}+D<<1^7dX18J1e9x)A++t-pbW4=`bMQy2h_4zNqZN9GL=pgE4M1Y z(ww(V$->ugFj#ibDb4rF{XYTRso26%=Psq@DI`BA=V{#URoL$t(q(1g0I*+Gijtsf%36w=zbW^-0(V^*)DiN2SKf?5a!cu%1_^hS{F}gVPiasK zln<0&$g>_Q+x#Knv0|?P+!I9^49cfU|F=N$Oc~b~B=@XgbAj_%^L>tFxLUvo2_sZF z2_z%YCXkF$8~q5}7&U|TJ7d+@a3tf@^hi{_PJL?)NY<-?UBIwG{pBP|8`aeTC~Z<- z!h1yOW_99O)S0Qa`5g>f)L|5&x2b#RIOjXH{t-}Sslo36xK}+-n(b3_$eur{>&ZW} z)yRwBJEGb@M{-oXPlqNa)gkW#cS^0-0kxb~hl~O6tor_C$op9xGD}35bIPKtfSgx$ z%?H^9<;@H*T~yXJMRG}b8V#9O6uMnke^sn@0Dn`aH3a2#<=`a%Zz?0k0{FY)o(O$z zDc5MVcw3oI?r}%?^gfci%4XUO-&0gt#r~m8_#Bk?m78gxe5fRRj^vS&N~eF1m7ceu z(HIIP2KG zU>|SYL;aLyJ$4k76RhI`QJQFd`wieGTYtNNWQuj=BP3I;<5ZALv)-hWqi?MfXtglM zx_1#;JJ))tD}eK?&uA$&-@1wxato{{Mu23Yb;%R(EwXlUB3W!bWrOsk)?Ku#US{pw z3zlDQz0wG!71kx>@GGqae+K0$>$Fc$%W7*_3`%RP&*vdoXI;DrO<8ZPJ`D0USX+Dq zhE3My)H$22ztN5-)7pyW!Yx*54k));2WO+S&AO)=D8IAD(!88y^`|}Sc5A0wNOoF- zvjN;?JyaK^-PSjYgJF+#9}VHX)@s#&+h^@R998ePuEwRCdcZoLmiecwQ)%qpu$H1x ze$!fvb_u^*8^wU{mi1&`lx|zMoI`TQT2}|dUF%Q^*fLwbl*ChcE1m- z-z9+Lp>^w6B#*2&X_Nfex|KEyPpmVSqU5o5q|@Z5))F+uJhP5I3*4X9Xga)jZXHZ< zIaN)W0QN7{mnf_cQ_qKkVVwHq5|qZPG9B%vsn-rd`ULe5jrobHKLxBwYWuw?O;)Soaz>q^&a42+ zsp`0MNT#U^7C@KjYWbqTrK?M57c^6yw*j@xR?8Iv@Ef&33nbsFugwN-j_SbyhdNhn zM8_rb)LoasK3@&IhSCD{z63!F)xr)Wi_}@0QOjbrrwx2d)c5Cta;bX4AIUQHl@GzN zTpdHLP##vB-$W@}?La4^N7NH^cyd%NN5Erhhi?G zK+p4Pep;?xP%r!jhKuTbI_bZp`n?C-Wp%y=;1xA;7f7zEgJ>0aO?{0P6ThmPXpa9) zZ7>_S>uP}#DBVz_>5Ai)dWg2!chxdik=#>@)kE@!TAq%!?yE6$viU$gT?2w1s*T@5 zosZP;i6}i*ua1YjC+dnWAn~Y8DkFKS=FooOnR=-hYWY(Qp~>O7n)CxosoLkSgJF;+ zV^&ZHYhB3lUuyo%kqprqln2RBZ3@|Cn6`HSlCQL1DKrn)S`|lWgyv`iv17Es832ye z7B&NLoaUlU#CR>NGipiG+EKWepbez8;$-bo7qoAR=B9ads&=OkaMQFJSU{>Xv>{Ic z%+OkvLo!plieJB0zt(nc0&bR8*Z~Q%wdVw!qfPl9g63-bKLc)_R-XdId~Lx6lon{O z(1FiF?X6{yzDTQ>1l(e6YCLdDw0m?kxl}7bHwMeJ)3n}QuATZC$qKDLtwmO95fqwN zX`|YJZ?)EFCHU58bDsmaR_nYJBgLakHA{(`?`B2Ly%|m;?&0686 zV9(UH3ENF0FniknGl;)< zLaR&0I;r(}2e?z(6N(I{wbu%Q;fywwBJ?j>AXR-%>$(_xIog_)z+Ke*tDtmAt3!tn zm$gA{z2jG{;@nf{TFRhW1MqlAGGo+K~6V*8F26x3r}yDPpp_>7e5n0$55QDgYdiP`*}fHmE~wd(R^oW_yr;|8~oeI8D zw)-_u8f}|N+x{`O4sU>RtgYEGw0)fI#^)dzZ%ge2V47{mW0WS?%4DI=iMFkDSu)91 z;VbY>wtaR63{z}_gONlvX8cZ9mh++&bIz_o4NA+hV#d*kHRurv)2rp>*t%Y0I7mk}b9i%YfTz z>zf4JHrwoWz4$?CXH*K%r7hTlbwxTql+_42x+wa;+Mj`RoexgwM z)ON22s(xl$_ZzByZY$UVrBr(zil&3?lWT)=uzmPfz*8*2Z21%Sis z@%PZouk2Tn032>FLs4pk{ayxuBkj#vLc%C}yD=z@wqK=n*~nXjr7#E7QHlB>P30(I?ygq=|2ey#j5OrrIw|MlI9q2cLj)y1mDBP^Q}-)0%IF zJ$(w247+m=B+RszC*0TeF>zp@Wxu!#z;EsKR)c+xz3fCJbM1>|FwC>3B!F_hz35Do z7TABL&EGaJn+X{m6nElWPAoCyJ6(lF^Q4PRw%3hT=_NVPjXt8(3{@N5!p0yYM7Gi(4|I`nqU+mT; zsO6l!X%tF1_Sv)mId9)juaR7^=Np95Mf)!SQ1Fu7j|S{z`#@UkU9oqxf$yrl!ZlQO z&ED-4O267OHURgV{ZHCgUAKo()i>-1=rrS|y~9vc_Pf1KVN`v~evBgKZF>-%tlY8Z z;Q!81@7nv*&D%ZuXmX-I?DrR zq1BVeUVSShJhc}}M)J(wel(Il?b~ud^4vazwuq^Yq8`*T$noe9fP)?H_d(TPI)3Yp z(h!FO2juEd$NEI5G|X{?wmV-r@;3(GaL2hIh#ldWR~rl?9n&yk)lrT*w7MAW_=RrT z#yIK*f@G{iUIO4a$14AWPvkw_79rejWjP=4*mqUmgwBj*Q@%y!I}fYLXPU{df~ zNAI#=pX1n^0?N6LTeLr#=O~^D_W6!3r@^qmQGF387dnREzsOJ*Ia+>z(qc#HVMvxZ z#?}MLQb&0@^I7JIrh~5Kj^ag7THz>^2$GeK#U&tNm81P1NLD-gl0nuu`ca3kbxf)U zdFvb(4xzN(v2_7T8yvgod~Ks++wZ7slcNV+VsCZ?(&)%^_+FtO8j*>LLA8-_+3G7G5hjhGo(4o-Y_mHCl&9H|ZmMZ{e zJ7Q)5c*OA?1^AyVB=NzxoUNpxsfELf^9ozB&c)^iL5&EKIR6EGK zbTYoz~3BIDS};hbe#zU4;*JN0Qb-l5(b7xjvM4z zj~&%FAbH~0Pcg*fXhY-uspH`^P(E|qrVGqJ9Wj-WJaIv(g;^hdBGc0pL()Y1#%3b2f6Jmf=n}oz;$T)?Wn)Bb_(sR&kW`(ov9%b`~s% z(pcw6I@1~Fy!sp1$2(h<0Wi&ZVK0&i&RH*keUekASTNanxDgsX#aXdGD5p9P(3%#% zYc>VAbZ0R-M3~{+Ll!(5-+7B7 z?INdh2iO-ooiwJGIIog}t#D530NhIFfi9?Xl{4TyB&(gbX_{Z-97B<4t+QbnP_A=! z-Ujyd&gFEtvcdT#EhIKNAKnFSlXGf5@NIUsehYk=&Q(Q$+v03ObJbR71KK`rb3S*2 z@;hf_F-XsH?o*I#clyx``@ORnZFhD!HDExoA?NXM)Opz1 zgfz=`22)f#;tZy)I_jK#7RfQ^F1pD5$vKir$DP&bHH8z-PM5%N(s{TVopCNL1%|WE+9iSe*}0cG=NISNkpP}^7H~j9j&t!wBoy~8~5Zc3DcQ!kL(hcVoT1Vb= zwyOZ(@6M+sP`c%;bP=W7&V01ex#RqT2JBsD4cdU;b6V+4?hogLS`d5Rxs1l&1LyXq zV0h@9M0@*3&JJ{P^4RGnTR(Bue~iTA%%L^=Q|FA0AbIAzITocqohvDLJa=~00Zi3D zVwY=r4GOV?_00XK`b#}OUH1*q7t!&?Q2k&efW!172TYvl~)*Ssgong<{k5NQfpm*$u$`dKm4sSL$784p^m6r3Jxiy=DS{YxJ&8 zBy07o&ycLs&(Qq0ULQ^BZqSRY0K-OoRZNk3wR*v)#imY~ekg9ZS&MZZDsr*75n zZ3J$c{`z$QzteZnA~;L0*Bi-pU3mk^_j;4AAlac;qiKGpZlU9bU3&0xuMgHa!|i>6eNfAalfLL!}@^E z0A}m=hM{yspL!gnqk1_yi8`h?4FKg&dPGUoa$FCfY3YQ1pH4?k>bq~zG?t=c9402Kbk(~XK z{+#Z?F6+mC0`7`lpYB1g>Q}3Q$o3{sijY(D%_|{ic3b zL+N)tiFTj2bbTmDZtJUQLwrYn&<>T|)z?w?-_x7YYWoj;Ck2-KdcO8Z9_SAu!SGO* zXcRxv-y(*`dJPXKpXv>0i}*}`lh$B=>K$ncd9EL!O;f6?`UCI{a-E~2q`|H|R{{Le z6*T~L4sq3rg7l%T+J^uf=4vt*Bwx84gHamp3T=(j2-iB=d5?5CXm3Bt6+zp;(XMg( zP#WWU^BPKHT}}N_8t2NU^N{f_+*4z4x$^f0aDuDs7pP^TD~;TAlB>%P08VyUXd;^8 z`u{k(?zpV0?_ZhOc=q0#XKT4zu7>u_hF03p%$8c3X|B=+Ll9*O%5VUJiXbSUg0d0W z$`X)01epqm3_*e4`~3cTzs`7{d!Og|eC|Ex+>7eyp$%lru;UX2F*@jeb1>t`3y5-z z@fvMs#~EXEI(>q1hXGEx3!g=lFvhq9aEifO1ex2eoM%lL}ppMnD5bXk@J20jY`cmlNpCj57&<7KXhX%DW5= z6ISA-x9HZ0m9>#5I)8A(- zXb0f|qij2*UPekQrrXDucN?Mm8QUtMe8|XJ3Bmv)EDg3t3=MsQgN!Ydkqt2}Q>HV_ zIH&<(gz?F2C?7K%oZvFb_>FqoV~n(8P(ERtr)TLYV>K;u;|y2&$|o2-^n^?@wouC9 z$h@-yN+;$8s>7X``IJ$+Fi+85wV&B|1>nlul89h#%vtn09bit-qwmh#NNLkS=GT<( z9%4SAlGKBFoH8;`rs@aqyqIs&s^QK2>KE92m~KWWeVIYuLpscKamRRm%!$7d+Mjv* zOW2Mu*HBh+l$rJ_qyXkm^iu^gAHD`<5c6yZl)=m?SHU~MTu*1lCz-wFkV2Rr1tDfA zQ_%w{jQKH@)u)*I_kkDATub*9BbXy}o#-^v_Y;hFhWQp3^s~&@65tuhR5w6*j`^=M zqC_#LCxQ^oe3yE$=b1nGB1#OCK?j?$%$GKTaDl0x2hWSl;*GGyF*j1fCZ74_a@a02 ztLVJr3e!$~sYK>;a{x)q+CnI=GVd$|;Tm&l0me&a?xNm(3Ud`5Tct98qU;I(4+!O8 z>C8}SQf4sE(^*|6^E`DmvzT-KL6qxE+d@d$OhX0W26Gi{6FJP1E=0*?{z|V!9`oJ5 zF>F3Fn|eV7%->JKR>&Ox1yT`nT#jLHGSg|HzQug=Z9p+|f=c`n=2FUHOPQIGh*HMn z{03z?bK4vcZZrR-2dskW_Wv~y)AK*LR53?IAlzYYr)Q#?8B>qXP{ZuJhAGuD&;AFf zW0p`hQ_oyWFM0!WK>=bmGCTi6uqLMOe%P9szquev3v;*(%DYTIde~c;A8X;+#tf!Y z%X`c~npr#Zrvo5#FyEr%!%n6%o!E9UeLsS&o4MEmUJsMA0512LbEt5Cz;EggDg<*s- z=9v}ne8PN{ZWlgfzD0T6ICG&GE)&cfl$1^~`)9z#k+tnRxHz#KS#WV?O{aIvg>{y` ziT$jF)ckX0`QzV`o$AJVk9s->SlVwucV~4_=6{goLxuYx*3-T4^k7X?L+Q!VE(Un9 ze(OgRU)CmC84k0)Itmv*R{crP{aH=4BphMA)duM(OOOCt088-?l!2@QIp{&GzBAwj zv$`6gJjNRBgUfN&D_wvSET=c&a+1|YFHi{UX*66ySwW#thOx@1S8|FqlOCIJmUIkK z1Z(F4NT*o?mmr;CeMD{Ev#cKvf*#4*X+z9&tV~LxqF8fj(TQe#@h+6-S-X<~F{}=H zFk@N2Qrq{@)31Xk{Kz$MnJEbuO~-l4|z71q5E!AoQ< zpl)aqOa2tLtE`MhNY_~T-@=y6dTBM3DJ;nlAeE)q30oR#3cda5tZ9c4GlSJT1CYsj zg<6(bED3#s*IBEn1kPq{9S83QYhx5_Ijmo%Lds?RvH|nVV;Si@HJ`O@6$k~a^Zz1B zA#3Ua*os)wskpnzdQb?LTdZH{VJ~K}sVXmFjj*6BW&QL&OrngHeHyk3)`$Z1O4cq) zZL3%@l;z!FO``@%HESl-sWq%0D3hyY{YEcr9qZPIP}Z}u7DCy;GElP6$l5RlXktA} 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 z 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�Gc*w!(Ipie2y=?1ve6 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 z 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

Rrg@^#p9{CBr4%#@u8Eg0R>Ej`0CQaXT^?U2ue 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 GeEuJ%8-Aex literal 0 HcmV?d00001 diff --git a/fw_hal/Debug/iaq_wired_sensor_hal.elf b/fw_hal/Debug/iaq_wired_sensor_hal.elf new file mode 100755 index 0000000000000000000000000000000000000000..bb75f26d0b50cdd1b89faa015b9bb6a4da4726bb GIT binary patch literal 766504 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 literal 0 HcmV?d00001 diff --git a/fw_hal/Debug/iaq_wired_sensor_hal.list b/fw_hal/Debug/iaq_wired_sensor_hal.list new file mode 100644 index 0000000..d6719ea --- /dev/null +++ b/fw_hal/Debug/iaq_wired_sensor_hal.list @@ -0,0 +1,12146 @@ + +iaq_wired_sensor_hal.elf: file format elf32-littlearm + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .isr_vector 000000c0 08000000 08000000 00010000 2**0 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 1 .text 00004288 080000c0 080000c0 000100c0 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .rodata 0000006c 08004348 08004348 00014348 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 3 .ARM.extab 00000000 080043b4 080043b4 0002000c 2**0 + CONTENTS + 4 .ARM 00000008 080043b4 080043b4 000143b4 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 5 .preinit_array 00000000 080043bc 080043bc 0002000c 2**0 + CONTENTS, ALLOC, LOAD, DATA + 6 .init_array 00000004 080043bc 080043bc 000143bc 2**2 + CONTENTS, ALLOC, LOAD, DATA + 7 .fini_array 00000004 080043c0 080043c0 000143c0 2**2 + CONTENTS, ALLOC, LOAD, DATA + 8 .data 0000000c 20000000 080043c4 00020000 2**2 + CONTENTS, ALLOC, LOAD, DATA + 9 .bss 00000204 2000000c 080043d0 0002000c 2**2 + ALLOC + 10 ._user_heap_stack 00000600 20000210 080043d0 00020210 2**0 + ALLOC + 11 .ARM.attributes 00000028 00000000 00000000 0002000c 2**0 + CONTENTS, READONLY + 12 .debug_info 00010e4e 00000000 00000000 00020034 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 13 .debug_abbrev 00002405 00000000 00000000 00030e82 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 14 .debug_aranges 00000e68 00000000 00000000 00033288 2**3 + CONTENTS, READONLY, DEBUGGING, OCTETS + 15 .debug_ranges 00000d70 00000000 00000000 000340f0 2**3 + CONTENTS, READONLY, DEBUGGING, OCTETS + 16 .debug_macro 000025fe 00000000 00000000 00034e60 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 17 .debug_line 00011bbb 00000000 00000000 0003745e 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 18 .debug_str 0006c093 00000000 00000000 00049019 2**0 + CONTENTS, READONLY, DEBUGGING, OCTETS + 19 .comment 00000053 00000000 00000000 000b50ac 2**0 + CONTENTS, READONLY + 20 .debug_frame 000033cc 00000000 00000000 000b5100 2**2 + CONTENTS, READONLY, DEBUGGING, OCTETS + +Disassembly of section .text: + +080000c0 <__do_global_dtors_aux>: + 80000c0: b510 push {r4, lr} + 80000c2: 4c06 ldr r4, [pc, #24] ; (80000dc <__do_global_dtors_aux+0x1c>) + 80000c4: 7823 ldrb r3, [r4, #0] + 80000c6: 2b00 cmp r3, #0 + 80000c8: d107 bne.n 80000da <__do_global_dtors_aux+0x1a> + 80000ca: 4b05 ldr r3, [pc, #20] ; (80000e0 <__do_global_dtors_aux+0x20>) + 80000cc: 2b00 cmp r3, #0 + 80000ce: d002 beq.n 80000d6 <__do_global_dtors_aux+0x16> + 80000d0: 4804 ldr r0, [pc, #16] ; (80000e4 <__do_global_dtors_aux+0x24>) + 80000d2: e000 b.n 80000d6 <__do_global_dtors_aux+0x16> + 80000d4: bf00 nop + 80000d6: 2301 movs r3, #1 + 80000d8: 7023 strb r3, [r4, #0] + 80000da: bd10 pop {r4, pc} + 80000dc: 2000000c .word 0x2000000c + 80000e0: 00000000 .word 0x00000000 + 80000e4: 08004330 .word 0x08004330 + +080000e8 : + 80000e8: 4b04 ldr r3, [pc, #16] ; (80000fc ) + 80000ea: b510 push {r4, lr} + 80000ec: 2b00 cmp r3, #0 + 80000ee: d003 beq.n 80000f8 + 80000f0: 4903 ldr r1, [pc, #12] ; (8000100 ) + 80000f2: 4804 ldr r0, [pc, #16] ; (8000104 ) + 80000f4: e000 b.n 80000f8 + 80000f6: bf00 nop + 80000f8: bd10 pop {r4, pc} + 80000fa: 46c0 nop ; (mov r8, r8) + 80000fc: 00000000 .word 0x00000000 + 8000100: 20000010 .word 0x20000010 + 8000104: 08004330 .word 0x08004330 + +08000108 <__udivsi3>: + 8000108: 2200 movs r2, #0 + 800010a: 0843 lsrs r3, r0, #1 + 800010c: 428b cmp r3, r1 + 800010e: d374 bcc.n 80001fa <__udivsi3+0xf2> + 8000110: 0903 lsrs r3, r0, #4 + 8000112: 428b cmp r3, r1 + 8000114: d35f bcc.n 80001d6 <__udivsi3+0xce> + 8000116: 0a03 lsrs r3, r0, #8 + 8000118: 428b cmp r3, r1 + 800011a: d344 bcc.n 80001a6 <__udivsi3+0x9e> + 800011c: 0b03 lsrs r3, r0, #12 + 800011e: 428b cmp r3, r1 + 8000120: d328 bcc.n 8000174 <__udivsi3+0x6c> + 8000122: 0c03 lsrs r3, r0, #16 + 8000124: 428b cmp r3, r1 + 8000126: d30d bcc.n 8000144 <__udivsi3+0x3c> + 8000128: 22ff movs r2, #255 ; 0xff + 800012a: 0209 lsls r1, r1, #8 + 800012c: ba12 rev r2, r2 + 800012e: 0c03 lsrs r3, r0, #16 + 8000130: 428b cmp r3, r1 + 8000132: d302 bcc.n 800013a <__udivsi3+0x32> + 8000134: 1212 asrs r2, r2, #8 + 8000136: 0209 lsls r1, r1, #8 + 8000138: d065 beq.n 8000206 <__udivsi3+0xfe> + 800013a: 0b03 lsrs r3, r0, #12 + 800013c: 428b cmp r3, r1 + 800013e: d319 bcc.n 8000174 <__udivsi3+0x6c> + 8000140: e000 b.n 8000144 <__udivsi3+0x3c> + 8000142: 0a09 lsrs r1, r1, #8 + 8000144: 0bc3 lsrs r3, r0, #15 + 8000146: 428b cmp r3, r1 + 8000148: d301 bcc.n 800014e <__udivsi3+0x46> + 800014a: 03cb lsls r3, r1, #15 + 800014c: 1ac0 subs r0, r0, r3 + 800014e: 4152 adcs r2, r2 + 8000150: 0b83 lsrs r3, r0, #14 + 8000152: 428b cmp r3, r1 + 8000154: d301 bcc.n 800015a <__udivsi3+0x52> + 8000156: 038b lsls r3, r1, #14 + 8000158: 1ac0 subs r0, r0, r3 + 800015a: 4152 adcs r2, r2 + 800015c: 0b43 lsrs r3, r0, #13 + 800015e: 428b cmp r3, r1 + 8000160: d301 bcc.n 8000166 <__udivsi3+0x5e> + 8000162: 034b lsls r3, r1, #13 + 8000164: 1ac0 subs r0, r0, r3 + 8000166: 4152 adcs r2, r2 + 8000168: 0b03 lsrs r3, r0, #12 + 800016a: 428b cmp r3, r1 + 800016c: d301 bcc.n 8000172 <__udivsi3+0x6a> + 800016e: 030b lsls r3, r1, #12 + 8000170: 1ac0 subs r0, r0, r3 + 8000172: 4152 adcs r2, r2 + 8000174: 0ac3 lsrs r3, r0, #11 + 8000176: 428b cmp r3, r1 + 8000178: d301 bcc.n 800017e <__udivsi3+0x76> + 800017a: 02cb lsls r3, r1, #11 + 800017c: 1ac0 subs r0, r0, r3 + 800017e: 4152 adcs r2, r2 + 8000180: 0a83 lsrs r3, r0, #10 + 8000182: 428b cmp r3, r1 + 8000184: d301 bcc.n 800018a <__udivsi3+0x82> + 8000186: 028b lsls r3, r1, #10 + 8000188: 1ac0 subs r0, r0, r3 + 800018a: 4152 adcs r2, r2 + 800018c: 0a43 lsrs r3, r0, #9 + 800018e: 428b cmp r3, r1 + 8000190: d301 bcc.n 8000196 <__udivsi3+0x8e> + 8000192: 024b lsls r3, r1, #9 + 8000194: 1ac0 subs r0, r0, r3 + 8000196: 4152 adcs r2, r2 + 8000198: 0a03 lsrs r3, r0, #8 + 800019a: 428b cmp r3, r1 + 800019c: d301 bcc.n 80001a2 <__udivsi3+0x9a> + 800019e: 020b lsls r3, r1, #8 + 80001a0: 1ac0 subs r0, r0, r3 + 80001a2: 4152 adcs r2, r2 + 80001a4: d2cd bcs.n 8000142 <__udivsi3+0x3a> + 80001a6: 09c3 lsrs r3, r0, #7 + 80001a8: 428b cmp r3, r1 + 80001aa: d301 bcc.n 80001b0 <__udivsi3+0xa8> + 80001ac: 01cb lsls r3, r1, #7 + 80001ae: 1ac0 subs r0, r0, r3 + 80001b0: 4152 adcs r2, r2 + 80001b2: 0983 lsrs r3, r0, #6 + 80001b4: 428b cmp r3, r1 + 80001b6: d301 bcc.n 80001bc <__udivsi3+0xb4> + 80001b8: 018b lsls r3, r1, #6 + 80001ba: 1ac0 subs r0, r0, r3 + 80001bc: 4152 adcs r2, r2 + 80001be: 0943 lsrs r3, r0, #5 + 80001c0: 428b cmp r3, r1 + 80001c2: d301 bcc.n 80001c8 <__udivsi3+0xc0> + 80001c4: 014b lsls r3, r1, #5 + 80001c6: 1ac0 subs r0, r0, r3 + 80001c8: 4152 adcs r2, r2 + 80001ca: 0903 lsrs r3, r0, #4 + 80001cc: 428b cmp r3, r1 + 80001ce: d301 bcc.n 80001d4 <__udivsi3+0xcc> + 80001d0: 010b lsls r3, r1, #4 + 80001d2: 1ac0 subs r0, r0, r3 + 80001d4: 4152 adcs r2, r2 + 80001d6: 08c3 lsrs r3, r0, #3 + 80001d8: 428b cmp r3, r1 + 80001da: d301 bcc.n 80001e0 <__udivsi3+0xd8> + 80001dc: 00cb lsls r3, r1, #3 + 80001de: 1ac0 subs r0, r0, r3 + 80001e0: 4152 adcs r2, r2 + 80001e2: 0883 lsrs r3, r0, #2 + 80001e4: 428b cmp r3, r1 + 80001e6: d301 bcc.n 80001ec <__udivsi3+0xe4> + 80001e8: 008b lsls r3, r1, #2 + 80001ea: 1ac0 subs r0, r0, r3 + 80001ec: 4152 adcs r2, r2 + 80001ee: 0843 lsrs r3, r0, #1 + 80001f0: 428b cmp r3, r1 + 80001f2: d301 bcc.n 80001f8 <__udivsi3+0xf0> + 80001f4: 004b lsls r3, r1, #1 + 80001f6: 1ac0 subs r0, r0, r3 + 80001f8: 4152 adcs r2, r2 + 80001fa: 1a41 subs r1, r0, r1 + 80001fc: d200 bcs.n 8000200 <__udivsi3+0xf8> + 80001fe: 4601 mov r1, r0 + 8000200: 4152 adcs r2, r2 + 8000202: 4610 mov r0, r2 + 8000204: 4770 bx lr + 8000206: e7ff b.n 8000208 <__udivsi3+0x100> + 8000208: b501 push {r0, lr} + 800020a: 2000 movs r0, #0 + 800020c: f000 f806 bl 800021c <__aeabi_idiv0> + 8000210: bd02 pop {r1, pc} + 8000212: 46c0 nop ; (mov r8, r8) + +08000214 <__aeabi_uidivmod>: + 8000214: 2900 cmp r1, #0 + 8000216: d0f7 beq.n 8000208 <__udivsi3+0x100> + 8000218: e776 b.n 8000108 <__udivsi3> + 800021a: 4770 bx lr + +0800021c <__aeabi_idiv0>: + 800021c: 4770 bx lr + 800021e: 46c0 nop ; (mov r8, r8) + +08000220 <__aeabi_uldivmod>: + 8000220: 2b00 cmp r3, #0 + 8000222: d111 bne.n 8000248 <__aeabi_uldivmod+0x28> + 8000224: 2a00 cmp r2, #0 + 8000226: d10f bne.n 8000248 <__aeabi_uldivmod+0x28> + 8000228: 2900 cmp r1, #0 + 800022a: d100 bne.n 800022e <__aeabi_uldivmod+0xe> + 800022c: 2800 cmp r0, #0 + 800022e: d002 beq.n 8000236 <__aeabi_uldivmod+0x16> + 8000230: 2100 movs r1, #0 + 8000232: 43c9 mvns r1, r1 + 8000234: 1c08 adds r0, r1, #0 + 8000236: b407 push {r0, r1, r2} + 8000238: 4802 ldr r0, [pc, #8] ; (8000244 <__aeabi_uldivmod+0x24>) + 800023a: a102 add r1, pc, #8 ; (adr r1, 8000244 <__aeabi_uldivmod+0x24>) + 800023c: 1840 adds r0, r0, r1 + 800023e: 9002 str r0, [sp, #8] + 8000240: bd03 pop {r0, r1, pc} + 8000242: 46c0 nop ; (mov r8, r8) + 8000244: ffffffd9 .word 0xffffffd9 + 8000248: b403 push {r0, r1} + 800024a: 4668 mov r0, sp + 800024c: b501 push {r0, lr} + 800024e: 9802 ldr r0, [sp, #8] + 8000250: f000 f82e bl 80002b0 <__udivmoddi4> + 8000254: 9b01 ldr r3, [sp, #4] + 8000256: 469e mov lr, r3 + 8000258: b002 add sp, #8 + 800025a: bc0c pop {r2, r3} + 800025c: 4770 bx lr + 800025e: 46c0 nop ; (mov r8, r8) + +08000260 <__aeabi_lmul>: + 8000260: b5f0 push {r4, r5, r6, r7, lr} + 8000262: 0415 lsls r5, r2, #16 + 8000264: 0c2d lsrs r5, r5, #16 + 8000266: 000f movs r7, r1 + 8000268: 0001 movs r1, r0 + 800026a: 002e movs r6, r5 + 800026c: 46c6 mov lr, r8 + 800026e: 4684 mov ip, r0 + 8000270: 0400 lsls r0, r0, #16 + 8000272: 0c14 lsrs r4, r2, #16 + 8000274: 0c00 lsrs r0, r0, #16 + 8000276: 0c09 lsrs r1, r1, #16 + 8000278: 4346 muls r6, r0 + 800027a: 434d muls r5, r1 + 800027c: 4360 muls r0, r4 + 800027e: 4361 muls r1, r4 + 8000280: 1940 adds r0, r0, r5 + 8000282: 0c34 lsrs r4, r6, #16 + 8000284: 1824 adds r4, r4, r0 + 8000286: b500 push {lr} + 8000288: 42a5 cmp r5, r4 + 800028a: d903 bls.n 8000294 <__aeabi_lmul+0x34> + 800028c: 2080 movs r0, #128 ; 0x80 + 800028e: 0240 lsls r0, r0, #9 + 8000290: 4680 mov r8, r0 + 8000292: 4441 add r1, r8 + 8000294: 0c25 lsrs r5, r4, #16 + 8000296: 186d adds r5, r5, r1 + 8000298: 4661 mov r1, ip + 800029a: 4359 muls r1, r3 + 800029c: 437a muls r2, r7 + 800029e: 0430 lsls r0, r6, #16 + 80002a0: 1949 adds r1, r1, r5 + 80002a2: 0424 lsls r4, r4, #16 + 80002a4: 0c00 lsrs r0, r0, #16 + 80002a6: 1820 adds r0, r4, r0 + 80002a8: 1889 adds r1, r1, r2 + 80002aa: bc80 pop {r7} + 80002ac: 46b8 mov r8, r7 + 80002ae: bdf0 pop {r4, r5, r6, r7, pc} + +080002b0 <__udivmoddi4>: + 80002b0: b5f0 push {r4, r5, r6, r7, lr} + 80002b2: 4657 mov r7, sl + 80002b4: 464e mov r6, r9 + 80002b6: 4645 mov r5, r8 + 80002b8: 46de mov lr, fp + 80002ba: b5e0 push {r5, r6, r7, lr} + 80002bc: 0004 movs r4, r0 + 80002be: 000d movs r5, r1 + 80002c0: 4692 mov sl, r2 + 80002c2: 4699 mov r9, r3 + 80002c4: b083 sub sp, #12 + 80002c6: 428b cmp r3, r1 + 80002c8: d830 bhi.n 800032c <__udivmoddi4+0x7c> + 80002ca: d02d beq.n 8000328 <__udivmoddi4+0x78> + 80002cc: 4649 mov r1, r9 + 80002ce: 4650 mov r0, sl + 80002d0: f000 f8ba bl 8000448 <__clzdi2> + 80002d4: 0029 movs r1, r5 + 80002d6: 0006 movs r6, r0 + 80002d8: 0020 movs r0, r4 + 80002da: f000 f8b5 bl 8000448 <__clzdi2> + 80002de: 1a33 subs r3, r6, r0 + 80002e0: 4698 mov r8, r3 + 80002e2: 3b20 subs r3, #32 + 80002e4: 469b mov fp, r3 + 80002e6: d433 bmi.n 8000350 <__udivmoddi4+0xa0> + 80002e8: 465a mov r2, fp + 80002ea: 4653 mov r3, sl + 80002ec: 4093 lsls r3, r2 + 80002ee: 4642 mov r2, r8 + 80002f0: 001f movs r7, r3 + 80002f2: 4653 mov r3, sl + 80002f4: 4093 lsls r3, r2 + 80002f6: 001e movs r6, r3 + 80002f8: 42af cmp r7, r5 + 80002fa: d83a bhi.n 8000372 <__udivmoddi4+0xc2> + 80002fc: 42af cmp r7, r5 + 80002fe: d100 bne.n 8000302 <__udivmoddi4+0x52> + 8000300: e078 b.n 80003f4 <__udivmoddi4+0x144> + 8000302: 465b mov r3, fp + 8000304: 1ba4 subs r4, r4, r6 + 8000306: 41bd sbcs r5, r7 + 8000308: 2b00 cmp r3, #0 + 800030a: da00 bge.n 800030e <__udivmoddi4+0x5e> + 800030c: e075 b.n 80003fa <__udivmoddi4+0x14a> + 800030e: 2200 movs r2, #0 + 8000310: 2300 movs r3, #0 + 8000312: 9200 str r2, [sp, #0] + 8000314: 9301 str r3, [sp, #4] + 8000316: 2301 movs r3, #1 + 8000318: 465a mov r2, fp + 800031a: 4093 lsls r3, r2 + 800031c: 9301 str r3, [sp, #4] + 800031e: 2301 movs r3, #1 + 8000320: 4642 mov r2, r8 + 8000322: 4093 lsls r3, r2 + 8000324: 9300 str r3, [sp, #0] + 8000326: e028 b.n 800037a <__udivmoddi4+0xca> + 8000328: 4282 cmp r2, r0 + 800032a: d9cf bls.n 80002cc <__udivmoddi4+0x1c> + 800032c: 2200 movs r2, #0 + 800032e: 2300 movs r3, #0 + 8000330: 9200 str r2, [sp, #0] + 8000332: 9301 str r3, [sp, #4] + 8000334: 9b0c ldr r3, [sp, #48] ; 0x30 + 8000336: 2b00 cmp r3, #0 + 8000338: d001 beq.n 800033e <__udivmoddi4+0x8e> + 800033a: 601c str r4, [r3, #0] + 800033c: 605d str r5, [r3, #4] + 800033e: 9800 ldr r0, [sp, #0] + 8000340: 9901 ldr r1, [sp, #4] + 8000342: b003 add sp, #12 + 8000344: bcf0 pop {r4, r5, r6, r7} + 8000346: 46bb mov fp, r7 + 8000348: 46b2 mov sl, r6 + 800034a: 46a9 mov r9, r5 + 800034c: 46a0 mov r8, r4 + 800034e: bdf0 pop {r4, r5, r6, r7, pc} + 8000350: 4642 mov r2, r8 + 8000352: 2320 movs r3, #32 + 8000354: 1a9b subs r3, r3, r2 + 8000356: 4652 mov r2, sl + 8000358: 40da lsrs r2, r3 + 800035a: 4641 mov r1, r8 + 800035c: 0013 movs r3, r2 + 800035e: 464a mov r2, r9 + 8000360: 408a lsls r2, r1 + 8000362: 0017 movs r7, r2 + 8000364: 4642 mov r2, r8 + 8000366: 431f orrs r7, r3 + 8000368: 4653 mov r3, sl + 800036a: 4093 lsls r3, r2 + 800036c: 001e movs r6, r3 + 800036e: 42af cmp r7, r5 + 8000370: d9c4 bls.n 80002fc <__udivmoddi4+0x4c> + 8000372: 2200 movs r2, #0 + 8000374: 2300 movs r3, #0 + 8000376: 9200 str r2, [sp, #0] + 8000378: 9301 str r3, [sp, #4] + 800037a: 4643 mov r3, r8 + 800037c: 2b00 cmp r3, #0 + 800037e: d0d9 beq.n 8000334 <__udivmoddi4+0x84> + 8000380: 07fb lsls r3, r7, #31 + 8000382: 0872 lsrs r2, r6, #1 + 8000384: 431a orrs r2, r3 + 8000386: 4646 mov r6, r8 + 8000388: 087b lsrs r3, r7, #1 + 800038a: e00e b.n 80003aa <__udivmoddi4+0xfa> + 800038c: 42ab cmp r3, r5 + 800038e: d101 bne.n 8000394 <__udivmoddi4+0xe4> + 8000390: 42a2 cmp r2, r4 + 8000392: d80c bhi.n 80003ae <__udivmoddi4+0xfe> + 8000394: 1aa4 subs r4, r4, r2 + 8000396: 419d sbcs r5, r3 + 8000398: 2001 movs r0, #1 + 800039a: 1924 adds r4, r4, r4 + 800039c: 416d adcs r5, r5 + 800039e: 2100 movs r1, #0 + 80003a0: 3e01 subs r6, #1 + 80003a2: 1824 adds r4, r4, r0 + 80003a4: 414d adcs r5, r1 + 80003a6: 2e00 cmp r6, #0 + 80003a8: d006 beq.n 80003b8 <__udivmoddi4+0x108> + 80003aa: 42ab cmp r3, r5 + 80003ac: d9ee bls.n 800038c <__udivmoddi4+0xdc> + 80003ae: 3e01 subs r6, #1 + 80003b0: 1924 adds r4, r4, r4 + 80003b2: 416d adcs r5, r5 + 80003b4: 2e00 cmp r6, #0 + 80003b6: d1f8 bne.n 80003aa <__udivmoddi4+0xfa> + 80003b8: 9800 ldr r0, [sp, #0] + 80003ba: 9901 ldr r1, [sp, #4] + 80003bc: 465b mov r3, fp + 80003be: 1900 adds r0, r0, r4 + 80003c0: 4169 adcs r1, r5 + 80003c2: 2b00 cmp r3, #0 + 80003c4: db24 blt.n 8000410 <__udivmoddi4+0x160> + 80003c6: 002b movs r3, r5 + 80003c8: 465a mov r2, fp + 80003ca: 4644 mov r4, r8 + 80003cc: 40d3 lsrs r3, r2 + 80003ce: 002a movs r2, r5 + 80003d0: 40e2 lsrs r2, r4 + 80003d2: 001c movs r4, r3 + 80003d4: 465b mov r3, fp + 80003d6: 0015 movs r5, r2 + 80003d8: 2b00 cmp r3, #0 + 80003da: db2a blt.n 8000432 <__udivmoddi4+0x182> + 80003dc: 0026 movs r6, r4 + 80003de: 409e lsls r6, r3 + 80003e0: 0033 movs r3, r6 + 80003e2: 0026 movs r6, r4 + 80003e4: 4647 mov r7, r8 + 80003e6: 40be lsls r6, r7 + 80003e8: 0032 movs r2, r6 + 80003ea: 1a80 subs r0, r0, r2 + 80003ec: 4199 sbcs r1, r3 + 80003ee: 9000 str r0, [sp, #0] + 80003f0: 9101 str r1, [sp, #4] + 80003f2: e79f b.n 8000334 <__udivmoddi4+0x84> + 80003f4: 42a3 cmp r3, r4 + 80003f6: d8bc bhi.n 8000372 <__udivmoddi4+0xc2> + 80003f8: e783 b.n 8000302 <__udivmoddi4+0x52> + 80003fa: 4642 mov r2, r8 + 80003fc: 2320 movs r3, #32 + 80003fe: 2100 movs r1, #0 + 8000400: 1a9b subs r3, r3, r2 + 8000402: 2200 movs r2, #0 + 8000404: 9100 str r1, [sp, #0] + 8000406: 9201 str r2, [sp, #4] + 8000408: 2201 movs r2, #1 + 800040a: 40da lsrs r2, r3 + 800040c: 9201 str r2, [sp, #4] + 800040e: e786 b.n 800031e <__udivmoddi4+0x6e> + 8000410: 4642 mov r2, r8 + 8000412: 2320 movs r3, #32 + 8000414: 1a9b subs r3, r3, r2 + 8000416: 002a movs r2, r5 + 8000418: 4646 mov r6, r8 + 800041a: 409a lsls r2, r3 + 800041c: 0023 movs r3, r4 + 800041e: 40f3 lsrs r3, r6 + 8000420: 4644 mov r4, r8 + 8000422: 4313 orrs r3, r2 + 8000424: 002a movs r2, r5 + 8000426: 40e2 lsrs r2, r4 + 8000428: 001c movs r4, r3 + 800042a: 465b mov r3, fp + 800042c: 0015 movs r5, r2 + 800042e: 2b00 cmp r3, #0 + 8000430: dad4 bge.n 80003dc <__udivmoddi4+0x12c> + 8000432: 4642 mov r2, r8 + 8000434: 002f movs r7, r5 + 8000436: 2320 movs r3, #32 + 8000438: 0026 movs r6, r4 + 800043a: 4097 lsls r7, r2 + 800043c: 1a9b subs r3, r3, r2 + 800043e: 40de lsrs r6, r3 + 8000440: 003b movs r3, r7 + 8000442: 4333 orrs r3, r6 + 8000444: e7cd b.n 80003e2 <__udivmoddi4+0x132> + 8000446: 46c0 nop ; (mov r8, r8) + +08000448 <__clzdi2>: + 8000448: b510 push {r4, lr} + 800044a: 2900 cmp r1, #0 + 800044c: d103 bne.n 8000456 <__clzdi2+0xe> + 800044e: f000 f807 bl 8000460 <__clzsi2> + 8000452: 3020 adds r0, #32 + 8000454: e002 b.n 800045c <__clzdi2+0x14> + 8000456: 1c08 adds r0, r1, #0 + 8000458: f000 f802 bl 8000460 <__clzsi2> + 800045c: bd10 pop {r4, pc} + 800045e: 46c0 nop ; (mov r8, r8) + +08000460 <__clzsi2>: + 8000460: 211c movs r1, #28 + 8000462: 2301 movs r3, #1 + 8000464: 041b lsls r3, r3, #16 + 8000466: 4298 cmp r0, r3 + 8000468: d301 bcc.n 800046e <__clzsi2+0xe> + 800046a: 0c00 lsrs r0, r0, #16 + 800046c: 3910 subs r1, #16 + 800046e: 0a1b lsrs r3, r3, #8 + 8000470: 4298 cmp r0, r3 + 8000472: d301 bcc.n 8000478 <__clzsi2+0x18> + 8000474: 0a00 lsrs r0, r0, #8 + 8000476: 3908 subs r1, #8 + 8000478: 091b lsrs r3, r3, #4 + 800047a: 4298 cmp r0, r3 + 800047c: d301 bcc.n 8000482 <__clzsi2+0x22> + 800047e: 0900 lsrs r0, r0, #4 + 8000480: 3904 subs r1, #4 + 8000482: a202 add r2, pc, #8 ; (adr r2, 800048c <__clzsi2+0x2c>) + 8000484: 5c10 ldrb r0, [r2, r0] + 8000486: 1840 adds r0, r0, r1 + 8000488: 4770 bx lr + 800048a: 46c0 nop ; (mov r8, r8) + 800048c: 02020304 .word 0x02020304 + 8000490: 01010101 .word 0x01010101 + ... + +0800049c : + +I2C_HandleTypeDef *i2c_context; +uint16_t timeout; + +int8_t i2c_init(I2C_HandleTypeDef *context, uint16_t i2c_timeout) +{ + 800049c: b580 push {r7, lr} + 800049e: b082 sub sp, #8 + 80004a0: af00 add r7, sp, #0 + 80004a2: 6078 str r0, [r7, #4] + 80004a4: 000a movs r2, r1 + 80004a6: 1cbb adds r3, r7, #2 + 80004a8: 801a strh r2, [r3, #0] + if (context == NULL) { + 80004aa: 687b ldr r3, [r7, #4] + 80004ac: 2b00 cmp r3, #0 + 80004ae: d102 bne.n 80004b6 + return I2C_ERROR; + 80004b0: 2301 movs r3, #1 + 80004b2: 425b negs r3, r3 + 80004b4: e007 b.n 80004c6 + } + i2c_context = context; + 80004b6: 4b06 ldr r3, [pc, #24] ; (80004d0 ) + 80004b8: 687a ldr r2, [r7, #4] + 80004ba: 601a str r2, [r3, #0] + timeout = i2c_timeout; + 80004bc: 4b05 ldr r3, [pc, #20] ; (80004d4 ) + 80004be: 1cba adds r2, r7, #2 + 80004c0: 8812 ldrh r2, [r2, #0] + 80004c2: 801a strh r2, [r3, #0] + return I2C_OK; + 80004c4: 2300 movs r3, #0 +} + 80004c6: 0018 movs r0, r3 + 80004c8: 46bd mov sp, r7 + 80004ca: b002 add sp, #8 + 80004cc: bd80 pop {r7, pc} + 80004ce: 46c0 nop ; (mov r8, r8) + 80004d0: 20000030 .word 0x20000030 + 80004d4: 20000034 .word 0x20000034 + +080004d8 : + +int8_t i2c_transmit(uint8_t address, uint8_t *buffer, int len) +{ + 80004d8: b590 push {r4, r7, lr} + 80004da: b087 sub sp, #28 + 80004dc: af02 add r7, sp, #8 + 80004de: 60b9 str r1, [r7, #8] + 80004e0: 607a str r2, [r7, #4] + 80004e2: 210f movs r1, #15 + 80004e4: 187b adds r3, r7, r1 + 80004e6: 1c02 adds r2, r0, #0 + 80004e8: 701a strb r2, [r3, #0] + if (HAL_I2C_Master_Transmit(i2c_context, address, buffer, len, timeout) == HAL_OK) + 80004ea: 4b0c ldr r3, [pc, #48] ; (800051c ) + 80004ec: 6818 ldr r0, [r3, #0] + 80004ee: 187b adds r3, r7, r1 + 80004f0: 781b ldrb r3, [r3, #0] + 80004f2: b299 uxth r1, r3 + 80004f4: 687b ldr r3, [r7, #4] + 80004f6: b29c uxth r4, r3 + 80004f8: 4b09 ldr r3, [pc, #36] ; (8000520 ) + 80004fa: 881b ldrh r3, [r3, #0] + 80004fc: 68ba ldr r2, [r7, #8] + 80004fe: 9300 str r3, [sp, #0] + 8000500: 0023 movs r3, r4 + 8000502: f001 f8ef bl 80016e4 + 8000506: 1e03 subs r3, r0, #0 + 8000508: d101 bne.n 800050e + { + return I2C_OK; + 800050a: 2300 movs r3, #0 + 800050c: e001 b.n 8000512 + } else { + return I2C_ERROR; + 800050e: 2301 movs r3, #1 + 8000510: 425b negs r3, r3 + } +} + 8000512: 0018 movs r0, r3 + 8000514: 46bd mov sp, r7 + 8000516: b005 add sp, #20 + 8000518: bd90 pop {r4, r7, pc} + 800051a: 46c0 nop ; (mov r8, r8) + 800051c: 20000030 .word 0x20000030 + 8000520: 20000034 .word 0x20000034 + +08000524 : + +int8_t i2c_receive(uint8_t address, uint8_t *buffer, int len) +{ + 8000524: b590 push {r4, r7, lr} + 8000526: b087 sub sp, #28 + 8000528: af02 add r7, sp, #8 + 800052a: 60b9 str r1, [r7, #8] + 800052c: 607a str r2, [r7, #4] + 800052e: 210f movs r1, #15 + 8000530: 187b adds r3, r7, r1 + 8000532: 1c02 adds r2, r0, #0 + 8000534: 701a strb r2, [r3, #0] + if (HAL_I2C_Master_Receive(i2c_context, address, buffer, len, timeout) == HAL_OK) + 8000536: 4b0c ldr r3, [pc, #48] ; (8000568 ) + 8000538: 6818 ldr r0, [r3, #0] + 800053a: 187b adds r3, r7, r1 + 800053c: 781b ldrb r3, [r3, #0] + 800053e: b299 uxth r1, r3 + 8000540: 687b ldr r3, [r7, #4] + 8000542: b29c uxth r4, r3 + 8000544: 4b09 ldr r3, [pc, #36] ; (800056c ) + 8000546: 881b ldrh r3, [r3, #0] + 8000548: 68ba ldr r2, [r7, #8] + 800054a: 9300 str r3, [sp, #0] + 800054c: 0023 movs r3, r4 + 800054e: f001 f9d1 bl 80018f4 + 8000552: 1e03 subs r3, r0, #0 + 8000554: d101 bne.n 800055a + { + return I2C_OK; + 8000556: 2300 movs r3, #0 + 8000558: e001 b.n 800055e + } else + { + return I2C_ERROR; + 800055a: 2301 movs r3, #1 + 800055c: 425b negs r3, r3 + } +} + 800055e: 0018 movs r0, r3 + 8000560: 46bd mov sp, r7 + 8000562: b005 add sp, #20 + 8000564: bd90 pop {r4, r7, pc} + 8000566: 46c0 nop ; (mov r8, r8) + 8000568: 20000030 .word 0x20000030 + 800056c: 20000034 .word 0x20000034 + +08000570 : + +int8_t i2c_transmit_receive(uint8_t address, uint16_t tx_buffer, uint16_t tx_len, uint8_t *rx_buffer, uint16_t rx_len) +{ + 8000570: b5f0 push {r4, r5, r6, r7, lr} + 8000572: b089 sub sp, #36 ; 0x24 + 8000574: af04 add r7, sp, #16 + 8000576: 0004 movs r4, r0 + 8000578: 0008 movs r0, r1 + 800057a: 0011 movs r1, r2 + 800057c: 607b str r3, [r7, #4] + 800057e: 250f movs r5, #15 + 8000580: 197b adds r3, r7, r5 + 8000582: 1c22 adds r2, r4, #0 + 8000584: 701a strb r2, [r3, #0] + 8000586: 260c movs r6, #12 + 8000588: 19bb adds r3, r7, r6 + 800058a: 1c02 adds r2, r0, #0 + 800058c: 801a strh r2, [r3, #0] + 800058e: 240a movs r4, #10 + 8000590: 193b adds r3, r7, r4 + 8000592: 1c0a adds r2, r1, #0 + 8000594: 801a strh r2, [r3, #0] + if(HAL_I2C_Mem_Read(i2c_context, address, tx_buffer, tx_len, rx_buffer, rx_len, 10) == HAL_OK) + 8000596: 4b10 ldr r3, [pc, #64] ; (80005d8 ) + 8000598: 6818 ldr r0, [r3, #0] + 800059a: 197b adds r3, r7, r5 + 800059c: 781b ldrb r3, [r3, #0] + 800059e: b299 uxth r1, r3 + 80005a0: 193b adds r3, r7, r4 + 80005a2: 881c ldrh r4, [r3, #0] + 80005a4: 19bb adds r3, r7, r6 + 80005a6: 881a ldrh r2, [r3, #0] + 80005a8: 230a movs r3, #10 + 80005aa: 9302 str r3, [sp, #8] + 80005ac: 2320 movs r3, #32 + 80005ae: 2508 movs r5, #8 + 80005b0: 46ac mov ip, r5 + 80005b2: 44bc add ip, r7 + 80005b4: 4463 add r3, ip + 80005b6: 881b ldrh r3, [r3, #0] + 80005b8: 9301 str r3, [sp, #4] + 80005ba: 687b ldr r3, [r7, #4] + 80005bc: 9300 str r3, [sp, #0] + 80005be: 0023 movs r3, r4 + 80005c0: f001 faa0 bl 8001b04 + 80005c4: 1e03 subs r3, r0, #0 + 80005c6: d101 bne.n 80005cc + { + return I2C_OK; + 80005c8: 2300 movs r3, #0 + 80005ca: e001 b.n 80005d0 + } else + { + return I2C_ERROR; + 80005cc: 2301 movs r3, #1 + 80005ce: 425b negs r3, r3 + } +} + 80005d0: 0018 movs r0, r3 + 80005d2: 46bd mov sp, r7 + 80005d4: b005 add sp, #20 + 80005d6: bdf0 pop {r4, r5, r6, r7, pc} + 80005d8: 20000030 .word 0x20000030 + +080005dc

: +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + 80005dc: b580 push {r7, lr} + 80005de: af00 add r7, sp, #0 + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + 80005e0: f000 fd34 bl 800104c + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + 80005e4: f000 f83c bl 8000660 + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + 80005e8: f000 fa9a bl 8000b20 + MX_I2C1_Init(); + 80005ec: f000 f8ac bl 8000748 + MX_TIM2_Init(); + 80005f0: f000 f8ea bl 80007c8 + MX_TIM21_Init(); + 80005f4: f000 f96e bl 80008d4 + MX_TIM22_Init(); + 80005f8: f000 f9c6 bl 8000988 + MX_USART2_UART_Init(); + 80005fc: f000 fa5c bl 8000ab8 + /* USER CODE BEGIN 2 */ + + i2c_init(&hi2c1,100); + 8000600: 4b10 ldr r3, [pc, #64] ; (8000644 ) + 8000602: 2164 movs r1, #100 ; 0x64 + 8000604: 0018 movs r0, r3 + 8000606: f7ff ff49 bl 800049c + HAL_Delay(3000); + 800060a: 4b0f ldr r3, [pc, #60] ; (8000648 ) + 800060c: 0018 movs r0, r3 + 800060e: f000 fd8d bl 800112c + scd4x_start_periodic_measurement(); + 8000612: f000 fac7 bl 8000ba4 + HAL_Delay(3000); + 8000616: 4b0c ldr r3, [pc, #48] ; (8000648 ) + 8000618: 0018 movs r0, r3 + 800061a: f000 fd87 bl 800112c + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + while (1) + { + sht4x_measure(&T_SHT4x, &RH_SHT4x); + 800061e: 4a0b ldr r2, [pc, #44] ; (800064c ) + 8000620: 4b0b ldr r3, [pc, #44] ; (8000650 ) + 8000622: 0011 movs r1, r2 + 8000624: 0018 movs r0, r3 + 8000626: f000 fb31 bl 8000c8c + + scd4x_read_measurement(&CO2, + 800062a: 4a0a ldr r2, [pc, #40] ; (8000654 ) + 800062c: 490a ldr r1, [pc, #40] ; (8000658 ) + 800062e: 4b0b ldr r3, [pc, #44] ; (800065c ) + 8000630: 0018 movs r0, r3 + 8000632: f000 fac3 bl 8000bbc + &T_SCD4x, + &RH_SCD4x); + HAL_Delay(2000); + 8000636: 23fa movs r3, #250 ; 0xfa + 8000638: 00db lsls r3, r3, #3 + 800063a: 0018 movs r0, r3 + 800063c: f000 fd76 bl 800112c + sht4x_measure(&T_SHT4x, &RH_SHT4x); + 8000640: e7ed b.n 800061e + 8000642: 46c0 nop ; (mov r8, r8) + 8000644: 2000003c .word 0x2000003c + 8000648: 00000bb8 .word 0x00000bb8 + 800064c: 200001c8 .word 0x200001c8 + 8000650: 20000038 .word 0x20000038 + 8000654: 200000d0 .word 0x200000d0 + 8000658: 2000008c .word 0x2000008c + 800065c: 200001c4 .word 0x200001c4 + +08000660 : +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + 8000660: b590 push {r4, r7, lr} + 8000662: b099 sub sp, #100 ; 0x64 + 8000664: af00 add r7, sp, #0 + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + 8000666: 242c movs r4, #44 ; 0x2c + 8000668: 193b adds r3, r7, r4 + 800066a: 0018 movs r0, r3 + 800066c: 2334 movs r3, #52 ; 0x34 + 800066e: 001a movs r2, r3 + 8000670: 2100 movs r1, #0 + 8000672: f003 fe55 bl 8004320 + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + 8000676: 2318 movs r3, #24 + 8000678: 18fb adds r3, r7, r3 + 800067a: 0018 movs r0, r3 + 800067c: 2314 movs r3, #20 + 800067e: 001a movs r2, r3 + 8000680: 2100 movs r1, #0 + 8000682: f003 fe4d bl 8004320 + RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; + 8000686: 003b movs r3, r7 + 8000688: 0018 movs r0, r3 + 800068a: 2318 movs r3, #24 + 800068c: 001a movs r2, r3 + 800068e: 2100 movs r1, #0 + 8000690: f003 fe46 bl 8004320 + + /** Configure the main internal regulator output voltage + */ + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); + 8000694: 4b2a ldr r3, [pc, #168] ; (8000740 ) + 8000696: 681b ldr r3, [r3, #0] + 8000698: 4a2a ldr r2, [pc, #168] ; (8000744 ) + 800069a: 401a ands r2, r3 + 800069c: 4b28 ldr r3, [pc, #160] ; (8000740 ) + 800069e: 2180 movs r1, #128 ; 0x80 + 80006a0: 0109 lsls r1, r1, #4 + 80006a2: 430a orrs r2, r1 + 80006a4: 601a str r2, [r3, #0] + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; + 80006a6: 0021 movs r1, r4 + 80006a8: 187b adds r3, r7, r1 + 80006aa: 2202 movs r2, #2 + 80006ac: 601a str r2, [r3, #0] + RCC_OscInitStruct.HSIState = RCC_HSI_ON; + 80006ae: 187b adds r3, r7, r1 + 80006b0: 2201 movs r2, #1 + 80006b2: 60da str r2, [r3, #12] + RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; + 80006b4: 187b adds r3, r7, r1 + 80006b6: 2210 movs r2, #16 + 80006b8: 611a str r2, [r3, #16] + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + 80006ba: 187b adds r3, r7, r1 + 80006bc: 2202 movs r2, #2 + 80006be: 625a str r2, [r3, #36] ; 0x24 + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; + 80006c0: 187b adds r3, r7, r1 + 80006c2: 2200 movs r2, #0 + 80006c4: 629a str r2, [r3, #40] ; 0x28 + RCC_OscInitStruct.PLL.PLLMUL = RCC_PLLMUL_3; + 80006c6: 187b adds r3, r7, r1 + 80006c8: 2200 movs r2, #0 + 80006ca: 62da str r2, [r3, #44] ; 0x2c + RCC_OscInitStruct.PLL.PLLDIV = RCC_PLLDIV_2; + 80006cc: 187b adds r3, r7, r1 + 80006ce: 2280 movs r2, #128 ; 0x80 + 80006d0: 03d2 lsls r2, r2, #15 + 80006d2: 631a str r2, [r3, #48] ; 0x30 + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + 80006d4: 187b adds r3, r7, r1 + 80006d6: 0018 movs r0, r3 + 80006d8: f001 fe3a bl 8002350 + 80006dc: 1e03 subs r3, r0, #0 + 80006de: d001 beq.n 80006e4 + { + Error_Handler(); + 80006e0: f000 fa34 bl 8000b4c + } + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + 80006e4: 2118 movs r1, #24 + 80006e6: 187b adds r3, r7, r1 + 80006e8: 220f movs r2, #15 + 80006ea: 601a str r2, [r3, #0] + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + 80006ec: 187b adds r3, r7, r1 + 80006ee: 2203 movs r2, #3 + 80006f0: 605a str r2, [r3, #4] + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV2; + 80006f2: 187b adds r3, r7, r1 + 80006f4: 2280 movs r2, #128 ; 0x80 + 80006f6: 609a str r2, [r3, #8] + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; + 80006f8: 187b adds r3, r7, r1 + 80006fa: 2200 movs r2, #0 + 80006fc: 60da str r2, [r3, #12] + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + 80006fe: 187b adds r3, r7, r1 + 8000700: 2200 movs r2, #0 + 8000702: 611a str r2, [r3, #16] + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) + 8000704: 187b adds r3, r7, r1 + 8000706: 2100 movs r1, #0 + 8000708: 0018 movs r0, r3 + 800070a: f002 f99d bl 8002a48 + 800070e: 1e03 subs r3, r0, #0 + 8000710: d001 beq.n 8000716 + { + Error_Handler(); + 8000712: f000 fa1b bl 8000b4c + } + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART2|RCC_PERIPHCLK_I2C1; + 8000716: 003b movs r3, r7 + 8000718: 220a movs r2, #10 + 800071a: 601a str r2, [r3, #0] + PeriphClkInit.Usart2ClockSelection = RCC_USART2CLKSOURCE_PCLK1; + 800071c: 003b movs r3, r7 + 800071e: 2200 movs r2, #0 + 8000720: 609a str r2, [r3, #8] + PeriphClkInit.I2c1ClockSelection = RCC_I2C1CLKSOURCE_PCLK1; + 8000722: 003b movs r3, r7 + 8000724: 2200 movs r2, #0 + 8000726: 611a str r2, [r3, #16] + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) + 8000728: 003b movs r3, r7 + 800072a: 0018 movs r0, r3 + 800072c: f002 fbb0 bl 8002e90 + 8000730: 1e03 subs r3, r0, #0 + 8000732: d001 beq.n 8000738 + { + Error_Handler(); + 8000734: f000 fa0a bl 8000b4c + } +} + 8000738: 46c0 nop ; (mov r8, r8) + 800073a: 46bd mov sp, r7 + 800073c: b019 add sp, #100 ; 0x64 + 800073e: bd90 pop {r4, r7, pc} + 8000740: 40007000 .word 0x40007000 + 8000744: ffffe7ff .word 0xffffe7ff + +08000748 : + * @brief I2C1 Initialization Function + * @param None + * @retval None + */ +static void MX_I2C1_Init(void) +{ + 8000748: b580 push {r7, lr} + 800074a: af00 add r7, sp, #0 + /* USER CODE END I2C1_Init 0 */ + + /* USER CODE BEGIN I2C1_Init 1 */ + + /* USER CODE END I2C1_Init 1 */ + hi2c1.Instance = I2C1; + 800074c: 4b1b ldr r3, [pc, #108] ; (80007bc ) + 800074e: 4a1c ldr r2, [pc, #112] ; (80007c0 ) + 8000750: 601a str r2, [r3, #0] + hi2c1.Init.Timing = 0x40000A0B; + 8000752: 4b1a ldr r3, [pc, #104] ; (80007bc ) + 8000754: 4a1b ldr r2, [pc, #108] ; (80007c4 ) + 8000756: 605a str r2, [r3, #4] + hi2c1.Init.OwnAddress1 = 0; + 8000758: 4b18 ldr r3, [pc, #96] ; (80007bc ) + 800075a: 2200 movs r2, #0 + 800075c: 609a str r2, [r3, #8] + hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; + 800075e: 4b17 ldr r3, [pc, #92] ; (80007bc ) + 8000760: 2201 movs r2, #1 + 8000762: 60da str r2, [r3, #12] + hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; + 8000764: 4b15 ldr r3, [pc, #84] ; (80007bc ) + 8000766: 2200 movs r2, #0 + 8000768: 611a str r2, [r3, #16] + hi2c1.Init.OwnAddress2 = 0; + 800076a: 4b14 ldr r3, [pc, #80] ; (80007bc ) + 800076c: 2200 movs r2, #0 + 800076e: 615a str r2, [r3, #20] + hi2c1.Init.OwnAddress2Masks = I2C_OA2_NOMASK; + 8000770: 4b12 ldr r3, [pc, #72] ; (80007bc ) + 8000772: 2200 movs r2, #0 + 8000774: 619a str r2, [r3, #24] + hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; + 8000776: 4b11 ldr r3, [pc, #68] ; (80007bc ) + 8000778: 2200 movs r2, #0 + 800077a: 61da str r2, [r3, #28] + hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; + 800077c: 4b0f ldr r3, [pc, #60] ; (80007bc ) + 800077e: 2200 movs r2, #0 + 8000780: 621a str r2, [r3, #32] + if (HAL_I2C_Init(&hi2c1) != HAL_OK) + 8000782: 4b0e ldr r3, [pc, #56] ; (80007bc ) + 8000784: 0018 movs r0, r3 + 8000786: f000 ff17 bl 80015b8 + 800078a: 1e03 subs r3, r0, #0 + 800078c: d001 beq.n 8000792 + { + Error_Handler(); + 800078e: f000 f9dd bl 8000b4c + } + /** Configure Analogue filter + */ + if (HAL_I2CEx_ConfigAnalogFilter(&hi2c1, I2C_ANALOGFILTER_ENABLE) != HAL_OK) + 8000792: 4b0a ldr r3, [pc, #40] ; (80007bc ) + 8000794: 2100 movs r1, #0 + 8000796: 0018 movs r0, r3 + 8000798: f001 fd42 bl 8002220 + 800079c: 1e03 subs r3, r0, #0 + 800079e: d001 beq.n 80007a4 + { + Error_Handler(); + 80007a0: f000 f9d4 bl 8000b4c + } + /** Configure Digital filter + */ + if (HAL_I2CEx_ConfigDigitalFilter(&hi2c1, 0) != HAL_OK) + 80007a4: 4b05 ldr r3, [pc, #20] ; (80007bc ) + 80007a6: 2100 movs r1, #0 + 80007a8: 0018 movs r0, r3 + 80007aa: f001 fd85 bl 80022b8 + 80007ae: 1e03 subs r3, r0, #0 + 80007b0: d001 beq.n 80007b6 + { + Error_Handler(); + 80007b2: f000 f9cb bl 8000b4c + } + /* USER CODE BEGIN I2C1_Init 2 */ + + /* USER CODE END I2C1_Init 2 */ + +} + 80007b6: 46c0 nop ; (mov r8, r8) + 80007b8: 46bd mov sp, r7 + 80007ba: bd80 pop {r7, pc} + 80007bc: 2000003c .word 0x2000003c + 80007c0: 40005400 .word 0x40005400 + 80007c4: 40000a0b .word 0x40000a0b + +080007c8 : + * @brief TIM2 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM2_Init(void) +{ + 80007c8: b580 push {r7, lr} + 80007ca: b08a sub sp, #40 ; 0x28 + 80007cc: af00 add r7, sp, #0 + + /* USER CODE BEGIN TIM2_Init 0 */ + + /* USER CODE END TIM2_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + 80007ce: 2318 movs r3, #24 + 80007d0: 18fb adds r3, r7, r3 + 80007d2: 0018 movs r0, r3 + 80007d4: 2310 movs r3, #16 + 80007d6: 001a movs r2, r3 + 80007d8: 2100 movs r1, #0 + 80007da: f003 fda1 bl 8004320 + TIM_MasterConfigTypeDef sMasterConfig = {0}; + 80007de: 2310 movs r3, #16 + 80007e0: 18fb adds r3, r7, r3 + 80007e2: 0018 movs r0, r3 + 80007e4: 2308 movs r3, #8 + 80007e6: 001a movs r2, r3 + 80007e8: 2100 movs r1, #0 + 80007ea: f003 fd99 bl 8004320 + TIM_OC_InitTypeDef sConfigOC = {0}; + 80007ee: 003b movs r3, r7 + 80007f0: 0018 movs r0, r3 + 80007f2: 2310 movs r3, #16 + 80007f4: 001a movs r2, r3 + 80007f6: 2100 movs r1, #0 + 80007f8: f003 fd92 bl 8004320 + + /* USER CODE BEGIN TIM2_Init 1 */ + + /* USER CODE END TIM2_Init 1 */ + htim2.Instance = TIM2; + 80007fc: 4b32 ldr r3, [pc, #200] ; (80008c8 ) + 80007fe: 2280 movs r2, #128 ; 0x80 + 8000800: 05d2 lsls r2, r2, #23 + 8000802: 601a str r2, [r3, #0] + htim2.Init.Prescaler = led_pwm_prescaler; + 8000804: 4b31 ldr r3, [pc, #196] ; (80008cc ) + 8000806: 001a movs r2, r3 + 8000808: 4b2f ldr r3, [pc, #188] ; (80008c8 ) + 800080a: 605a str r2, [r3, #4] + htim2.Init.CounterMode = TIM_COUNTERMODE_UP; + 800080c: 4b2e ldr r3, [pc, #184] ; (80008c8 ) + 800080e: 2200 movs r2, #0 + 8000810: 609a str r2, [r3, #8] + htim2.Init.Period = led_pwm_period; + 8000812: 2363 movs r3, #99 ; 0x63 + 8000814: 001a movs r2, r3 + 8000816: 4b2c ldr r3, [pc, #176] ; (80008c8 ) + 8000818: 60da str r2, [r3, #12] + htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + 800081a: 4b2b ldr r3, [pc, #172] ; (80008c8 ) + 800081c: 2200 movs r2, #0 + 800081e: 611a str r2, [r3, #16] + htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; + 8000820: 4b29 ldr r3, [pc, #164] ; (80008c8 ) + 8000822: 2280 movs r2, #128 ; 0x80 + 8000824: 615a str r2, [r3, #20] + if (HAL_TIM_Base_Init(&htim2) != HAL_OK) + 8000826: 4b28 ldr r3, [pc, #160] ; (80008c8 ) + 8000828: 0018 movs r0, r3 + 800082a: f002 fc57 bl 80030dc + 800082e: 1e03 subs r3, r0, #0 + 8000830: d001 beq.n 8000836 + { + Error_Handler(); + 8000832: f000 f98b bl 8000b4c + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + 8000836: 2118 movs r1, #24 + 8000838: 187b adds r3, r7, r1 + 800083a: 2280 movs r2, #128 ; 0x80 + 800083c: 0152 lsls r2, r2, #5 + 800083e: 601a str r2, [r3, #0] + if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) + 8000840: 187a adds r2, r7, r1 + 8000842: 4b21 ldr r3, [pc, #132] ; (80008c8 ) + 8000844: 0011 movs r1, r2 + 8000846: 0018 movs r0, r3 + 8000848: f002 fd96 bl 8003378 + 800084c: 1e03 subs r3, r0, #0 + 800084e: d001 beq.n 8000854 + { + Error_Handler(); + 8000850: f000 f97c bl 8000b4c + } + if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) + 8000854: 4b1c ldr r3, [pc, #112] ; (80008c8 ) + 8000856: 0018 movs r0, r3 + 8000858: f002 fc80 bl 800315c + 800085c: 1e03 subs r3, r0, #0 + 800085e: d001 beq.n 8000864 + { + Error_Handler(); + 8000860: f000 f974 bl 8000b4c + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + 8000864: 2110 movs r1, #16 + 8000866: 187b adds r3, r7, r1 + 8000868: 2200 movs r2, #0 + 800086a: 601a str r2, [r3, #0] + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + 800086c: 187b adds r3, r7, r1 + 800086e: 2200 movs r2, #0 + 8000870: 605a str r2, [r3, #4] + if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) + 8000872: 187a adds r2, r7, r1 + 8000874: 4b14 ldr r3, [pc, #80] ; (80008c8 ) + 8000876: 0011 movs r1, r2 + 8000878: 0018 movs r0, r3 + 800087a: f003 f843 bl 8003904 + 800087e: 1e03 subs r3, r0, #0 + 8000880: d001 beq.n 8000886 + { + Error_Handler(); + 8000882: f000 f963 bl 8000b4c + } + sConfigOC.OCMode = TIM_OCMODE_PWM1; + 8000886: 003b movs r3, r7 + 8000888: 2260 movs r2, #96 ; 0x60 + 800088a: 601a str r2, [r3, #0] + sConfigOC.Pulse = led_pwm_pulse_b; + 800088c: 4b10 ldr r3, [pc, #64] ; (80008d0 ) + 800088e: 881b ldrh r3, [r3, #0] + 8000890: 001a movs r2, r3 + 8000892: 003b movs r3, r7 + 8000894: 605a str r2, [r3, #4] + sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; + 8000896: 003b movs r3, r7 + 8000898: 2200 movs r2, #0 + 800089a: 609a str r2, [r3, #8] + sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; + 800089c: 003b movs r3, r7 + 800089e: 2200 movs r2, #0 + 80008a0: 60da str r2, [r3, #12] + if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) + 80008a2: 0039 movs r1, r7 + 80008a4: 4b08 ldr r3, [pc, #32] ; (80008c8 ) + 80008a6: 2200 movs r2, #0 + 80008a8: 0018 movs r0, r3 + 80008aa: f002 fc9f bl 80031ec + 80008ae: 1e03 subs r3, r0, #0 + 80008b0: d001 beq.n 80008b6 + { + Error_Handler(); + 80008b2: f000 f94b bl 8000b4c + } + /* USER CODE BEGIN TIM2_Init 2 */ + + /* USER CODE END TIM2_Init 2 */ + HAL_TIM_MspPostInit(&htim2); + 80008b6: 4b04 ldr r3, [pc, #16] ; (80008c8 ) + 80008b8: 0018 movs r0, r3 + 80008ba: f000 fad7 bl 8000e6c + +} + 80008be: 46c0 nop ; (mov r8, r8) + 80008c0: 46bd mov sp, r7 + 80008c2: b00a add sp, #40 ; 0x28 + 80008c4: bd80 pop {r7, pc} + 80008c6: 46c0 nop ; (mov r8, r8) + 80008c8: 20000100 .word 0x20000100 + 80008cc: 000004af .word 0x000004af + 80008d0: 2000002c .word 0x2000002c + +080008d4 : + * @brief TIM21 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM21_Init(void) +{ + 80008d4: b580 push {r7, lr} + 80008d6: b086 sub sp, #24 + 80008d8: af00 add r7, sp, #0 + + /* USER CODE BEGIN TIM21_Init 0 */ + + /* USER CODE END TIM21_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + 80008da: 2308 movs r3, #8 + 80008dc: 18fb adds r3, r7, r3 + 80008de: 0018 movs r0, r3 + 80008e0: 2310 movs r3, #16 + 80008e2: 001a movs r2, r3 + 80008e4: 2100 movs r1, #0 + 80008e6: f003 fd1b bl 8004320 + TIM_MasterConfigTypeDef sMasterConfig = {0}; + 80008ea: 003b movs r3, r7 + 80008ec: 0018 movs r0, r3 + 80008ee: 2308 movs r3, #8 + 80008f0: 001a movs r2, r3 + 80008f2: 2100 movs r1, #0 + 80008f4: f003 fd14 bl 8004320 + + /* USER CODE BEGIN TIM21_Init 1 */ + + /* USER CODE END TIM21_Init 1 */ + htim21.Instance = TIM21; + 80008f8: 4b1f ldr r3, [pc, #124] ; (8000978 ) + 80008fa: 4a20 ldr r2, [pc, #128] ; (800097c ) + 80008fc: 601a str r2, [r3, #0] + htim21.Init.Prescaler = tim21_prescaler; + 80008fe: 4b20 ldr r3, [pc, #128] ; (8000980 ) + 8000900: 001a movs r2, r3 + 8000902: 4b1d ldr r3, [pc, #116] ; (8000978 ) + 8000904: 605a str r2, [r3, #4] + htim21.Init.CounterMode = TIM_COUNTERMODE_UP; + 8000906: 4b1c ldr r3, [pc, #112] ; (8000978 ) + 8000908: 2200 movs r2, #0 + 800090a: 609a str r2, [r3, #8] + htim21.Init.Period = tim21_period; + 800090c: 4b1d ldr r3, [pc, #116] ; (8000984 ) + 800090e: 001a movs r2, r3 + 8000910: 4b19 ldr r3, [pc, #100] ; (8000978 ) + 8000912: 60da str r2, [r3, #12] + htim21.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + 8000914: 4b18 ldr r3, [pc, #96] ; (8000978 ) + 8000916: 2200 movs r2, #0 + 8000918: 611a str r2, [r3, #16] + htim21.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; + 800091a: 4b17 ldr r3, [pc, #92] ; (8000978 ) + 800091c: 2280 movs r2, #128 ; 0x80 + 800091e: 615a str r2, [r3, #20] + if (HAL_TIM_Base_Init(&htim21) != HAL_OK) + 8000920: 4b15 ldr r3, [pc, #84] ; (8000978 ) + 8000922: 0018 movs r0, r3 + 8000924: f002 fbda bl 80030dc + 8000928: 1e03 subs r3, r0, #0 + 800092a: d001 beq.n 8000930 + { + Error_Handler(); + 800092c: f000 f90e bl 8000b4c + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + 8000930: 2108 movs r1, #8 + 8000932: 187b adds r3, r7, r1 + 8000934: 2280 movs r2, #128 ; 0x80 + 8000936: 0152 lsls r2, r2, #5 + 8000938: 601a str r2, [r3, #0] + if (HAL_TIM_ConfigClockSource(&htim21, &sClockSourceConfig) != HAL_OK) + 800093a: 187a adds r2, r7, r1 + 800093c: 4b0e ldr r3, [pc, #56] ; (8000978 ) + 800093e: 0011 movs r1, r2 + 8000940: 0018 movs r0, r3 + 8000942: f002 fd19 bl 8003378 + 8000946: 1e03 subs r3, r0, #0 + 8000948: d001 beq.n 800094e + { + Error_Handler(); + 800094a: f000 f8ff bl 8000b4c + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + 800094e: 003b movs r3, r7 + 8000950: 2200 movs r2, #0 + 8000952: 601a str r2, [r3, #0] + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + 8000954: 003b movs r3, r7 + 8000956: 2200 movs r2, #0 + 8000958: 605a str r2, [r3, #4] + if (HAL_TIMEx_MasterConfigSynchronization(&htim21, &sMasterConfig) != HAL_OK) + 800095a: 003a movs r2, r7 + 800095c: 4b06 ldr r3, [pc, #24] ; (8000978 ) + 800095e: 0011 movs r1, r2 + 8000960: 0018 movs r0, r3 + 8000962: f002 ffcf bl 8003904 + 8000966: 1e03 subs r3, r0, #0 + 8000968: d001 beq.n 800096e + { + Error_Handler(); + 800096a: f000 f8ef bl 8000b4c + } + /* USER CODE BEGIN TIM21_Init 2 */ + + /* USER CODE END TIM21_Init 2 */ + +} + 800096e: 46c0 nop ; (mov r8, r8) + 8000970: 46bd mov sp, r7 + 8000972: b006 add sp, #24 + 8000974: bd80 pop {r7, pc} + 8000976: 46c0 nop ; (mov r8, r8) + 8000978: 200001cc .word 0x200001cc + 800097c: 40010800 .word 0x40010800 + 8000980: 0000ea5f .word 0x0000ea5f + 8000984: 000004af .word 0x000004af + +08000988 : + * @brief TIM22 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM22_Init(void) +{ + 8000988: b580 push {r7, lr} + 800098a: b08a sub sp, #40 ; 0x28 + 800098c: af00 add r7, sp, #0 + + /* USER CODE BEGIN TIM22_Init 0 */ + + /* USER CODE END TIM22_Init 0 */ + + TIM_ClockConfigTypeDef sClockSourceConfig = {0}; + 800098e: 2318 movs r3, #24 + 8000990: 18fb adds r3, r7, r3 + 8000992: 0018 movs r0, r3 + 8000994: 2310 movs r3, #16 + 8000996: 001a movs r2, r3 + 8000998: 2100 movs r1, #0 + 800099a: f003 fcc1 bl 8004320 + TIM_MasterConfigTypeDef sMasterConfig = {0}; + 800099e: 2310 movs r3, #16 + 80009a0: 18fb adds r3, r7, r3 + 80009a2: 0018 movs r0, r3 + 80009a4: 2308 movs r3, #8 + 80009a6: 001a movs r2, r3 + 80009a8: 2100 movs r1, #0 + 80009aa: f003 fcb9 bl 8004320 + TIM_OC_InitTypeDef sConfigOC = {0}; + 80009ae: 003b movs r3, r7 + 80009b0: 0018 movs r0, r3 + 80009b2: 2310 movs r3, #16 + 80009b4: 001a movs r2, r3 + 80009b6: 2100 movs r1, #0 + 80009b8: f003 fcb2 bl 8004320 + + /* USER CODE BEGIN TIM22_Init 1 */ + + /* USER CODE END TIM22_Init 1 */ + htim22.Instance = TIM22; + 80009bc: 4b39 ldr r3, [pc, #228] ; (8000aa4 ) + 80009be: 4a3a ldr r2, [pc, #232] ; (8000aa8 ) + 80009c0: 601a str r2, [r3, #0] + htim22.Init.Prescaler = led_pwm_prescaler; + 80009c2: 4b3a ldr r3, [pc, #232] ; (8000aac ) + 80009c4: 001a movs r2, r3 + 80009c6: 4b37 ldr r3, [pc, #220] ; (8000aa4 ) + 80009c8: 605a str r2, [r3, #4] + htim22.Init.CounterMode = TIM_COUNTERMODE_UP; + 80009ca: 4b36 ldr r3, [pc, #216] ; (8000aa4 ) + 80009cc: 2200 movs r2, #0 + 80009ce: 609a str r2, [r3, #8] + htim22.Init.Period = led_pwm_period; + 80009d0: 2363 movs r3, #99 ; 0x63 + 80009d2: 001a movs r2, r3 + 80009d4: 4b33 ldr r3, [pc, #204] ; (8000aa4 ) + 80009d6: 60da str r2, [r3, #12] + htim22.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + 80009d8: 4b32 ldr r3, [pc, #200] ; (8000aa4 ) + 80009da: 2200 movs r2, #0 + 80009dc: 611a str r2, [r3, #16] + htim22.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; + 80009de: 4b31 ldr r3, [pc, #196] ; (8000aa4 ) + 80009e0: 2280 movs r2, #128 ; 0x80 + 80009e2: 615a str r2, [r3, #20] + if (HAL_TIM_Base_Init(&htim22) != HAL_OK) + 80009e4: 4b2f ldr r3, [pc, #188] ; (8000aa4 ) + 80009e6: 0018 movs r0, r3 + 80009e8: f002 fb78 bl 80030dc + 80009ec: 1e03 subs r3, r0, #0 + 80009ee: d001 beq.n 80009f4 + { + Error_Handler(); + 80009f0: f000 f8ac bl 8000b4c + } + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + 80009f4: 2118 movs r1, #24 + 80009f6: 187b adds r3, r7, r1 + 80009f8: 2280 movs r2, #128 ; 0x80 + 80009fa: 0152 lsls r2, r2, #5 + 80009fc: 601a str r2, [r3, #0] + if (HAL_TIM_ConfigClockSource(&htim22, &sClockSourceConfig) != HAL_OK) + 80009fe: 187a adds r2, r7, r1 + 8000a00: 4b28 ldr r3, [pc, #160] ; (8000aa4 ) + 8000a02: 0011 movs r1, r2 + 8000a04: 0018 movs r0, r3 + 8000a06: f002 fcb7 bl 8003378 + 8000a0a: 1e03 subs r3, r0, #0 + 8000a0c: d001 beq.n 8000a12 + { + Error_Handler(); + 8000a0e: f000 f89d bl 8000b4c + } + if (HAL_TIM_PWM_Init(&htim22) != HAL_OK) + 8000a12: 4b24 ldr r3, [pc, #144] ; (8000aa4 ) + 8000a14: 0018 movs r0, r3 + 8000a16: f002 fba1 bl 800315c + 8000a1a: 1e03 subs r3, r0, #0 + 8000a1c: d001 beq.n 8000a22 + { + Error_Handler(); + 8000a1e: f000 f895 bl 8000b4c + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + 8000a22: 2110 movs r1, #16 + 8000a24: 187b adds r3, r7, r1 + 8000a26: 2200 movs r2, #0 + 8000a28: 601a str r2, [r3, #0] + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + 8000a2a: 187b adds r3, r7, r1 + 8000a2c: 2200 movs r2, #0 + 8000a2e: 605a str r2, [r3, #4] + if (HAL_TIMEx_MasterConfigSynchronization(&htim22, &sMasterConfig) != HAL_OK) + 8000a30: 187a adds r2, r7, r1 + 8000a32: 4b1c ldr r3, [pc, #112] ; (8000aa4 ) + 8000a34: 0011 movs r1, r2 + 8000a36: 0018 movs r0, r3 + 8000a38: f002 ff64 bl 8003904 + 8000a3c: 1e03 subs r3, r0, #0 + 8000a3e: d001 beq.n 8000a44 + { + Error_Handler(); + 8000a40: f000 f884 bl 8000b4c + } + sConfigOC.OCMode = TIM_OCMODE_PWM1; + 8000a44: 003b movs r3, r7 + 8000a46: 2260 movs r2, #96 ; 0x60 + 8000a48: 601a str r2, [r3, #0] + sConfigOC.Pulse = led_pwm_pulse_g; + 8000a4a: 4b19 ldr r3, [pc, #100] ; (8000ab0 ) + 8000a4c: 881b ldrh r3, [r3, #0] + 8000a4e: 001a movs r2, r3 + 8000a50: 003b movs r3, r7 + 8000a52: 605a str r2, [r3, #4] + sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; + 8000a54: 003b movs r3, r7 + 8000a56: 2200 movs r2, #0 + 8000a58: 609a str r2, [r3, #8] + sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; + 8000a5a: 003b movs r3, r7 + 8000a5c: 2200 movs r2, #0 + 8000a5e: 60da str r2, [r3, #12] + if (HAL_TIM_PWM_ConfigChannel(&htim22, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) + 8000a60: 0039 movs r1, r7 + 8000a62: 4b10 ldr r3, [pc, #64] ; (8000aa4 ) + 8000a64: 2200 movs r2, #0 + 8000a66: 0018 movs r0, r3 + 8000a68: f002 fbc0 bl 80031ec + 8000a6c: 1e03 subs r3, r0, #0 + 8000a6e: d001 beq.n 8000a74 + { + Error_Handler(); + 8000a70: f000 f86c bl 8000b4c + } + sConfigOC.Pulse = led_pwm_pulse_r; + 8000a74: 4b0f ldr r3, [pc, #60] ; (8000ab4 ) + 8000a76: 881b ldrh r3, [r3, #0] + 8000a78: 001a movs r2, r3 + 8000a7a: 003b movs r3, r7 + 8000a7c: 605a str r2, [r3, #4] + if (HAL_TIM_PWM_ConfigChannel(&htim22, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) + 8000a7e: 0039 movs r1, r7 + 8000a80: 4b08 ldr r3, [pc, #32] ; (8000aa4 ) + 8000a82: 2204 movs r2, #4 + 8000a84: 0018 movs r0, r3 + 8000a86: f002 fbb1 bl 80031ec + 8000a8a: 1e03 subs r3, r0, #0 + 8000a8c: d001 beq.n 8000a92 + { + Error_Handler(); + 8000a8e: f000 f85d bl 8000b4c + } + /* USER CODE BEGIN TIM22_Init 2 */ + + /* USER CODE END TIM22_Init 2 */ + HAL_TIM_MspPostInit(&htim22); + 8000a92: 4b04 ldr r3, [pc, #16] ; (8000aa4 ) + 8000a94: 0018 movs r0, r3 + 8000a96: f000 f9e9 bl 8000e6c + +} + 8000a9a: 46c0 nop ; (mov r8, r8) + 8000a9c: 46bd mov sp, r7 + 8000a9e: b00a add sp, #40 ; 0x28 + 8000aa0: bd80 pop {r7, pc} + 8000aa2: 46c0 nop ; (mov r8, r8) + 8000aa4: 20000090 .word 0x20000090 + 8000aa8: 40011400 .word 0x40011400 + 8000aac: 000004af .word 0x000004af + 8000ab0: 2000002a .word 0x2000002a + 8000ab4: 20000028 .word 0x20000028 + +08000ab8 : + * @brief USART2 Initialization Function + * @param None + * @retval None + */ +static void MX_USART2_UART_Init(void) +{ + 8000ab8: b580 push {r7, lr} + 8000aba: af00 add r7, sp, #0 + /* USER CODE END USART2_Init 0 */ + + /* USER CODE BEGIN USART2_Init 1 */ + + /* USER CODE END USART2_Init 1 */ + huart2.Instance = USART2; + 8000abc: 4b16 ldr r3, [pc, #88] ; (8000b18 ) + 8000abe: 4a17 ldr r2, [pc, #92] ; (8000b1c ) + 8000ac0: 601a str r2, [r3, #0] + huart2.Init.BaudRate = 115200; + 8000ac2: 4b15 ldr r3, [pc, #84] ; (8000b18 ) + 8000ac4: 22e1 movs r2, #225 ; 0xe1 + 8000ac6: 0252 lsls r2, r2, #9 + 8000ac8: 605a str r2, [r3, #4] + huart2.Init.WordLength = UART_WORDLENGTH_9B; + 8000aca: 4b13 ldr r3, [pc, #76] ; (8000b18 ) + 8000acc: 2280 movs r2, #128 ; 0x80 + 8000ace: 0152 lsls r2, r2, #5 + 8000ad0: 609a str r2, [r3, #8] + huart2.Init.StopBits = UART_STOPBITS_1; + 8000ad2: 4b11 ldr r3, [pc, #68] ; (8000b18 ) + 8000ad4: 2200 movs r2, #0 + 8000ad6: 60da str r2, [r3, #12] + huart2.Init.Parity = UART_PARITY_EVEN; + 8000ad8: 4b0f ldr r3, [pc, #60] ; (8000b18 ) + 8000ada: 2280 movs r2, #128 ; 0x80 + 8000adc: 00d2 lsls r2, r2, #3 + 8000ade: 611a str r2, [r3, #16] + huart2.Init.Mode = UART_MODE_TX_RX; + 8000ae0: 4b0d ldr r3, [pc, #52] ; (8000b18 ) + 8000ae2: 220c movs r2, #12 + 8000ae4: 615a str r2, [r3, #20] + huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE; + 8000ae6: 4b0c ldr r3, [pc, #48] ; (8000b18 ) + 8000ae8: 2200 movs r2, #0 + 8000aea: 619a str r2, [r3, #24] + huart2.Init.OverSampling = UART_OVERSAMPLING_16; + 8000aec: 4b0a ldr r3, [pc, #40] ; (8000b18 ) + 8000aee: 2200 movs r2, #0 + 8000af0: 61da str r2, [r3, #28] + huart2.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; + 8000af2: 4b09 ldr r3, [pc, #36] ; (8000b18 ) + 8000af4: 2200 movs r2, #0 + 8000af6: 621a str r2, [r3, #32] + huart2.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; + 8000af8: 4b07 ldr r3, [pc, #28] ; (8000b18 ) + 8000afa: 2200 movs r2, #0 + 8000afc: 625a str r2, [r3, #36] ; 0x24 + if (HAL_RS485Ex_Init(&huart2, UART_DE_POLARITY_HIGH, 0, 0) != HAL_OK) + 8000afe: 4806 ldr r0, [pc, #24] ; (8000b18 ) + 8000b00: 2300 movs r3, #0 + 8000b02: 2200 movs r2, #0 + 8000b04: 2100 movs r1, #0 + 8000b06: f003 fb77 bl 80041f8 + 8000b0a: 1e03 subs r3, r0, #0 + 8000b0c: d001 beq.n 8000b12 + { + Error_Handler(); + 8000b0e: f000 f81d bl 8000b4c + } + /* USER CODE BEGIN USART2_Init 2 */ + + /* USER CODE END USART2_Init 2 */ + +} + 8000b12: 46c0 nop ; (mov r8, r8) + 8000b14: 46bd mov sp, r7 + 8000b16: bd80 pop {r7, pc} + 8000b18: 20000140 .word 0x20000140 + 8000b1c: 40004400 .word 0x40004400 + +08000b20 : + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + 8000b20: b580 push {r7, lr} + 8000b22: b082 sub sp, #8 + 8000b24: af00 add r7, sp, #0 + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOA_CLK_ENABLE(); + 8000b26: 4b08 ldr r3, [pc, #32] ; (8000b48 ) + 8000b28: 6ada ldr r2, [r3, #44] ; 0x2c + 8000b2a: 4b07 ldr r3, [pc, #28] ; (8000b48 ) + 8000b2c: 2101 movs r1, #1 + 8000b2e: 430a orrs r2, r1 + 8000b30: 62da str r2, [r3, #44] ; 0x2c + 8000b32: 4b05 ldr r3, [pc, #20] ; (8000b48 ) + 8000b34: 6adb ldr r3, [r3, #44] ; 0x2c + 8000b36: 2201 movs r2, #1 + 8000b38: 4013 ands r3, r2 + 8000b3a: 607b str r3, [r7, #4] + 8000b3c: 687b ldr r3, [r7, #4] + +} + 8000b3e: 46c0 nop ; (mov r8, r8) + 8000b40: 46bd mov sp, r7 + 8000b42: b002 add sp, #8 + 8000b44: bd80 pop {r7, pc} + 8000b46: 46c0 nop ; (mov r8, r8) + 8000b48: 40021000 .word 0x40021000 + +08000b4c : +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + 8000b4c: b580 push {r7, lr} + 8000b4e: 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"); + 8000b50: b672 cpsid i +} + 8000b52: 46c0 nop ; (mov r8, r8) + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + 8000b54: e7fe b.n 8000b54 + +08000b56 : + +#include "scd4x.h" +#include "main.h" /* for uart_disable_interrupts() */ + +int8_t scd4x_send_cmd(scd4x_cmd_t cmd) +{ + 8000b56: b580 push {r7, lr} + 8000b58: b08c sub sp, #48 ; 0x30 + 8000b5a: af00 add r7, sp, #0 + 8000b5c: 0002 movs r2, r0 + 8000b5e: 1dbb adds r3, r7, #6 + 8000b60: 801a strh r2, [r3, #0] + uint8_t buffer[32]; + int result; + + // start measurement + buffer[0] = cmd >> 8; + 8000b62: 1dbb adds r3, r7, #6 + 8000b64: 881b ldrh r3, [r3, #0] + 8000b66: 0a1b lsrs r3, r3, #8 + 8000b68: b29b uxth r3, r3 + 8000b6a: b2da uxtb r2, r3 + 8000b6c: 210c movs r1, #12 + 8000b6e: 187b adds r3, r7, r1 + 8000b70: 701a strb r2, [r3, #0] + buffer[1] = cmd & 0x00ff; + 8000b72: 1dbb adds r3, r7, #6 + 8000b74: 881b ldrh r3, [r3, #0] + 8000b76: b2da uxtb r2, r3 + 8000b78: 187b adds r3, r7, r1 + 8000b7a: 705a strb r2, [r3, #1] + result = i2c_transmit(SCD4X_I2C_ADDRESS<<1, buffer, 2); + 8000b7c: 187b adds r3, r7, r1 + 8000b7e: 2202 movs r2, #2 + 8000b80: 0019 movs r1, r3 + 8000b82: 20c4 movs r0, #196 ; 0xc4 + 8000b84: f7ff fca8 bl 80004d8 + 8000b88: 0003 movs r3, r0 + 8000b8a: 62fb str r3, [r7, #44] ; 0x2c + if (result != I2C_OK) { + 8000b8c: 6afb ldr r3, [r7, #44] ; 0x2c + 8000b8e: 2b00 cmp r3, #0 + 8000b90: d002 beq.n 8000b98 + return SCD4X_ERROR; + 8000b92: 2301 movs r3, #1 + 8000b94: 425b negs r3, r3 + 8000b96: e000 b.n 8000b9a + } + + return SCD4X_OK; + 8000b98: 2300 movs r3, #0 +} + 8000b9a: 0018 movs r0, r3 + 8000b9c: 46bd mov sp, r7 + 8000b9e: b00c add sp, #48 ; 0x30 + 8000ba0: bd80 pop {r7, pc} + ... + +08000ba4 : +{ + return SCD4X_OK; +} + +int8_t scd4x_start_periodic_measurement( void ) +{ + 8000ba4: b580 push {r7, lr} + 8000ba6: af00 add r7, sp, #0 + return scd4x_send_cmd(SCD4X_START_PERIODIC_MEASUREMENT); + 8000ba8: 4b03 ldr r3, [pc, #12] ; (8000bb8 ) + 8000baa: 0018 movs r0, r3 + 8000bac: f7ff ffd3 bl 8000b56 + 8000bb0: 0003 movs r3, r0 +} + 8000bb2: 0018 movs r0, r3 + 8000bb4: 46bd mov sp, r7 + 8000bb6: bd80 pop {r7, pc} + 8000bb8: 000021b1 .word 0x000021b1 + +08000bbc : +{ + return scd4x_send_cmd(SCD4X_PERFORM_FACTORY_RESET); +} + +int8_t scd4x_read_measurement(uint16_t * co2, int16_t *temperature, uint16_t *relative_humidity) +{ + 8000bbc: b5b0 push {r4, r5, r7, lr} + 8000bbe: b094 sub sp, #80 ; 0x50 + 8000bc0: af02 add r7, sp, #8 + 8000bc2: 60f8 str r0, [r7, #12] + 8000bc4: 60b9 str r1, [r7, #8] + 8000bc6: 607a str r2, [r7, #4] +// result = i2c_receive(SCD4X_I2C_ADDRESS<<1, buffer, 9); +// if (result != I2C_OK) +// { +// return SCD4X_ERROR; +// } + result = i2c_transmit_receive(SCD4X_I2C_ADDRESS<<1, SCD4X_READ_MEASUREMENT, 2, buffer, 9); + 8000bc8: 2543 movs r5, #67 ; 0x43 + 8000bca: 197c adds r4, r7, r5 + 8000bcc: 2310 movs r3, #16 + 8000bce: 18fb adds r3, r7, r3 + 8000bd0: 492b ldr r1, [pc, #172] ; (8000c80 ) + 8000bd2: 2209 movs r2, #9 + 8000bd4: 9200 str r2, [sp, #0] + 8000bd6: 2202 movs r2, #2 + 8000bd8: 20c4 movs r0, #196 ; 0xc4 + 8000bda: f7ff fcc9 bl 8000570 + 8000bde: 0003 movs r3, r0 + 8000be0: 7023 strb r3, [r4, #0] + if (result != I2C_OK) + 8000be2: 197b adds r3, r7, r5 + 8000be4: 781b ldrb r3, [r3, #0] + 8000be6: b25b sxtb r3, r3 + 8000be8: 2b00 cmp r3, #0 + 8000bea: d002 beq.n 8000bf2 + { + return SCD4X_ERROR; + 8000bec: 2301 movs r3, #1 + 8000bee: 425b negs r3, r3 + 8000bf0: e041 b.n 8000c76 + } +// uart_enable_interrupts(); + + // TODO checksum + // Convert to T and RH; taken directly from pseudocode in SHT4x datasheet, page 3 + uint32_t co2_ticks = (buffer[0] << 8) + buffer[1]; + 8000bf2: 2110 movs r1, #16 + 8000bf4: 187b adds r3, r7, r1 + 8000bf6: 781b ldrb r3, [r3, #0] + 8000bf8: 021b lsls r3, r3, #8 + 8000bfa: 187a adds r2, r7, r1 + 8000bfc: 7852 ldrb r2, [r2, #1] + 8000bfe: 189b adds r3, r3, r2 + 8000c00: 63fb str r3, [r7, #60] ; 0x3c + uint32_t t_ticks = (buffer[3] << 8) + buffer[4]; + 8000c02: 187b adds r3, r7, r1 + 8000c04: 78db ldrb r3, [r3, #3] + 8000c06: 021b lsls r3, r3, #8 + 8000c08: 187a adds r2, r7, r1 + 8000c0a: 7912 ldrb r2, [r2, #4] + 8000c0c: 189b adds r3, r3, r2 + 8000c0e: 63bb str r3, [r7, #56] ; 0x38 + uint32_t rh_ticks = (buffer[6] << 8) + buffer[7]; + 8000c10: 000a movs r2, r1 + 8000c12: 18bb adds r3, r7, r2 + 8000c14: 799b ldrb r3, [r3, #6] + 8000c16: 021b lsls r3, r3, #8 + 8000c18: 18ba adds r2, r7, r2 + 8000c1a: 79d2 ldrb r2, [r2, #7] + 8000c1c: 189b adds r3, r3, r2 + 8000c1e: 637b str r3, [r7, #52] ; 0x34 + int t_degC = -450 + 10 * 175 * t_ticks / 65535; + 8000c20: 6bbb ldr r3, [r7, #56] ; 0x38 + 8000c22: 4a18 ldr r2, [pc, #96] ; (8000c84 ) + 8000c24: 4353 muls r3, r2 + 8000c26: 4918 ldr r1, [pc, #96] ; (8000c88 ) + 8000c28: 0018 movs r0, r3 + 8000c2a: f7ff fa6d bl 8000108 <__udivsi3> + 8000c2e: 0003 movs r3, r0 + 8000c30: 3bc3 subs r3, #195 ; 0xc3 + 8000c32: 3bff subs r3, #255 ; 0xff + 8000c34: 633b str r3, [r7, #48] ; 0x30 + int rh_pRH = 100 * rh_ticks / 65535; + 8000c36: 6b7b ldr r3, [r7, #52] ; 0x34 + 8000c38: 2264 movs r2, #100 ; 0x64 + 8000c3a: 4353 muls r3, r2 + 8000c3c: 4912 ldr r1, [pc, #72] ; (8000c88 ) + 8000c3e: 0018 movs r0, r3 + 8000c40: f7ff fa62 bl 8000108 <__udivsi3> + 8000c44: 0003 movs r3, r0 + 8000c46: 647b str r3, [r7, #68] ; 0x44 + if (rh_pRH > 100) { + 8000c48: 6c7b ldr r3, [r7, #68] ; 0x44 + 8000c4a: 2b64 cmp r3, #100 ; 0x64 + 8000c4c: dd01 ble.n 8000c52 + rh_pRH = 100; + 8000c4e: 2364 movs r3, #100 ; 0x64 + 8000c50: 647b str r3, [r7, #68] ; 0x44 + } + if (rh_pRH < 0) { + 8000c52: 6c7b ldr r3, [r7, #68] ; 0x44 + 8000c54: 2b00 cmp r3, #0 + 8000c56: da01 bge.n 8000c5c + rh_pRH = 0; + 8000c58: 2300 movs r3, #0 + 8000c5a: 647b str r3, [r7, #68] ; 0x44 + } + *co2 = co2_ticks; + 8000c5c: 6bfb ldr r3, [r7, #60] ; 0x3c + 8000c5e: b29a uxth r2, r3 + 8000c60: 68fb ldr r3, [r7, #12] + 8000c62: 801a strh r2, [r3, #0] + *temperature = t_degC; + 8000c64: 6b3b ldr r3, [r7, #48] ; 0x30 + 8000c66: b21a sxth r2, r3 + 8000c68: 68bb ldr r3, [r7, #8] + 8000c6a: 801a strh r2, [r3, #0] + *relative_humidity = rh_pRH; + 8000c6c: 6c7b ldr r3, [r7, #68] ; 0x44 + 8000c6e: b29a uxth r2, r3 + 8000c70: 687b ldr r3, [r7, #4] + 8000c72: 801a strh r2, [r3, #0] + + return SCD4X_OK; + 8000c74: 2300 movs r3, #0 +} + 8000c76: 0018 movs r0, r3 + 8000c78: 46bd mov sp, r7 + 8000c7a: b012 add sp, #72 ; 0x48 + 8000c7c: bdb0 pop {r4, r5, r7, pc} + 8000c7e: 46c0 nop ; (mov r8, r8) + 8000c80: 0000ec05 .word 0x0000ec05 + 8000c84: 000006d6 .word 0x000006d6 + 8000c88: 0000ffff .word 0x0000ffff + +08000c8c : +{ + return SHT4X_OK; +} + +int8_t sht4x_measure(int16_t *temperature, uint16_t *relative_humidity) +{ + 8000c8c: b590 push {r4, r7, lr} + 8000c8e: b091 sub sp, #68 ; 0x44 + 8000c90: af00 add r7, sp, #0 + 8000c92: 6078 str r0, [r7, #4] + 8000c94: 6039 str r1, [r7, #0] + uint8_t buffer[32]; + int result; + + // start measurement + buffer[0] = SHT4X_START_MEAS_HIGH_PRECISION; + 8000c96: 240c movs r4, #12 + 8000c98: 193b adds r3, r7, r4 + 8000c9a: 22fd movs r2, #253 ; 0xfd + 8000c9c: 701a strb r2, [r3, #0] + result = i2c_transmit(SHT4X_I2C_ADDRESS<<1, buffer, 1); + 8000c9e: 193b adds r3, r7, r4 + 8000ca0: 2201 movs r2, #1 + 8000ca2: 0019 movs r1, r3 + 8000ca4: 2088 movs r0, #136 ; 0x88 + 8000ca6: f7ff fc17 bl 80004d8 + 8000caa: 0003 movs r3, r0 + 8000cac: 63bb str r3, [r7, #56] ; 0x38 + }*/ + /*uart_disable_interrupts(); + LL_mDelay(10); // 10 ms should be enough + uart_enable_interrupts(); + */ + HAL_Delay(10); + 8000cae: 200a movs r0, #10 + 8000cb0: f000 fa3c bl 800112c + // read out + result = i2c_receive(SHT4X_I2C_ADDRESS<<1, buffer, 6); + 8000cb4: 193b adds r3, r7, r4 + 8000cb6: 2206 movs r2, #6 + 8000cb8: 0019 movs r1, r3 + 8000cba: 2088 movs r0, #136 ; 0x88 + 8000cbc: f7ff fc32 bl 8000524 + 8000cc0: 0003 movs r3, r0 + 8000cc2: 63bb str r3, [r7, #56] ; 0x38 + if (result != I2C_OK) { + 8000cc4: 6bbb ldr r3, [r7, #56] ; 0x38 + 8000cc6: 2b00 cmp r3, #0 + 8000cc8: d002 beq.n 8000cd0 + return SHT4X_ERROR; + 8000cca: 2301 movs r3, #1 + 8000ccc: 425b negs r3, r3 + 8000cce: e03a b.n 8000d46 + } + // TODO checksum + // Convert to T and RH; taken directly from pseudocode in SHT4x datasheet, page 3 + uint32_t t_ticks = (buffer[0] << 8) + buffer[1]; + 8000cd0: 210c movs r1, #12 + 8000cd2: 187b adds r3, r7, r1 + 8000cd4: 781b ldrb r3, [r3, #0] + 8000cd6: 021b lsls r3, r3, #8 + 8000cd8: 187a adds r2, r7, r1 + 8000cda: 7852 ldrb r2, [r2, #1] + 8000cdc: 189b adds r3, r3, r2 + 8000cde: 637b str r3, [r7, #52] ; 0x34 + uint32_t rh_ticks = (buffer[3] << 8) + buffer[4]; + 8000ce0: 000a movs r2, r1 + 8000ce2: 18bb adds r3, r7, r2 + 8000ce4: 78db ldrb r3, [r3, #3] + 8000ce6: 021b lsls r3, r3, #8 + 8000ce8: 18ba adds r2, r7, r2 + 8000cea: 7912 ldrb r2, [r2, #4] + 8000cec: 189b adds r3, r3, r2 + 8000cee: 633b str r3, [r7, #48] ; 0x30 + int t_degC = -450 + 10 * 175 * t_ticks / 65535; /* temperature * 10 */ + 8000cf0: 6b7b ldr r3, [r7, #52] ; 0x34 + 8000cf2: 4a17 ldr r2, [pc, #92] ; (8000d50 ) + 8000cf4: 4353 muls r3, r2 + 8000cf6: 4917 ldr r1, [pc, #92] ; (8000d54 ) + 8000cf8: 0018 movs r0, r3 + 8000cfa: f7ff fa05 bl 8000108 <__udivsi3> + 8000cfe: 0003 movs r3, r0 + 8000d00: 3bc3 subs r3, #195 ; 0xc3 + 8000d02: 3bff subs r3, #255 ; 0xff + 8000d04: 62fb str r3, [r7, #44] ; 0x2c + int rh_pRH = -6 + 125 * rh_ticks / 65535; + 8000d06: 6b3a ldr r2, [r7, #48] ; 0x30 + 8000d08: 0013 movs r3, r2 + 8000d0a: 015b lsls r3, r3, #5 + 8000d0c: 1a9b subs r3, r3, r2 + 8000d0e: 009b lsls r3, r3, #2 + 8000d10: 189b adds r3, r3, r2 + 8000d12: 4910 ldr r1, [pc, #64] ; (8000d54 ) + 8000d14: 0018 movs r0, r3 + 8000d16: f7ff f9f7 bl 8000108 <__udivsi3> + 8000d1a: 0003 movs r3, r0 + 8000d1c: 3b06 subs r3, #6 + 8000d1e: 63fb str r3, [r7, #60] ; 0x3c + if (rh_pRH > 100) { + 8000d20: 6bfb ldr r3, [r7, #60] ; 0x3c + 8000d22: 2b64 cmp r3, #100 ; 0x64 + 8000d24: dd01 ble.n 8000d2a + rh_pRH = 100; + 8000d26: 2364 movs r3, #100 ; 0x64 + 8000d28: 63fb str r3, [r7, #60] ; 0x3c + } + if (rh_pRH < 0) { + 8000d2a: 6bfb ldr r3, [r7, #60] ; 0x3c + 8000d2c: 2b00 cmp r3, #0 + 8000d2e: da01 bge.n 8000d34 + rh_pRH = 0; + 8000d30: 2300 movs r3, #0 + 8000d32: 63fb str r3, [r7, #60] ; 0x3c + } + *temperature = t_degC; + 8000d34: 6afb ldr r3, [r7, #44] ; 0x2c + 8000d36: b21a sxth r2, r3 + 8000d38: 687b ldr r3, [r7, #4] + 8000d3a: 801a strh r2, [r3, #0] + *relative_humidity = rh_pRH; + 8000d3c: 6bfb ldr r3, [r7, #60] ; 0x3c + 8000d3e: b29a uxth r2, r3 + 8000d40: 683b ldr r3, [r7, #0] + 8000d42: 801a strh r2, [r3, #0] + + return SHT4X_OK; + 8000d44: 2300 movs r3, #0 +} + 8000d46: 0018 movs r0, r3 + 8000d48: 46bd mov sp, r7 + 8000d4a: b011 add sp, #68 ; 0x44 + 8000d4c: bd90 pop {r4, r7, pc} + 8000d4e: 46c0 nop ; (mov r8, r8) + 8000d50: 000006d6 .word 0x000006d6 + 8000d54: 0000ffff .word 0x0000ffff + +08000d58 : +void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); + /** + * Initializes the Global MSP. + */ +void HAL_MspInit(void) +{ + 8000d58: b580 push {r7, lr} + 8000d5a: af00 add r7, sp, #0 + /* USER CODE BEGIN MspInit 0 */ + + /* USER CODE END MspInit 0 */ + + __HAL_RCC_SYSCFG_CLK_ENABLE(); + 8000d5c: 4b07 ldr r3, [pc, #28] ; (8000d7c ) + 8000d5e: 6b5a ldr r2, [r3, #52] ; 0x34 + 8000d60: 4b06 ldr r3, [pc, #24] ; (8000d7c ) + 8000d62: 2101 movs r1, #1 + 8000d64: 430a orrs r2, r1 + 8000d66: 635a str r2, [r3, #52] ; 0x34 + __HAL_RCC_PWR_CLK_ENABLE(); + 8000d68: 4b04 ldr r3, [pc, #16] ; (8000d7c ) + 8000d6a: 6b9a ldr r2, [r3, #56] ; 0x38 + 8000d6c: 4b03 ldr r3, [pc, #12] ; (8000d7c ) + 8000d6e: 2180 movs r1, #128 ; 0x80 + 8000d70: 0549 lsls r1, r1, #21 + 8000d72: 430a orrs r2, r1 + 8000d74: 639a str r2, [r3, #56] ; 0x38 + /* System interrupt init*/ + + /* USER CODE BEGIN MspInit 1 */ + + /* USER CODE END MspInit 1 */ +} + 8000d76: 46c0 nop ; (mov r8, r8) + 8000d78: 46bd mov sp, r7 + 8000d7a: bd80 pop {r7, pc} + 8000d7c: 40021000 .word 0x40021000 + +08000d80 : +* This function configures the hardware resources used in this example +* @param hi2c: I2C handle pointer +* @retval None +*/ +void HAL_I2C_MspInit(I2C_HandleTypeDef* hi2c) +{ + 8000d80: b590 push {r4, r7, lr} + 8000d82: b089 sub sp, #36 ; 0x24 + 8000d84: af00 add r7, sp, #0 + 8000d86: 6078 str r0, [r7, #4] + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 8000d88: 240c movs r4, #12 + 8000d8a: 193b adds r3, r7, r4 + 8000d8c: 0018 movs r0, r3 + 8000d8e: 2314 movs r3, #20 + 8000d90: 001a movs r2, r3 + 8000d92: 2100 movs r1, #0 + 8000d94: f003 fac4 bl 8004320 + if(hi2c->Instance==I2C1) + 8000d98: 687b ldr r3, [r7, #4] + 8000d9a: 681b ldr r3, [r3, #0] + 8000d9c: 4a18 ldr r2, [pc, #96] ; (8000e00 ) + 8000d9e: 4293 cmp r3, r2 + 8000da0: d12a bne.n 8000df8 + { + /* USER CODE BEGIN I2C1_MspInit 0 */ + + /* USER CODE END I2C1_MspInit 0 */ + + __HAL_RCC_GPIOA_CLK_ENABLE(); + 8000da2: 4b18 ldr r3, [pc, #96] ; (8000e04 ) + 8000da4: 6ada ldr r2, [r3, #44] ; 0x2c + 8000da6: 4b17 ldr r3, [pc, #92] ; (8000e04 ) + 8000da8: 2101 movs r1, #1 + 8000daa: 430a orrs r2, r1 + 8000dac: 62da str r2, [r3, #44] ; 0x2c + 8000dae: 4b15 ldr r3, [pc, #84] ; (8000e04 ) + 8000db0: 6adb ldr r3, [r3, #44] ; 0x2c + 8000db2: 2201 movs r2, #1 + 8000db4: 4013 ands r3, r2 + 8000db6: 60bb str r3, [r7, #8] + 8000db8: 68bb ldr r3, [r7, #8] + /**I2C1 GPIO Configuration + PA9 ------> I2C1_SCL + PA10 ------> I2C1_SDA + */ + GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10; + 8000dba: 193b adds r3, r7, r4 + 8000dbc: 22c0 movs r2, #192 ; 0xc0 + 8000dbe: 00d2 lsls r2, r2, #3 + 8000dc0: 601a str r2, [r3, #0] + GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; + 8000dc2: 0021 movs r1, r4 + 8000dc4: 187b adds r3, r7, r1 + 8000dc6: 2212 movs r2, #18 + 8000dc8: 605a str r2, [r3, #4] + GPIO_InitStruct.Pull = GPIO_PULLUP; + 8000dca: 187b adds r3, r7, r1 + 8000dcc: 2201 movs r2, #1 + 8000dce: 609a str r2, [r3, #8] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + 8000dd0: 187b adds r3, r7, r1 + 8000dd2: 2203 movs r2, #3 + 8000dd4: 60da str r2, [r3, #12] + GPIO_InitStruct.Alternate = GPIO_AF1_I2C1; + 8000dd6: 187b adds r3, r7, r1 + 8000dd8: 2201 movs r2, #1 + 8000dda: 611a str r2, [r3, #16] + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 8000ddc: 187a adds r2, r7, r1 + 8000dde: 23a0 movs r3, #160 ; 0xa0 + 8000de0: 05db lsls r3, r3, #23 + 8000de2: 0011 movs r1, r2 + 8000de4: 0018 movs r0, r3 + 8000de6: f000 fa79 bl 80012dc + + /* Peripheral clock enable */ + __HAL_RCC_I2C1_CLK_ENABLE(); + 8000dea: 4b06 ldr r3, [pc, #24] ; (8000e04 ) + 8000dec: 6b9a ldr r2, [r3, #56] ; 0x38 + 8000dee: 4b05 ldr r3, [pc, #20] ; (8000e04 ) + 8000df0: 2180 movs r1, #128 ; 0x80 + 8000df2: 0389 lsls r1, r1, #14 + 8000df4: 430a orrs r2, r1 + 8000df6: 639a str r2, [r3, #56] ; 0x38 + /* USER CODE BEGIN I2C1_MspInit 1 */ + + /* USER CODE END I2C1_MspInit 1 */ + } + +} + 8000df8: 46c0 nop ; (mov r8, r8) + 8000dfa: 46bd mov sp, r7 + 8000dfc: b009 add sp, #36 ; 0x24 + 8000dfe: bd90 pop {r4, r7, pc} + 8000e00: 40005400 .word 0x40005400 + 8000e04: 40021000 .word 0x40021000 + +08000e08 : +* 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) +{ + 8000e08: b580 push {r7, lr} + 8000e0a: b082 sub sp, #8 + 8000e0c: af00 add r7, sp, #0 + 8000e0e: 6078 str r0, [r7, #4] + if(htim_base->Instance==TIM2) + 8000e10: 687b ldr r3, [r7, #4] + 8000e12: 681a ldr r2, [r3, #0] + 8000e14: 2380 movs r3, #128 ; 0x80 + 8000e16: 05db lsls r3, r3, #23 + 8000e18: 429a cmp r2, r3 + 8000e1a: d106 bne.n 8000e2a + { + /* USER CODE BEGIN TIM2_MspInit 0 */ + + /* USER CODE END TIM2_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_TIM2_CLK_ENABLE(); + 8000e1c: 4b10 ldr r3, [pc, #64] ; (8000e60 ) + 8000e1e: 6b9a ldr r2, [r3, #56] ; 0x38 + 8000e20: 4b0f ldr r3, [pc, #60] ; (8000e60 ) + 8000e22: 2101 movs r1, #1 + 8000e24: 430a orrs r2, r1 + 8000e26: 639a str r2, [r3, #56] ; 0x38 + /* USER CODE BEGIN TIM22_MspInit 1 */ + + /* USER CODE END TIM22_MspInit 1 */ + } + +} + 8000e28: e016 b.n 8000e58 + else if(htim_base->Instance==TIM21) + 8000e2a: 687b ldr r3, [r7, #4] + 8000e2c: 681b ldr r3, [r3, #0] + 8000e2e: 4a0d ldr r2, [pc, #52] ; (8000e64 ) + 8000e30: 4293 cmp r3, r2 + 8000e32: d106 bne.n 8000e42 + __HAL_RCC_TIM21_CLK_ENABLE(); + 8000e34: 4b0a ldr r3, [pc, #40] ; (8000e60 ) + 8000e36: 6b5a ldr r2, [r3, #52] ; 0x34 + 8000e38: 4b09 ldr r3, [pc, #36] ; (8000e60 ) + 8000e3a: 2104 movs r1, #4 + 8000e3c: 430a orrs r2, r1 + 8000e3e: 635a str r2, [r3, #52] ; 0x34 +} + 8000e40: e00a b.n 8000e58 + else if(htim_base->Instance==TIM22) + 8000e42: 687b ldr r3, [r7, #4] + 8000e44: 681b ldr r3, [r3, #0] + 8000e46: 4a08 ldr r2, [pc, #32] ; (8000e68 ) + 8000e48: 4293 cmp r3, r2 + 8000e4a: d105 bne.n 8000e58 + __HAL_RCC_TIM22_CLK_ENABLE(); + 8000e4c: 4b04 ldr r3, [pc, #16] ; (8000e60 ) + 8000e4e: 6b5a ldr r2, [r3, #52] ; 0x34 + 8000e50: 4b03 ldr r3, [pc, #12] ; (8000e60 ) + 8000e52: 2120 movs r1, #32 + 8000e54: 430a orrs r2, r1 + 8000e56: 635a str r2, [r3, #52] ; 0x34 +} + 8000e58: 46c0 nop ; (mov r8, r8) + 8000e5a: 46bd mov sp, r7 + 8000e5c: b002 add sp, #8 + 8000e5e: bd80 pop {r7, pc} + 8000e60: 40021000 .word 0x40021000 + 8000e64: 40010800 .word 0x40010800 + 8000e68: 40011400 .word 0x40011400 + +08000e6c : + +void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim) +{ + 8000e6c: b590 push {r4, r7, lr} + 8000e6e: b08b sub sp, #44 ; 0x2c + 8000e70: af00 add r7, sp, #0 + 8000e72: 6078 str r0, [r7, #4] + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 8000e74: 2414 movs r4, #20 + 8000e76: 193b adds r3, r7, r4 + 8000e78: 0018 movs r0, r3 + 8000e7a: 2314 movs r3, #20 + 8000e7c: 001a movs r2, r3 + 8000e7e: 2100 movs r1, #0 + 8000e80: f003 fa4e bl 8004320 + if(htim->Instance==TIM2) + 8000e84: 687b ldr r3, [r7, #4] + 8000e86: 681a ldr r2, [r3, #0] + 8000e88: 2380 movs r3, #128 ; 0x80 + 8000e8a: 05db lsls r3, r3, #23 + 8000e8c: 429a cmp r2, r3 + 8000e8e: d123 bne.n 8000ed8 + { + /* USER CODE BEGIN TIM2_MspPostInit 0 */ + + /* USER CODE END TIM2_MspPostInit 0 */ + __HAL_RCC_GPIOA_CLK_ENABLE(); + 8000e90: 4b27 ldr r3, [pc, #156] ; (8000f30 ) + 8000e92: 6ada ldr r2, [r3, #44] ; 0x2c + 8000e94: 4b26 ldr r3, [pc, #152] ; (8000f30 ) + 8000e96: 2101 movs r1, #1 + 8000e98: 430a orrs r2, r1 + 8000e9a: 62da str r2, [r3, #44] ; 0x2c + 8000e9c: 4b24 ldr r3, [pc, #144] ; (8000f30 ) + 8000e9e: 6adb ldr r3, [r3, #44] ; 0x2c + 8000ea0: 2201 movs r2, #1 + 8000ea2: 4013 ands r3, r2 + 8000ea4: 613b str r3, [r7, #16] + 8000ea6: 693b ldr r3, [r7, #16] + /**TIM2 GPIO Configuration + PA5 ------> TIM2_CH1 + */ + GPIO_InitStruct.Pin = GPIO_PIN_5; + 8000ea8: 0021 movs r1, r4 + 8000eaa: 187b adds r3, r7, r1 + 8000eac: 2220 movs r2, #32 + 8000eae: 601a str r2, [r3, #0] + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 8000eb0: 187b adds r3, r7, r1 + 8000eb2: 2202 movs r2, #2 + 8000eb4: 605a str r2, [r3, #4] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 8000eb6: 187b adds r3, r7, r1 + 8000eb8: 2200 movs r2, #0 + 8000eba: 609a str r2, [r3, #8] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 8000ebc: 187b adds r3, r7, r1 + 8000ebe: 2200 movs r2, #0 + 8000ec0: 60da str r2, [r3, #12] + GPIO_InitStruct.Alternate = GPIO_AF5_TIM2; + 8000ec2: 187b adds r3, r7, r1 + 8000ec4: 2205 movs r2, #5 + 8000ec6: 611a str r2, [r3, #16] + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 8000ec8: 187a adds r2, r7, r1 + 8000eca: 23a0 movs r3, #160 ; 0xa0 + 8000ecc: 05db lsls r3, r3, #23 + 8000ece: 0011 movs r1, r2 + 8000ed0: 0018 movs r0, r3 + 8000ed2: f000 fa03 bl 80012dc + /* USER CODE BEGIN TIM22_MspPostInit 1 */ + + /* USER CODE END TIM22_MspPostInit 1 */ + } + +} + 8000ed6: e027 b.n 8000f28 + else if(htim->Instance==TIM22) + 8000ed8: 687b ldr r3, [r7, #4] + 8000eda: 681b ldr r3, [r3, #0] + 8000edc: 4a15 ldr r2, [pc, #84] ; (8000f34 ) + 8000ede: 4293 cmp r3, r2 + 8000ee0: d122 bne.n 8000f28 + __HAL_RCC_GPIOA_CLK_ENABLE(); + 8000ee2: 4b13 ldr r3, [pc, #76] ; (8000f30 ) + 8000ee4: 6ada ldr r2, [r3, #44] ; 0x2c + 8000ee6: 4b12 ldr r3, [pc, #72] ; (8000f30 ) + 8000ee8: 2101 movs r1, #1 + 8000eea: 430a orrs r2, r1 + 8000eec: 62da str r2, [r3, #44] ; 0x2c + 8000eee: 4b10 ldr r3, [pc, #64] ; (8000f30 ) + 8000ef0: 6adb ldr r3, [r3, #44] ; 0x2c + 8000ef2: 2201 movs r2, #1 + 8000ef4: 4013 ands r3, r2 + 8000ef6: 60fb str r3, [r7, #12] + 8000ef8: 68fb ldr r3, [r7, #12] + GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7; + 8000efa: 2114 movs r1, #20 + 8000efc: 187b adds r3, r7, r1 + 8000efe: 22c0 movs r2, #192 ; 0xc0 + 8000f00: 601a str r2, [r3, #0] + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 8000f02: 187b adds r3, r7, r1 + 8000f04: 2202 movs r2, #2 + 8000f06: 605a str r2, [r3, #4] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 8000f08: 187b adds r3, r7, r1 + 8000f0a: 2200 movs r2, #0 + 8000f0c: 609a str r2, [r3, #8] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 8000f0e: 187b adds r3, r7, r1 + 8000f10: 2200 movs r2, #0 + 8000f12: 60da str r2, [r3, #12] + GPIO_InitStruct.Alternate = GPIO_AF5_TIM22; + 8000f14: 187b adds r3, r7, r1 + 8000f16: 2205 movs r2, #5 + 8000f18: 611a str r2, [r3, #16] + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 8000f1a: 187a adds r2, r7, r1 + 8000f1c: 23a0 movs r3, #160 ; 0xa0 + 8000f1e: 05db lsls r3, r3, #23 + 8000f20: 0011 movs r1, r2 + 8000f22: 0018 movs r0, r3 + 8000f24: f000 f9da bl 80012dc +} + 8000f28: 46c0 nop ; (mov r8, r8) + 8000f2a: 46bd mov sp, r7 + 8000f2c: b00b add sp, #44 ; 0x2c + 8000f2e: bd90 pop {r4, r7, pc} + 8000f30: 40021000 .word 0x40021000 + 8000f34: 40011400 .word 0x40011400 + +08000f38 : +* This function configures the hardware resources used in this example +* @param huart: UART handle pointer +* @retval None +*/ +void HAL_UART_MspInit(UART_HandleTypeDef* huart) +{ + 8000f38: b590 push {r4, r7, lr} + 8000f3a: b089 sub sp, #36 ; 0x24 + 8000f3c: af00 add r7, sp, #0 + 8000f3e: 6078 str r0, [r7, #4] + GPIO_InitTypeDef GPIO_InitStruct = {0}; + 8000f40: 240c movs r4, #12 + 8000f42: 193b adds r3, r7, r4 + 8000f44: 0018 movs r0, r3 + 8000f46: 2314 movs r3, #20 + 8000f48: 001a movs r2, r3 + 8000f4a: 2100 movs r1, #0 + 8000f4c: f003 f9e8 bl 8004320 + if(huart->Instance==USART2) + 8000f50: 687b ldr r3, [r7, #4] + 8000f52: 681b ldr r3, [r3, #0] + 8000f54: 4a18 ldr r2, [pc, #96] ; (8000fb8 ) + 8000f56: 4293 cmp r3, r2 + 8000f58: d129 bne.n 8000fae + { + /* USER CODE BEGIN USART2_MspInit 0 */ + + /* USER CODE END USART2_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_USART2_CLK_ENABLE(); + 8000f5a: 4b18 ldr r3, [pc, #96] ; (8000fbc ) + 8000f5c: 6b9a ldr r2, [r3, #56] ; 0x38 + 8000f5e: 4b17 ldr r3, [pc, #92] ; (8000fbc ) + 8000f60: 2180 movs r1, #128 ; 0x80 + 8000f62: 0289 lsls r1, r1, #10 + 8000f64: 430a orrs r2, r1 + 8000f66: 639a str r2, [r3, #56] ; 0x38 + + __HAL_RCC_GPIOA_CLK_ENABLE(); + 8000f68: 4b14 ldr r3, [pc, #80] ; (8000fbc ) + 8000f6a: 6ada ldr r2, [r3, #44] ; 0x2c + 8000f6c: 4b13 ldr r3, [pc, #76] ; (8000fbc ) + 8000f6e: 2101 movs r1, #1 + 8000f70: 430a orrs r2, r1 + 8000f72: 62da str r2, [r3, #44] ; 0x2c + 8000f74: 4b11 ldr r3, [pc, #68] ; (8000fbc ) + 8000f76: 6adb ldr r3, [r3, #44] ; 0x2c + 8000f78: 2201 movs r2, #1 + 8000f7a: 4013 ands r3, r2 + 8000f7c: 60bb str r3, [r7, #8] + 8000f7e: 68bb ldr r3, [r7, #8] + /**USART2 GPIO Configuration + PA1 ------> USART2_DE + PA2 ------> USART2_TX + PA3 ------> USART2_RX + */ + GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3; + 8000f80: 0021 movs r1, r4 + 8000f82: 187b adds r3, r7, r1 + 8000f84: 220e movs r2, #14 + 8000f86: 601a str r2, [r3, #0] + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 8000f88: 187b adds r3, r7, r1 + 8000f8a: 2202 movs r2, #2 + 8000f8c: 605a str r2, [r3, #4] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 8000f8e: 187b adds r3, r7, r1 + 8000f90: 2200 movs r2, #0 + 8000f92: 609a str r2, [r3, #8] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + 8000f94: 187b adds r3, r7, r1 + 8000f96: 2203 movs r2, #3 + 8000f98: 60da str r2, [r3, #12] + GPIO_InitStruct.Alternate = GPIO_AF4_USART2; + 8000f9a: 187b adds r3, r7, r1 + 8000f9c: 2204 movs r2, #4 + 8000f9e: 611a str r2, [r3, #16] + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 8000fa0: 187a adds r2, r7, r1 + 8000fa2: 23a0 movs r3, #160 ; 0xa0 + 8000fa4: 05db lsls r3, r3, #23 + 8000fa6: 0011 movs r1, r2 + 8000fa8: 0018 movs r0, r3 + 8000faa: f000 f997 bl 80012dc + /* USER CODE BEGIN USART2_MspInit 1 */ + + /* USER CODE END USART2_MspInit 1 */ + } + +} + 8000fae: 46c0 nop ; (mov r8, r8) + 8000fb0: 46bd mov sp, r7 + 8000fb2: b009 add sp, #36 ; 0x24 + 8000fb4: bd90 pop {r4, r7, pc} + 8000fb6: 46c0 nop ; (mov r8, r8) + 8000fb8: 40004400 .word 0x40004400 + 8000fbc: 40021000 .word 0x40021000 + +08000fc0 : +/******************************************************************************/ +/** + * @brief This function handles Non maskable Interrupt. + */ +void NMI_Handler(void) +{ + 8000fc0: b580 push {r7, lr} + 8000fc2: 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) + 8000fc4: e7fe b.n 8000fc4 + +08000fc6 : + +/** + * @brief This function handles Hard fault interrupt. + */ +void HardFault_Handler(void) +{ + 8000fc6: b580 push {r7, lr} + 8000fc8: af00 add r7, sp, #0 + /* USER CODE BEGIN HardFault_IRQn 0 */ + + /* USER CODE END HardFault_IRQn 0 */ + while (1) + 8000fca: e7fe b.n 8000fca + +08000fcc : + +/** + * @brief This function handles System service call via SWI instruction. + */ +void SVC_Handler(void) +{ + 8000fcc: b580 push {r7, lr} + 8000fce: af00 add r7, sp, #0 + + /* USER CODE END SVC_IRQn 0 */ + /* USER CODE BEGIN SVC_IRQn 1 */ + + /* USER CODE END SVC_IRQn 1 */ +} + 8000fd0: 46c0 nop ; (mov r8, r8) + 8000fd2: 46bd mov sp, r7 + 8000fd4: bd80 pop {r7, pc} + +08000fd6 : + +/** + * @brief This function handles Pendable request for system service. + */ +void PendSV_Handler(void) +{ + 8000fd6: b580 push {r7, lr} + 8000fd8: af00 add r7, sp, #0 + + /* USER CODE END PendSV_IRQn 0 */ + /* USER CODE BEGIN PendSV_IRQn 1 */ + + /* USER CODE END PendSV_IRQn 1 */ +} + 8000fda: 46c0 nop ; (mov r8, r8) + 8000fdc: 46bd mov sp, r7 + 8000fde: bd80 pop {r7, pc} + +08000fe0 : + +/** + * @brief This function handles System tick timer. + */ +void SysTick_Handler(void) +{ + 8000fe0: b580 push {r7, lr} + 8000fe2: af00 add r7, sp, #0 + /* USER CODE BEGIN SysTick_IRQn 0 */ + + /* USER CODE END SysTick_IRQn 0 */ + HAL_IncTick(); + 8000fe4: f000 f886 bl 80010f4 + /* USER CODE BEGIN SysTick_IRQn 1 */ + + /* USER CODE END SysTick_IRQn 1 */ +} + 8000fe8: 46c0 nop ; (mov r8, r8) + 8000fea: 46bd mov sp, r7 + 8000fec: bd80 pop {r7, pc} + +08000fee : + * @brief Setup the microcontroller system. + * @param None + * @retval None + */ +void SystemInit (void) +{ + 8000fee: b580 push {r7, lr} + 8000ff0: af00 add r7, sp, #0 + /* Configure the Vector Table location add offset address ------------------*/ +#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 */ +} + 8000ff2: 46c0 nop ; (mov r8, r8) + 8000ff4: 46bd mov sp, r7 + 8000ff6: bd80 pop {r7, pc} + +08000ff8 : + + .section .text.Reset_Handler + .weak Reset_Handler + .type Reset_Handler, %function +Reset_Handler: + ldr r0, =_estack + 8000ff8: 480d ldr r0, [pc, #52] ; (8001030 ) + mov sp, r0 /* set stack pointer */ + 8000ffa: 4685 mov sp, r0 + +/* Copy the data segment initializers from flash to SRAM */ + ldr r0, =_sdata + 8000ffc: 480d ldr r0, [pc, #52] ; (8001034 ) + ldr r1, =_edata + 8000ffe: 490e ldr r1, [pc, #56] ; (8001038 ) + ldr r2, =_sidata + 8001000: 4a0e ldr r2, [pc, #56] ; (800103c ) + movs r3, #0 + 8001002: 2300 movs r3, #0 + b LoopCopyDataInit + 8001004: e002 b.n 800100c + +08001006 : + +CopyDataInit: + ldr r4, [r2, r3] + 8001006: 58d4 ldr r4, [r2, r3] + str r4, [r0, r3] + 8001008: 50c4 str r4, [r0, r3] + adds r3, r3, #4 + 800100a: 3304 adds r3, #4 + +0800100c : + +LoopCopyDataInit: + adds r4, r0, r3 + 800100c: 18c4 adds r4, r0, r3 + cmp r4, r1 + 800100e: 428c cmp r4, r1 + bcc CopyDataInit + 8001010: d3f9 bcc.n 8001006 + +/* Zero fill the bss segment. */ + ldr r2, =_sbss + 8001012: 4a0b ldr r2, [pc, #44] ; (8001040 ) + ldr r4, =_ebss + 8001014: 4c0b ldr r4, [pc, #44] ; (8001044 ) + movs r3, #0 + 8001016: 2300 movs r3, #0 + b LoopFillZerobss + 8001018: e001 b.n 800101e + +0800101a : + +FillZerobss: + str r3, [r2] + 800101a: 6013 str r3, [r2, #0] + adds r2, r2, #4 + 800101c: 3204 adds r2, #4 + +0800101e : + +LoopFillZerobss: + cmp r2, r4 + 800101e: 42a2 cmp r2, r4 + bcc FillZerobss + 8001020: d3fb bcc.n 800101a + +/* Call the clock system intitialization function.*/ + bl SystemInit + 8001022: f7ff ffe4 bl 8000fee +/* Call static constructors */ + bl __libc_init_array + 8001026: f003 f957 bl 80042d8 <__libc_init_array> +/* Call the application's entry point.*/ + bl main + 800102a: f7ff fad7 bl 80005dc
+ +0800102e : + +LoopForever: + b LoopForever + 800102e: e7fe b.n 800102e + ldr r0, =_estack + 8001030: 20002000 .word 0x20002000 + ldr r0, =_sdata + 8001034: 20000000 .word 0x20000000 + ldr r1, =_edata + 8001038: 2000000c .word 0x2000000c + ldr r2, =_sidata + 800103c: 080043c4 .word 0x080043c4 + ldr r2, =_sbss + 8001040: 2000000c .word 0x2000000c + ldr r4, =_ebss + 8001044: 20000210 .word 0x20000210 + +08001048 : + * @retval : None +*/ + .section .text.Default_Handler,"ax",%progbits +Default_Handler: +Infinite_Loop: + b Infinite_Loop + 8001048: e7fe b.n 8001048 + ... + +0800104c : + * 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) +{ + 800104c: b580 push {r7, lr} + 800104e: b082 sub sp, #8 + 8001050: af00 add r7, sp, #0 + HAL_StatusTypeDef status = HAL_OK; + 8001052: 1dfb adds r3, r7, #7 + 8001054: 2200 movs r2, #0 + 8001056: 701a strb r2, [r3, #0] +#if (BUFFER_CACHE_DISABLE != 0) + __HAL_FLASH_BUFFER_CACHE_DISABLE(); +#endif /* BUFFER_CACHE_DISABLE */ + +#if (PREREAD_ENABLE != 0) + __HAL_FLASH_PREREAD_BUFFER_ENABLE(); + 8001058: 4b0b ldr r3, [pc, #44] ; (8001088 ) + 800105a: 681a ldr r2, [r3, #0] + 800105c: 4b0a ldr r3, [pc, #40] ; (8001088 ) + 800105e: 2140 movs r1, #64 ; 0x40 + 8001060: 430a orrs r2, r1 + 8001062: 601a str r2, [r3, #0] +#if (PREFETCH_ENABLE != 0) + __HAL_FLASH_PREFETCH_BUFFER_ENABLE(); +#endif /* PREFETCH_ENABLE */ + + /* Use SysTick as time base source and configure 1ms tick (default clock after Reset is MSI) */ + if (HAL_InitTick(TICK_INT_PRIORITY) != HAL_OK) + 8001064: 2003 movs r0, #3 + 8001066: f000 f811 bl 800108c + 800106a: 1e03 subs r3, r0, #0 + 800106c: d003 beq.n 8001076 + { + status = HAL_ERROR; + 800106e: 1dfb adds r3, r7, #7 + 8001070: 2201 movs r2, #1 + 8001072: 701a strb r2, [r3, #0] + 8001074: e001 b.n 800107a + } + else + { + /* Init the low level hardware */ + HAL_MspInit(); + 8001076: f7ff fe6f bl 8000d58 + } + + /* Return function status */ + return status; + 800107a: 1dfb adds r3, r7, #7 + 800107c: 781b ldrb r3, [r3, #0] +} + 800107e: 0018 movs r0, r3 + 8001080: 46bd mov sp, r7 + 8001082: b002 add sp, #8 + 8001084: bd80 pop {r7, pc} + 8001086: 46c0 nop ; (mov r8, r8) + 8001088: 40022000 .word 0x40022000 + +0800108c : + * implementation in user file. + * @param TickPriority Tick interrupt priority. + * @retval HAL status + */ +__weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) +{ + 800108c: b590 push {r4, r7, lr} + 800108e: b083 sub sp, #12 + 8001090: af00 add r7, sp, #0 + 8001092: 6078 str r0, [r7, #4] + /* Configure the SysTick to have interrupt in 1ms time basis*/ + if (HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq)) > 0U) + 8001094: 4b14 ldr r3, [pc, #80] ; (80010e8 ) + 8001096: 681c ldr r4, [r3, #0] + 8001098: 4b14 ldr r3, [pc, #80] ; (80010ec ) + 800109a: 781b ldrb r3, [r3, #0] + 800109c: 0019 movs r1, r3 + 800109e: 23fa movs r3, #250 ; 0xfa + 80010a0: 0098 lsls r0, r3, #2 + 80010a2: f7ff f831 bl 8000108 <__udivsi3> + 80010a6: 0003 movs r3, r0 + 80010a8: 0019 movs r1, r3 + 80010aa: 0020 movs r0, r4 + 80010ac: f7ff f82c bl 8000108 <__udivsi3> + 80010b0: 0003 movs r3, r0 + 80010b2: 0018 movs r0, r3 + 80010b4: f000 f905 bl 80012c2 + 80010b8: 1e03 subs r3, r0, #0 + 80010ba: d001 beq.n 80010c0 + { + return HAL_ERROR; + 80010bc: 2301 movs r3, #1 + 80010be: e00f b.n 80010e0 + } + + /* Configure the SysTick IRQ priority */ + if (TickPriority < (1UL << __NVIC_PRIO_BITS)) + 80010c0: 687b ldr r3, [r7, #4] + 80010c2: 2b03 cmp r3, #3 + 80010c4: d80b bhi.n 80010de + { + HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U); + 80010c6: 6879 ldr r1, [r7, #4] + 80010c8: 2301 movs r3, #1 + 80010ca: 425b negs r3, r3 + 80010cc: 2200 movs r2, #0 + 80010ce: 0018 movs r0, r3 + 80010d0: f000 f8e2 bl 8001298 + uwTickPrio = TickPriority; + 80010d4: 4b06 ldr r3, [pc, #24] ; (80010f0 ) + 80010d6: 687a ldr r2, [r7, #4] + 80010d8: 601a str r2, [r3, #0] + { + return HAL_ERROR; + } + + /* Return function status */ + return HAL_OK; + 80010da: 2300 movs r3, #0 + 80010dc: e000 b.n 80010e0 + return HAL_ERROR; + 80010de: 2301 movs r3, #1 +} + 80010e0: 0018 movs r0, r3 + 80010e2: 46bd mov sp, r7 + 80010e4: b003 add sp, #12 + 80010e6: bd90 pop {r4, r7, pc} + 80010e8: 20000000 .word 0x20000000 + 80010ec: 20000008 .word 0x20000008 + 80010f0: 20000004 .word 0x20000004 + +080010f4 : + * @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) +{ + 80010f4: b580 push {r7, lr} + 80010f6: af00 add r7, sp, #0 + uwTick += uwTickFreq; + 80010f8: 4b05 ldr r3, [pc, #20] ; (8001110 ) + 80010fa: 781b ldrb r3, [r3, #0] + 80010fc: 001a movs r2, r3 + 80010fe: 4b05 ldr r3, [pc, #20] ; (8001114 ) + 8001100: 681b ldr r3, [r3, #0] + 8001102: 18d2 adds r2, r2, r3 + 8001104: 4b03 ldr r3, [pc, #12] ; (8001114 ) + 8001106: 601a str r2, [r3, #0] +} + 8001108: 46c0 nop ; (mov r8, r8) + 800110a: 46bd mov sp, r7 + 800110c: bd80 pop {r7, pc} + 800110e: 46c0 nop ; (mov r8, r8) + 8001110: 20000008 .word 0x20000008 + 8001114: 2000020c .word 0x2000020c + +08001118 : + * @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) +{ + 8001118: b580 push {r7, lr} + 800111a: af00 add r7, sp, #0 + return uwTick; + 800111c: 4b02 ldr r3, [pc, #8] ; (8001128 ) + 800111e: 681b ldr r3, [r3, #0] +} + 8001120: 0018 movs r0, r3 + 8001122: 46bd mov sp, r7 + 8001124: bd80 pop {r7, pc} + 8001126: 46c0 nop ; (mov r8, r8) + 8001128: 2000020c .word 0x2000020c + +0800112c : + * implementations in user file. + * @param Delay specifies the delay time length, in milliseconds. + * @retval None + */ +__weak void HAL_Delay(uint32_t Delay) +{ + 800112c: b580 push {r7, lr} + 800112e: b084 sub sp, #16 + 8001130: af00 add r7, sp, #0 + 8001132: 6078 str r0, [r7, #4] + uint32_t tickstart = HAL_GetTick(); + 8001134: f7ff fff0 bl 8001118 + 8001138: 0003 movs r3, r0 + 800113a: 60bb str r3, [r7, #8] + uint32_t wait = Delay; + 800113c: 687b ldr r3, [r7, #4] + 800113e: 60fb str r3, [r7, #12] + + /* Add a freq to guarantee minimum wait */ + if (wait < HAL_MAX_DELAY) + 8001140: 68fb ldr r3, [r7, #12] + 8001142: 3301 adds r3, #1 + 8001144: d005 beq.n 8001152 + { + wait += (uint32_t)(uwTickFreq); + 8001146: 4b0a ldr r3, [pc, #40] ; (8001170 ) + 8001148: 781b ldrb r3, [r3, #0] + 800114a: 001a movs r2, r3 + 800114c: 68fb ldr r3, [r7, #12] + 800114e: 189b adds r3, r3, r2 + 8001150: 60fb str r3, [r7, #12] + } + + while((HAL_GetTick() - tickstart) < wait) + 8001152: 46c0 nop ; (mov r8, r8) + 8001154: f7ff ffe0 bl 8001118 + 8001158: 0002 movs r2, r0 + 800115a: 68bb ldr r3, [r7, #8] + 800115c: 1ad3 subs r3, r2, r3 + 800115e: 68fa ldr r2, [r7, #12] + 8001160: 429a cmp r2, r3 + 8001162: d8f7 bhi.n 8001154 + { + } +} + 8001164: 46c0 nop ; (mov r8, r8) + 8001166: 46c0 nop ; (mov r8, r8) + 8001168: 46bd mov sp, r7 + 800116a: b004 add sp, #16 + 800116c: bd80 pop {r7, pc} + 800116e: 46c0 nop ; (mov r8, r8) + 8001170: 20000008 .word 0x20000008 + +08001174 <__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) +{ + 8001174: b590 push {r4, r7, lr} + 8001176: b083 sub sp, #12 + 8001178: af00 add r7, sp, #0 + 800117a: 0002 movs r2, r0 + 800117c: 6039 str r1, [r7, #0] + 800117e: 1dfb adds r3, r7, #7 + 8001180: 701a strb r2, [r3, #0] + if ((int32_t)(IRQn) >= 0) + 8001182: 1dfb adds r3, r7, #7 + 8001184: 781b ldrb r3, [r3, #0] + 8001186: 2b7f cmp r3, #127 ; 0x7f + 8001188: d828 bhi.n 80011dc <__NVIC_SetPriority+0x68> + { + NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + 800118a: 4a2f ldr r2, [pc, #188] ; (8001248 <__NVIC_SetPriority+0xd4>) + 800118c: 1dfb adds r3, r7, #7 + 800118e: 781b ldrb r3, [r3, #0] + 8001190: b25b sxtb r3, r3 + 8001192: 089b lsrs r3, r3, #2 + 8001194: 33c0 adds r3, #192 ; 0xc0 + 8001196: 009b lsls r3, r3, #2 + 8001198: 589b ldr r3, [r3, r2] + 800119a: 1dfa adds r2, r7, #7 + 800119c: 7812 ldrb r2, [r2, #0] + 800119e: 0011 movs r1, r2 + 80011a0: 2203 movs r2, #3 + 80011a2: 400a ands r2, r1 + 80011a4: 00d2 lsls r2, r2, #3 + 80011a6: 21ff movs r1, #255 ; 0xff + 80011a8: 4091 lsls r1, r2 + 80011aa: 000a movs r2, r1 + 80011ac: 43d2 mvns r2, r2 + 80011ae: 401a ands r2, r3 + 80011b0: 0011 movs r1, r2 + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + 80011b2: 683b ldr r3, [r7, #0] + 80011b4: 019b lsls r3, r3, #6 + 80011b6: 22ff movs r2, #255 ; 0xff + 80011b8: 401a ands r2, r3 + 80011ba: 1dfb adds r3, r7, #7 + 80011bc: 781b ldrb r3, [r3, #0] + 80011be: 0018 movs r0, r3 + 80011c0: 2303 movs r3, #3 + 80011c2: 4003 ands r3, r0 + 80011c4: 00db lsls r3, r3, #3 + 80011c6: 409a lsls r2, r3 + NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + 80011c8: 481f ldr r0, [pc, #124] ; (8001248 <__NVIC_SetPriority+0xd4>) + 80011ca: 1dfb adds r3, r7, #7 + 80011cc: 781b ldrb r3, [r3, #0] + 80011ce: b25b sxtb r3, r3 + 80011d0: 089b lsrs r3, r3, #2 + 80011d2: 430a orrs r2, r1 + 80011d4: 33c0 adds r3, #192 ; 0xc0 + 80011d6: 009b lsls r3, r3, #2 + 80011d8: 501a str r2, [r3, r0] + 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))); + } +} + 80011da: e031 b.n 8001240 <__NVIC_SetPriority+0xcc> + SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + 80011dc: 4a1b ldr r2, [pc, #108] ; (800124c <__NVIC_SetPriority+0xd8>) + 80011de: 1dfb adds r3, r7, #7 + 80011e0: 781b ldrb r3, [r3, #0] + 80011e2: 0019 movs r1, r3 + 80011e4: 230f movs r3, #15 + 80011e6: 400b ands r3, r1 + 80011e8: 3b08 subs r3, #8 + 80011ea: 089b lsrs r3, r3, #2 + 80011ec: 3306 adds r3, #6 + 80011ee: 009b lsls r3, r3, #2 + 80011f0: 18d3 adds r3, r2, r3 + 80011f2: 3304 adds r3, #4 + 80011f4: 681b ldr r3, [r3, #0] + 80011f6: 1dfa adds r2, r7, #7 + 80011f8: 7812 ldrb r2, [r2, #0] + 80011fa: 0011 movs r1, r2 + 80011fc: 2203 movs r2, #3 + 80011fe: 400a ands r2, r1 + 8001200: 00d2 lsls r2, r2, #3 + 8001202: 21ff movs r1, #255 ; 0xff + 8001204: 4091 lsls r1, r2 + 8001206: 000a movs r2, r1 + 8001208: 43d2 mvns r2, r2 + 800120a: 401a ands r2, r3 + 800120c: 0011 movs r1, r2 + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + 800120e: 683b ldr r3, [r7, #0] + 8001210: 019b lsls r3, r3, #6 + 8001212: 22ff movs r2, #255 ; 0xff + 8001214: 401a ands r2, r3 + 8001216: 1dfb adds r3, r7, #7 + 8001218: 781b ldrb r3, [r3, #0] + 800121a: 0018 movs r0, r3 + 800121c: 2303 movs r3, #3 + 800121e: 4003 ands r3, r0 + 8001220: 00db lsls r3, r3, #3 + 8001222: 409a lsls r2, r3 + SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + 8001224: 4809 ldr r0, [pc, #36] ; (800124c <__NVIC_SetPriority+0xd8>) + 8001226: 1dfb adds r3, r7, #7 + 8001228: 781b ldrb r3, [r3, #0] + 800122a: 001c movs r4, r3 + 800122c: 230f movs r3, #15 + 800122e: 4023 ands r3, r4 + 8001230: 3b08 subs r3, #8 + 8001232: 089b lsrs r3, r3, #2 + 8001234: 430a orrs r2, r1 + 8001236: 3306 adds r3, #6 + 8001238: 009b lsls r3, r3, #2 + 800123a: 18c3 adds r3, r0, r3 + 800123c: 3304 adds r3, #4 + 800123e: 601a str r2, [r3, #0] +} + 8001240: 46c0 nop ; (mov r8, r8) + 8001242: 46bd mov sp, r7 + 8001244: b003 add sp, #12 + 8001246: bd90 pop {r4, r7, pc} + 8001248: e000e100 .word 0xe000e100 + 800124c: e000ed00 .word 0xe000ed00 + +08001250 : + \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) +{ + 8001250: b580 push {r7, lr} + 8001252: b082 sub sp, #8 + 8001254: af00 add r7, sp, #0 + 8001256: 6078 str r0, [r7, #4] + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + 8001258: 687b ldr r3, [r7, #4] + 800125a: 1e5a subs r2, r3, #1 + 800125c: 2380 movs r3, #128 ; 0x80 + 800125e: 045b lsls r3, r3, #17 + 8001260: 429a cmp r2, r3 + 8001262: d301 bcc.n 8001268 + { + return (1UL); /* Reload value impossible */ + 8001264: 2301 movs r3, #1 + 8001266: e010 b.n 800128a + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + 8001268: 4b0a ldr r3, [pc, #40] ; (8001294 ) + 800126a: 687a ldr r2, [r7, #4] + 800126c: 3a01 subs r2, #1 + 800126e: 605a str r2, [r3, #4] + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + 8001270: 2301 movs r3, #1 + 8001272: 425b negs r3, r3 + 8001274: 2103 movs r1, #3 + 8001276: 0018 movs r0, r3 + 8001278: f7ff ff7c bl 8001174 <__NVIC_SetPriority> + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + 800127c: 4b05 ldr r3, [pc, #20] ; (8001294 ) + 800127e: 2200 movs r2, #0 + 8001280: 609a str r2, [r3, #8] + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + 8001282: 4b04 ldr r3, [pc, #16] ; (8001294 ) + 8001284: 2207 movs r2, #7 + 8001286: 601a str r2, [r3, #0] + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ + 8001288: 2300 movs r3, #0 +} + 800128a: 0018 movs r0, r3 + 800128c: 46bd mov sp, r7 + 800128e: b002 add sp, #8 + 8001290: bd80 pop {r7, pc} + 8001292: 46c0 nop ; (mov r8, r8) + 8001294: e000e010 .word 0xe000e010 + +08001298 : + * with stm32l0xx devices, this parameter is a dummy value and it is ignored, because + * no subpriority supported in Cortex M0+ based products. + * @retval None + */ +void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority) +{ + 8001298: b580 push {r7, lr} + 800129a: b084 sub sp, #16 + 800129c: af00 add r7, sp, #0 + 800129e: 60b9 str r1, [r7, #8] + 80012a0: 607a str r2, [r7, #4] + 80012a2: 210f movs r1, #15 + 80012a4: 187b adds r3, r7, r1 + 80012a6: 1c02 adds r2, r0, #0 + 80012a8: 701a strb r2, [r3, #0] + /* Check the parameters */ + assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority)); + NVIC_SetPriority(IRQn,PreemptPriority); + 80012aa: 68ba ldr r2, [r7, #8] + 80012ac: 187b adds r3, r7, r1 + 80012ae: 781b ldrb r3, [r3, #0] + 80012b0: b25b sxtb r3, r3 + 80012b2: 0011 movs r1, r2 + 80012b4: 0018 movs r0, r3 + 80012b6: f7ff ff5d bl 8001174 <__NVIC_SetPriority> +} + 80012ba: 46c0 nop ; (mov r8, r8) + 80012bc: 46bd mov sp, r7 + 80012be: b004 add sp, #16 + 80012c0: bd80 pop {r7, pc} + +080012c2 : + * @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) +{ + 80012c2: b580 push {r7, lr} + 80012c4: b082 sub sp, #8 + 80012c6: af00 add r7, sp, #0 + 80012c8: 6078 str r0, [r7, #4] + return SysTick_Config(TicksNumb); + 80012ca: 687b ldr r3, [r7, #4] + 80012cc: 0018 movs r0, r3 + 80012ce: f7ff ffbf bl 8001250 + 80012d2: 0003 movs r3, r0 +} + 80012d4: 0018 movs r0, r3 + 80012d6: 46bd mov sp, r7 + 80012d8: b002 add sp, #8 + 80012da: bd80 pop {r7, pc} + +080012dc : + * @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) +{ + 80012dc: b580 push {r7, lr} + 80012de: b086 sub sp, #24 + 80012e0: af00 add r7, sp, #0 + 80012e2: 6078 str r0, [r7, #4] + 80012e4: 6039 str r1, [r7, #0] + uint32_t position = 0x00U; + 80012e6: 2300 movs r3, #0 + 80012e8: 617b str r3, [r7, #20] + uint32_t iocurrent = 0x00U; + 80012ea: 2300 movs r3, #0 + 80012ec: 60fb str r3, [r7, #12] + uint32_t temp = 0x00U; + 80012ee: 2300 movs r3, #0 + 80012f0: 613b str r3, [r7, #16] + /* Check the parameters */ + assert_param(IS_GPIO_MODE(GPIO_Init->Mode)); + assert_param(IS_GPIO_PIN_AVAILABLE(GPIOx, (GPIO_Init->Pin))); + + /* Configure the port pins */ + while (((GPIO_Init->Pin) >> position) != 0) + 80012f2: e149 b.n 8001588 + { + /* Get the IO position */ + iocurrent = (GPIO_Init->Pin) & (1U << position); + 80012f4: 683b ldr r3, [r7, #0] + 80012f6: 681b ldr r3, [r3, #0] + 80012f8: 2101 movs r1, #1 + 80012fa: 697a ldr r2, [r7, #20] + 80012fc: 4091 lsls r1, r2 + 80012fe: 000a movs r2, r1 + 8001300: 4013 ands r3, r2 + 8001302: 60fb str r3, [r7, #12] + + if (iocurrent) + 8001304: 68fb ldr r3, [r7, #12] + 8001306: 2b00 cmp r3, #0 + 8001308: d100 bne.n 800130c + 800130a: e13a b.n 8001582 + { + /*--------------------- GPIO Mode Configuration ------------------------*/ + /* In case of Output or Alternate function mode selection */ + if (((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || + 800130c: 683b ldr r3, [r7, #0] + 800130e: 685b ldr r3, [r3, #4] + 8001310: 2203 movs r2, #3 + 8001312: 4013 ands r3, r2 + 8001314: 2b01 cmp r3, #1 + 8001316: d005 beq.n 8001324 + ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF)) + 8001318: 683b ldr r3, [r7, #0] + 800131a: 685b ldr r3, [r3, #4] + 800131c: 2203 movs r2, #3 + 800131e: 4013 ands r3, r2 + if (((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || + 8001320: 2b02 cmp r3, #2 + 8001322: d130 bne.n 8001386 + { + /* Check the Speed parameter */ + assert_param(IS_GPIO_SPEED(GPIO_Init->Speed)); + /* Configure the IO Speed */ + temp = GPIOx->OSPEEDR; + 8001324: 687b ldr r3, [r7, #4] + 8001326: 689b ldr r3, [r3, #8] + 8001328: 613b str r3, [r7, #16] + temp &= ~(GPIO_OSPEEDER_OSPEED0 << (position * 2U)); + 800132a: 697b ldr r3, [r7, #20] + 800132c: 005b lsls r3, r3, #1 + 800132e: 2203 movs r2, #3 + 8001330: 409a lsls r2, r3 + 8001332: 0013 movs r3, r2 + 8001334: 43da mvns r2, r3 + 8001336: 693b ldr r3, [r7, #16] + 8001338: 4013 ands r3, r2 + 800133a: 613b str r3, [r7, #16] + temp |= (GPIO_Init->Speed << (position * 2U)); + 800133c: 683b ldr r3, [r7, #0] + 800133e: 68da ldr r2, [r3, #12] + 8001340: 697b ldr r3, [r7, #20] + 8001342: 005b lsls r3, r3, #1 + 8001344: 409a lsls r2, r3 + 8001346: 0013 movs r3, r2 + 8001348: 693a ldr r2, [r7, #16] + 800134a: 4313 orrs r3, r2 + 800134c: 613b str r3, [r7, #16] + GPIOx->OSPEEDR = temp; + 800134e: 687b ldr r3, [r7, #4] + 8001350: 693a ldr r2, [r7, #16] + 8001352: 609a str r2, [r3, #8] + + /* Configure the IO Output Type */ + temp = GPIOx->OTYPER; + 8001354: 687b ldr r3, [r7, #4] + 8001356: 685b ldr r3, [r3, #4] + 8001358: 613b str r3, [r7, #16] + temp &= ~(GPIO_OTYPER_OT_0 << position) ; + 800135a: 2201 movs r2, #1 + 800135c: 697b ldr r3, [r7, #20] + 800135e: 409a lsls r2, r3 + 8001360: 0013 movs r3, r2 + 8001362: 43da mvns r2, r3 + 8001364: 693b ldr r3, [r7, #16] + 8001366: 4013 ands r3, r2 + 8001368: 613b str r3, [r7, #16] + temp |= (((GPIO_Init->Mode & OUTPUT_TYPE) >> OUTPUT_TYPE_Pos) << position); + 800136a: 683b ldr r3, [r7, #0] + 800136c: 685b ldr r3, [r3, #4] + 800136e: 091b lsrs r3, r3, #4 + 8001370: 2201 movs r2, #1 + 8001372: 401a ands r2, r3 + 8001374: 697b ldr r3, [r7, #20] + 8001376: 409a lsls r2, r3 + 8001378: 0013 movs r3, r2 + 800137a: 693a ldr r2, [r7, #16] + 800137c: 4313 orrs r3, r2 + 800137e: 613b str r3, [r7, #16] + GPIOx->OTYPER = temp; + 8001380: 687b ldr r3, [r7, #4] + 8001382: 693a ldr r2, [r7, #16] + 8001384: 605a str r2, [r3, #4] + } + + if ((GPIO_Init->Mode & GPIO_MODE) != MODE_ANALOG) + 8001386: 683b ldr r3, [r7, #0] + 8001388: 685b ldr r3, [r3, #4] + 800138a: 2203 movs r2, #3 + 800138c: 4013 ands r3, r2 + 800138e: 2b03 cmp r3, #3 + 8001390: d017 beq.n 80013c2 + { + /* 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; + 8001392: 687b ldr r3, [r7, #4] + 8001394: 68db ldr r3, [r3, #12] + 8001396: 613b str r3, [r7, #16] + temp &= ~(GPIO_PUPDR_PUPD0 << (position * 2U)); + 8001398: 697b ldr r3, [r7, #20] + 800139a: 005b lsls r3, r3, #1 + 800139c: 2203 movs r2, #3 + 800139e: 409a lsls r2, r3 + 80013a0: 0013 movs r3, r2 + 80013a2: 43da mvns r2, r3 + 80013a4: 693b ldr r3, [r7, #16] + 80013a6: 4013 ands r3, r2 + 80013a8: 613b str r3, [r7, #16] + temp |= ((GPIO_Init->Pull) << (position * 2U)); + 80013aa: 683b ldr r3, [r7, #0] + 80013ac: 689a ldr r2, [r3, #8] + 80013ae: 697b ldr r3, [r7, #20] + 80013b0: 005b lsls r3, r3, #1 + 80013b2: 409a lsls r2, r3 + 80013b4: 0013 movs r3, r2 + 80013b6: 693a ldr r2, [r7, #16] + 80013b8: 4313 orrs r3, r2 + 80013ba: 613b str r3, [r7, #16] + GPIOx->PUPDR = temp; + 80013bc: 687b ldr r3, [r7, #4] + 80013be: 693a ldr r2, [r7, #16] + 80013c0: 60da str r2, [r3, #12] + } + + /* In case of Alternate function mode selection */ + if ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF) + 80013c2: 683b ldr r3, [r7, #0] + 80013c4: 685b ldr r3, [r3, #4] + 80013c6: 2203 movs r2, #3 + 80013c8: 4013 ands r3, r2 + 80013ca: 2b02 cmp r3, #2 + 80013cc: d123 bne.n 8001416 + /* 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 */ + temp = GPIOx->AFR[position >> 3U]; + 80013ce: 697b ldr r3, [r7, #20] + 80013d0: 08da lsrs r2, r3, #3 + 80013d2: 687b ldr r3, [r7, #4] + 80013d4: 3208 adds r2, #8 + 80013d6: 0092 lsls r2, r2, #2 + 80013d8: 58d3 ldr r3, [r2, r3] + 80013da: 613b str r3, [r7, #16] + temp &= ~(0xFUL << ((uint32_t)(position & 0x07UL) * 4U)); + 80013dc: 697b ldr r3, [r7, #20] + 80013de: 2207 movs r2, #7 + 80013e0: 4013 ands r3, r2 + 80013e2: 009b lsls r3, r3, #2 + 80013e4: 220f movs r2, #15 + 80013e6: 409a lsls r2, r3 + 80013e8: 0013 movs r3, r2 + 80013ea: 43da mvns r2, r3 + 80013ec: 693b ldr r3, [r7, #16] + 80013ee: 4013 ands r3, r2 + 80013f0: 613b str r3, [r7, #16] + temp |= ((uint32_t)(GPIO_Init->Alternate) << (((uint32_t)position & (uint32_t)0x07U) * 4U)); + 80013f2: 683b ldr r3, [r7, #0] + 80013f4: 691a ldr r2, [r3, #16] + 80013f6: 697b ldr r3, [r7, #20] + 80013f8: 2107 movs r1, #7 + 80013fa: 400b ands r3, r1 + 80013fc: 009b lsls r3, r3, #2 + 80013fe: 409a lsls r2, r3 + 8001400: 0013 movs r3, r2 + 8001402: 693a ldr r2, [r7, #16] + 8001404: 4313 orrs r3, r2 + 8001406: 613b str r3, [r7, #16] + GPIOx->AFR[position >> 3U] = temp; + 8001408: 697b ldr r3, [r7, #20] + 800140a: 08da lsrs r2, r3, #3 + 800140c: 687b ldr r3, [r7, #4] + 800140e: 3208 adds r2, #8 + 8001410: 0092 lsls r2, r2, #2 + 8001412: 6939 ldr r1, [r7, #16] + 8001414: 50d1 str r1, [r2, r3] + } + + /* Configure IO Direction mode (Input, Output, Alternate or Analog) */ + temp = GPIOx->MODER; + 8001416: 687b ldr r3, [r7, #4] + 8001418: 681b ldr r3, [r3, #0] + 800141a: 613b str r3, [r7, #16] + temp &= ~(GPIO_MODER_MODE0 << (position * 2U)); + 800141c: 697b ldr r3, [r7, #20] + 800141e: 005b lsls r3, r3, #1 + 8001420: 2203 movs r2, #3 + 8001422: 409a lsls r2, r3 + 8001424: 0013 movs r3, r2 + 8001426: 43da mvns r2, r3 + 8001428: 693b ldr r3, [r7, #16] + 800142a: 4013 ands r3, r2 + 800142c: 613b str r3, [r7, #16] + temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2U)); + 800142e: 683b ldr r3, [r7, #0] + 8001430: 685b ldr r3, [r3, #4] + 8001432: 2203 movs r2, #3 + 8001434: 401a ands r2, r3 + 8001436: 697b ldr r3, [r7, #20] + 8001438: 005b lsls r3, r3, #1 + 800143a: 409a lsls r2, r3 + 800143c: 0013 movs r3, r2 + 800143e: 693a ldr r2, [r7, #16] + 8001440: 4313 orrs r3, r2 + 8001442: 613b str r3, [r7, #16] + GPIOx->MODER = temp; + 8001444: 687b ldr r3, [r7, #4] + 8001446: 693a ldr r2, [r7, #16] + 8001448: 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) + 800144a: 683b ldr r3, [r7, #0] + 800144c: 685a ldr r2, [r3, #4] + 800144e: 23c0 movs r3, #192 ; 0xc0 + 8001450: 029b lsls r3, r3, #10 + 8001452: 4013 ands r3, r2 + 8001454: d100 bne.n 8001458 + 8001456: e094 b.n 8001582 + { + /* Enable SYSCFG Clock */ + __HAL_RCC_SYSCFG_CLK_ENABLE(); + 8001458: 4b51 ldr r3, [pc, #324] ; (80015a0 ) + 800145a: 6b5a ldr r2, [r3, #52] ; 0x34 + 800145c: 4b50 ldr r3, [pc, #320] ; (80015a0 ) + 800145e: 2101 movs r1, #1 + 8001460: 430a orrs r2, r1 + 8001462: 635a str r2, [r3, #52] ; 0x34 + + temp = SYSCFG->EXTICR[position >> 2U]; + 8001464: 4a4f ldr r2, [pc, #316] ; (80015a4 ) + 8001466: 697b ldr r3, [r7, #20] + 8001468: 089b lsrs r3, r3, #2 + 800146a: 3302 adds r3, #2 + 800146c: 009b lsls r3, r3, #2 + 800146e: 589b ldr r3, [r3, r2] + 8001470: 613b str r3, [r7, #16] + CLEAR_BIT(temp, (0x0FUL) << (4U * (position & 0x03U))); + 8001472: 697b ldr r3, [r7, #20] + 8001474: 2203 movs r2, #3 + 8001476: 4013 ands r3, r2 + 8001478: 009b lsls r3, r3, #2 + 800147a: 220f movs r2, #15 + 800147c: 409a lsls r2, r3 + 800147e: 0013 movs r3, r2 + 8001480: 43da mvns r2, r3 + 8001482: 693b ldr r3, [r7, #16] + 8001484: 4013 ands r3, r2 + 8001486: 613b str r3, [r7, #16] + SET_BIT(temp, (GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03U))); + 8001488: 687a ldr r2, [r7, #4] + 800148a: 23a0 movs r3, #160 ; 0xa0 + 800148c: 05db lsls r3, r3, #23 + 800148e: 429a cmp r2, r3 + 8001490: d013 beq.n 80014ba + 8001492: 687b ldr r3, [r7, #4] + 8001494: 4a44 ldr r2, [pc, #272] ; (80015a8 ) + 8001496: 4293 cmp r3, r2 + 8001498: d00d beq.n 80014b6 + 800149a: 687b ldr r3, [r7, #4] + 800149c: 4a43 ldr r2, [pc, #268] ; (80015ac ) + 800149e: 4293 cmp r3, r2 + 80014a0: d007 beq.n 80014b2 + 80014a2: 687b ldr r3, [r7, #4] + 80014a4: 4a42 ldr r2, [pc, #264] ; (80015b0 ) + 80014a6: 4293 cmp r3, r2 + 80014a8: d101 bne.n 80014ae + 80014aa: 2305 movs r3, #5 + 80014ac: e006 b.n 80014bc + 80014ae: 2306 movs r3, #6 + 80014b0: e004 b.n 80014bc + 80014b2: 2302 movs r3, #2 + 80014b4: e002 b.n 80014bc + 80014b6: 2301 movs r3, #1 + 80014b8: e000 b.n 80014bc + 80014ba: 2300 movs r3, #0 + 80014bc: 697a ldr r2, [r7, #20] + 80014be: 2103 movs r1, #3 + 80014c0: 400a ands r2, r1 + 80014c2: 0092 lsls r2, r2, #2 + 80014c4: 4093 lsls r3, r2 + 80014c6: 693a ldr r2, [r7, #16] + 80014c8: 4313 orrs r3, r2 + 80014ca: 613b str r3, [r7, #16] + SYSCFG->EXTICR[position >> 2U] = temp; + 80014cc: 4935 ldr r1, [pc, #212] ; (80015a4 ) + 80014ce: 697b ldr r3, [r7, #20] + 80014d0: 089b lsrs r3, r3, #2 + 80014d2: 3302 adds r3, #2 + 80014d4: 009b lsls r3, r3, #2 + 80014d6: 693a ldr r2, [r7, #16] + 80014d8: 505a str r2, [r3, r1] + + /* Clear EXTI line configuration */ + temp = EXTI->IMR; + 80014da: 4b36 ldr r3, [pc, #216] ; (80015b4 ) + 80014dc: 681b ldr r3, [r3, #0] + 80014de: 613b str r3, [r7, #16] + temp &= ~((uint32_t)iocurrent); + 80014e0: 68fb ldr r3, [r7, #12] + 80014e2: 43da mvns r2, r3 + 80014e4: 693b ldr r3, [r7, #16] + 80014e6: 4013 ands r3, r2 + 80014e8: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & EXTI_IT) != 0x00U) + 80014ea: 683b ldr r3, [r7, #0] + 80014ec: 685a ldr r2, [r3, #4] + 80014ee: 2380 movs r3, #128 ; 0x80 + 80014f0: 025b lsls r3, r3, #9 + 80014f2: 4013 ands r3, r2 + 80014f4: d003 beq.n 80014fe + { + temp |= iocurrent; + 80014f6: 693a ldr r2, [r7, #16] + 80014f8: 68fb ldr r3, [r7, #12] + 80014fa: 4313 orrs r3, r2 + 80014fc: 613b str r3, [r7, #16] + } + EXTI->IMR = temp; + 80014fe: 4b2d ldr r3, [pc, #180] ; (80015b4 ) + 8001500: 693a ldr r2, [r7, #16] + 8001502: 601a str r2, [r3, #0] + + temp = EXTI->EMR; + 8001504: 4b2b ldr r3, [pc, #172] ; (80015b4 ) + 8001506: 685b ldr r3, [r3, #4] + 8001508: 613b str r3, [r7, #16] + temp &= ~((uint32_t)iocurrent); + 800150a: 68fb ldr r3, [r7, #12] + 800150c: 43da mvns r2, r3 + 800150e: 693b ldr r3, [r7, #16] + 8001510: 4013 ands r3, r2 + 8001512: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & EXTI_EVT) != 0x00U) + 8001514: 683b ldr r3, [r7, #0] + 8001516: 685a ldr r2, [r3, #4] + 8001518: 2380 movs r3, #128 ; 0x80 + 800151a: 029b lsls r3, r3, #10 + 800151c: 4013 ands r3, r2 + 800151e: d003 beq.n 8001528 + { + temp |= iocurrent; + 8001520: 693a ldr r2, [r7, #16] + 8001522: 68fb ldr r3, [r7, #12] + 8001524: 4313 orrs r3, r2 + 8001526: 613b str r3, [r7, #16] + } + EXTI->EMR = temp; + 8001528: 4b22 ldr r3, [pc, #136] ; (80015b4 ) + 800152a: 693a ldr r2, [r7, #16] + 800152c: 605a str r2, [r3, #4] + + /* Clear Rising Falling edge configuration */ + temp = EXTI->RTSR; + 800152e: 4b21 ldr r3, [pc, #132] ; (80015b4 ) + 8001530: 689b ldr r3, [r3, #8] + 8001532: 613b str r3, [r7, #16] + temp &= ~((uint32_t)iocurrent); + 8001534: 68fb ldr r3, [r7, #12] + 8001536: 43da mvns r2, r3 + 8001538: 693b ldr r3, [r7, #16] + 800153a: 4013 ands r3, r2 + 800153c: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & TRIGGER_RISING) != 0x00U) + 800153e: 683b ldr r3, [r7, #0] + 8001540: 685a ldr r2, [r3, #4] + 8001542: 2380 movs r3, #128 ; 0x80 + 8001544: 035b lsls r3, r3, #13 + 8001546: 4013 ands r3, r2 + 8001548: d003 beq.n 8001552 + { + temp |= iocurrent; + 800154a: 693a ldr r2, [r7, #16] + 800154c: 68fb ldr r3, [r7, #12] + 800154e: 4313 orrs r3, r2 + 8001550: 613b str r3, [r7, #16] + } + EXTI->RTSR = temp; + 8001552: 4b18 ldr r3, [pc, #96] ; (80015b4 ) + 8001554: 693a ldr r2, [r7, #16] + 8001556: 609a str r2, [r3, #8] + + temp = EXTI->FTSR; + 8001558: 4b16 ldr r3, [pc, #88] ; (80015b4 ) + 800155a: 68db ldr r3, [r3, #12] + 800155c: 613b str r3, [r7, #16] + temp &= ~((uint32_t)iocurrent); + 800155e: 68fb ldr r3, [r7, #12] + 8001560: 43da mvns r2, r3 + 8001562: 693b ldr r3, [r7, #16] + 8001564: 4013 ands r3, r2 + 8001566: 613b str r3, [r7, #16] + if ((GPIO_Init->Mode & TRIGGER_FALLING) != 0x00U) + 8001568: 683b ldr r3, [r7, #0] + 800156a: 685a ldr r2, [r3, #4] + 800156c: 2380 movs r3, #128 ; 0x80 + 800156e: 039b lsls r3, r3, #14 + 8001570: 4013 ands r3, r2 + 8001572: d003 beq.n 800157c + { + temp |= iocurrent; + 8001574: 693a ldr r2, [r7, #16] + 8001576: 68fb ldr r3, [r7, #12] + 8001578: 4313 orrs r3, r2 + 800157a: 613b str r3, [r7, #16] + } + EXTI->FTSR = temp; + 800157c: 4b0d ldr r3, [pc, #52] ; (80015b4 ) + 800157e: 693a ldr r2, [r7, #16] + 8001580: 60da str r2, [r3, #12] + } + } + position++; + 8001582: 697b ldr r3, [r7, #20] + 8001584: 3301 adds r3, #1 + 8001586: 617b str r3, [r7, #20] + while (((GPIO_Init->Pin) >> position) != 0) + 8001588: 683b ldr r3, [r7, #0] + 800158a: 681a ldr r2, [r3, #0] + 800158c: 697b ldr r3, [r7, #20] + 800158e: 40da lsrs r2, r3 + 8001590: 1e13 subs r3, r2, #0 + 8001592: d000 beq.n 8001596 + 8001594: e6ae b.n 80012f4 + } +} + 8001596: 46c0 nop ; (mov r8, r8) + 8001598: 46c0 nop ; (mov r8, r8) + 800159a: 46bd mov sp, r7 + 800159c: b006 add sp, #24 + 800159e: bd80 pop {r7, pc} + 80015a0: 40021000 .word 0x40021000 + 80015a4: 40010000 .word 0x40010000 + 80015a8: 50000400 .word 0x50000400 + 80015ac: 50000800 .word 0x50000800 + 80015b0: 50001c00 .word 0x50001c00 + 80015b4: 40010400 .word 0x40010400 + +080015b8 : + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Init(I2C_HandleTypeDef *hi2c) +{ + 80015b8: b580 push {r7, lr} + 80015ba: b082 sub sp, #8 + 80015bc: af00 add r7, sp, #0 + 80015be: 6078 str r0, [r7, #4] + /* Check the I2C handle allocation */ + if (hi2c == NULL) + 80015c0: 687b ldr r3, [r7, #4] + 80015c2: 2b00 cmp r3, #0 + 80015c4: d101 bne.n 80015ca + { + return HAL_ERROR; + 80015c6: 2301 movs r3, #1 + 80015c8: e082 b.n 80016d0 + assert_param(IS_I2C_OWN_ADDRESS2(hi2c->Init.OwnAddress2)); + assert_param(IS_I2C_OWN_ADDRESS2_MASK(hi2c->Init.OwnAddress2Masks)); + assert_param(IS_I2C_GENERAL_CALL(hi2c->Init.GeneralCallMode)); + assert_param(IS_I2C_NO_STRETCH(hi2c->Init.NoStretchMode)); + + if (hi2c->State == HAL_I2C_STATE_RESET) + 80015ca: 687b ldr r3, [r7, #4] + 80015cc: 2241 movs r2, #65 ; 0x41 + 80015ce: 5c9b ldrb r3, [r3, r2] + 80015d0: b2db uxtb r3, r3 + 80015d2: 2b00 cmp r3, #0 + 80015d4: d107 bne.n 80015e6 + { + /* Allocate lock resource and initialize it */ + hi2c->Lock = HAL_UNLOCKED; + 80015d6: 687b ldr r3, [r7, #4] + 80015d8: 2240 movs r2, #64 ; 0x40 + 80015da: 2100 movs r1, #0 + 80015dc: 5499 strb r1, [r3, r2] + + /* Init the low level hardware : GPIO, CLOCK, CORTEX...etc */ + hi2c->MspInitCallback(hi2c); +#else + /* Init the low level hardware : GPIO, CLOCK, CORTEX...etc */ + HAL_I2C_MspInit(hi2c); + 80015de: 687b ldr r3, [r7, #4] + 80015e0: 0018 movs r0, r3 + 80015e2: f7ff fbcd bl 8000d80 +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + + hi2c->State = HAL_I2C_STATE_BUSY; + 80015e6: 687b ldr r3, [r7, #4] + 80015e8: 2241 movs r2, #65 ; 0x41 + 80015ea: 2124 movs r1, #36 ; 0x24 + 80015ec: 5499 strb r1, [r3, r2] + + /* Disable the selected I2C peripheral */ + __HAL_I2C_DISABLE(hi2c); + 80015ee: 687b ldr r3, [r7, #4] + 80015f0: 681b ldr r3, [r3, #0] + 80015f2: 681a ldr r2, [r3, #0] + 80015f4: 687b ldr r3, [r7, #4] + 80015f6: 681b ldr r3, [r3, #0] + 80015f8: 2101 movs r1, #1 + 80015fa: 438a bics r2, r1 + 80015fc: 601a str r2, [r3, #0] + + /*---------------------------- I2Cx TIMINGR Configuration ------------------*/ + /* Configure I2Cx: Frequency range */ + hi2c->Instance->TIMINGR = hi2c->Init.Timing & TIMING_CLEAR_MASK; + 80015fe: 687b ldr r3, [r7, #4] + 8001600: 685a ldr r2, [r3, #4] + 8001602: 687b ldr r3, [r7, #4] + 8001604: 681b ldr r3, [r3, #0] + 8001606: 4934 ldr r1, [pc, #208] ; (80016d8 ) + 8001608: 400a ands r2, r1 + 800160a: 611a str r2, [r3, #16] + + /*---------------------------- I2Cx OAR1 Configuration ---------------------*/ + /* Disable Own Address1 before set the Own Address1 configuration */ + hi2c->Instance->OAR1 &= ~I2C_OAR1_OA1EN; + 800160c: 687b ldr r3, [r7, #4] + 800160e: 681b ldr r3, [r3, #0] + 8001610: 689a ldr r2, [r3, #8] + 8001612: 687b ldr r3, [r7, #4] + 8001614: 681b ldr r3, [r3, #0] + 8001616: 4931 ldr r1, [pc, #196] ; (80016dc ) + 8001618: 400a ands r2, r1 + 800161a: 609a str r2, [r3, #8] + + /* Configure I2Cx: Own Address1 and ack own address1 mode */ + if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_7BIT) + 800161c: 687b ldr r3, [r7, #4] + 800161e: 68db ldr r3, [r3, #12] + 8001620: 2b01 cmp r3, #1 + 8001622: d108 bne.n 8001636 + { + hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | hi2c->Init.OwnAddress1); + 8001624: 687b ldr r3, [r7, #4] + 8001626: 689a ldr r2, [r3, #8] + 8001628: 687b ldr r3, [r7, #4] + 800162a: 681b ldr r3, [r3, #0] + 800162c: 2180 movs r1, #128 ; 0x80 + 800162e: 0209 lsls r1, r1, #8 + 8001630: 430a orrs r2, r1 + 8001632: 609a str r2, [r3, #8] + 8001634: e007 b.n 8001646 + } + else /* I2C_ADDRESSINGMODE_10BIT */ + { + hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | I2C_OAR1_OA1MODE | hi2c->Init.OwnAddress1); + 8001636: 687b ldr r3, [r7, #4] + 8001638: 689a ldr r2, [r3, #8] + 800163a: 687b ldr r3, [r7, #4] + 800163c: 681b ldr r3, [r3, #0] + 800163e: 2184 movs r1, #132 ; 0x84 + 8001640: 0209 lsls r1, r1, #8 + 8001642: 430a orrs r2, r1 + 8001644: 609a str r2, [r3, #8] + } + + /*---------------------------- I2Cx CR2 Configuration ----------------------*/ + /* Configure I2Cx: Addressing Master mode */ + if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) + 8001646: 687b ldr r3, [r7, #4] + 8001648: 68db ldr r3, [r3, #12] + 800164a: 2b02 cmp r3, #2 + 800164c: d104 bne.n 8001658 + { + hi2c->Instance->CR2 = (I2C_CR2_ADD10); + 800164e: 687b ldr r3, [r7, #4] + 8001650: 681b ldr r3, [r3, #0] + 8001652: 2280 movs r2, #128 ; 0x80 + 8001654: 0112 lsls r2, r2, #4 + 8001656: 605a str r2, [r3, #4] + } + /* Enable the AUTOEND by default, and enable NACK (should be disable only during Slave process */ + hi2c->Instance->CR2 |= (I2C_CR2_AUTOEND | I2C_CR2_NACK); + 8001658: 687b ldr r3, [r7, #4] + 800165a: 681b ldr r3, [r3, #0] + 800165c: 685a ldr r2, [r3, #4] + 800165e: 687b ldr r3, [r7, #4] + 8001660: 681b ldr r3, [r3, #0] + 8001662: 491f ldr r1, [pc, #124] ; (80016e0 ) + 8001664: 430a orrs r2, r1 + 8001666: 605a str r2, [r3, #4] + + /*---------------------------- I2Cx OAR2 Configuration ---------------------*/ + /* Disable Own Address2 before set the Own Address2 configuration */ + hi2c->Instance->OAR2 &= ~I2C_DUALADDRESS_ENABLE; + 8001668: 687b ldr r3, [r7, #4] + 800166a: 681b ldr r3, [r3, #0] + 800166c: 68da ldr r2, [r3, #12] + 800166e: 687b ldr r3, [r7, #4] + 8001670: 681b ldr r3, [r3, #0] + 8001672: 491a ldr r1, [pc, #104] ; (80016dc ) + 8001674: 400a ands r2, r1 + 8001676: 60da str r2, [r3, #12] + + /* Configure I2Cx: Dual mode and Own Address2 */ + hi2c->Instance->OAR2 = (hi2c->Init.DualAddressMode | hi2c->Init.OwnAddress2 | \ + 8001678: 687b ldr r3, [r7, #4] + 800167a: 691a ldr r2, [r3, #16] + 800167c: 687b ldr r3, [r7, #4] + 800167e: 695b ldr r3, [r3, #20] + 8001680: 431a orrs r2, r3 + 8001682: 0011 movs r1, r2 + (hi2c->Init.OwnAddress2Masks << 8)); + 8001684: 687b ldr r3, [r7, #4] + 8001686: 699b ldr r3, [r3, #24] + 8001688: 021a lsls r2, r3, #8 + hi2c->Instance->OAR2 = (hi2c->Init.DualAddressMode | hi2c->Init.OwnAddress2 | \ + 800168a: 687b ldr r3, [r7, #4] + 800168c: 681b ldr r3, [r3, #0] + 800168e: 430a orrs r2, r1 + 8001690: 60da str r2, [r3, #12] + + /*---------------------------- I2Cx CR1 Configuration ----------------------*/ + /* Configure I2Cx: Generalcall and NoStretch mode */ + hi2c->Instance->CR1 = (hi2c->Init.GeneralCallMode | hi2c->Init.NoStretchMode); + 8001692: 687b ldr r3, [r7, #4] + 8001694: 69d9 ldr r1, [r3, #28] + 8001696: 687b ldr r3, [r7, #4] + 8001698: 6a1a ldr r2, [r3, #32] + 800169a: 687b ldr r3, [r7, #4] + 800169c: 681b ldr r3, [r3, #0] + 800169e: 430a orrs r2, r1 + 80016a0: 601a str r2, [r3, #0] + + /* Enable the selected I2C peripheral */ + __HAL_I2C_ENABLE(hi2c); + 80016a2: 687b ldr r3, [r7, #4] + 80016a4: 681b ldr r3, [r3, #0] + 80016a6: 681a ldr r2, [r3, #0] + 80016a8: 687b ldr r3, [r7, #4] + 80016aa: 681b ldr r3, [r3, #0] + 80016ac: 2101 movs r1, #1 + 80016ae: 430a orrs r2, r1 + 80016b0: 601a str r2, [r3, #0] + + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 80016b2: 687b ldr r3, [r7, #4] + 80016b4: 2200 movs r2, #0 + 80016b6: 645a str r2, [r3, #68] ; 0x44 + hi2c->State = HAL_I2C_STATE_READY; + 80016b8: 687b ldr r3, [r7, #4] + 80016ba: 2241 movs r2, #65 ; 0x41 + 80016bc: 2120 movs r1, #32 + 80016be: 5499 strb r1, [r3, r2] + hi2c->PreviousState = I2C_STATE_NONE; + 80016c0: 687b ldr r3, [r7, #4] + 80016c2: 2200 movs r2, #0 + 80016c4: 631a str r2, [r3, #48] ; 0x30 + hi2c->Mode = HAL_I2C_MODE_NONE; + 80016c6: 687b ldr r3, [r7, #4] + 80016c8: 2242 movs r2, #66 ; 0x42 + 80016ca: 2100 movs r1, #0 + 80016cc: 5499 strb r1, [r3, r2] + + return HAL_OK; + 80016ce: 2300 movs r3, #0 +} + 80016d0: 0018 movs r0, r3 + 80016d2: 46bd mov sp, r7 + 80016d4: b002 add sp, #8 + 80016d6: bd80 pop {r7, pc} + 80016d8: f0ffffff .word 0xf0ffffff + 80016dc: ffff7fff .word 0xffff7fff + 80016e0: 02008000 .word 0x02008000 + +080016e4 : + * @param Timeout Timeout duration + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t Timeout) +{ + 80016e4: b590 push {r4, r7, lr} + 80016e6: b089 sub sp, #36 ; 0x24 + 80016e8: af02 add r7, sp, #8 + 80016ea: 60f8 str r0, [r7, #12] + 80016ec: 0008 movs r0, r1 + 80016ee: 607a str r2, [r7, #4] + 80016f0: 0019 movs r1, r3 + 80016f2: 230a movs r3, #10 + 80016f4: 18fb adds r3, r7, r3 + 80016f6: 1c02 adds r2, r0, #0 + 80016f8: 801a strh r2, [r3, #0] + 80016fa: 2308 movs r3, #8 + 80016fc: 18fb adds r3, r7, r3 + 80016fe: 1c0a adds r2, r1, #0 + 8001700: 801a strh r2, [r3, #0] + uint32_t tickstart; + + if (hi2c->State == HAL_I2C_STATE_READY) + 8001702: 68fb ldr r3, [r7, #12] + 8001704: 2241 movs r2, #65 ; 0x41 + 8001706: 5c9b ldrb r3, [r3, r2] + 8001708: b2db uxtb r3, r3 + 800170a: 2b20 cmp r3, #32 + 800170c: d000 beq.n 8001710 + 800170e: e0e7 b.n 80018e0 + { + /* Process Locked */ + __HAL_LOCK(hi2c); + 8001710: 68fb ldr r3, [r7, #12] + 8001712: 2240 movs r2, #64 ; 0x40 + 8001714: 5c9b ldrb r3, [r3, r2] + 8001716: 2b01 cmp r3, #1 + 8001718: d101 bne.n 800171e + 800171a: 2302 movs r3, #2 + 800171c: e0e1 b.n 80018e2 + 800171e: 68fb ldr r3, [r7, #12] + 8001720: 2240 movs r2, #64 ; 0x40 + 8001722: 2101 movs r1, #1 + 8001724: 5499 strb r1, [r3, r2] + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + 8001726: f7ff fcf7 bl 8001118 + 800172a: 0003 movs r3, r0 + 800172c: 617b str r3, [r7, #20] + + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) + 800172e: 2380 movs r3, #128 ; 0x80 + 8001730: 0219 lsls r1, r3, #8 + 8001732: 68f8 ldr r0, [r7, #12] + 8001734: 697b ldr r3, [r7, #20] + 8001736: 9300 str r3, [sp, #0] + 8001738: 2319 movs r3, #25 + 800173a: 2201 movs r2, #1 + 800173c: f000 fb9a bl 8001e74 + 8001740: 1e03 subs r3, r0, #0 + 8001742: d001 beq.n 8001748 + { + return HAL_ERROR; + 8001744: 2301 movs r3, #1 + 8001746: e0cc b.n 80018e2 + } + + hi2c->State = HAL_I2C_STATE_BUSY_TX; + 8001748: 68fb ldr r3, [r7, #12] + 800174a: 2241 movs r2, #65 ; 0x41 + 800174c: 2121 movs r1, #33 ; 0x21 + 800174e: 5499 strb r1, [r3, r2] + hi2c->Mode = HAL_I2C_MODE_MASTER; + 8001750: 68fb ldr r3, [r7, #12] + 8001752: 2242 movs r2, #66 ; 0x42 + 8001754: 2110 movs r1, #16 + 8001756: 5499 strb r1, [r3, r2] + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 8001758: 68fb ldr r3, [r7, #12] + 800175a: 2200 movs r2, #0 + 800175c: 645a str r2, [r3, #68] ; 0x44 + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + 800175e: 68fb ldr r3, [r7, #12] + 8001760: 687a ldr r2, [r7, #4] + 8001762: 625a str r2, [r3, #36] ; 0x24 + hi2c->XferCount = Size; + 8001764: 68fb ldr r3, [r7, #12] + 8001766: 2208 movs r2, #8 + 8001768: 18ba adds r2, r7, r2 + 800176a: 8812 ldrh r2, [r2, #0] + 800176c: 855a strh r2, [r3, #42] ; 0x2a + hi2c->XferISR = NULL; + 800176e: 68fb ldr r3, [r7, #12] + 8001770: 2200 movs r2, #0 + 8001772: 635a str r2, [r3, #52] ; 0x34 + + /* Send Slave Address */ + /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + 8001774: 68fb ldr r3, [r7, #12] + 8001776: 8d5b ldrh r3, [r3, #42] ; 0x2a + 8001778: b29b uxth r3, r3 + 800177a: 2bff cmp r3, #255 ; 0xff + 800177c: d911 bls.n 80017a2 + { + hi2c->XferSize = MAX_NBYTE_SIZE; + 800177e: 68fb ldr r3, [r7, #12] + 8001780: 22ff movs r2, #255 ; 0xff + 8001782: 851a strh r2, [r3, #40] ; 0x28 + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, + 8001784: 68fb ldr r3, [r7, #12] + 8001786: 8d1b ldrh r3, [r3, #40] ; 0x28 + 8001788: b2da uxtb r2, r3 + 800178a: 2380 movs r3, #128 ; 0x80 + 800178c: 045c lsls r4, r3, #17 + 800178e: 230a movs r3, #10 + 8001790: 18fb adds r3, r7, r3 + 8001792: 8819 ldrh r1, [r3, #0] + 8001794: 68f8 ldr r0, [r7, #12] + 8001796: 4b55 ldr r3, [pc, #340] ; (80018ec ) + 8001798: 9300 str r3, [sp, #0] + 800179a: 0023 movs r3, r4 + 800179c: f000 fd0a bl 80021b4 + 80017a0: e075 b.n 800188e + I2C_GENERATE_START_WRITE); + } + else + { + hi2c->XferSize = hi2c->XferCount; + 80017a2: 68fb ldr r3, [r7, #12] + 80017a4: 8d5b ldrh r3, [r3, #42] ; 0x2a + 80017a6: b29a uxth r2, r3 + 80017a8: 68fb ldr r3, [r7, #12] + 80017aa: 851a strh r2, [r3, #40] ; 0x28 + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + 80017ac: 68fb ldr r3, [r7, #12] + 80017ae: 8d1b ldrh r3, [r3, #40] ; 0x28 + 80017b0: b2da uxtb r2, r3 + 80017b2: 2380 movs r3, #128 ; 0x80 + 80017b4: 049c lsls r4, r3, #18 + 80017b6: 230a movs r3, #10 + 80017b8: 18fb adds r3, r7, r3 + 80017ba: 8819 ldrh r1, [r3, #0] + 80017bc: 68f8 ldr r0, [r7, #12] + 80017be: 4b4b ldr r3, [pc, #300] ; (80018ec ) + 80017c0: 9300 str r3, [sp, #0] + 80017c2: 0023 movs r3, r4 + 80017c4: f000 fcf6 bl 80021b4 + I2C_GENERATE_START_WRITE); + } + + while (hi2c->XferCount > 0U) + 80017c8: e061 b.n 800188e + { + /* Wait until TXIS flag is set */ + if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + 80017ca: 697a ldr r2, [r7, #20] + 80017cc: 6ab9 ldr r1, [r7, #40] ; 0x28 + 80017ce: 68fb ldr r3, [r7, #12] + 80017d0: 0018 movs r0, r3 + 80017d2: f000 fb8e bl 8001ef2 + 80017d6: 1e03 subs r3, r0, #0 + 80017d8: d001 beq.n 80017de + { + return HAL_ERROR; + 80017da: 2301 movs r3, #1 + 80017dc: e081 b.n 80018e2 + } + /* Write data to TXDR */ + hi2c->Instance->TXDR = *hi2c->pBuffPtr; + 80017de: 68fb ldr r3, [r7, #12] + 80017e0: 6a5b ldr r3, [r3, #36] ; 0x24 + 80017e2: 781a ldrb r2, [r3, #0] + 80017e4: 68fb ldr r3, [r7, #12] + 80017e6: 681b ldr r3, [r3, #0] + 80017e8: 629a str r2, [r3, #40] ; 0x28 + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + 80017ea: 68fb ldr r3, [r7, #12] + 80017ec: 6a5b ldr r3, [r3, #36] ; 0x24 + 80017ee: 1c5a adds r2, r3, #1 + 80017f0: 68fb ldr r3, [r7, #12] + 80017f2: 625a str r2, [r3, #36] ; 0x24 + + hi2c->XferCount--; + 80017f4: 68fb ldr r3, [r7, #12] + 80017f6: 8d5b ldrh r3, [r3, #42] ; 0x2a + 80017f8: b29b uxth r3, r3 + 80017fa: 3b01 subs r3, #1 + 80017fc: b29a uxth r2, r3 + 80017fe: 68fb ldr r3, [r7, #12] + 8001800: 855a strh r2, [r3, #42] ; 0x2a + hi2c->XferSize--; + 8001802: 68fb ldr r3, [r7, #12] + 8001804: 8d1b ldrh r3, [r3, #40] ; 0x28 + 8001806: 3b01 subs r3, #1 + 8001808: b29a uxth r2, r3 + 800180a: 68fb ldr r3, [r7, #12] + 800180c: 851a strh r2, [r3, #40] ; 0x28 + + if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) + 800180e: 68fb ldr r3, [r7, #12] + 8001810: 8d5b ldrh r3, [r3, #42] ; 0x2a + 8001812: b29b uxth r3, r3 + 8001814: 2b00 cmp r3, #0 + 8001816: d03a beq.n 800188e + 8001818: 68fb ldr r3, [r7, #12] + 800181a: 8d1b ldrh r3, [r3, #40] ; 0x28 + 800181c: 2b00 cmp r3, #0 + 800181e: d136 bne.n 800188e + { + /* Wait until TCR flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) + 8001820: 6aba ldr r2, [r7, #40] ; 0x28 + 8001822: 68f8 ldr r0, [r7, #12] + 8001824: 697b ldr r3, [r7, #20] + 8001826: 9300 str r3, [sp, #0] + 8001828: 0013 movs r3, r2 + 800182a: 2200 movs r2, #0 + 800182c: 2180 movs r1, #128 ; 0x80 + 800182e: f000 fb21 bl 8001e74 + 8001832: 1e03 subs r3, r0, #0 + 8001834: d001 beq.n 800183a + { + return HAL_ERROR; + 8001836: 2301 movs r3, #1 + 8001838: e053 b.n 80018e2 + } + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + 800183a: 68fb ldr r3, [r7, #12] + 800183c: 8d5b ldrh r3, [r3, #42] ; 0x2a + 800183e: b29b uxth r3, r3 + 8001840: 2bff cmp r3, #255 ; 0xff + 8001842: d911 bls.n 8001868 + { + hi2c->XferSize = MAX_NBYTE_SIZE; + 8001844: 68fb ldr r3, [r7, #12] + 8001846: 22ff movs r2, #255 ; 0xff + 8001848: 851a strh r2, [r3, #40] ; 0x28 + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, + 800184a: 68fb ldr r3, [r7, #12] + 800184c: 8d1b ldrh r3, [r3, #40] ; 0x28 + 800184e: b2da uxtb r2, r3 + 8001850: 2380 movs r3, #128 ; 0x80 + 8001852: 045c lsls r4, r3, #17 + 8001854: 230a movs r3, #10 + 8001856: 18fb adds r3, r7, r3 + 8001858: 8819 ldrh r1, [r3, #0] + 800185a: 68f8 ldr r0, [r7, #12] + 800185c: 2300 movs r3, #0 + 800185e: 9300 str r3, [sp, #0] + 8001860: 0023 movs r3, r4 + 8001862: f000 fca7 bl 80021b4 + 8001866: e012 b.n 800188e + I2C_NO_STARTSTOP); + } + else + { + hi2c->XferSize = hi2c->XferCount; + 8001868: 68fb ldr r3, [r7, #12] + 800186a: 8d5b ldrh r3, [r3, #42] ; 0x2a + 800186c: b29a uxth r2, r3 + 800186e: 68fb ldr r3, [r7, #12] + 8001870: 851a strh r2, [r3, #40] ; 0x28 + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + 8001872: 68fb ldr r3, [r7, #12] + 8001874: 8d1b ldrh r3, [r3, #40] ; 0x28 + 8001876: b2da uxtb r2, r3 + 8001878: 2380 movs r3, #128 ; 0x80 + 800187a: 049c lsls r4, r3, #18 + 800187c: 230a movs r3, #10 + 800187e: 18fb adds r3, r7, r3 + 8001880: 8819 ldrh r1, [r3, #0] + 8001882: 68f8 ldr r0, [r7, #12] + 8001884: 2300 movs r3, #0 + 8001886: 9300 str r3, [sp, #0] + 8001888: 0023 movs r3, r4 + 800188a: f000 fc93 bl 80021b4 + while (hi2c->XferCount > 0U) + 800188e: 68fb ldr r3, [r7, #12] + 8001890: 8d5b ldrh r3, [r3, #42] ; 0x2a + 8001892: b29b uxth r3, r3 + 8001894: 2b00 cmp r3, #0 + 8001896: d198 bne.n 80017ca + } + } + + /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */ + /* Wait until STOPF flag is set */ + if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + 8001898: 697a ldr r2, [r7, #20] + 800189a: 6ab9 ldr r1, [r7, #40] ; 0x28 + 800189c: 68fb ldr r3, [r7, #12] + 800189e: 0018 movs r0, r3 + 80018a0: f000 fb66 bl 8001f70 + 80018a4: 1e03 subs r3, r0, #0 + 80018a6: d001 beq.n 80018ac + { + return HAL_ERROR; + 80018a8: 2301 movs r3, #1 + 80018aa: e01a b.n 80018e2 + } + + /* Clear STOP Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + 80018ac: 68fb ldr r3, [r7, #12] + 80018ae: 681b ldr r3, [r3, #0] + 80018b0: 2220 movs r2, #32 + 80018b2: 61da str r2, [r3, #28] + + /* Clear Configuration Register 2 */ + I2C_RESET_CR2(hi2c); + 80018b4: 68fb ldr r3, [r7, #12] + 80018b6: 681b ldr r3, [r3, #0] + 80018b8: 685a ldr r2, [r3, #4] + 80018ba: 68fb ldr r3, [r7, #12] + 80018bc: 681b ldr r3, [r3, #0] + 80018be: 490c ldr r1, [pc, #48] ; (80018f0 ) + 80018c0: 400a ands r2, r1 + 80018c2: 605a str r2, [r3, #4] + + hi2c->State = HAL_I2C_STATE_READY; + 80018c4: 68fb ldr r3, [r7, #12] + 80018c6: 2241 movs r2, #65 ; 0x41 + 80018c8: 2120 movs r1, #32 + 80018ca: 5499 strb r1, [r3, r2] + hi2c->Mode = HAL_I2C_MODE_NONE; + 80018cc: 68fb ldr r3, [r7, #12] + 80018ce: 2242 movs r2, #66 ; 0x42 + 80018d0: 2100 movs r1, #0 + 80018d2: 5499 strb r1, [r3, r2] + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + 80018d4: 68fb ldr r3, [r7, #12] + 80018d6: 2240 movs r2, #64 ; 0x40 + 80018d8: 2100 movs r1, #0 + 80018da: 5499 strb r1, [r3, r2] + + return HAL_OK; + 80018dc: 2300 movs r3, #0 + 80018de: e000 b.n 80018e2 + } + else + { + return HAL_BUSY; + 80018e0: 2302 movs r3, #2 + } +} + 80018e2: 0018 movs r0, r3 + 80018e4: 46bd mov sp, r7 + 80018e6: b007 add sp, #28 + 80018e8: bd90 pop {r4, r7, pc} + 80018ea: 46c0 nop ; (mov r8, r8) + 80018ec: 80002000 .word 0x80002000 + 80018f0: fe00e800 .word 0xfe00e800 + +080018f4 : + * @param Timeout Timeout duration + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t Timeout) +{ + 80018f4: b590 push {r4, r7, lr} + 80018f6: b089 sub sp, #36 ; 0x24 + 80018f8: af02 add r7, sp, #8 + 80018fa: 60f8 str r0, [r7, #12] + 80018fc: 0008 movs r0, r1 + 80018fe: 607a str r2, [r7, #4] + 8001900: 0019 movs r1, r3 + 8001902: 230a movs r3, #10 + 8001904: 18fb adds r3, r7, r3 + 8001906: 1c02 adds r2, r0, #0 + 8001908: 801a strh r2, [r3, #0] + 800190a: 2308 movs r3, #8 + 800190c: 18fb adds r3, r7, r3 + 800190e: 1c0a adds r2, r1, #0 + 8001910: 801a strh r2, [r3, #0] + uint32_t tickstart; + + if (hi2c->State == HAL_I2C_STATE_READY) + 8001912: 68fb ldr r3, [r7, #12] + 8001914: 2241 movs r2, #65 ; 0x41 + 8001916: 5c9b ldrb r3, [r3, r2] + 8001918: b2db uxtb r3, r3 + 800191a: 2b20 cmp r3, #32 + 800191c: d000 beq.n 8001920 + 800191e: e0e8 b.n 8001af2 + { + /* Process Locked */ + __HAL_LOCK(hi2c); + 8001920: 68fb ldr r3, [r7, #12] + 8001922: 2240 movs r2, #64 ; 0x40 + 8001924: 5c9b ldrb r3, [r3, r2] + 8001926: 2b01 cmp r3, #1 + 8001928: d101 bne.n 800192e + 800192a: 2302 movs r3, #2 + 800192c: e0e2 b.n 8001af4 + 800192e: 68fb ldr r3, [r7, #12] + 8001930: 2240 movs r2, #64 ; 0x40 + 8001932: 2101 movs r1, #1 + 8001934: 5499 strb r1, [r3, r2] + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + 8001936: f7ff fbef bl 8001118 + 800193a: 0003 movs r3, r0 + 800193c: 617b str r3, [r7, #20] + + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) + 800193e: 2380 movs r3, #128 ; 0x80 + 8001940: 0219 lsls r1, r3, #8 + 8001942: 68f8 ldr r0, [r7, #12] + 8001944: 697b ldr r3, [r7, #20] + 8001946: 9300 str r3, [sp, #0] + 8001948: 2319 movs r3, #25 + 800194a: 2201 movs r2, #1 + 800194c: f000 fa92 bl 8001e74 + 8001950: 1e03 subs r3, r0, #0 + 8001952: d001 beq.n 8001958 + { + return HAL_ERROR; + 8001954: 2301 movs r3, #1 + 8001956: e0cd b.n 8001af4 + } + + hi2c->State = HAL_I2C_STATE_BUSY_RX; + 8001958: 68fb ldr r3, [r7, #12] + 800195a: 2241 movs r2, #65 ; 0x41 + 800195c: 2122 movs r1, #34 ; 0x22 + 800195e: 5499 strb r1, [r3, r2] + hi2c->Mode = HAL_I2C_MODE_MASTER; + 8001960: 68fb ldr r3, [r7, #12] + 8001962: 2242 movs r2, #66 ; 0x42 + 8001964: 2110 movs r1, #16 + 8001966: 5499 strb r1, [r3, r2] + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 8001968: 68fb ldr r3, [r7, #12] + 800196a: 2200 movs r2, #0 + 800196c: 645a str r2, [r3, #68] ; 0x44 + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + 800196e: 68fb ldr r3, [r7, #12] + 8001970: 687a ldr r2, [r7, #4] + 8001972: 625a str r2, [r3, #36] ; 0x24 + hi2c->XferCount = Size; + 8001974: 68fb ldr r3, [r7, #12] + 8001976: 2208 movs r2, #8 + 8001978: 18ba adds r2, r7, r2 + 800197a: 8812 ldrh r2, [r2, #0] + 800197c: 855a strh r2, [r3, #42] ; 0x2a + hi2c->XferISR = NULL; + 800197e: 68fb ldr r3, [r7, #12] + 8001980: 2200 movs r2, #0 + 8001982: 635a str r2, [r3, #52] ; 0x34 + + /* Send Slave Address */ + /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + 8001984: 68fb ldr r3, [r7, #12] + 8001986: 8d5b ldrh r3, [r3, #42] ; 0x2a + 8001988: b29b uxth r3, r3 + 800198a: 2bff cmp r3, #255 ; 0xff + 800198c: d911 bls.n 80019b2 + { + hi2c->XferSize = MAX_NBYTE_SIZE; + 800198e: 68fb ldr r3, [r7, #12] + 8001990: 22ff movs r2, #255 ; 0xff + 8001992: 851a strh r2, [r3, #40] ; 0x28 + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, + 8001994: 68fb ldr r3, [r7, #12] + 8001996: 8d1b ldrh r3, [r3, #40] ; 0x28 + 8001998: b2da uxtb r2, r3 + 800199a: 2380 movs r3, #128 ; 0x80 + 800199c: 045c lsls r4, r3, #17 + 800199e: 230a movs r3, #10 + 80019a0: 18fb adds r3, r7, r3 + 80019a2: 8819 ldrh r1, [r3, #0] + 80019a4: 68f8 ldr r0, [r7, #12] + 80019a6: 4b55 ldr r3, [pc, #340] ; (8001afc ) + 80019a8: 9300 str r3, [sp, #0] + 80019aa: 0023 movs r3, r4 + 80019ac: f000 fc02 bl 80021b4 + 80019b0: e076 b.n 8001aa0 + I2C_GENERATE_START_READ); + } + else + { + hi2c->XferSize = hi2c->XferCount; + 80019b2: 68fb ldr r3, [r7, #12] + 80019b4: 8d5b ldrh r3, [r3, #42] ; 0x2a + 80019b6: b29a uxth r2, r3 + 80019b8: 68fb ldr r3, [r7, #12] + 80019ba: 851a strh r2, [r3, #40] ; 0x28 + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + 80019bc: 68fb ldr r3, [r7, #12] + 80019be: 8d1b ldrh r3, [r3, #40] ; 0x28 + 80019c0: b2da uxtb r2, r3 + 80019c2: 2380 movs r3, #128 ; 0x80 + 80019c4: 049c lsls r4, r3, #18 + 80019c6: 230a movs r3, #10 + 80019c8: 18fb adds r3, r7, r3 + 80019ca: 8819 ldrh r1, [r3, #0] + 80019cc: 68f8 ldr r0, [r7, #12] + 80019ce: 4b4b ldr r3, [pc, #300] ; (8001afc ) + 80019d0: 9300 str r3, [sp, #0] + 80019d2: 0023 movs r3, r4 + 80019d4: f000 fbee bl 80021b4 + I2C_GENERATE_START_READ); + } + + while (hi2c->XferCount > 0U) + 80019d8: e062 b.n 8001aa0 + { + /* Wait until RXNE flag is set */ + if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + 80019da: 697a ldr r2, [r7, #20] + 80019dc: 6ab9 ldr r1, [r7, #40] ; 0x28 + 80019de: 68fb ldr r3, [r7, #12] + 80019e0: 0018 movs r0, r3 + 80019e2: f000 fb01 bl 8001fe8 + 80019e6: 1e03 subs r3, r0, #0 + 80019e8: d001 beq.n 80019ee + { + return HAL_ERROR; + 80019ea: 2301 movs r3, #1 + 80019ec: e082 b.n 8001af4 + } + + /* Read data from RXDR */ + *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; + 80019ee: 68fb ldr r3, [r7, #12] + 80019f0: 681b ldr r3, [r3, #0] + 80019f2: 6a5a ldr r2, [r3, #36] ; 0x24 + 80019f4: 68fb ldr r3, [r7, #12] + 80019f6: 6a5b ldr r3, [r3, #36] ; 0x24 + 80019f8: b2d2 uxtb r2, r2 + 80019fa: 701a strb r2, [r3, #0] + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + 80019fc: 68fb ldr r3, [r7, #12] + 80019fe: 6a5b ldr r3, [r3, #36] ; 0x24 + 8001a00: 1c5a adds r2, r3, #1 + 8001a02: 68fb ldr r3, [r7, #12] + 8001a04: 625a str r2, [r3, #36] ; 0x24 + + hi2c->XferSize--; + 8001a06: 68fb ldr r3, [r7, #12] + 8001a08: 8d1b ldrh r3, [r3, #40] ; 0x28 + 8001a0a: 3b01 subs r3, #1 + 8001a0c: b29a uxth r2, r3 + 8001a0e: 68fb ldr r3, [r7, #12] + 8001a10: 851a strh r2, [r3, #40] ; 0x28 + hi2c->XferCount--; + 8001a12: 68fb ldr r3, [r7, #12] + 8001a14: 8d5b ldrh r3, [r3, #42] ; 0x2a + 8001a16: b29b uxth r3, r3 + 8001a18: 3b01 subs r3, #1 + 8001a1a: b29a uxth r2, r3 + 8001a1c: 68fb ldr r3, [r7, #12] + 8001a1e: 855a strh r2, [r3, #42] ; 0x2a + + if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) + 8001a20: 68fb ldr r3, [r7, #12] + 8001a22: 8d5b ldrh r3, [r3, #42] ; 0x2a + 8001a24: b29b uxth r3, r3 + 8001a26: 2b00 cmp r3, #0 + 8001a28: d03a beq.n 8001aa0 + 8001a2a: 68fb ldr r3, [r7, #12] + 8001a2c: 8d1b ldrh r3, [r3, #40] ; 0x28 + 8001a2e: 2b00 cmp r3, #0 + 8001a30: d136 bne.n 8001aa0 + { + /* Wait until TCR flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) + 8001a32: 6aba ldr r2, [r7, #40] ; 0x28 + 8001a34: 68f8 ldr r0, [r7, #12] + 8001a36: 697b ldr r3, [r7, #20] + 8001a38: 9300 str r3, [sp, #0] + 8001a3a: 0013 movs r3, r2 + 8001a3c: 2200 movs r2, #0 + 8001a3e: 2180 movs r1, #128 ; 0x80 + 8001a40: f000 fa18 bl 8001e74 + 8001a44: 1e03 subs r3, r0, #0 + 8001a46: d001 beq.n 8001a4c + { + return HAL_ERROR; + 8001a48: 2301 movs r3, #1 + 8001a4a: e053 b.n 8001af4 + } + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + 8001a4c: 68fb ldr r3, [r7, #12] + 8001a4e: 8d5b ldrh r3, [r3, #42] ; 0x2a + 8001a50: b29b uxth r3, r3 + 8001a52: 2bff cmp r3, #255 ; 0xff + 8001a54: d911 bls.n 8001a7a + { + hi2c->XferSize = MAX_NBYTE_SIZE; + 8001a56: 68fb ldr r3, [r7, #12] + 8001a58: 22ff movs r2, #255 ; 0xff + 8001a5a: 851a strh r2, [r3, #40] ; 0x28 + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, + 8001a5c: 68fb ldr r3, [r7, #12] + 8001a5e: 8d1b ldrh r3, [r3, #40] ; 0x28 + 8001a60: b2da uxtb r2, r3 + 8001a62: 2380 movs r3, #128 ; 0x80 + 8001a64: 045c lsls r4, r3, #17 + 8001a66: 230a movs r3, #10 + 8001a68: 18fb adds r3, r7, r3 + 8001a6a: 8819 ldrh r1, [r3, #0] + 8001a6c: 68f8 ldr r0, [r7, #12] + 8001a6e: 2300 movs r3, #0 + 8001a70: 9300 str r3, [sp, #0] + 8001a72: 0023 movs r3, r4 + 8001a74: f000 fb9e bl 80021b4 + 8001a78: e012 b.n 8001aa0 + I2C_NO_STARTSTOP); + } + else + { + hi2c->XferSize = hi2c->XferCount; + 8001a7a: 68fb ldr r3, [r7, #12] + 8001a7c: 8d5b ldrh r3, [r3, #42] ; 0x2a + 8001a7e: b29a uxth r2, r3 + 8001a80: 68fb ldr r3, [r7, #12] + 8001a82: 851a strh r2, [r3, #40] ; 0x28 + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + 8001a84: 68fb ldr r3, [r7, #12] + 8001a86: 8d1b ldrh r3, [r3, #40] ; 0x28 + 8001a88: b2da uxtb r2, r3 + 8001a8a: 2380 movs r3, #128 ; 0x80 + 8001a8c: 049c lsls r4, r3, #18 + 8001a8e: 230a movs r3, #10 + 8001a90: 18fb adds r3, r7, r3 + 8001a92: 8819 ldrh r1, [r3, #0] + 8001a94: 68f8 ldr r0, [r7, #12] + 8001a96: 2300 movs r3, #0 + 8001a98: 9300 str r3, [sp, #0] + 8001a9a: 0023 movs r3, r4 + 8001a9c: f000 fb8a bl 80021b4 + while (hi2c->XferCount > 0U) + 8001aa0: 68fb ldr r3, [r7, #12] + 8001aa2: 8d5b ldrh r3, [r3, #42] ; 0x2a + 8001aa4: b29b uxth r3, r3 + 8001aa6: 2b00 cmp r3, #0 + 8001aa8: d197 bne.n 80019da + } + } + + /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */ + /* Wait until STOPF flag is set */ + if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + 8001aaa: 697a ldr r2, [r7, #20] + 8001aac: 6ab9 ldr r1, [r7, #40] ; 0x28 + 8001aae: 68fb ldr r3, [r7, #12] + 8001ab0: 0018 movs r0, r3 + 8001ab2: f000 fa5d bl 8001f70 + 8001ab6: 1e03 subs r3, r0, #0 + 8001ab8: d001 beq.n 8001abe + { + return HAL_ERROR; + 8001aba: 2301 movs r3, #1 + 8001abc: e01a b.n 8001af4 + } + + /* Clear STOP Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + 8001abe: 68fb ldr r3, [r7, #12] + 8001ac0: 681b ldr r3, [r3, #0] + 8001ac2: 2220 movs r2, #32 + 8001ac4: 61da str r2, [r3, #28] + + /* Clear Configuration Register 2 */ + I2C_RESET_CR2(hi2c); + 8001ac6: 68fb ldr r3, [r7, #12] + 8001ac8: 681b ldr r3, [r3, #0] + 8001aca: 685a ldr r2, [r3, #4] + 8001acc: 68fb ldr r3, [r7, #12] + 8001ace: 681b ldr r3, [r3, #0] + 8001ad0: 490b ldr r1, [pc, #44] ; (8001b00 ) + 8001ad2: 400a ands r2, r1 + 8001ad4: 605a str r2, [r3, #4] + + hi2c->State = HAL_I2C_STATE_READY; + 8001ad6: 68fb ldr r3, [r7, #12] + 8001ad8: 2241 movs r2, #65 ; 0x41 + 8001ada: 2120 movs r1, #32 + 8001adc: 5499 strb r1, [r3, r2] + hi2c->Mode = HAL_I2C_MODE_NONE; + 8001ade: 68fb ldr r3, [r7, #12] + 8001ae0: 2242 movs r2, #66 ; 0x42 + 8001ae2: 2100 movs r1, #0 + 8001ae4: 5499 strb r1, [r3, r2] + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + 8001ae6: 68fb ldr r3, [r7, #12] + 8001ae8: 2240 movs r2, #64 ; 0x40 + 8001aea: 2100 movs r1, #0 + 8001aec: 5499 strb r1, [r3, r2] + + return HAL_OK; + 8001aee: 2300 movs r3, #0 + 8001af0: e000 b.n 8001af4 + } + else + { + return HAL_BUSY; + 8001af2: 2302 movs r3, #2 + } +} + 8001af4: 0018 movs r0, r3 + 8001af6: 46bd mov sp, r7 + 8001af8: b007 add sp, #28 + 8001afa: bd90 pop {r4, r7, pc} + 8001afc: 80002400 .word 0x80002400 + 8001b00: fe00e800 .word 0xfe00e800 + +08001b04 : + * @param Timeout Timeout duration + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout) +{ + 8001b04: b590 push {r4, r7, lr} + 8001b06: b089 sub sp, #36 ; 0x24 + 8001b08: af02 add r7, sp, #8 + 8001b0a: 60f8 str r0, [r7, #12] + 8001b0c: 000c movs r4, r1 + 8001b0e: 0010 movs r0, r2 + 8001b10: 0019 movs r1, r3 + 8001b12: 230a movs r3, #10 + 8001b14: 18fb adds r3, r7, r3 + 8001b16: 1c22 adds r2, r4, #0 + 8001b18: 801a strh r2, [r3, #0] + 8001b1a: 2308 movs r3, #8 + 8001b1c: 18fb adds r3, r7, r3 + 8001b1e: 1c02 adds r2, r0, #0 + 8001b20: 801a strh r2, [r3, #0] + 8001b22: 1dbb adds r3, r7, #6 + 8001b24: 1c0a adds r2, r1, #0 + 8001b26: 801a strh r2, [r3, #0] + uint32_t tickstart; + + /* Check the parameters */ + assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); + + if (hi2c->State == HAL_I2C_STATE_READY) + 8001b28: 68fb ldr r3, [r7, #12] + 8001b2a: 2241 movs r2, #65 ; 0x41 + 8001b2c: 5c9b ldrb r3, [r3, r2] + 8001b2e: b2db uxtb r3, r3 + 8001b30: 2b20 cmp r3, #32 + 8001b32: d000 beq.n 8001b36 + 8001b34: e110 b.n 8001d58 + { + if ((pData == NULL) || (Size == 0U)) + 8001b36: 6abb ldr r3, [r7, #40] ; 0x28 + 8001b38: 2b00 cmp r3, #0 + 8001b3a: d004 beq.n 8001b46 + 8001b3c: 232c movs r3, #44 ; 0x2c + 8001b3e: 18fb adds r3, r7, r3 + 8001b40: 881b ldrh r3, [r3, #0] + 8001b42: 2b00 cmp r3, #0 + 8001b44: d105 bne.n 8001b52 + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + 8001b46: 68fb ldr r3, [r7, #12] + 8001b48: 2280 movs r2, #128 ; 0x80 + 8001b4a: 0092 lsls r2, r2, #2 + 8001b4c: 645a str r2, [r3, #68] ; 0x44 + return HAL_ERROR; + 8001b4e: 2301 movs r3, #1 + 8001b50: e103 b.n 8001d5a + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + 8001b52: 68fb ldr r3, [r7, #12] + 8001b54: 2240 movs r2, #64 ; 0x40 + 8001b56: 5c9b ldrb r3, [r3, r2] + 8001b58: 2b01 cmp r3, #1 + 8001b5a: d101 bne.n 8001b60 + 8001b5c: 2302 movs r3, #2 + 8001b5e: e0fc b.n 8001d5a + 8001b60: 68fb ldr r3, [r7, #12] + 8001b62: 2240 movs r2, #64 ; 0x40 + 8001b64: 2101 movs r1, #1 + 8001b66: 5499 strb r1, [r3, r2] + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + 8001b68: f7ff fad6 bl 8001118 + 8001b6c: 0003 movs r3, r0 + 8001b6e: 617b str r3, [r7, #20] + + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) + 8001b70: 2380 movs r3, #128 ; 0x80 + 8001b72: 0219 lsls r1, r3, #8 + 8001b74: 68f8 ldr r0, [r7, #12] + 8001b76: 697b ldr r3, [r7, #20] + 8001b78: 9300 str r3, [sp, #0] + 8001b7a: 2319 movs r3, #25 + 8001b7c: 2201 movs r2, #1 + 8001b7e: f000 f979 bl 8001e74 + 8001b82: 1e03 subs r3, r0, #0 + 8001b84: d001 beq.n 8001b8a + { + return HAL_ERROR; + 8001b86: 2301 movs r3, #1 + 8001b88: e0e7 b.n 8001d5a + } + + hi2c->State = HAL_I2C_STATE_BUSY_RX; + 8001b8a: 68fb ldr r3, [r7, #12] + 8001b8c: 2241 movs r2, #65 ; 0x41 + 8001b8e: 2122 movs r1, #34 ; 0x22 + 8001b90: 5499 strb r1, [r3, r2] + hi2c->Mode = HAL_I2C_MODE_MEM; + 8001b92: 68fb ldr r3, [r7, #12] + 8001b94: 2242 movs r2, #66 ; 0x42 + 8001b96: 2140 movs r1, #64 ; 0x40 + 8001b98: 5499 strb r1, [r3, r2] + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 8001b9a: 68fb ldr r3, [r7, #12] + 8001b9c: 2200 movs r2, #0 + 8001b9e: 645a str r2, [r3, #68] ; 0x44 + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + 8001ba0: 68fb ldr r3, [r7, #12] + 8001ba2: 6aba ldr r2, [r7, #40] ; 0x28 + 8001ba4: 625a str r2, [r3, #36] ; 0x24 + hi2c->XferCount = Size; + 8001ba6: 68fb ldr r3, [r7, #12] + 8001ba8: 222c movs r2, #44 ; 0x2c + 8001baa: 18ba adds r2, r7, r2 + 8001bac: 8812 ldrh r2, [r2, #0] + 8001bae: 855a strh r2, [r3, #42] ; 0x2a + hi2c->XferISR = NULL; + 8001bb0: 68fb ldr r3, [r7, #12] + 8001bb2: 2200 movs r2, #0 + 8001bb4: 635a str r2, [r3, #52] ; 0x34 + + /* Send Slave Address and Memory Address */ + if (I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) != HAL_OK) + 8001bb6: 1dbb adds r3, r7, #6 + 8001bb8: 881c ldrh r4, [r3, #0] + 8001bba: 2308 movs r3, #8 + 8001bbc: 18fb adds r3, r7, r3 + 8001bbe: 881a ldrh r2, [r3, #0] + 8001bc0: 230a movs r3, #10 + 8001bc2: 18fb adds r3, r7, r3 + 8001bc4: 8819 ldrh r1, [r3, #0] + 8001bc6: 68f8 ldr r0, [r7, #12] + 8001bc8: 697b ldr r3, [r7, #20] + 8001bca: 9301 str r3, [sp, #4] + 8001bcc: 6b3b ldr r3, [r7, #48] ; 0x30 + 8001bce: 9300 str r3, [sp, #0] + 8001bd0: 0023 movs r3, r4 + 8001bd2: f000 f8cb bl 8001d6c + 8001bd6: 1e03 subs r3, r0, #0 + 8001bd8: d005 beq.n 8001be6 + { + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + 8001bda: 68fb ldr r3, [r7, #12] + 8001bdc: 2240 movs r2, #64 ; 0x40 + 8001bde: 2100 movs r1, #0 + 8001be0: 5499 strb r1, [r3, r2] + return HAL_ERROR; + 8001be2: 2301 movs r3, #1 + 8001be4: e0b9 b.n 8001d5a + } + + /* Send Slave Address */ + /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + 8001be6: 68fb ldr r3, [r7, #12] + 8001be8: 8d5b ldrh r3, [r3, #42] ; 0x2a + 8001bea: b29b uxth r3, r3 + 8001bec: 2bff cmp r3, #255 ; 0xff + 8001bee: d911 bls.n 8001c14 + { + hi2c->XferSize = MAX_NBYTE_SIZE; + 8001bf0: 68fb ldr r3, [r7, #12] + 8001bf2: 22ff movs r2, #255 ; 0xff + 8001bf4: 851a strh r2, [r3, #40] ; 0x28 + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, + 8001bf6: 68fb ldr r3, [r7, #12] + 8001bf8: 8d1b ldrh r3, [r3, #40] ; 0x28 + 8001bfa: b2da uxtb r2, r3 + 8001bfc: 2380 movs r3, #128 ; 0x80 + 8001bfe: 045c lsls r4, r3, #17 + 8001c00: 230a movs r3, #10 + 8001c02: 18fb adds r3, r7, r3 + 8001c04: 8819 ldrh r1, [r3, #0] + 8001c06: 68f8 ldr r0, [r7, #12] + 8001c08: 4b56 ldr r3, [pc, #344] ; (8001d64 ) + 8001c0a: 9300 str r3, [sp, #0] + 8001c0c: 0023 movs r3, r4 + 8001c0e: f000 fad1 bl 80021b4 + 8001c12: e012 b.n 8001c3a + I2C_GENERATE_START_READ); + } + else + { + hi2c->XferSize = hi2c->XferCount; + 8001c14: 68fb ldr r3, [r7, #12] + 8001c16: 8d5b ldrh r3, [r3, #42] ; 0x2a + 8001c18: b29a uxth r2, r3 + 8001c1a: 68fb ldr r3, [r7, #12] + 8001c1c: 851a strh r2, [r3, #40] ; 0x28 + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + 8001c1e: 68fb ldr r3, [r7, #12] + 8001c20: 8d1b ldrh r3, [r3, #40] ; 0x28 + 8001c22: b2da uxtb r2, r3 + 8001c24: 2380 movs r3, #128 ; 0x80 + 8001c26: 049c lsls r4, r3, #18 + 8001c28: 230a movs r3, #10 + 8001c2a: 18fb adds r3, r7, r3 + 8001c2c: 8819 ldrh r1, [r3, #0] + 8001c2e: 68f8 ldr r0, [r7, #12] + 8001c30: 4b4c ldr r3, [pc, #304] ; (8001d64 ) + 8001c32: 9300 str r3, [sp, #0] + 8001c34: 0023 movs r3, r4 + 8001c36: f000 fabd bl 80021b4 + } + + do + { + /* Wait until RXNE flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_RXNE, RESET, Timeout, tickstart) != HAL_OK) + 8001c3a: 6b3a ldr r2, [r7, #48] ; 0x30 + 8001c3c: 68f8 ldr r0, [r7, #12] + 8001c3e: 697b ldr r3, [r7, #20] + 8001c40: 9300 str r3, [sp, #0] + 8001c42: 0013 movs r3, r2 + 8001c44: 2200 movs r2, #0 + 8001c46: 2104 movs r1, #4 + 8001c48: f000 f914 bl 8001e74 + 8001c4c: 1e03 subs r3, r0, #0 + 8001c4e: d001 beq.n 8001c54 + { + return HAL_ERROR; + 8001c50: 2301 movs r3, #1 + 8001c52: e082 b.n 8001d5a + } + + /* Read data from RXDR */ + *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; + 8001c54: 68fb ldr r3, [r7, #12] + 8001c56: 681b ldr r3, [r3, #0] + 8001c58: 6a5a ldr r2, [r3, #36] ; 0x24 + 8001c5a: 68fb ldr r3, [r7, #12] + 8001c5c: 6a5b ldr r3, [r3, #36] ; 0x24 + 8001c5e: b2d2 uxtb r2, r2 + 8001c60: 701a strb r2, [r3, #0] + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + 8001c62: 68fb ldr r3, [r7, #12] + 8001c64: 6a5b ldr r3, [r3, #36] ; 0x24 + 8001c66: 1c5a adds r2, r3, #1 + 8001c68: 68fb ldr r3, [r7, #12] + 8001c6a: 625a str r2, [r3, #36] ; 0x24 + + hi2c->XferSize--; + 8001c6c: 68fb ldr r3, [r7, #12] + 8001c6e: 8d1b ldrh r3, [r3, #40] ; 0x28 + 8001c70: 3b01 subs r3, #1 + 8001c72: b29a uxth r2, r3 + 8001c74: 68fb ldr r3, [r7, #12] + 8001c76: 851a strh r2, [r3, #40] ; 0x28 + hi2c->XferCount--; + 8001c78: 68fb ldr r3, [r7, #12] + 8001c7a: 8d5b ldrh r3, [r3, #42] ; 0x2a + 8001c7c: b29b uxth r3, r3 + 8001c7e: 3b01 subs r3, #1 + 8001c80: b29a uxth r2, r3 + 8001c82: 68fb ldr r3, [r7, #12] + 8001c84: 855a strh r2, [r3, #42] ; 0x2a + + if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) + 8001c86: 68fb ldr r3, [r7, #12] + 8001c88: 8d5b ldrh r3, [r3, #42] ; 0x2a + 8001c8a: b29b uxth r3, r3 + 8001c8c: 2b00 cmp r3, #0 + 8001c8e: d03a beq.n 8001d06 + 8001c90: 68fb ldr r3, [r7, #12] + 8001c92: 8d1b ldrh r3, [r3, #40] ; 0x28 + 8001c94: 2b00 cmp r3, #0 + 8001c96: d136 bne.n 8001d06 + { + /* Wait until TCR flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) + 8001c98: 6b3a ldr r2, [r7, #48] ; 0x30 + 8001c9a: 68f8 ldr r0, [r7, #12] + 8001c9c: 697b ldr r3, [r7, #20] + 8001c9e: 9300 str r3, [sp, #0] + 8001ca0: 0013 movs r3, r2 + 8001ca2: 2200 movs r2, #0 + 8001ca4: 2180 movs r1, #128 ; 0x80 + 8001ca6: f000 f8e5 bl 8001e74 + 8001caa: 1e03 subs r3, r0, #0 + 8001cac: d001 beq.n 8001cb2 + { + return HAL_ERROR; + 8001cae: 2301 movs r3, #1 + 8001cb0: e053 b.n 8001d5a + } + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + 8001cb2: 68fb ldr r3, [r7, #12] + 8001cb4: 8d5b ldrh r3, [r3, #42] ; 0x2a + 8001cb6: b29b uxth r3, r3 + 8001cb8: 2bff cmp r3, #255 ; 0xff + 8001cba: d911 bls.n 8001ce0 + { + hi2c->XferSize = MAX_NBYTE_SIZE; + 8001cbc: 68fb ldr r3, [r7, #12] + 8001cbe: 22ff movs r2, #255 ; 0xff + 8001cc0: 851a strh r2, [r3, #40] ; 0x28 + I2C_TransferConfig(hi2c, DevAddress, (uint8_t) hi2c->XferSize, I2C_RELOAD_MODE, + 8001cc2: 68fb ldr r3, [r7, #12] + 8001cc4: 8d1b ldrh r3, [r3, #40] ; 0x28 + 8001cc6: b2da uxtb r2, r3 + 8001cc8: 2380 movs r3, #128 ; 0x80 + 8001cca: 045c lsls r4, r3, #17 + 8001ccc: 230a movs r3, #10 + 8001cce: 18fb adds r3, r7, r3 + 8001cd0: 8819 ldrh r1, [r3, #0] + 8001cd2: 68f8 ldr r0, [r7, #12] + 8001cd4: 2300 movs r3, #0 + 8001cd6: 9300 str r3, [sp, #0] + 8001cd8: 0023 movs r3, r4 + 8001cda: f000 fa6b bl 80021b4 + 8001cde: e012 b.n 8001d06 + I2C_NO_STARTSTOP); + } + else + { + hi2c->XferSize = hi2c->XferCount; + 8001ce0: 68fb ldr r3, [r7, #12] + 8001ce2: 8d5b ldrh r3, [r3, #42] ; 0x2a + 8001ce4: b29a uxth r2, r3 + 8001ce6: 68fb ldr r3, [r7, #12] + 8001ce8: 851a strh r2, [r3, #40] ; 0x28 + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + 8001cea: 68fb ldr r3, [r7, #12] + 8001cec: 8d1b ldrh r3, [r3, #40] ; 0x28 + 8001cee: b2da uxtb r2, r3 + 8001cf0: 2380 movs r3, #128 ; 0x80 + 8001cf2: 049c lsls r4, r3, #18 + 8001cf4: 230a movs r3, #10 + 8001cf6: 18fb adds r3, r7, r3 + 8001cf8: 8819 ldrh r1, [r3, #0] + 8001cfa: 68f8 ldr r0, [r7, #12] + 8001cfc: 2300 movs r3, #0 + 8001cfe: 9300 str r3, [sp, #0] + 8001d00: 0023 movs r3, r4 + 8001d02: f000 fa57 bl 80021b4 + I2C_NO_STARTSTOP); + } + } + } while (hi2c->XferCount > 0U); + 8001d06: 68fb ldr r3, [r7, #12] + 8001d08: 8d5b ldrh r3, [r3, #42] ; 0x2a + 8001d0a: b29b uxth r3, r3 + 8001d0c: 2b00 cmp r3, #0 + 8001d0e: d194 bne.n 8001c3a + + /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */ + /* Wait until STOPF flag is reset */ + if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + 8001d10: 697a ldr r2, [r7, #20] + 8001d12: 6b39 ldr r1, [r7, #48] ; 0x30 + 8001d14: 68fb ldr r3, [r7, #12] + 8001d16: 0018 movs r0, r3 + 8001d18: f000 f92a bl 8001f70 + 8001d1c: 1e03 subs r3, r0, #0 + 8001d1e: d001 beq.n 8001d24 + { + return HAL_ERROR; + 8001d20: 2301 movs r3, #1 + 8001d22: e01a b.n 8001d5a + } + + /* Clear STOP Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + 8001d24: 68fb ldr r3, [r7, #12] + 8001d26: 681b ldr r3, [r3, #0] + 8001d28: 2220 movs r2, #32 + 8001d2a: 61da str r2, [r3, #28] + + /* Clear Configuration Register 2 */ + I2C_RESET_CR2(hi2c); + 8001d2c: 68fb ldr r3, [r7, #12] + 8001d2e: 681b ldr r3, [r3, #0] + 8001d30: 685a ldr r2, [r3, #4] + 8001d32: 68fb ldr r3, [r7, #12] + 8001d34: 681b ldr r3, [r3, #0] + 8001d36: 490c ldr r1, [pc, #48] ; (8001d68 ) + 8001d38: 400a ands r2, r1 + 8001d3a: 605a str r2, [r3, #4] + + hi2c->State = HAL_I2C_STATE_READY; + 8001d3c: 68fb ldr r3, [r7, #12] + 8001d3e: 2241 movs r2, #65 ; 0x41 + 8001d40: 2120 movs r1, #32 + 8001d42: 5499 strb r1, [r3, r2] + hi2c->Mode = HAL_I2C_MODE_NONE; + 8001d44: 68fb ldr r3, [r7, #12] + 8001d46: 2242 movs r2, #66 ; 0x42 + 8001d48: 2100 movs r1, #0 + 8001d4a: 5499 strb r1, [r3, r2] + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + 8001d4c: 68fb ldr r3, [r7, #12] + 8001d4e: 2240 movs r2, #64 ; 0x40 + 8001d50: 2100 movs r1, #0 + 8001d52: 5499 strb r1, [r3, r2] + + return HAL_OK; + 8001d54: 2300 movs r3, #0 + 8001d56: e000 b.n 8001d5a + } + else + { + return HAL_BUSY; + 8001d58: 2302 movs r3, #2 + } +} + 8001d5a: 0018 movs r0, r3 + 8001d5c: 46bd mov sp, r7 + 8001d5e: b007 add sp, #28 + 8001d60: bd90 pop {r4, r7, pc} + 8001d62: 46c0 nop ; (mov r8, r8) + 8001d64: 80002400 .word 0x80002400 + 8001d68: fe00e800 .word 0xfe00e800 + +08001d6c : + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_RequestMemoryRead(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, + uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout, + uint32_t Tickstart) +{ + 8001d6c: b5b0 push {r4, r5, r7, lr} + 8001d6e: b086 sub sp, #24 + 8001d70: af02 add r7, sp, #8 + 8001d72: 60f8 str r0, [r7, #12] + 8001d74: 000c movs r4, r1 + 8001d76: 0010 movs r0, r2 + 8001d78: 0019 movs r1, r3 + 8001d7a: 250a movs r5, #10 + 8001d7c: 197b adds r3, r7, r5 + 8001d7e: 1c22 adds r2, r4, #0 + 8001d80: 801a strh r2, [r3, #0] + 8001d82: 2308 movs r3, #8 + 8001d84: 18fb adds r3, r7, r3 + 8001d86: 1c02 adds r2, r0, #0 + 8001d88: 801a strh r2, [r3, #0] + 8001d8a: 1dbb adds r3, r7, #6 + 8001d8c: 1c0a adds r2, r1, #0 + 8001d8e: 801a strh r2, [r3, #0] + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_WRITE); + 8001d90: 1dbb adds r3, r7, #6 + 8001d92: 881b ldrh r3, [r3, #0] + 8001d94: b2da uxtb r2, r3 + 8001d96: 197b adds r3, r7, r5 + 8001d98: 8819 ldrh r1, [r3, #0] + 8001d9a: 68f8 ldr r0, [r7, #12] + 8001d9c: 4b23 ldr r3, [pc, #140] ; (8001e2c ) + 8001d9e: 9300 str r3, [sp, #0] + 8001da0: 2300 movs r3, #0 + 8001da2: f000 fa07 bl 80021b4 + + /* Wait until TXIS flag is set */ + if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) + 8001da6: 6a7a ldr r2, [r7, #36] ; 0x24 + 8001da8: 6a39 ldr r1, [r7, #32] + 8001daa: 68fb ldr r3, [r7, #12] + 8001dac: 0018 movs r0, r3 + 8001dae: f000 f8a0 bl 8001ef2 + 8001db2: 1e03 subs r3, r0, #0 + 8001db4: d001 beq.n 8001dba + { + return HAL_ERROR; + 8001db6: 2301 movs r3, #1 + 8001db8: e033 b.n 8001e22 + } + + /* If Memory address size is 8Bit */ + if (MemAddSize == I2C_MEMADD_SIZE_8BIT) + 8001dba: 1dbb adds r3, r7, #6 + 8001dbc: 881b ldrh r3, [r3, #0] + 8001dbe: 2b01 cmp r3, #1 + 8001dc0: d107 bne.n 8001dd2 + { + /* Send Memory Address */ + hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); + 8001dc2: 2308 movs r3, #8 + 8001dc4: 18fb adds r3, r7, r3 + 8001dc6: 881b ldrh r3, [r3, #0] + 8001dc8: b2da uxtb r2, r3 + 8001dca: 68fb ldr r3, [r7, #12] + 8001dcc: 681b ldr r3, [r3, #0] + 8001dce: 629a str r2, [r3, #40] ; 0x28 + 8001dd0: e019 b.n 8001e06 + } + /* If Memory address size is 16Bit */ + else + { + /* Send MSB of Memory Address */ + hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); + 8001dd2: 2308 movs r3, #8 + 8001dd4: 18fb adds r3, r7, r3 + 8001dd6: 881b ldrh r3, [r3, #0] + 8001dd8: 0a1b lsrs r3, r3, #8 + 8001dda: b29b uxth r3, r3 + 8001ddc: b2da uxtb r2, r3 + 8001dde: 68fb ldr r3, [r7, #12] + 8001de0: 681b ldr r3, [r3, #0] + 8001de2: 629a str r2, [r3, #40] ; 0x28 + + /* Wait until TXIS flag is set */ + if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) + 8001de4: 6a7a ldr r2, [r7, #36] ; 0x24 + 8001de6: 6a39 ldr r1, [r7, #32] + 8001de8: 68fb ldr r3, [r7, #12] + 8001dea: 0018 movs r0, r3 + 8001dec: f000 f881 bl 8001ef2 + 8001df0: 1e03 subs r3, r0, #0 + 8001df2: d001 beq.n 8001df8 + { + return HAL_ERROR; + 8001df4: 2301 movs r3, #1 + 8001df6: e014 b.n 8001e22 + } + + /* Send LSB of Memory Address */ + hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); + 8001df8: 2308 movs r3, #8 + 8001dfa: 18fb adds r3, r7, r3 + 8001dfc: 881b ldrh r3, [r3, #0] + 8001dfe: b2da uxtb r2, r3 + 8001e00: 68fb ldr r3, [r7, #12] + 8001e02: 681b ldr r3, [r3, #0] + 8001e04: 629a str r2, [r3, #40] ; 0x28 + } + + /* Wait until TC flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TC, RESET, Timeout, Tickstart) != HAL_OK) + 8001e06: 6a3a ldr r2, [r7, #32] + 8001e08: 68f8 ldr r0, [r7, #12] + 8001e0a: 6a7b ldr r3, [r7, #36] ; 0x24 + 8001e0c: 9300 str r3, [sp, #0] + 8001e0e: 0013 movs r3, r2 + 8001e10: 2200 movs r2, #0 + 8001e12: 2140 movs r1, #64 ; 0x40 + 8001e14: f000 f82e bl 8001e74 + 8001e18: 1e03 subs r3, r0, #0 + 8001e1a: d001 beq.n 8001e20 + { + return HAL_ERROR; + 8001e1c: 2301 movs r3, #1 + 8001e1e: e000 b.n 8001e22 + } + + return HAL_OK; + 8001e20: 2300 movs r3, #0 +} + 8001e22: 0018 movs r0, r3 + 8001e24: 46bd mov sp, r7 + 8001e26: b004 add sp, #16 + 8001e28: bdb0 pop {r4, r5, r7, pc} + 8001e2a: 46c0 nop ; (mov r8, r8) + 8001e2c: 80002000 .word 0x80002000 + +08001e30 : + * @brief I2C Tx data register flush process. + * @param hi2c I2C handle. + * @retval None + */ +static void I2C_Flush_TXDR(I2C_HandleTypeDef *hi2c) +{ + 8001e30: b580 push {r7, lr} + 8001e32: b082 sub sp, #8 + 8001e34: af00 add r7, sp, #0 + 8001e36: 6078 str r0, [r7, #4] + /* If a pending TXIS flag is set */ + /* Write a dummy data in TXDR to clear it */ + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) != RESET) + 8001e38: 687b ldr r3, [r7, #4] + 8001e3a: 681b ldr r3, [r3, #0] + 8001e3c: 699b ldr r3, [r3, #24] + 8001e3e: 2202 movs r2, #2 + 8001e40: 4013 ands r3, r2 + 8001e42: 2b02 cmp r3, #2 + 8001e44: d103 bne.n 8001e4e + { + hi2c->Instance->TXDR = 0x00U; + 8001e46: 687b ldr r3, [r7, #4] + 8001e48: 681b ldr r3, [r3, #0] + 8001e4a: 2200 movs r2, #0 + 8001e4c: 629a str r2, [r3, #40] ; 0x28 + } + + /* Flush TX register if not empty */ + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXE) == RESET) + 8001e4e: 687b ldr r3, [r7, #4] + 8001e50: 681b ldr r3, [r3, #0] + 8001e52: 699b ldr r3, [r3, #24] + 8001e54: 2201 movs r2, #1 + 8001e56: 4013 ands r3, r2 + 8001e58: 2b01 cmp r3, #1 + 8001e5a: d007 beq.n 8001e6c + { + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_TXE); + 8001e5c: 687b ldr r3, [r7, #4] + 8001e5e: 681b ldr r3, [r3, #0] + 8001e60: 699a ldr r2, [r3, #24] + 8001e62: 687b ldr r3, [r7, #4] + 8001e64: 681b ldr r3, [r3, #0] + 8001e66: 2101 movs r1, #1 + 8001e68: 430a orrs r2, r1 + 8001e6a: 619a str r2, [r3, #24] + } +} + 8001e6c: 46c0 nop ; (mov r8, r8) + 8001e6e: 46bd mov sp, r7 + 8001e70: b002 add sp, #8 + 8001e72: bd80 pop {r7, pc} + +08001e74 : + * @param Tickstart Tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_WaitOnFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Flag, FlagStatus Status, + uint32_t Timeout, uint32_t Tickstart) +{ + 8001e74: b580 push {r7, lr} + 8001e76: b084 sub sp, #16 + 8001e78: af00 add r7, sp, #0 + 8001e7a: 60f8 str r0, [r7, #12] + 8001e7c: 60b9 str r1, [r7, #8] + 8001e7e: 603b str r3, [r7, #0] + 8001e80: 1dfb adds r3, r7, #7 + 8001e82: 701a strb r2, [r3, #0] + while (__HAL_I2C_GET_FLAG(hi2c, Flag) == Status) + 8001e84: e021 b.n 8001eca + { + /* Check for the Timeout */ + if (Timeout != HAL_MAX_DELAY) + 8001e86: 683b ldr r3, [r7, #0] + 8001e88: 3301 adds r3, #1 + 8001e8a: d01e beq.n 8001eca + { + if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) + 8001e8c: f7ff f944 bl 8001118 + 8001e90: 0002 movs r2, r0 + 8001e92: 69bb ldr r3, [r7, #24] + 8001e94: 1ad3 subs r3, r2, r3 + 8001e96: 683a ldr r2, [r7, #0] + 8001e98: 429a cmp r2, r3 + 8001e9a: d302 bcc.n 8001ea2 + 8001e9c: 683b ldr r3, [r7, #0] + 8001e9e: 2b00 cmp r3, #0 + 8001ea0: d113 bne.n 8001eca + { + hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; + 8001ea2: 68fb ldr r3, [r7, #12] + 8001ea4: 6c5b ldr r3, [r3, #68] ; 0x44 + 8001ea6: 2220 movs r2, #32 + 8001ea8: 431a orrs r2, r3 + 8001eaa: 68fb ldr r3, [r7, #12] + 8001eac: 645a str r2, [r3, #68] ; 0x44 + hi2c->State = HAL_I2C_STATE_READY; + 8001eae: 68fb ldr r3, [r7, #12] + 8001eb0: 2241 movs r2, #65 ; 0x41 + 8001eb2: 2120 movs r1, #32 + 8001eb4: 5499 strb r1, [r3, r2] + hi2c->Mode = HAL_I2C_MODE_NONE; + 8001eb6: 68fb ldr r3, [r7, #12] + 8001eb8: 2242 movs r2, #66 ; 0x42 + 8001eba: 2100 movs r1, #0 + 8001ebc: 5499 strb r1, [r3, r2] + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + 8001ebe: 68fb ldr r3, [r7, #12] + 8001ec0: 2240 movs r2, #64 ; 0x40 + 8001ec2: 2100 movs r1, #0 + 8001ec4: 5499 strb r1, [r3, r2] + return HAL_ERROR; + 8001ec6: 2301 movs r3, #1 + 8001ec8: e00f b.n 8001eea + while (__HAL_I2C_GET_FLAG(hi2c, Flag) == Status) + 8001eca: 68fb ldr r3, [r7, #12] + 8001ecc: 681b ldr r3, [r3, #0] + 8001ece: 699b ldr r3, [r3, #24] + 8001ed0: 68ba ldr r2, [r7, #8] + 8001ed2: 4013 ands r3, r2 + 8001ed4: 68ba ldr r2, [r7, #8] + 8001ed6: 1ad3 subs r3, r2, r3 + 8001ed8: 425a negs r2, r3 + 8001eda: 4153 adcs r3, r2 + 8001edc: b2db uxtb r3, r3 + 8001ede: 001a movs r2, r3 + 8001ee0: 1dfb adds r3, r7, #7 + 8001ee2: 781b ldrb r3, [r3, #0] + 8001ee4: 429a cmp r2, r3 + 8001ee6: d0ce beq.n 8001e86 + } + } + } + return HAL_OK; + 8001ee8: 2300 movs r3, #0 +} + 8001eea: 0018 movs r0, r3 + 8001eec: 46bd mov sp, r7 + 8001eee: b004 add sp, #16 + 8001ef0: bd80 pop {r7, pc} + +08001ef2 : + * @param Tickstart Tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_WaitOnTXISFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, + uint32_t Tickstart) +{ + 8001ef2: b580 push {r7, lr} + 8001ef4: b084 sub sp, #16 + 8001ef6: af00 add r7, sp, #0 + 8001ef8: 60f8 str r0, [r7, #12] + 8001efa: 60b9 str r1, [r7, #8] + 8001efc: 607a str r2, [r7, #4] + while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) == RESET) + 8001efe: e02b b.n 8001f58 + { + /* Check if a NACK is detected */ + if (I2C_IsAcknowledgeFailed(hi2c, Timeout, Tickstart) != HAL_OK) + 8001f00: 687a ldr r2, [r7, #4] + 8001f02: 68b9 ldr r1, [r7, #8] + 8001f04: 68fb ldr r3, [r7, #12] + 8001f06: 0018 movs r0, r3 + 8001f08: f000 f8da bl 80020c0 + 8001f0c: 1e03 subs r3, r0, #0 + 8001f0e: d001 beq.n 8001f14 + { + return HAL_ERROR; + 8001f10: 2301 movs r3, #1 + 8001f12: e029 b.n 8001f68 + } + + /* Check for the Timeout */ + if (Timeout != HAL_MAX_DELAY) + 8001f14: 68bb ldr r3, [r7, #8] + 8001f16: 3301 adds r3, #1 + 8001f18: d01e beq.n 8001f58 + { + if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) + 8001f1a: f7ff f8fd bl 8001118 + 8001f1e: 0002 movs r2, r0 + 8001f20: 687b ldr r3, [r7, #4] + 8001f22: 1ad3 subs r3, r2, r3 + 8001f24: 68ba ldr r2, [r7, #8] + 8001f26: 429a cmp r2, r3 + 8001f28: d302 bcc.n 8001f30 + 8001f2a: 68bb ldr r3, [r7, #8] + 8001f2c: 2b00 cmp r3, #0 + 8001f2e: d113 bne.n 8001f58 + { + hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; + 8001f30: 68fb ldr r3, [r7, #12] + 8001f32: 6c5b ldr r3, [r3, #68] ; 0x44 + 8001f34: 2220 movs r2, #32 + 8001f36: 431a orrs r2, r3 + 8001f38: 68fb ldr r3, [r7, #12] + 8001f3a: 645a str r2, [r3, #68] ; 0x44 + hi2c->State = HAL_I2C_STATE_READY; + 8001f3c: 68fb ldr r3, [r7, #12] + 8001f3e: 2241 movs r2, #65 ; 0x41 + 8001f40: 2120 movs r1, #32 + 8001f42: 5499 strb r1, [r3, r2] + hi2c->Mode = HAL_I2C_MODE_NONE; + 8001f44: 68fb ldr r3, [r7, #12] + 8001f46: 2242 movs r2, #66 ; 0x42 + 8001f48: 2100 movs r1, #0 + 8001f4a: 5499 strb r1, [r3, r2] + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + 8001f4c: 68fb ldr r3, [r7, #12] + 8001f4e: 2240 movs r2, #64 ; 0x40 + 8001f50: 2100 movs r1, #0 + 8001f52: 5499 strb r1, [r3, r2] + + return HAL_ERROR; + 8001f54: 2301 movs r3, #1 + 8001f56: e007 b.n 8001f68 + while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) == RESET) + 8001f58: 68fb ldr r3, [r7, #12] + 8001f5a: 681b ldr r3, [r3, #0] + 8001f5c: 699b ldr r3, [r3, #24] + 8001f5e: 2202 movs r2, #2 + 8001f60: 4013 ands r3, r2 + 8001f62: 2b02 cmp r3, #2 + 8001f64: d1cc bne.n 8001f00 + } + } + } + return HAL_OK; + 8001f66: 2300 movs r3, #0 +} + 8001f68: 0018 movs r0, r3 + 8001f6a: 46bd mov sp, r7 + 8001f6c: b004 add sp, #16 + 8001f6e: bd80 pop {r7, pc} + +08001f70 : + * @param Tickstart Tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_WaitOnSTOPFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, + uint32_t Tickstart) +{ + 8001f70: b580 push {r7, lr} + 8001f72: b084 sub sp, #16 + 8001f74: af00 add r7, sp, #0 + 8001f76: 60f8 str r0, [r7, #12] + 8001f78: 60b9 str r1, [r7, #8] + 8001f7a: 607a str r2, [r7, #4] + while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) + 8001f7c: e028 b.n 8001fd0 + { + /* Check if a NACK is detected */ + if (I2C_IsAcknowledgeFailed(hi2c, Timeout, Tickstart) != HAL_OK) + 8001f7e: 687a ldr r2, [r7, #4] + 8001f80: 68b9 ldr r1, [r7, #8] + 8001f82: 68fb ldr r3, [r7, #12] + 8001f84: 0018 movs r0, r3 + 8001f86: f000 f89b bl 80020c0 + 8001f8a: 1e03 subs r3, r0, #0 + 8001f8c: d001 beq.n 8001f92 + { + return HAL_ERROR; + 8001f8e: 2301 movs r3, #1 + 8001f90: e026 b.n 8001fe0 + } + + /* Check for the Timeout */ + if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) + 8001f92: f7ff f8c1 bl 8001118 + 8001f96: 0002 movs r2, r0 + 8001f98: 687b ldr r3, [r7, #4] + 8001f9a: 1ad3 subs r3, r2, r3 + 8001f9c: 68ba ldr r2, [r7, #8] + 8001f9e: 429a cmp r2, r3 + 8001fa0: d302 bcc.n 8001fa8 + 8001fa2: 68bb ldr r3, [r7, #8] + 8001fa4: 2b00 cmp r3, #0 + 8001fa6: d113 bne.n 8001fd0 + { + hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; + 8001fa8: 68fb ldr r3, [r7, #12] + 8001faa: 6c5b ldr r3, [r3, #68] ; 0x44 + 8001fac: 2220 movs r2, #32 + 8001fae: 431a orrs r2, r3 + 8001fb0: 68fb ldr r3, [r7, #12] + 8001fb2: 645a str r2, [r3, #68] ; 0x44 + hi2c->State = HAL_I2C_STATE_READY; + 8001fb4: 68fb ldr r3, [r7, #12] + 8001fb6: 2241 movs r2, #65 ; 0x41 + 8001fb8: 2120 movs r1, #32 + 8001fba: 5499 strb r1, [r3, r2] + hi2c->Mode = HAL_I2C_MODE_NONE; + 8001fbc: 68fb ldr r3, [r7, #12] + 8001fbe: 2242 movs r2, #66 ; 0x42 + 8001fc0: 2100 movs r1, #0 + 8001fc2: 5499 strb r1, [r3, r2] + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + 8001fc4: 68fb ldr r3, [r7, #12] + 8001fc6: 2240 movs r2, #64 ; 0x40 + 8001fc8: 2100 movs r1, #0 + 8001fca: 5499 strb r1, [r3, r2] + + return HAL_ERROR; + 8001fcc: 2301 movs r3, #1 + 8001fce: e007 b.n 8001fe0 + while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) + 8001fd0: 68fb ldr r3, [r7, #12] + 8001fd2: 681b ldr r3, [r3, #0] + 8001fd4: 699b ldr r3, [r3, #24] + 8001fd6: 2220 movs r2, #32 + 8001fd8: 4013 ands r3, r2 + 8001fda: 2b20 cmp r3, #32 + 8001fdc: d1cf bne.n 8001f7e + } + } + return HAL_OK; + 8001fde: 2300 movs r3, #0 +} + 8001fe0: 0018 movs r0, r3 + 8001fe2: 46bd mov sp, r7 + 8001fe4: b004 add sp, #16 + 8001fe6: bd80 pop {r7, pc} + +08001fe8 : + * @param Tickstart Tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_WaitOnRXNEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, + uint32_t Tickstart) +{ + 8001fe8: b580 push {r7, lr} + 8001fea: b084 sub sp, #16 + 8001fec: af00 add r7, sp, #0 + 8001fee: 60f8 str r0, [r7, #12] + 8001ff0: 60b9 str r1, [r7, #8] + 8001ff2: 607a str r2, [r7, #4] + while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == RESET) + 8001ff4: e055 b.n 80020a2 + { + /* Check if a NACK is detected */ + if (I2C_IsAcknowledgeFailed(hi2c, Timeout, Tickstart) != HAL_OK) + 8001ff6: 687a ldr r2, [r7, #4] + 8001ff8: 68b9 ldr r1, [r7, #8] + 8001ffa: 68fb ldr r3, [r7, #12] + 8001ffc: 0018 movs r0, r3 + 8001ffe: f000 f85f bl 80020c0 + 8002002: 1e03 subs r3, r0, #0 + 8002004: d001 beq.n 800200a + { + return HAL_ERROR; + 8002006: 2301 movs r3, #1 + 8002008: e053 b.n 80020b2 + } + + /* Check if a STOPF is detected */ + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == SET) + 800200a: 68fb ldr r3, [r7, #12] + 800200c: 681b ldr r3, [r3, #0] + 800200e: 699b ldr r3, [r3, #24] + 8002010: 2220 movs r2, #32 + 8002012: 4013 ands r3, r2 + 8002014: 2b20 cmp r3, #32 + 8002016: d129 bne.n 800206c + { + /* Check if an RXNE is pending */ + /* Store Last receive data if any */ + if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == SET) && (hi2c->XferSize > 0U)) + 8002018: 68fb ldr r3, [r7, #12] + 800201a: 681b ldr r3, [r3, #0] + 800201c: 699b ldr r3, [r3, #24] + 800201e: 2204 movs r2, #4 + 8002020: 4013 ands r3, r2 + 8002022: 2b04 cmp r3, #4 + 8002024: d105 bne.n 8002032 + 8002026: 68fb ldr r3, [r7, #12] + 8002028: 8d1b ldrh r3, [r3, #40] ; 0x28 + 800202a: 2b00 cmp r3, #0 + 800202c: d001 beq.n 8002032 + { + /* Return HAL_OK */ + /* The Reading of data from RXDR will be done in caller function */ + return HAL_OK; + 800202e: 2300 movs r3, #0 + 8002030: e03f b.n 80020b2 + } + else + { + /* Clear STOP Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + 8002032: 68fb ldr r3, [r7, #12] + 8002034: 681b ldr r3, [r3, #0] + 8002036: 2220 movs r2, #32 + 8002038: 61da str r2, [r3, #28] + + /* Clear Configuration Register 2 */ + I2C_RESET_CR2(hi2c); + 800203a: 68fb ldr r3, [r7, #12] + 800203c: 681b ldr r3, [r3, #0] + 800203e: 685a ldr r2, [r3, #4] + 8002040: 68fb ldr r3, [r7, #12] + 8002042: 681b ldr r3, [r3, #0] + 8002044: 491d ldr r1, [pc, #116] ; (80020bc ) + 8002046: 400a ands r2, r1 + 8002048: 605a str r2, [r3, #4] + + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 800204a: 68fb ldr r3, [r7, #12] + 800204c: 2200 movs r2, #0 + 800204e: 645a str r2, [r3, #68] ; 0x44 + hi2c->State = HAL_I2C_STATE_READY; + 8002050: 68fb ldr r3, [r7, #12] + 8002052: 2241 movs r2, #65 ; 0x41 + 8002054: 2120 movs r1, #32 + 8002056: 5499 strb r1, [r3, r2] + hi2c->Mode = HAL_I2C_MODE_NONE; + 8002058: 68fb ldr r3, [r7, #12] + 800205a: 2242 movs r2, #66 ; 0x42 + 800205c: 2100 movs r1, #0 + 800205e: 5499 strb r1, [r3, r2] + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + 8002060: 68fb ldr r3, [r7, #12] + 8002062: 2240 movs r2, #64 ; 0x40 + 8002064: 2100 movs r1, #0 + 8002066: 5499 strb r1, [r3, r2] + + return HAL_ERROR; + 8002068: 2301 movs r3, #1 + 800206a: e022 b.n 80020b2 + } + } + + /* Check for the Timeout */ + if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) + 800206c: f7ff f854 bl 8001118 + 8002070: 0002 movs r2, r0 + 8002072: 687b ldr r3, [r7, #4] + 8002074: 1ad3 subs r3, r2, r3 + 8002076: 68ba ldr r2, [r7, #8] + 8002078: 429a cmp r2, r3 + 800207a: d302 bcc.n 8002082 + 800207c: 68bb ldr r3, [r7, #8] + 800207e: 2b00 cmp r3, #0 + 8002080: d10f bne.n 80020a2 + { + hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; + 8002082: 68fb ldr r3, [r7, #12] + 8002084: 6c5b ldr r3, [r3, #68] ; 0x44 + 8002086: 2220 movs r2, #32 + 8002088: 431a orrs r2, r3 + 800208a: 68fb ldr r3, [r7, #12] + 800208c: 645a str r2, [r3, #68] ; 0x44 + hi2c->State = HAL_I2C_STATE_READY; + 800208e: 68fb ldr r3, [r7, #12] + 8002090: 2241 movs r2, #65 ; 0x41 + 8002092: 2120 movs r1, #32 + 8002094: 5499 strb r1, [r3, r2] + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + 8002096: 68fb ldr r3, [r7, #12] + 8002098: 2240 movs r2, #64 ; 0x40 + 800209a: 2100 movs r1, #0 + 800209c: 5499 strb r1, [r3, r2] + + return HAL_ERROR; + 800209e: 2301 movs r3, #1 + 80020a0: e007 b.n 80020b2 + while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == RESET) + 80020a2: 68fb ldr r3, [r7, #12] + 80020a4: 681b ldr r3, [r3, #0] + 80020a6: 699b ldr r3, [r3, #24] + 80020a8: 2204 movs r2, #4 + 80020aa: 4013 ands r3, r2 + 80020ac: 2b04 cmp r3, #4 + 80020ae: d1a2 bne.n 8001ff6 + } + } + return HAL_OK; + 80020b0: 2300 movs r3, #0 +} + 80020b2: 0018 movs r0, r3 + 80020b4: 46bd mov sp, r7 + 80020b6: b004 add sp, #16 + 80020b8: bd80 pop {r7, pc} + 80020ba: 46c0 nop ; (mov r8, r8) + 80020bc: fe00e800 .word 0xfe00e800 + +080020c0 : + * @param Timeout Timeout duration + * @param Tickstart Tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_IsAcknowledgeFailed(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Tickstart) +{ + 80020c0: b580 push {r7, lr} + 80020c2: b084 sub sp, #16 + 80020c4: af00 add r7, sp, #0 + 80020c6: 60f8 str r0, [r7, #12] + 80020c8: 60b9 str r1, [r7, #8] + 80020ca: 607a str r2, [r7, #4] + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == SET) + 80020cc: 68fb ldr r3, [r7, #12] + 80020ce: 681b ldr r3, [r3, #0] + 80020d0: 699b ldr r3, [r3, #24] + 80020d2: 2210 movs r2, #16 + 80020d4: 4013 ands r3, r2 + 80020d6: 2b10 cmp r3, #16 + 80020d8: d164 bne.n 80021a4 + { + /* In case of Soft End condition, generate the STOP condition */ + if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) + 80020da: 68fb ldr r3, [r7, #12] + 80020dc: 681b ldr r3, [r3, #0] + 80020de: 685a ldr r2, [r3, #4] + 80020e0: 2380 movs r3, #128 ; 0x80 + 80020e2: 049b lsls r3, r3, #18 + 80020e4: 401a ands r2, r3 + 80020e6: 2380 movs r3, #128 ; 0x80 + 80020e8: 049b lsls r3, r3, #18 + 80020ea: 429a cmp r2, r3 + 80020ec: d02b beq.n 8002146 + { + /* Generate Stop */ + hi2c->Instance->CR2 |= I2C_CR2_STOP; + 80020ee: 68fb ldr r3, [r7, #12] + 80020f0: 681b ldr r3, [r3, #0] + 80020f2: 685a ldr r2, [r3, #4] + 80020f4: 68fb ldr r3, [r7, #12] + 80020f6: 681b ldr r3, [r3, #0] + 80020f8: 2180 movs r1, #128 ; 0x80 + 80020fa: 01c9 lsls r1, r1, #7 + 80020fc: 430a orrs r2, r1 + 80020fe: 605a str r2, [r3, #4] + } + /* Wait until STOP Flag is reset */ + /* AutoEnd should be initiate after AF */ + while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) + 8002100: e021 b.n 8002146 + { + /* Check for the Timeout */ + if (Timeout != HAL_MAX_DELAY) + 8002102: 68bb ldr r3, [r7, #8] + 8002104: 3301 adds r3, #1 + 8002106: d01e beq.n 8002146 + { + if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) + 8002108: f7ff f806 bl 8001118 + 800210c: 0002 movs r2, r0 + 800210e: 687b ldr r3, [r7, #4] + 8002110: 1ad3 subs r3, r2, r3 + 8002112: 68ba ldr r2, [r7, #8] + 8002114: 429a cmp r2, r3 + 8002116: d302 bcc.n 800211e + 8002118: 68bb ldr r3, [r7, #8] + 800211a: 2b00 cmp r3, #0 + 800211c: d113 bne.n 8002146 + { + hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; + 800211e: 68fb ldr r3, [r7, #12] + 8002120: 6c5b ldr r3, [r3, #68] ; 0x44 + 8002122: 2220 movs r2, #32 + 8002124: 431a orrs r2, r3 + 8002126: 68fb ldr r3, [r7, #12] + 8002128: 645a str r2, [r3, #68] ; 0x44 + hi2c->State = HAL_I2C_STATE_READY; + 800212a: 68fb ldr r3, [r7, #12] + 800212c: 2241 movs r2, #65 ; 0x41 + 800212e: 2120 movs r1, #32 + 8002130: 5499 strb r1, [r3, r2] + hi2c->Mode = HAL_I2C_MODE_NONE; + 8002132: 68fb ldr r3, [r7, #12] + 8002134: 2242 movs r2, #66 ; 0x42 + 8002136: 2100 movs r1, #0 + 8002138: 5499 strb r1, [r3, r2] + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + 800213a: 68fb ldr r3, [r7, #12] + 800213c: 2240 movs r2, #64 ; 0x40 + 800213e: 2100 movs r1, #0 + 8002140: 5499 strb r1, [r3, r2] + + return HAL_ERROR; + 8002142: 2301 movs r3, #1 + 8002144: e02f b.n 80021a6 + while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) + 8002146: 68fb ldr r3, [r7, #12] + 8002148: 681b ldr r3, [r3, #0] + 800214a: 699b ldr r3, [r3, #24] + 800214c: 2220 movs r2, #32 + 800214e: 4013 ands r3, r2 + 8002150: 2b20 cmp r3, #32 + 8002152: d1d6 bne.n 8002102 + } + } + } + + /* Clear NACKF Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + 8002154: 68fb ldr r3, [r7, #12] + 8002156: 681b ldr r3, [r3, #0] + 8002158: 2210 movs r2, #16 + 800215a: 61da str r2, [r3, #28] + + /* Clear STOP Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + 800215c: 68fb ldr r3, [r7, #12] + 800215e: 681b ldr r3, [r3, #0] + 8002160: 2220 movs r2, #32 + 8002162: 61da str r2, [r3, #28] + + /* Flush TX register */ + I2C_Flush_TXDR(hi2c); + 8002164: 68fb ldr r3, [r7, #12] + 8002166: 0018 movs r0, r3 + 8002168: f7ff fe62 bl 8001e30 + + /* Clear Configuration Register 2 */ + I2C_RESET_CR2(hi2c); + 800216c: 68fb ldr r3, [r7, #12] + 800216e: 681b ldr r3, [r3, #0] + 8002170: 685a ldr r2, [r3, #4] + 8002172: 68fb ldr r3, [r7, #12] + 8002174: 681b ldr r3, [r3, #0] + 8002176: 490e ldr r1, [pc, #56] ; (80021b0 ) + 8002178: 400a ands r2, r1 + 800217a: 605a str r2, [r3, #4] + + hi2c->ErrorCode |= HAL_I2C_ERROR_AF; + 800217c: 68fb ldr r3, [r7, #12] + 800217e: 6c5b ldr r3, [r3, #68] ; 0x44 + 8002180: 2204 movs r2, #4 + 8002182: 431a orrs r2, r3 + 8002184: 68fb ldr r3, [r7, #12] + 8002186: 645a str r2, [r3, #68] ; 0x44 + hi2c->State = HAL_I2C_STATE_READY; + 8002188: 68fb ldr r3, [r7, #12] + 800218a: 2241 movs r2, #65 ; 0x41 + 800218c: 2120 movs r1, #32 + 800218e: 5499 strb r1, [r3, r2] + hi2c->Mode = HAL_I2C_MODE_NONE; + 8002190: 68fb ldr r3, [r7, #12] + 8002192: 2242 movs r2, #66 ; 0x42 + 8002194: 2100 movs r1, #0 + 8002196: 5499 strb r1, [r3, r2] + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + 8002198: 68fb ldr r3, [r7, #12] + 800219a: 2240 movs r2, #64 ; 0x40 + 800219c: 2100 movs r1, #0 + 800219e: 5499 strb r1, [r3, r2] + + return HAL_ERROR; + 80021a0: 2301 movs r3, #1 + 80021a2: e000 b.n 80021a6 + } + return HAL_OK; + 80021a4: 2300 movs r3, #0 +} + 80021a6: 0018 movs r0, r3 + 80021a8: 46bd mov sp, r7 + 80021aa: b004 add sp, #16 + 80021ac: bd80 pop {r7, pc} + 80021ae: 46c0 nop ; (mov r8, r8) + 80021b0: fe00e800 .word 0xfe00e800 + +080021b4 : + * @arg @ref I2C_GENERATE_START_WRITE Generate Restart for write request. + * @retval None + */ +static void I2C_TransferConfig(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t Mode, + uint32_t Request) +{ + 80021b4: b590 push {r4, r7, lr} + 80021b6: b085 sub sp, #20 + 80021b8: af00 add r7, sp, #0 + 80021ba: 60f8 str r0, [r7, #12] + 80021bc: 0008 movs r0, r1 + 80021be: 0011 movs r1, r2 + 80021c0: 607b str r3, [r7, #4] + 80021c2: 240a movs r4, #10 + 80021c4: 193b adds r3, r7, r4 + 80021c6: 1c02 adds r2, r0, #0 + 80021c8: 801a strh r2, [r3, #0] + 80021ca: 2009 movs r0, #9 + 80021cc: 183b adds r3, r7, r0 + 80021ce: 1c0a adds r2, r1, #0 + 80021d0: 701a strb r2, [r3, #0] + assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); + assert_param(IS_TRANSFER_MODE(Mode)); + assert_param(IS_TRANSFER_REQUEST(Request)); + + /* update CR2 register */ + MODIFY_REG(hi2c->Instance->CR2, + 80021d2: 68fb ldr r3, [r7, #12] + 80021d4: 681b ldr r3, [r3, #0] + 80021d6: 685b ldr r3, [r3, #4] + 80021d8: 6a3a ldr r2, [r7, #32] + 80021da: 0d51 lsrs r1, r2, #21 + 80021dc: 2280 movs r2, #128 ; 0x80 + 80021de: 00d2 lsls r2, r2, #3 + 80021e0: 400a ands r2, r1 + 80021e2: 490e ldr r1, [pc, #56] ; (800221c ) + 80021e4: 430a orrs r2, r1 + 80021e6: 43d2 mvns r2, r2 + 80021e8: 401a ands r2, r3 + 80021ea: 0011 movs r1, r2 + 80021ec: 193b adds r3, r7, r4 + 80021ee: 881b ldrh r3, [r3, #0] + 80021f0: 059b lsls r3, r3, #22 + 80021f2: 0d9a lsrs r2, r3, #22 + 80021f4: 183b adds r3, r7, r0 + 80021f6: 781b ldrb r3, [r3, #0] + 80021f8: 0418 lsls r0, r3, #16 + 80021fa: 23ff movs r3, #255 ; 0xff + 80021fc: 041b lsls r3, r3, #16 + 80021fe: 4003 ands r3, r0 + 8002200: 431a orrs r2, r3 + 8002202: 687b ldr r3, [r7, #4] + 8002204: 431a orrs r2, r3 + 8002206: 6a3b ldr r3, [r7, #32] + 8002208: 431a orrs r2, r3 + 800220a: 68fb ldr r3, [r7, #12] + 800220c: 681b ldr r3, [r3, #0] + 800220e: 430a orrs r2, r1 + 8002210: 605a str r2, [r3, #4] + (I2C_CR2_RD_WRN & (uint32_t)(Request >> (31U - I2C_CR2_RD_WRN_Pos))) | \ + I2C_CR2_START | I2C_CR2_STOP)), \ + (uint32_t)(((uint32_t)DevAddress & I2C_CR2_SADD) | \ + (((uint32_t)Size << I2C_CR2_NBYTES_Pos) & I2C_CR2_NBYTES) | \ + (uint32_t)Mode | (uint32_t)Request)); +} + 8002212: 46c0 nop ; (mov r8, r8) + 8002214: 46bd mov sp, r7 + 8002216: b005 add sp, #20 + 8002218: bd90 pop {r4, r7, pc} + 800221a: 46c0 nop ; (mov r8, r8) + 800221c: 03ff63ff .word 0x03ff63ff + +08002220 : + * the configuration information for the specified I2Cx peripheral. + * @param AnalogFilter New state of the Analog filter. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2CEx_ConfigAnalogFilter(I2C_HandleTypeDef *hi2c, uint32_t AnalogFilter) +{ + 8002220: b580 push {r7, lr} + 8002222: b082 sub sp, #8 + 8002224: af00 add r7, sp, #0 + 8002226: 6078 str r0, [r7, #4] + 8002228: 6039 str r1, [r7, #0] + /* Check the parameters */ + assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); + assert_param(IS_I2C_ANALOG_FILTER(AnalogFilter)); + + if (hi2c->State == HAL_I2C_STATE_READY) + 800222a: 687b ldr r3, [r7, #4] + 800222c: 2241 movs r2, #65 ; 0x41 + 800222e: 5c9b ldrb r3, [r3, r2] + 8002230: b2db uxtb r3, r3 + 8002232: 2b20 cmp r3, #32 + 8002234: d138 bne.n 80022a8 + { + /* Process Locked */ + __HAL_LOCK(hi2c); + 8002236: 687b ldr r3, [r7, #4] + 8002238: 2240 movs r2, #64 ; 0x40 + 800223a: 5c9b ldrb r3, [r3, r2] + 800223c: 2b01 cmp r3, #1 + 800223e: d101 bne.n 8002244 + 8002240: 2302 movs r3, #2 + 8002242: e032 b.n 80022aa + 8002244: 687b ldr r3, [r7, #4] + 8002246: 2240 movs r2, #64 ; 0x40 + 8002248: 2101 movs r1, #1 + 800224a: 5499 strb r1, [r3, r2] + + hi2c->State = HAL_I2C_STATE_BUSY; + 800224c: 687b ldr r3, [r7, #4] + 800224e: 2241 movs r2, #65 ; 0x41 + 8002250: 2124 movs r1, #36 ; 0x24 + 8002252: 5499 strb r1, [r3, r2] + + /* Disable the selected I2C peripheral */ + __HAL_I2C_DISABLE(hi2c); + 8002254: 687b ldr r3, [r7, #4] + 8002256: 681b ldr r3, [r3, #0] + 8002258: 681a ldr r2, [r3, #0] + 800225a: 687b ldr r3, [r7, #4] + 800225c: 681b ldr r3, [r3, #0] + 800225e: 2101 movs r1, #1 + 8002260: 438a bics r2, r1 + 8002262: 601a str r2, [r3, #0] + + /* Reset I2Cx ANOFF bit */ + hi2c->Instance->CR1 &= ~(I2C_CR1_ANFOFF); + 8002264: 687b ldr r3, [r7, #4] + 8002266: 681b ldr r3, [r3, #0] + 8002268: 681a ldr r2, [r3, #0] + 800226a: 687b ldr r3, [r7, #4] + 800226c: 681b ldr r3, [r3, #0] + 800226e: 4911 ldr r1, [pc, #68] ; (80022b4 ) + 8002270: 400a ands r2, r1 + 8002272: 601a str r2, [r3, #0] + + /* Set analog filter bit*/ + hi2c->Instance->CR1 |= AnalogFilter; + 8002274: 687b ldr r3, [r7, #4] + 8002276: 681b ldr r3, [r3, #0] + 8002278: 6819 ldr r1, [r3, #0] + 800227a: 687b ldr r3, [r7, #4] + 800227c: 681b ldr r3, [r3, #0] + 800227e: 683a ldr r2, [r7, #0] + 8002280: 430a orrs r2, r1 + 8002282: 601a str r2, [r3, #0] + + __HAL_I2C_ENABLE(hi2c); + 8002284: 687b ldr r3, [r7, #4] + 8002286: 681b ldr r3, [r3, #0] + 8002288: 681a ldr r2, [r3, #0] + 800228a: 687b ldr r3, [r7, #4] + 800228c: 681b ldr r3, [r3, #0] + 800228e: 2101 movs r1, #1 + 8002290: 430a orrs r2, r1 + 8002292: 601a str r2, [r3, #0] + + hi2c->State = HAL_I2C_STATE_READY; + 8002294: 687b ldr r3, [r7, #4] + 8002296: 2241 movs r2, #65 ; 0x41 + 8002298: 2120 movs r1, #32 + 800229a: 5499 strb r1, [r3, r2] + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + 800229c: 687b ldr r3, [r7, #4] + 800229e: 2240 movs r2, #64 ; 0x40 + 80022a0: 2100 movs r1, #0 + 80022a2: 5499 strb r1, [r3, r2] + + return HAL_OK; + 80022a4: 2300 movs r3, #0 + 80022a6: e000 b.n 80022aa + } + else + { + return HAL_BUSY; + 80022a8: 2302 movs r3, #2 + } +} + 80022aa: 0018 movs r0, r3 + 80022ac: 46bd mov sp, r7 + 80022ae: b002 add sp, #8 + 80022b0: bd80 pop {r7, pc} + 80022b2: 46c0 nop ; (mov r8, r8) + 80022b4: ffffefff .word 0xffffefff + +080022b8 : + * the configuration information for the specified I2Cx peripheral. + * @param DigitalFilter Coefficient of digital noise filter between Min_Data=0x00 and Max_Data=0x0F. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2CEx_ConfigDigitalFilter(I2C_HandleTypeDef *hi2c, uint32_t DigitalFilter) +{ + 80022b8: b580 push {r7, lr} + 80022ba: b084 sub sp, #16 + 80022bc: af00 add r7, sp, #0 + 80022be: 6078 str r0, [r7, #4] + 80022c0: 6039 str r1, [r7, #0] + + /* Check the parameters */ + assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); + assert_param(IS_I2C_DIGITAL_FILTER(DigitalFilter)); + + if (hi2c->State == HAL_I2C_STATE_READY) + 80022c2: 687b ldr r3, [r7, #4] + 80022c4: 2241 movs r2, #65 ; 0x41 + 80022c6: 5c9b ldrb r3, [r3, r2] + 80022c8: b2db uxtb r3, r3 + 80022ca: 2b20 cmp r3, #32 + 80022cc: d139 bne.n 8002342 + { + /* Process Locked */ + __HAL_LOCK(hi2c); + 80022ce: 687b ldr r3, [r7, #4] + 80022d0: 2240 movs r2, #64 ; 0x40 + 80022d2: 5c9b ldrb r3, [r3, r2] + 80022d4: 2b01 cmp r3, #1 + 80022d6: d101 bne.n 80022dc + 80022d8: 2302 movs r3, #2 + 80022da: e033 b.n 8002344 + 80022dc: 687b ldr r3, [r7, #4] + 80022de: 2240 movs r2, #64 ; 0x40 + 80022e0: 2101 movs r1, #1 + 80022e2: 5499 strb r1, [r3, r2] + + hi2c->State = HAL_I2C_STATE_BUSY; + 80022e4: 687b ldr r3, [r7, #4] + 80022e6: 2241 movs r2, #65 ; 0x41 + 80022e8: 2124 movs r1, #36 ; 0x24 + 80022ea: 5499 strb r1, [r3, r2] + + /* Disable the selected I2C peripheral */ + __HAL_I2C_DISABLE(hi2c); + 80022ec: 687b ldr r3, [r7, #4] + 80022ee: 681b ldr r3, [r3, #0] + 80022f0: 681a ldr r2, [r3, #0] + 80022f2: 687b ldr r3, [r7, #4] + 80022f4: 681b ldr r3, [r3, #0] + 80022f6: 2101 movs r1, #1 + 80022f8: 438a bics r2, r1 + 80022fa: 601a str r2, [r3, #0] + + /* Get the old register value */ + tmpreg = hi2c->Instance->CR1; + 80022fc: 687b ldr r3, [r7, #4] + 80022fe: 681b ldr r3, [r3, #0] + 8002300: 681b ldr r3, [r3, #0] + 8002302: 60fb str r3, [r7, #12] + + /* Reset I2Cx DNF bits [11:8] */ + tmpreg &= ~(I2C_CR1_DNF); + 8002304: 68fb ldr r3, [r7, #12] + 8002306: 4a11 ldr r2, [pc, #68] ; (800234c ) + 8002308: 4013 ands r3, r2 + 800230a: 60fb str r3, [r7, #12] + + /* Set I2Cx DNF coefficient */ + tmpreg |= DigitalFilter << 8U; + 800230c: 683b ldr r3, [r7, #0] + 800230e: 021b lsls r3, r3, #8 + 8002310: 68fa ldr r2, [r7, #12] + 8002312: 4313 orrs r3, r2 + 8002314: 60fb str r3, [r7, #12] + + /* Store the new register value */ + hi2c->Instance->CR1 = tmpreg; + 8002316: 687b ldr r3, [r7, #4] + 8002318: 681b ldr r3, [r3, #0] + 800231a: 68fa ldr r2, [r7, #12] + 800231c: 601a str r2, [r3, #0] + + __HAL_I2C_ENABLE(hi2c); + 800231e: 687b ldr r3, [r7, #4] + 8002320: 681b ldr r3, [r3, #0] + 8002322: 681a ldr r2, [r3, #0] + 8002324: 687b ldr r3, [r7, #4] + 8002326: 681b ldr r3, [r3, #0] + 8002328: 2101 movs r1, #1 + 800232a: 430a orrs r2, r1 + 800232c: 601a str r2, [r3, #0] + + hi2c->State = HAL_I2C_STATE_READY; + 800232e: 687b ldr r3, [r7, #4] + 8002330: 2241 movs r2, #65 ; 0x41 + 8002332: 2120 movs r1, #32 + 8002334: 5499 strb r1, [r3, r2] + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + 8002336: 687b ldr r3, [r7, #4] + 8002338: 2240 movs r2, #64 ; 0x40 + 800233a: 2100 movs r1, #0 + 800233c: 5499 strb r1, [r3, r2] + + return HAL_OK; + 800233e: 2300 movs r3, #0 + 8002340: e000 b.n 8002344 + } + else + { + return HAL_BUSY; + 8002342: 2302 movs r3, #2 + } +} + 8002344: 0018 movs r0, r3 + 8002346: 46bd mov sp, r7 + 8002348: b004 add sp, #16 + 800234a: bd80 pop {r7, pc} + 800234c: fffff0ff .word 0xfffff0ff + +08002350 : + * 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) +{ + 8002350: b5b0 push {r4, r5, r7, lr} + 8002352: b08a sub sp, #40 ; 0x28 + 8002354: af00 add r7, sp, #0 + 8002356: 6078 str r0, [r7, #4] + uint32_t hsi_state; + HAL_StatusTypeDef status; + uint32_t sysclk_source, pll_config; + + /* Check Null pointer */ + if(RCC_OscInitStruct == NULL) + 8002358: 687b ldr r3, [r7, #4] + 800235a: 2b00 cmp r3, #0 + 800235c: d102 bne.n 8002364 + { + return HAL_ERROR; + 800235e: 2301 movs r3, #1 + 8002360: f000 fb6c bl 8002a3c + } + + /* Check the parameters */ + assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType)); + + sysclk_source = __HAL_RCC_GET_SYSCLK_SOURCE(); + 8002364: 4bc8 ldr r3, [pc, #800] ; (8002688 ) + 8002366: 68db ldr r3, [r3, #12] + 8002368: 220c movs r2, #12 + 800236a: 4013 ands r3, r2 + 800236c: 61fb str r3, [r7, #28] + pll_config = __HAL_RCC_GET_PLL_OSCSOURCE(); + 800236e: 4bc6 ldr r3, [pc, #792] ; (8002688 ) + 8002370: 68da ldr r2, [r3, #12] + 8002372: 2380 movs r3, #128 ; 0x80 + 8002374: 025b lsls r3, r3, #9 + 8002376: 4013 ands r3, r2 + 8002378: 61bb str r3, [r7, #24] + + /*------------------------------- HSE Configuration ------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) + 800237a: 687b ldr r3, [r7, #4] + 800237c: 681b ldr r3, [r3, #0] + 800237e: 2201 movs r2, #1 + 8002380: 4013 ands r3, r2 + 8002382: d100 bne.n 8002386 + 8002384: e07d b.n 8002482 + { + /* 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) + 8002386: 69fb ldr r3, [r7, #28] + 8002388: 2b08 cmp r3, #8 + 800238a: d007 beq.n 800239c + || ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (pll_config == RCC_PLLSOURCE_HSE))) + 800238c: 69fb ldr r3, [r7, #28] + 800238e: 2b0c cmp r3, #12 + 8002390: d112 bne.n 80023b8 + 8002392: 69ba ldr r2, [r7, #24] + 8002394: 2380 movs r3, #128 ; 0x80 + 8002396: 025b lsls r3, r3, #9 + 8002398: 429a cmp r2, r3 + 800239a: d10d bne.n 80023b8 + { + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) + 800239c: 4bba ldr r3, [pc, #744] ; (8002688 ) + 800239e: 681a ldr r2, [r3, #0] + 80023a0: 2380 movs r3, #128 ; 0x80 + 80023a2: 029b lsls r3, r3, #10 + 80023a4: 4013 ands r3, r2 + 80023a6: d100 bne.n 80023aa + 80023a8: e06a b.n 8002480 + 80023aa: 687b ldr r3, [r7, #4] + 80023ac: 685b ldr r3, [r3, #4] + 80023ae: 2b00 cmp r3, #0 + 80023b0: d166 bne.n 8002480 + { + return HAL_ERROR; + 80023b2: 2301 movs r3, #1 + 80023b4: f000 fb42 bl 8002a3c + } + } + else + { + /* Set the new HSE configuration ---------------------------------------*/ + __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState); + 80023b8: 687b ldr r3, [r7, #4] + 80023ba: 685a ldr r2, [r3, #4] + 80023bc: 2380 movs r3, #128 ; 0x80 + 80023be: 025b lsls r3, r3, #9 + 80023c0: 429a cmp r2, r3 + 80023c2: d107 bne.n 80023d4 + 80023c4: 4bb0 ldr r3, [pc, #704] ; (8002688 ) + 80023c6: 681a ldr r2, [r3, #0] + 80023c8: 4baf ldr r3, [pc, #700] ; (8002688 ) + 80023ca: 2180 movs r1, #128 ; 0x80 + 80023cc: 0249 lsls r1, r1, #9 + 80023ce: 430a orrs r2, r1 + 80023d0: 601a str r2, [r3, #0] + 80023d2: e027 b.n 8002424 + 80023d4: 687b ldr r3, [r7, #4] + 80023d6: 685a ldr r2, [r3, #4] + 80023d8: 23a0 movs r3, #160 ; 0xa0 + 80023da: 02db lsls r3, r3, #11 + 80023dc: 429a cmp r2, r3 + 80023de: d10e bne.n 80023fe + 80023e0: 4ba9 ldr r3, [pc, #676] ; (8002688 ) + 80023e2: 681a ldr r2, [r3, #0] + 80023e4: 4ba8 ldr r3, [pc, #672] ; (8002688 ) + 80023e6: 2180 movs r1, #128 ; 0x80 + 80023e8: 02c9 lsls r1, r1, #11 + 80023ea: 430a orrs r2, r1 + 80023ec: 601a str r2, [r3, #0] + 80023ee: 4ba6 ldr r3, [pc, #664] ; (8002688 ) + 80023f0: 681a ldr r2, [r3, #0] + 80023f2: 4ba5 ldr r3, [pc, #660] ; (8002688 ) + 80023f4: 2180 movs r1, #128 ; 0x80 + 80023f6: 0249 lsls r1, r1, #9 + 80023f8: 430a orrs r2, r1 + 80023fa: 601a str r2, [r3, #0] + 80023fc: e012 b.n 8002424 + 80023fe: 4ba2 ldr r3, [pc, #648] ; (8002688 ) + 8002400: 681a ldr r2, [r3, #0] + 8002402: 4ba1 ldr r3, [pc, #644] ; (8002688 ) + 8002404: 49a1 ldr r1, [pc, #644] ; (800268c ) + 8002406: 400a ands r2, r1 + 8002408: 601a str r2, [r3, #0] + 800240a: 4b9f ldr r3, [pc, #636] ; (8002688 ) + 800240c: 681a ldr r2, [r3, #0] + 800240e: 2380 movs r3, #128 ; 0x80 + 8002410: 025b lsls r3, r3, #9 + 8002412: 4013 ands r3, r2 + 8002414: 60fb str r3, [r7, #12] + 8002416: 68fb ldr r3, [r7, #12] + 8002418: 4b9b ldr r3, [pc, #620] ; (8002688 ) + 800241a: 681a ldr r2, [r3, #0] + 800241c: 4b9a ldr r3, [pc, #616] ; (8002688 ) + 800241e: 499c ldr r1, [pc, #624] ; (8002690 ) + 8002420: 400a ands r2, r1 + 8002422: 601a str r2, [r3, #0] + + /* Check the HSE State */ + if(RCC_OscInitStruct->HSEState != RCC_HSE_OFF) + 8002424: 687b ldr r3, [r7, #4] + 8002426: 685b ldr r3, [r3, #4] + 8002428: 2b00 cmp r3, #0 + 800242a: d014 beq.n 8002456 + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 800242c: f7fe fe74 bl 8001118 + 8002430: 0003 movs r3, r0 + 8002432: 617b str r3, [r7, #20] + + /* Wait till HSE is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) + 8002434: e008 b.n 8002448 + { + if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE) + 8002436: f7fe fe6f bl 8001118 + 800243a: 0002 movs r2, r0 + 800243c: 697b ldr r3, [r7, #20] + 800243e: 1ad3 subs r3, r2, r3 + 8002440: 2b64 cmp r3, #100 ; 0x64 + 8002442: d901 bls.n 8002448 + { + return HAL_TIMEOUT; + 8002444: 2303 movs r3, #3 + 8002446: e2f9 b.n 8002a3c + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) + 8002448: 4b8f ldr r3, [pc, #572] ; (8002688 ) + 800244a: 681a ldr r2, [r3, #0] + 800244c: 2380 movs r3, #128 ; 0x80 + 800244e: 029b lsls r3, r3, #10 + 8002450: 4013 ands r3, r2 + 8002452: d0f0 beq.n 8002436 + 8002454: e015 b.n 8002482 + } + } + else + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8002456: f7fe fe5f bl 8001118 + 800245a: 0003 movs r3, r0 + 800245c: 617b str r3, [r7, #20] + + /* Wait till HSE is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) + 800245e: e008 b.n 8002472 + { + if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE) + 8002460: f7fe fe5a bl 8001118 + 8002464: 0002 movs r2, r0 + 8002466: 697b ldr r3, [r7, #20] + 8002468: 1ad3 subs r3, r2, r3 + 800246a: 2b64 cmp r3, #100 ; 0x64 + 800246c: d901 bls.n 8002472 + { + return HAL_TIMEOUT; + 800246e: 2303 movs r3, #3 + 8002470: e2e4 b.n 8002a3c + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) + 8002472: 4b85 ldr r3, [pc, #532] ; (8002688 ) + 8002474: 681a ldr r2, [r3, #0] + 8002476: 2380 movs r3, #128 ; 0x80 + 8002478: 029b lsls r3, r3, #10 + 800247a: 4013 ands r3, r2 + 800247c: d1f0 bne.n 8002460 + 800247e: e000 b.n 8002482 + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) + 8002480: 46c0 nop ; (mov r8, r8) + } + } + } + } + /*----------------------------- HSI Configuration --------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) + 8002482: 687b ldr r3, [r7, #4] + 8002484: 681b ldr r3, [r3, #0] + 8002486: 2202 movs r2, #2 + 8002488: 4013 ands r3, r2 + 800248a: d100 bne.n 800248e + 800248c: e099 b.n 80025c2 + { + /* Check the parameters */ + assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState)); + assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue)); + + hsi_state = RCC_OscInitStruct->HSIState; + 800248e: 687b ldr r3, [r7, #4] + 8002490: 68db ldr r3, [r3, #12] + 8002492: 627b str r3, [r7, #36] ; 0x24 + +#if defined(RCC_CR_HSIOUTEN) + if((hsi_state & RCC_HSI_OUTEN) != 0U) + 8002494: 6a7b ldr r3, [r7, #36] ; 0x24 + 8002496: 2220 movs r2, #32 + 8002498: 4013 ands r3, r2 + 800249a: d009 beq.n 80024b0 + { + /* HSI Output enable for timer requested */ + SET_BIT(RCC->CR, RCC_CR_HSIOUTEN); + 800249c: 4b7a ldr r3, [pc, #488] ; (8002688 ) + 800249e: 681a ldr r2, [r3, #0] + 80024a0: 4b79 ldr r3, [pc, #484] ; (8002688 ) + 80024a2: 2120 movs r1, #32 + 80024a4: 430a orrs r2, r1 + 80024a6: 601a str r2, [r3, #0] + + hsi_state &= ~RCC_CR_HSIOUTEN; + 80024a8: 6a7b ldr r3, [r7, #36] ; 0x24 + 80024aa: 2220 movs r2, #32 + 80024ac: 4393 bics r3, r2 + 80024ae: 627b str r3, [r7, #36] ; 0x24 + } +#endif + + /* 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) + 80024b0: 69fb ldr r3, [r7, #28] + 80024b2: 2b04 cmp r3, #4 + 80024b4: d005 beq.n 80024c2 + || ((sysclk_source == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (pll_config == RCC_PLLSOURCE_HSI))) + 80024b6: 69fb ldr r3, [r7, #28] + 80024b8: 2b0c cmp r3, #12 + 80024ba: d13e bne.n 800253a + 80024bc: 69bb ldr r3, [r7, #24] + 80024be: 2b00 cmp r3, #0 + 80024c0: d13b bne.n 800253a + { + /* When HSI is used as system clock it will not disabled */ + if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) && (hsi_state == RCC_HSI_OFF)) + 80024c2: 4b71 ldr r3, [pc, #452] ; (8002688 ) + 80024c4: 681b ldr r3, [r3, #0] + 80024c6: 2204 movs r2, #4 + 80024c8: 4013 ands r3, r2 + 80024ca: d004 beq.n 80024d6 + 80024cc: 6a7b ldr r3, [r7, #36] ; 0x24 + 80024ce: 2b00 cmp r3, #0 + 80024d0: d101 bne.n 80024d6 + { + return HAL_ERROR; + 80024d2: 2301 movs r3, #1 + 80024d4: e2b2 b.n 8002a3c + } + /* Otherwise, just the calibration and HSI or HSIdiv4 are allowed */ + else + { + /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ + __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); + 80024d6: 4b6c ldr r3, [pc, #432] ; (8002688 ) + 80024d8: 685b ldr r3, [r3, #4] + 80024da: 4a6e ldr r2, [pc, #440] ; (8002694 ) + 80024dc: 4013 ands r3, r2 + 80024de: 0019 movs r1, r3 + 80024e0: 687b ldr r3, [r7, #4] + 80024e2: 691b ldr r3, [r3, #16] + 80024e4: 021a lsls r2, r3, #8 + 80024e6: 4b68 ldr r3, [pc, #416] ; (8002688 ) + 80024e8: 430a orrs r2, r1 + 80024ea: 605a str r2, [r3, #4] + + /* Enable the Internal High Speed oscillator (HSI or HSIdiv4) */ + __HAL_RCC_HSI_CONFIG(hsi_state); + 80024ec: 4b66 ldr r3, [pc, #408] ; (8002688 ) + 80024ee: 681b ldr r3, [r3, #0] + 80024f0: 2209 movs r2, #9 + 80024f2: 4393 bics r3, r2 + 80024f4: 0019 movs r1, r3 + 80024f6: 4b64 ldr r3, [pc, #400] ; (8002688 ) + 80024f8: 6a7a ldr r2, [r7, #36] ; 0x24 + 80024fa: 430a orrs r2, r1 + 80024fc: 601a str r2, [r3, #0] + } + + /* Update the SystemCoreClock global variable */ + SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE)>> RCC_CFGR_HPRE_Pos]; + 80024fe: f000 fbeb bl 8002cd8 + 8002502: 0001 movs r1, r0 + 8002504: 4b60 ldr r3, [pc, #384] ; (8002688 ) + 8002506: 68db ldr r3, [r3, #12] + 8002508: 091b lsrs r3, r3, #4 + 800250a: 220f movs r2, #15 + 800250c: 4013 ands r3, r2 + 800250e: 4a62 ldr r2, [pc, #392] ; (8002698 ) + 8002510: 5cd3 ldrb r3, [r2, r3] + 8002512: 000a movs r2, r1 + 8002514: 40da lsrs r2, r3 + 8002516: 4b61 ldr r3, [pc, #388] ; (800269c ) + 8002518: 601a str r2, [r3, #0] + + /* Configure the source of time base considering new system clocks settings*/ + status = HAL_InitTick (uwTickPrio); + 800251a: 4b61 ldr r3, [pc, #388] ; (80026a0 ) + 800251c: 681b ldr r3, [r3, #0] + 800251e: 2513 movs r5, #19 + 8002520: 197c adds r4, r7, r5 + 8002522: 0018 movs r0, r3 + 8002524: f7fe fdb2 bl 800108c + 8002528: 0003 movs r3, r0 + 800252a: 7023 strb r3, [r4, #0] + if(status != HAL_OK) + 800252c: 197b adds r3, r7, r5 + 800252e: 781b ldrb r3, [r3, #0] + 8002530: 2b00 cmp r3, #0 + 8002532: d046 beq.n 80025c2 + { + return status; + 8002534: 197b adds r3, r7, r5 + 8002536: 781b ldrb r3, [r3, #0] + 8002538: e280 b.n 8002a3c + } + } + else + { + /* Check the HSI State */ + if(hsi_state != RCC_HSI_OFF) + 800253a: 6a7b ldr r3, [r7, #36] ; 0x24 + 800253c: 2b00 cmp r3, #0 + 800253e: d027 beq.n 8002590 + { + /* Enable the Internal High Speed oscillator (HSI or HSIdiv4) */ + __HAL_RCC_HSI_CONFIG(hsi_state); + 8002540: 4b51 ldr r3, [pc, #324] ; (8002688 ) + 8002542: 681b ldr r3, [r3, #0] + 8002544: 2209 movs r2, #9 + 8002546: 4393 bics r3, r2 + 8002548: 0019 movs r1, r3 + 800254a: 4b4f ldr r3, [pc, #316] ; (8002688 ) + 800254c: 6a7a ldr r2, [r7, #36] ; 0x24 + 800254e: 430a orrs r2, r1 + 8002550: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8002552: f7fe fde1 bl 8001118 + 8002556: 0003 movs r3, r0 + 8002558: 617b str r3, [r7, #20] + + /* Wait till HSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) + 800255a: e008 b.n 800256e + { + if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE) + 800255c: f7fe fddc bl 8001118 + 8002560: 0002 movs r2, r0 + 8002562: 697b ldr r3, [r7, #20] + 8002564: 1ad3 subs r3, r2, r3 + 8002566: 2b02 cmp r3, #2 + 8002568: d901 bls.n 800256e + { + return HAL_TIMEOUT; + 800256a: 2303 movs r3, #3 + 800256c: e266 b.n 8002a3c + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) + 800256e: 4b46 ldr r3, [pc, #280] ; (8002688 ) + 8002570: 681b ldr r3, [r3, #0] + 8002572: 2204 movs r2, #4 + 8002574: 4013 ands r3, r2 + 8002576: d0f1 beq.n 800255c + } + } + + /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ + __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); + 8002578: 4b43 ldr r3, [pc, #268] ; (8002688 ) + 800257a: 685b ldr r3, [r3, #4] + 800257c: 4a45 ldr r2, [pc, #276] ; (8002694 ) + 800257e: 4013 ands r3, r2 + 8002580: 0019 movs r1, r3 + 8002582: 687b ldr r3, [r7, #4] + 8002584: 691b ldr r3, [r3, #16] + 8002586: 021a lsls r2, r3, #8 + 8002588: 4b3f ldr r3, [pc, #252] ; (8002688 ) + 800258a: 430a orrs r2, r1 + 800258c: 605a str r2, [r3, #4] + 800258e: e018 b.n 80025c2 + } + else + { + /* Disable the Internal High Speed oscillator (HSI). */ + __HAL_RCC_HSI_DISABLE(); + 8002590: 4b3d ldr r3, [pc, #244] ; (8002688 ) + 8002592: 681a ldr r2, [r3, #0] + 8002594: 4b3c ldr r3, [pc, #240] ; (8002688 ) + 8002596: 2101 movs r1, #1 + 8002598: 438a bics r2, r1 + 800259a: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 800259c: f7fe fdbc bl 8001118 + 80025a0: 0003 movs r3, r0 + 80025a2: 617b str r3, [r7, #20] + + /* Wait till HSI is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) + 80025a4: e008 b.n 80025b8 + { + if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE) + 80025a6: f7fe fdb7 bl 8001118 + 80025aa: 0002 movs r2, r0 + 80025ac: 697b ldr r3, [r7, #20] + 80025ae: 1ad3 subs r3, r2, r3 + 80025b0: 2b02 cmp r3, #2 + 80025b2: d901 bls.n 80025b8 + { + return HAL_TIMEOUT; + 80025b4: 2303 movs r3, #3 + 80025b6: e241 b.n 8002a3c + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) + 80025b8: 4b33 ldr r3, [pc, #204] ; (8002688 ) + 80025ba: 681b ldr r3, [r3, #0] + 80025bc: 2204 movs r2, #4 + 80025be: 4013 ands r3, r2 + 80025c0: d1f1 bne.n 80025a6 + } + } + } + } + /*----------------------------- MSI Configuration --------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_MSI) == RCC_OSCILLATORTYPE_MSI) + 80025c2: 687b ldr r3, [r7, #4] + 80025c4: 681b ldr r3, [r3, #0] + 80025c6: 2210 movs r2, #16 + 80025c8: 4013 ands r3, r2 + 80025ca: d100 bne.n 80025ce + 80025cc: e0a1 b.n 8002712 + { + /* When the MSI is used as system clock it will not be disabled */ + if(sysclk_source == RCC_CFGR_SWS_MSI) + 80025ce: 69fb ldr r3, [r7, #28] + 80025d0: 2b00 cmp r3, #0 + 80025d2: d140 bne.n 8002656 + { + if((__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) && (RCC_OscInitStruct->MSIState == RCC_MSI_OFF)) + 80025d4: 4b2c ldr r3, [pc, #176] ; (8002688 ) + 80025d6: 681a ldr r2, [r3, #0] + 80025d8: 2380 movs r3, #128 ; 0x80 + 80025da: 009b lsls r3, r3, #2 + 80025dc: 4013 ands r3, r2 + 80025de: d005 beq.n 80025ec + 80025e0: 687b ldr r3, [r7, #4] + 80025e2: 699b ldr r3, [r3, #24] + 80025e4: 2b00 cmp r3, #0 + 80025e6: d101 bne.n 80025ec + { + return HAL_ERROR; + 80025e8: 2301 movs r3, #1 + 80025ea: e227 b.n 8002a3c + /* 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); + 80025ec: 4b26 ldr r3, [pc, #152] ; (8002688 ) + 80025ee: 685b ldr r3, [r3, #4] + 80025f0: 4a2c ldr r2, [pc, #176] ; (80026a4 ) + 80025f2: 4013 ands r3, r2 + 80025f4: 0019 movs r1, r3 + 80025f6: 687b ldr r3, [r7, #4] + 80025f8: 6a1a ldr r2, [r3, #32] + 80025fa: 4b23 ldr r3, [pc, #140] ; (8002688 ) + 80025fc: 430a orrs r2, r1 + 80025fe: 605a str r2, [r3, #4] + /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/ + __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); + 8002600: 4b21 ldr r3, [pc, #132] ; (8002688 ) + 8002602: 685b ldr r3, [r3, #4] + 8002604: 021b lsls r3, r3, #8 + 8002606: 0a19 lsrs r1, r3, #8 + 8002608: 687b ldr r3, [r7, #4] + 800260a: 69db ldr r3, [r3, #28] + 800260c: 061a lsls r2, r3, #24 + 800260e: 4b1e ldr r3, [pc, #120] ; (8002688 ) + 8002610: 430a orrs r2, r1 + 8002612: 605a str r2, [r3, #4] + + + /* Update the SystemCoreClock global variable */ + SystemCoreClock = (32768U * (1UL << ((RCC_OscInitStruct->MSIClockRange >> RCC_ICSCR_MSIRANGE_Pos) + 1U))) + 8002614: 687b ldr r3, [r7, #4] + 8002616: 6a1b ldr r3, [r3, #32] + 8002618: 0b5b lsrs r3, r3, #13 + 800261a: 3301 adds r3, #1 + 800261c: 2280 movs r2, #128 ; 0x80 + 800261e: 0212 lsls r2, r2, #8 + 8002620: 409a lsls r2, r3 + >> AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos)]; + 8002622: 4b19 ldr r3, [pc, #100] ; (8002688 ) + 8002624: 68db ldr r3, [r3, #12] + 8002626: 091b lsrs r3, r3, #4 + 8002628: 210f movs r1, #15 + 800262a: 400b ands r3, r1 + 800262c: 491a ldr r1, [pc, #104] ; (8002698 ) + 800262e: 5ccb ldrb r3, [r1, r3] + 8002630: 40da lsrs r2, r3 + SystemCoreClock = (32768U * (1UL << ((RCC_OscInitStruct->MSIClockRange >> RCC_ICSCR_MSIRANGE_Pos) + 1U))) + 8002632: 4b1a ldr r3, [pc, #104] ; (800269c ) + 8002634: 601a str r2, [r3, #0] + + /* Configure the source of time base considering new system clocks settings*/ + status = HAL_InitTick (uwTickPrio); + 8002636: 4b1a ldr r3, [pc, #104] ; (80026a0 ) + 8002638: 681b ldr r3, [r3, #0] + 800263a: 2513 movs r5, #19 + 800263c: 197c adds r4, r7, r5 + 800263e: 0018 movs r0, r3 + 8002640: f7fe fd24 bl 800108c + 8002644: 0003 movs r3, r0 + 8002646: 7023 strb r3, [r4, #0] + if(status != HAL_OK) + 8002648: 197b adds r3, r7, r5 + 800264a: 781b ldrb r3, [r3, #0] + 800264c: 2b00 cmp r3, #0 + 800264e: d060 beq.n 8002712 + { + return status; + 8002650: 197b adds r3, r7, r5 + 8002652: 781b ldrb r3, [r3, #0] + 8002654: e1f2 b.n 8002a3c + { + /* Check MSI State */ + assert_param(IS_RCC_MSI(RCC_OscInitStruct->MSIState)); + + /* Check the MSI State */ + if(RCC_OscInitStruct->MSIState != RCC_MSI_OFF) + 8002656: 687b ldr r3, [r7, #4] + 8002658: 699b ldr r3, [r3, #24] + 800265a: 2b00 cmp r3, #0 + 800265c: d03f beq.n 80026de + { + /* Enable the Multi Speed oscillator (MSI). */ + __HAL_RCC_MSI_ENABLE(); + 800265e: 4b0a ldr r3, [pc, #40] ; (8002688 ) + 8002660: 681a ldr r2, [r3, #0] + 8002662: 4b09 ldr r3, [pc, #36] ; (8002688 ) + 8002664: 2180 movs r1, #128 ; 0x80 + 8002666: 0049 lsls r1, r1, #1 + 8002668: 430a orrs r2, r1 + 800266a: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 800266c: f7fe fd54 bl 8001118 + 8002670: 0003 movs r3, r0 + 8002672: 617b str r3, [r7, #20] + + /* Wait till MSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U) + 8002674: e018 b.n 80026a8 + { + if((HAL_GetTick() - tickstart) > MSI_TIMEOUT_VALUE) + 8002676: f7fe fd4f bl 8001118 + 800267a: 0002 movs r2, r0 + 800267c: 697b ldr r3, [r7, #20] + 800267e: 1ad3 subs r3, r2, r3 + 8002680: 2b02 cmp r3, #2 + 8002682: d911 bls.n 80026a8 + { + return HAL_TIMEOUT; + 8002684: 2303 movs r3, #3 + 8002686: e1d9 b.n 8002a3c + 8002688: 40021000 .word 0x40021000 + 800268c: fffeffff .word 0xfffeffff + 8002690: fffbffff .word 0xfffbffff + 8002694: ffffe0ff .word 0xffffe0ff + 8002698: 08004348 .word 0x08004348 + 800269c: 20000000 .word 0x20000000 + 80026a0: 20000004 .word 0x20000004 + 80026a4: ffff1fff .word 0xffff1fff + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U) + 80026a8: 4bc9 ldr r3, [pc, #804] ; (80029d0 ) + 80026aa: 681a ldr r2, [r3, #0] + 80026ac: 2380 movs r3, #128 ; 0x80 + 80026ae: 009b lsls r3, r3, #2 + 80026b0: 4013 ands r3, r2 + 80026b2: d0e0 beq.n 8002676 + /* 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); + 80026b4: 4bc6 ldr r3, [pc, #792] ; (80029d0 ) + 80026b6: 685b ldr r3, [r3, #4] + 80026b8: 4ac6 ldr r2, [pc, #792] ; (80029d4 ) + 80026ba: 4013 ands r3, r2 + 80026bc: 0019 movs r1, r3 + 80026be: 687b ldr r3, [r7, #4] + 80026c0: 6a1a ldr r2, [r3, #32] + 80026c2: 4bc3 ldr r3, [pc, #780] ; (80029d0 ) + 80026c4: 430a orrs r2, r1 + 80026c6: 605a str r2, [r3, #4] + /* Adjusts the Multiple Speed oscillator (MSI) calibration value.*/ + __HAL_RCC_MSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->MSICalibrationValue); + 80026c8: 4bc1 ldr r3, [pc, #772] ; (80029d0 ) + 80026ca: 685b ldr r3, [r3, #4] + 80026cc: 021b lsls r3, r3, #8 + 80026ce: 0a19 lsrs r1, r3, #8 + 80026d0: 687b ldr r3, [r7, #4] + 80026d2: 69db ldr r3, [r3, #28] + 80026d4: 061a lsls r2, r3, #24 + 80026d6: 4bbe ldr r3, [pc, #760] ; (80029d0 ) + 80026d8: 430a orrs r2, r1 + 80026da: 605a str r2, [r3, #4] + 80026dc: e019 b.n 8002712 + } + else + { + /* Disable the Multi Speed oscillator (MSI). */ + __HAL_RCC_MSI_DISABLE(); + 80026de: 4bbc ldr r3, [pc, #752] ; (80029d0 ) + 80026e0: 681a ldr r2, [r3, #0] + 80026e2: 4bbb ldr r3, [pc, #748] ; (80029d0 ) + 80026e4: 49bc ldr r1, [pc, #752] ; (80029d8 ) + 80026e6: 400a ands r2, r1 + 80026e8: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80026ea: f7fe fd15 bl 8001118 + 80026ee: 0003 movs r3, r0 + 80026f0: 617b str r3, [r7, #20] + + /* Wait till MSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) + 80026f2: e008 b.n 8002706 + { + if((HAL_GetTick() - tickstart) > MSI_TIMEOUT_VALUE) + 80026f4: f7fe fd10 bl 8001118 + 80026f8: 0002 movs r2, r0 + 80026fa: 697b ldr r3, [r7, #20] + 80026fc: 1ad3 subs r3, r2, r3 + 80026fe: 2b02 cmp r3, #2 + 8002700: d901 bls.n 8002706 + { + return HAL_TIMEOUT; + 8002702: 2303 movs r3, #3 + 8002704: e19a b.n 8002a3c + while(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != 0U) + 8002706: 4bb2 ldr r3, [pc, #712] ; (80029d0 ) + 8002708: 681a ldr r2, [r3, #0] + 800270a: 2380 movs r3, #128 ; 0x80 + 800270c: 009b lsls r3, r3, #2 + 800270e: 4013 ands r3, r2 + 8002710: d1f0 bne.n 80026f4 + } + } + } + } + /*------------------------------ LSI Configuration -------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) + 8002712: 687b ldr r3, [r7, #4] + 8002714: 681b ldr r3, [r3, #0] + 8002716: 2208 movs r2, #8 + 8002718: 4013 ands r3, r2 + 800271a: d036 beq.n 800278a + { + /* Check the parameters */ + assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState)); + + /* Check the LSI State */ + if(RCC_OscInitStruct->LSIState != RCC_LSI_OFF) + 800271c: 687b ldr r3, [r7, #4] + 800271e: 695b ldr r3, [r3, #20] + 8002720: 2b00 cmp r3, #0 + 8002722: d019 beq.n 8002758 + { + /* Enable the Internal Low Speed oscillator (LSI). */ + __HAL_RCC_LSI_ENABLE(); + 8002724: 4baa ldr r3, [pc, #680] ; (80029d0 ) + 8002726: 6d1a ldr r2, [r3, #80] ; 0x50 + 8002728: 4ba9 ldr r3, [pc, #676] ; (80029d0 ) + 800272a: 2101 movs r1, #1 + 800272c: 430a orrs r2, r1 + 800272e: 651a str r2, [r3, #80] ; 0x50 + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8002730: f7fe fcf2 bl 8001118 + 8002734: 0003 movs r3, r0 + 8002736: 617b str r3, [r7, #20] + + /* Wait till LSI is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == 0U) + 8002738: e008 b.n 800274c + { + if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE) + 800273a: f7fe fced bl 8001118 + 800273e: 0002 movs r2, r0 + 8002740: 697b ldr r3, [r7, #20] + 8002742: 1ad3 subs r3, r2, r3 + 8002744: 2b02 cmp r3, #2 + 8002746: d901 bls.n 800274c + { + return HAL_TIMEOUT; + 8002748: 2303 movs r3, #3 + 800274a: e177 b.n 8002a3c + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == 0U) + 800274c: 4ba0 ldr r3, [pc, #640] ; (80029d0 ) + 800274e: 6d1b ldr r3, [r3, #80] ; 0x50 + 8002750: 2202 movs r2, #2 + 8002752: 4013 ands r3, r2 + 8002754: d0f1 beq.n 800273a + 8002756: e018 b.n 800278a + } + } + else + { + /* Disable the Internal Low Speed oscillator (LSI). */ + __HAL_RCC_LSI_DISABLE(); + 8002758: 4b9d ldr r3, [pc, #628] ; (80029d0 ) + 800275a: 6d1a ldr r2, [r3, #80] ; 0x50 + 800275c: 4b9c ldr r3, [pc, #624] ; (80029d0 ) + 800275e: 2101 movs r1, #1 + 8002760: 438a bics r2, r1 + 8002762: 651a str r2, [r3, #80] ; 0x50 + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8002764: f7fe fcd8 bl 8001118 + 8002768: 0003 movs r3, r0 + 800276a: 617b str r3, [r7, #20] + + /* Wait till LSI is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != 0U) + 800276c: e008 b.n 8002780 + { + if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE) + 800276e: f7fe fcd3 bl 8001118 + 8002772: 0002 movs r2, r0 + 8002774: 697b ldr r3, [r7, #20] + 8002776: 1ad3 subs r3, r2, r3 + 8002778: 2b02 cmp r3, #2 + 800277a: d901 bls.n 8002780 + { + return HAL_TIMEOUT; + 800277c: 2303 movs r3, #3 + 800277e: e15d b.n 8002a3c + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != 0U) + 8002780: 4b93 ldr r3, [pc, #588] ; (80029d0 ) + 8002782: 6d1b ldr r3, [r3, #80] ; 0x50 + 8002784: 2202 movs r2, #2 + 8002786: 4013 ands r3, r2 + 8002788: d1f1 bne.n 800276e + } + } + } + } + /*------------------------------ LSE Configuration -------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) + 800278a: 687b ldr r3, [r7, #4] + 800278c: 681b ldr r3, [r3, #0] + 800278e: 2204 movs r2, #4 + 8002790: 4013 ands r3, r2 + 8002792: d100 bne.n 8002796 + 8002794: e0ae b.n 80028f4 + { + FlagStatus pwrclkchanged = RESET; + 8002796: 2023 movs r0, #35 ; 0x23 + 8002798: 183b adds r3, r7, r0 + 800279a: 2200 movs r2, #0 + 800279c: 701a strb r2, [r3, #0] + /* 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()) + 800279e: 4b8c ldr r3, [pc, #560] ; (80029d0 ) + 80027a0: 6b9a ldr r2, [r3, #56] ; 0x38 + 80027a2: 2380 movs r3, #128 ; 0x80 + 80027a4: 055b lsls r3, r3, #21 + 80027a6: 4013 ands r3, r2 + 80027a8: d109 bne.n 80027be + { + __HAL_RCC_PWR_CLK_ENABLE(); + 80027aa: 4b89 ldr r3, [pc, #548] ; (80029d0 ) + 80027ac: 6b9a ldr r2, [r3, #56] ; 0x38 + 80027ae: 4b88 ldr r3, [pc, #544] ; (80029d0 ) + 80027b0: 2180 movs r1, #128 ; 0x80 + 80027b2: 0549 lsls r1, r1, #21 + 80027b4: 430a orrs r2, r1 + 80027b6: 639a str r2, [r3, #56] ; 0x38 + pwrclkchanged = SET; + 80027b8: 183b adds r3, r7, r0 + 80027ba: 2201 movs r2, #1 + 80027bc: 701a strb r2, [r3, #0] + } + + if(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 80027be: 4b87 ldr r3, [pc, #540] ; (80029dc ) + 80027c0: 681a ldr r2, [r3, #0] + 80027c2: 2380 movs r3, #128 ; 0x80 + 80027c4: 005b lsls r3, r3, #1 + 80027c6: 4013 ands r3, r2 + 80027c8: d11a bne.n 8002800 + { + /* Enable write access to Backup domain */ + SET_BIT(PWR->CR, PWR_CR_DBP); + 80027ca: 4b84 ldr r3, [pc, #528] ; (80029dc ) + 80027cc: 681a ldr r2, [r3, #0] + 80027ce: 4b83 ldr r3, [pc, #524] ; (80029dc ) + 80027d0: 2180 movs r1, #128 ; 0x80 + 80027d2: 0049 lsls r1, r1, #1 + 80027d4: 430a orrs r2, r1 + 80027d6: 601a str r2, [r3, #0] + + /* Wait for Backup domain Write protection disable */ + tickstart = HAL_GetTick(); + 80027d8: f7fe fc9e bl 8001118 + 80027dc: 0003 movs r3, r0 + 80027de: 617b str r3, [r7, #20] + + while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 80027e0: e008 b.n 80027f4 + { + if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) + 80027e2: f7fe fc99 bl 8001118 + 80027e6: 0002 movs r2, r0 + 80027e8: 697b ldr r3, [r7, #20] + 80027ea: 1ad3 subs r3, r2, r3 + 80027ec: 2b64 cmp r3, #100 ; 0x64 + 80027ee: d901 bls.n 80027f4 + { + return HAL_TIMEOUT; + 80027f0: 2303 movs r3, #3 + 80027f2: e123 b.n 8002a3c + while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 80027f4: 4b79 ldr r3, [pc, #484] ; (80029dc ) + 80027f6: 681a ldr r2, [r3, #0] + 80027f8: 2380 movs r3, #128 ; 0x80 + 80027fa: 005b lsls r3, r3, #1 + 80027fc: 4013 ands r3, r2 + 80027fe: d0f0 beq.n 80027e2 + } + } + } + + /* Set the new LSE configuration -----------------------------------------*/ + __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState); + 8002800: 687b ldr r3, [r7, #4] + 8002802: 689a ldr r2, [r3, #8] + 8002804: 2380 movs r3, #128 ; 0x80 + 8002806: 005b lsls r3, r3, #1 + 8002808: 429a cmp r2, r3 + 800280a: d107 bne.n 800281c + 800280c: 4b70 ldr r3, [pc, #448] ; (80029d0 ) + 800280e: 6d1a ldr r2, [r3, #80] ; 0x50 + 8002810: 4b6f ldr r3, [pc, #444] ; (80029d0 ) + 8002812: 2180 movs r1, #128 ; 0x80 + 8002814: 0049 lsls r1, r1, #1 + 8002816: 430a orrs r2, r1 + 8002818: 651a str r2, [r3, #80] ; 0x50 + 800281a: e031 b.n 8002880 + 800281c: 687b ldr r3, [r7, #4] + 800281e: 689b ldr r3, [r3, #8] + 8002820: 2b00 cmp r3, #0 + 8002822: d10c bne.n 800283e + 8002824: 4b6a ldr r3, [pc, #424] ; (80029d0 ) + 8002826: 6d1a ldr r2, [r3, #80] ; 0x50 + 8002828: 4b69 ldr r3, [pc, #420] ; (80029d0 ) + 800282a: 496b ldr r1, [pc, #428] ; (80029d8 ) + 800282c: 400a ands r2, r1 + 800282e: 651a str r2, [r3, #80] ; 0x50 + 8002830: 4b67 ldr r3, [pc, #412] ; (80029d0 ) + 8002832: 6d1a ldr r2, [r3, #80] ; 0x50 + 8002834: 4b66 ldr r3, [pc, #408] ; (80029d0 ) + 8002836: 496a ldr r1, [pc, #424] ; (80029e0 ) + 8002838: 400a ands r2, r1 + 800283a: 651a str r2, [r3, #80] ; 0x50 + 800283c: e020 b.n 8002880 + 800283e: 687b ldr r3, [r7, #4] + 8002840: 689a ldr r2, [r3, #8] + 8002842: 23a0 movs r3, #160 ; 0xa0 + 8002844: 00db lsls r3, r3, #3 + 8002846: 429a cmp r2, r3 + 8002848: d10e bne.n 8002868 + 800284a: 4b61 ldr r3, [pc, #388] ; (80029d0 ) + 800284c: 6d1a ldr r2, [r3, #80] ; 0x50 + 800284e: 4b60 ldr r3, [pc, #384] ; (80029d0 ) + 8002850: 2180 movs r1, #128 ; 0x80 + 8002852: 00c9 lsls r1, r1, #3 + 8002854: 430a orrs r2, r1 + 8002856: 651a str r2, [r3, #80] ; 0x50 + 8002858: 4b5d ldr r3, [pc, #372] ; (80029d0 ) + 800285a: 6d1a ldr r2, [r3, #80] ; 0x50 + 800285c: 4b5c ldr r3, [pc, #368] ; (80029d0 ) + 800285e: 2180 movs r1, #128 ; 0x80 + 8002860: 0049 lsls r1, r1, #1 + 8002862: 430a orrs r2, r1 + 8002864: 651a str r2, [r3, #80] ; 0x50 + 8002866: e00b b.n 8002880 + 8002868: 4b59 ldr r3, [pc, #356] ; (80029d0 ) + 800286a: 6d1a ldr r2, [r3, #80] ; 0x50 + 800286c: 4b58 ldr r3, [pc, #352] ; (80029d0 ) + 800286e: 495a ldr r1, [pc, #360] ; (80029d8 ) + 8002870: 400a ands r2, r1 + 8002872: 651a str r2, [r3, #80] ; 0x50 + 8002874: 4b56 ldr r3, [pc, #344] ; (80029d0 ) + 8002876: 6d1a ldr r2, [r3, #80] ; 0x50 + 8002878: 4b55 ldr r3, [pc, #340] ; (80029d0 ) + 800287a: 4959 ldr r1, [pc, #356] ; (80029e0 ) + 800287c: 400a ands r2, r1 + 800287e: 651a str r2, [r3, #80] ; 0x50 + + /* Check the LSE State */ + if(RCC_OscInitStruct->LSEState != RCC_LSE_OFF) + 8002880: 687b ldr r3, [r7, #4] + 8002882: 689b ldr r3, [r3, #8] + 8002884: 2b00 cmp r3, #0 + 8002886: d015 beq.n 80028b4 + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8002888: f7fe fc46 bl 8001118 + 800288c: 0003 movs r3, r0 + 800288e: 617b str r3, [r7, #20] + + /* Wait till LSE is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U) + 8002890: e009 b.n 80028a6 + { + if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) + 8002892: f7fe fc41 bl 8001118 + 8002896: 0002 movs r2, r0 + 8002898: 697b ldr r3, [r7, #20] + 800289a: 1ad3 subs r3, r2, r3 + 800289c: 4a51 ldr r2, [pc, #324] ; (80029e4 ) + 800289e: 4293 cmp r3, r2 + 80028a0: d901 bls.n 80028a6 + { + return HAL_TIMEOUT; + 80028a2: 2303 movs r3, #3 + 80028a4: e0ca b.n 8002a3c + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U) + 80028a6: 4b4a ldr r3, [pc, #296] ; (80029d0 ) + 80028a8: 6d1a ldr r2, [r3, #80] ; 0x50 + 80028aa: 2380 movs r3, #128 ; 0x80 + 80028ac: 009b lsls r3, r3, #2 + 80028ae: 4013 ands r3, r2 + 80028b0: d0ef beq.n 8002892 + 80028b2: e014 b.n 80028de + } + } + else + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80028b4: f7fe fc30 bl 8001118 + 80028b8: 0003 movs r3, r0 + 80028ba: 617b str r3, [r7, #20] + + /* Wait till LSE is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != 0U) + 80028bc: e009 b.n 80028d2 + { + if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) + 80028be: f7fe fc2b bl 8001118 + 80028c2: 0002 movs r2, r0 + 80028c4: 697b ldr r3, [r7, #20] + 80028c6: 1ad3 subs r3, r2, r3 + 80028c8: 4a46 ldr r2, [pc, #280] ; (80029e4 ) + 80028ca: 4293 cmp r3, r2 + 80028cc: d901 bls.n 80028d2 + { + return HAL_TIMEOUT; + 80028ce: 2303 movs r3, #3 + 80028d0: e0b4 b.n 8002a3c + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != 0U) + 80028d2: 4b3f ldr r3, [pc, #252] ; (80029d0 ) + 80028d4: 6d1a ldr r2, [r3, #80] ; 0x50 + 80028d6: 2380 movs r3, #128 ; 0x80 + 80028d8: 009b lsls r3, r3, #2 + 80028da: 4013 ands r3, r2 + 80028dc: d1ef bne.n 80028be + } + } + } + + /* Require to disable power clock if necessary */ + if(pwrclkchanged == SET) + 80028de: 2323 movs r3, #35 ; 0x23 + 80028e0: 18fb adds r3, r7, r3 + 80028e2: 781b ldrb r3, [r3, #0] + 80028e4: 2b01 cmp r3, #1 + 80028e6: d105 bne.n 80028f4 + { + __HAL_RCC_PWR_CLK_DISABLE(); + 80028e8: 4b39 ldr r3, [pc, #228] ; (80029d0 ) + 80028ea: 6b9a ldr r2, [r3, #56] ; 0x38 + 80028ec: 4b38 ldr r3, [pc, #224] ; (80029d0 ) + 80028ee: 493e ldr r1, [pc, #248] ; (80029e8 ) + 80028f0: 400a ands r2, r1 + 80028f2: 639a str r2, [r3, #56] ; 0x38 +#endif /* RCC_HSI48_SUPPORT */ + + /*-------------------------------- PLL Configuration -----------------------*/ + /* Check the parameters */ + assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState)); + if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE) + 80028f4: 687b ldr r3, [r7, #4] + 80028f6: 6a5b ldr r3, [r3, #36] ; 0x24 + 80028f8: 2b00 cmp r3, #0 + 80028fa: d100 bne.n 80028fe + 80028fc: e09d b.n 8002a3a + { + /* Check if the PLL is used as system clock or not */ + if(sysclk_source != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + 80028fe: 69fb ldr r3, [r7, #28] + 8002900: 2b0c cmp r3, #12 + 8002902: d100 bne.n 8002906 + 8002904: e076 b.n 80029f4 + { + if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON) + 8002906: 687b ldr r3, [r7, #4] + 8002908: 6a5b ldr r3, [r3, #36] ; 0x24 + 800290a: 2b02 cmp r3, #2 + 800290c: d145 bne.n 800299a + 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(); + 800290e: 4b30 ldr r3, [pc, #192] ; (80029d0 ) + 8002910: 681a ldr r2, [r3, #0] + 8002912: 4b2f ldr r3, [pc, #188] ; (80029d0 ) + 8002914: 4935 ldr r1, [pc, #212] ; (80029ec ) + 8002916: 400a ands r2, r1 + 8002918: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 800291a: f7fe fbfd bl 8001118 + 800291e: 0003 movs r3, r0 + 8002920: 617b str r3, [r7, #20] + + /* Wait till PLL is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 8002922: e008 b.n 8002936 + { + if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + 8002924: f7fe fbf8 bl 8001118 + 8002928: 0002 movs r2, r0 + 800292a: 697b ldr r3, [r7, #20] + 800292c: 1ad3 subs r3, r2, r3 + 800292e: 2b02 cmp r3, #2 + 8002930: d901 bls.n 8002936 + { + return HAL_TIMEOUT; + 8002932: 2303 movs r3, #3 + 8002934: e082 b.n 8002a3c + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 8002936: 4b26 ldr r3, [pc, #152] ; (80029d0 ) + 8002938: 681a ldr r2, [r3, #0] + 800293a: 2380 movs r3, #128 ; 0x80 + 800293c: 049b lsls r3, r3, #18 + 800293e: 4013 ands r3, r2 + 8002940: d1f0 bne.n 8002924 + } + } + + /* Configure the main PLL clock source, multiplication and division factors. */ + __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource, + 8002942: 4b23 ldr r3, [pc, #140] ; (80029d0 ) + 8002944: 68db ldr r3, [r3, #12] + 8002946: 4a2a ldr r2, [pc, #168] ; (80029f0 ) + 8002948: 4013 ands r3, r2 + 800294a: 0019 movs r1, r3 + 800294c: 687b ldr r3, [r7, #4] + 800294e: 6a9a ldr r2, [r3, #40] ; 0x28 + 8002950: 687b ldr r3, [r7, #4] + 8002952: 6adb ldr r3, [r3, #44] ; 0x2c + 8002954: 431a orrs r2, r3 + 8002956: 687b ldr r3, [r7, #4] + 8002958: 6b1b ldr r3, [r3, #48] ; 0x30 + 800295a: 431a orrs r2, r3 + 800295c: 4b1c ldr r3, [pc, #112] ; (80029d0 ) + 800295e: 430a orrs r2, r1 + 8002960: 60da str r2, [r3, #12] + RCC_OscInitStruct->PLL.PLLMUL, + RCC_OscInitStruct->PLL.PLLDIV); + /* Enable the main PLL. */ + __HAL_RCC_PLL_ENABLE(); + 8002962: 4b1b ldr r3, [pc, #108] ; (80029d0 ) + 8002964: 681a ldr r2, [r3, #0] + 8002966: 4b1a ldr r3, [pc, #104] ; (80029d0 ) + 8002968: 2180 movs r1, #128 ; 0x80 + 800296a: 0449 lsls r1, r1, #17 + 800296c: 430a orrs r2, r1 + 800296e: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8002970: f7fe fbd2 bl 8001118 + 8002974: 0003 movs r3, r0 + 8002976: 617b str r3, [r7, #20] + + /* Wait till PLL is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) + 8002978: e008 b.n 800298c + { + if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + 800297a: f7fe fbcd bl 8001118 + 800297e: 0002 movs r2, r0 + 8002980: 697b ldr r3, [r7, #20] + 8002982: 1ad3 subs r3, r2, r3 + 8002984: 2b02 cmp r3, #2 + 8002986: d901 bls.n 800298c + { + return HAL_TIMEOUT; + 8002988: 2303 movs r3, #3 + 800298a: e057 b.n 8002a3c + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) + 800298c: 4b10 ldr r3, [pc, #64] ; (80029d0 ) + 800298e: 681a ldr r2, [r3, #0] + 8002990: 2380 movs r3, #128 ; 0x80 + 8002992: 049b lsls r3, r3, #18 + 8002994: 4013 ands r3, r2 + 8002996: d0f0 beq.n 800297a + 8002998: e04f b.n 8002a3a + } + } + else + { + /* Disable the main PLL. */ + __HAL_RCC_PLL_DISABLE(); + 800299a: 4b0d ldr r3, [pc, #52] ; (80029d0 ) + 800299c: 681a ldr r2, [r3, #0] + 800299e: 4b0c ldr r3, [pc, #48] ; (80029d0 ) + 80029a0: 4912 ldr r1, [pc, #72] ; (80029ec ) + 80029a2: 400a ands r2, r1 + 80029a4: 601a str r2, [r3, #0] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 80029a6: f7fe fbb7 bl 8001118 + 80029aa: 0003 movs r3, r0 + 80029ac: 617b str r3, [r7, #20] + + /* Wait till PLL is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 80029ae: e008 b.n 80029c2 + { + if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + 80029b0: f7fe fbb2 bl 8001118 + 80029b4: 0002 movs r2, r0 + 80029b6: 697b ldr r3, [r7, #20] + 80029b8: 1ad3 subs r3, r2, r3 + 80029ba: 2b02 cmp r3, #2 + 80029bc: d901 bls.n 80029c2 + { + return HAL_TIMEOUT; + 80029be: 2303 movs r3, #3 + 80029c0: e03c b.n 8002a3c + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) + 80029c2: 4b03 ldr r3, [pc, #12] ; (80029d0 ) + 80029c4: 681a ldr r2, [r3, #0] + 80029c6: 2380 movs r3, #128 ; 0x80 + 80029c8: 049b lsls r3, r3, #18 + 80029ca: 4013 ands r3, r2 + 80029cc: d1f0 bne.n 80029b0 + 80029ce: e034 b.n 8002a3a + 80029d0: 40021000 .word 0x40021000 + 80029d4: ffff1fff .word 0xffff1fff + 80029d8: fffffeff .word 0xfffffeff + 80029dc: 40007000 .word 0x40007000 + 80029e0: fffffbff .word 0xfffffbff + 80029e4: 00001388 .word 0x00001388 + 80029e8: efffffff .word 0xefffffff + 80029ec: feffffff .word 0xfeffffff + 80029f0: ff02ffff .word 0xff02ffff + } + } + else + { + /* Check if there is a request to disable the PLL used as System clock source */ + if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) + 80029f4: 687b ldr r3, [r7, #4] + 80029f6: 6a5b ldr r3, [r3, #36] ; 0x24 + 80029f8: 2b01 cmp r3, #1 + 80029fa: d101 bne.n 8002a00 + { + return HAL_ERROR; + 80029fc: 2301 movs r3, #1 + 80029fe: e01d b.n 8002a3c + } + else + { + /* Do not return HAL_ERROR if request repeats the current configuration */ + pll_config = RCC->CFGR; + 8002a00: 4b10 ldr r3, [pc, #64] ; (8002a44 ) + 8002a02: 68db ldr r3, [r3, #12] + 8002a04: 61bb str r3, [r7, #24] + if((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || + 8002a06: 69ba ldr r2, [r7, #24] + 8002a08: 2380 movs r3, #128 ; 0x80 + 8002a0a: 025b lsls r3, r3, #9 + 8002a0c: 401a ands r2, r3 + 8002a0e: 687b ldr r3, [r7, #4] + 8002a10: 6a9b ldr r3, [r3, #40] ; 0x28 + 8002a12: 429a cmp r2, r3 + 8002a14: d10f bne.n 8002a36 + (READ_BIT(pll_config, RCC_CFGR_PLLMUL) != RCC_OscInitStruct->PLL.PLLMUL) || + 8002a16: 69ba ldr r2, [r7, #24] + 8002a18: 23f0 movs r3, #240 ; 0xf0 + 8002a1a: 039b lsls r3, r3, #14 + 8002a1c: 401a ands r2, r3 + 8002a1e: 687b ldr r3, [r7, #4] + 8002a20: 6adb ldr r3, [r3, #44] ; 0x2c + if((READ_BIT(pll_config, RCC_CFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || + 8002a22: 429a cmp r2, r3 + 8002a24: d107 bne.n 8002a36 + (READ_BIT(pll_config, RCC_CFGR_PLLDIV) != RCC_OscInitStruct->PLL.PLLDIV)) + 8002a26: 69ba ldr r2, [r7, #24] + 8002a28: 23c0 movs r3, #192 ; 0xc0 + 8002a2a: 041b lsls r3, r3, #16 + 8002a2c: 401a ands r2, r3 + 8002a2e: 687b ldr r3, [r7, #4] + 8002a30: 6b1b ldr r3, [r3, #48] ; 0x30 + (READ_BIT(pll_config, RCC_CFGR_PLLMUL) != RCC_OscInitStruct->PLL.PLLMUL) || + 8002a32: 429a cmp r2, r3 + 8002a34: d001 beq.n 8002a3a + { + return HAL_ERROR; + 8002a36: 2301 movs r3, #1 + 8002a38: e000 b.n 8002a3c + } + } + } + } + return HAL_OK; + 8002a3a: 2300 movs r3, #0 +} + 8002a3c: 0018 movs r0, r3 + 8002a3e: 46bd mov sp, r7 + 8002a40: b00a add sp, #40 ; 0x28 + 8002a42: bdb0 pop {r4, r5, r7, pc} + 8002a44: 40021000 .word 0x40021000 + +08002a48 : + * 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(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency) +{ + 8002a48: b5b0 push {r4, r5, r7, lr} + 8002a4a: b084 sub sp, #16 + 8002a4c: af00 add r7, sp, #0 + 8002a4e: 6078 str r0, [r7, #4] + 8002a50: 6039 str r1, [r7, #0] + uint32_t tickstart; + HAL_StatusTypeDef status; + + /* Check Null pointer */ + if(RCC_ClkInitStruct == NULL) + 8002a52: 687b ldr r3, [r7, #4] + 8002a54: 2b00 cmp r3, #0 + 8002a56: d101 bne.n 8002a5c + { + return HAL_ERROR; + 8002a58: 2301 movs r3, #1 + 8002a5a: e128 b.n 8002cae + /* 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()) + 8002a5c: 4b96 ldr r3, [pc, #600] ; (8002cb8 ) + 8002a5e: 681b ldr r3, [r3, #0] + 8002a60: 2201 movs r2, #1 + 8002a62: 4013 ands r3, r2 + 8002a64: 683a ldr r2, [r7, #0] + 8002a66: 429a cmp r2, r3 + 8002a68: d91e bls.n 8002aa8 + { + /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ + __HAL_FLASH_SET_LATENCY(FLatency); + 8002a6a: 4b93 ldr r3, [pc, #588] ; (8002cb8 ) + 8002a6c: 681b ldr r3, [r3, #0] + 8002a6e: 2201 movs r2, #1 + 8002a70: 4393 bics r3, r2 + 8002a72: 0019 movs r1, r3 + 8002a74: 4b90 ldr r3, [pc, #576] ; (8002cb8 ) + 8002a76: 683a ldr r2, [r7, #0] + 8002a78: 430a orrs r2, r1 + 8002a7a: 601a str r2, [r3, #0] + + /* Check that the new number of wait states is taken into account to access the Flash + memory by polling the FLASH_ACR register */ + tickstart = HAL_GetTick(); + 8002a7c: f7fe fb4c bl 8001118 + 8002a80: 0003 movs r3, r0 + 8002a82: 60fb str r3, [r7, #12] + + while (__HAL_FLASH_GET_LATENCY() != FLatency) + 8002a84: e009 b.n 8002a9a + { + if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) + 8002a86: f7fe fb47 bl 8001118 + 8002a8a: 0002 movs r2, r0 + 8002a8c: 68fb ldr r3, [r7, #12] + 8002a8e: 1ad3 subs r3, r2, r3 + 8002a90: 4a8a ldr r2, [pc, #552] ; (8002cbc ) + 8002a92: 4293 cmp r3, r2 + 8002a94: d901 bls.n 8002a9a + { + return HAL_TIMEOUT; + 8002a96: 2303 movs r3, #3 + 8002a98: e109 b.n 8002cae + while (__HAL_FLASH_GET_LATENCY() != FLatency) + 8002a9a: 4b87 ldr r3, [pc, #540] ; (8002cb8 ) + 8002a9c: 681b ldr r3, [r3, #0] + 8002a9e: 2201 movs r2, #1 + 8002aa0: 4013 ands r3, r2 + 8002aa2: 683a ldr r2, [r7, #0] + 8002aa4: 429a cmp r2, r3 + 8002aa6: d1ee bne.n 8002a86 + } + } + } + + /*-------------------------- HCLK Configuration --------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) + 8002aa8: 687b ldr r3, [r7, #4] + 8002aaa: 681b ldr r3, [r3, #0] + 8002aac: 2202 movs r2, #2 + 8002aae: 4013 ands r3, r2 + 8002ab0: d009 beq.n 8002ac6 + { + assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider); + 8002ab2: 4b83 ldr r3, [pc, #524] ; (8002cc0 ) + 8002ab4: 68db ldr r3, [r3, #12] + 8002ab6: 22f0 movs r2, #240 ; 0xf0 + 8002ab8: 4393 bics r3, r2 + 8002aba: 0019 movs r1, r3 + 8002abc: 687b ldr r3, [r7, #4] + 8002abe: 689a ldr r2, [r3, #8] + 8002ac0: 4b7f ldr r3, [pc, #508] ; (8002cc0 ) + 8002ac2: 430a orrs r2, r1 + 8002ac4: 60da str r2, [r3, #12] + } + + /*------------------------- SYSCLK Configuration ---------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK) + 8002ac6: 687b ldr r3, [r7, #4] + 8002ac8: 681b ldr r3, [r3, #0] + 8002aca: 2201 movs r2, #1 + 8002acc: 4013 ands r3, r2 + 8002ace: d100 bne.n 8002ad2 + 8002ad0: e089 b.n 8002be6 + { + assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource)); + + /* HSE is selected as System Clock Source */ + if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) + 8002ad2: 687b ldr r3, [r7, #4] + 8002ad4: 685b ldr r3, [r3, #4] + 8002ad6: 2b02 cmp r3, #2 + 8002ad8: d107 bne.n 8002aea + { + /* Check the HSE ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) + 8002ada: 4b79 ldr r3, [pc, #484] ; (8002cc0 ) + 8002adc: 681a ldr r2, [r3, #0] + 8002ade: 2380 movs r3, #128 ; 0x80 + 8002ae0: 029b lsls r3, r3, #10 + 8002ae2: 4013 ands r3, r2 + 8002ae4: d120 bne.n 8002b28 + { + return HAL_ERROR; + 8002ae6: 2301 movs r3, #1 + 8002ae8: e0e1 b.n 8002cae + } + } + /* PLL is selected as System Clock Source */ + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) + 8002aea: 687b ldr r3, [r7, #4] + 8002aec: 685b ldr r3, [r3, #4] + 8002aee: 2b03 cmp r3, #3 + 8002af0: d107 bne.n 8002b02 + { + /* Check the PLL ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) + 8002af2: 4b73 ldr r3, [pc, #460] ; (8002cc0 ) + 8002af4: 681a ldr r2, [r3, #0] + 8002af6: 2380 movs r3, #128 ; 0x80 + 8002af8: 049b lsls r3, r3, #18 + 8002afa: 4013 ands r3, r2 + 8002afc: d114 bne.n 8002b28 + { + return HAL_ERROR; + 8002afe: 2301 movs r3, #1 + 8002b00: e0d5 b.n 8002cae + } + } + /* HSI is selected as System Clock Source */ + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSI) + 8002b02: 687b ldr r3, [r7, #4] + 8002b04: 685b ldr r3, [r3, #4] + 8002b06: 2b01 cmp r3, #1 + 8002b08: d106 bne.n 8002b18 + { + /* Check the HSI ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) + 8002b0a: 4b6d ldr r3, [pc, #436] ; (8002cc0 ) + 8002b0c: 681b ldr r3, [r3, #0] + 8002b0e: 2204 movs r2, #4 + 8002b10: 4013 ands r3, r2 + 8002b12: d109 bne.n 8002b28 + { + return HAL_ERROR; + 8002b14: 2301 movs r3, #1 + 8002b16: e0ca b.n 8002cae + } + /* MSI is selected as System Clock Source */ + else + { + /* Check the MSI ready flag */ + if(__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) == 0U) + 8002b18: 4b69 ldr r3, [pc, #420] ; (8002cc0 ) + 8002b1a: 681a ldr r2, [r3, #0] + 8002b1c: 2380 movs r3, #128 ; 0x80 + 8002b1e: 009b lsls r3, r3, #2 + 8002b20: 4013 ands r3, r2 + 8002b22: d101 bne.n 8002b28 + { + return HAL_ERROR; + 8002b24: 2301 movs r3, #1 + 8002b26: e0c2 b.n 8002cae + } + } + __HAL_RCC_SYSCLK_CONFIG(RCC_ClkInitStruct->SYSCLKSource); + 8002b28: 4b65 ldr r3, [pc, #404] ; (8002cc0 ) + 8002b2a: 68db ldr r3, [r3, #12] + 8002b2c: 2203 movs r2, #3 + 8002b2e: 4393 bics r3, r2 + 8002b30: 0019 movs r1, r3 + 8002b32: 687b ldr r3, [r7, #4] + 8002b34: 685a ldr r2, [r3, #4] + 8002b36: 4b62 ldr r3, [pc, #392] ; (8002cc0 ) + 8002b38: 430a orrs r2, r1 + 8002b3a: 60da str r2, [r3, #12] + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8002b3c: f7fe faec bl 8001118 + 8002b40: 0003 movs r3, r0 + 8002b42: 60fb str r3, [r7, #12] + + if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) + 8002b44: 687b ldr r3, [r7, #4] + 8002b46: 685b ldr r3, [r3, #4] + 8002b48: 2b02 cmp r3, #2 + 8002b4a: d111 bne.n 8002b70 + { + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSE) + 8002b4c: e009 b.n 8002b62 + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 8002b4e: f7fe fae3 bl 8001118 + 8002b52: 0002 movs r2, r0 + 8002b54: 68fb ldr r3, [r7, #12] + 8002b56: 1ad3 subs r3, r2, r3 + 8002b58: 4a58 ldr r2, [pc, #352] ; (8002cbc ) + 8002b5a: 4293 cmp r3, r2 + 8002b5c: d901 bls.n 8002b62 + { + return HAL_TIMEOUT; + 8002b5e: 2303 movs r3, #3 + 8002b60: e0a5 b.n 8002cae + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSE) + 8002b62: 4b57 ldr r3, [pc, #348] ; (8002cc0 ) + 8002b64: 68db ldr r3, [r3, #12] + 8002b66: 220c movs r2, #12 + 8002b68: 4013 ands r3, r2 + 8002b6a: 2b08 cmp r3, #8 + 8002b6c: d1ef bne.n 8002b4e + 8002b6e: e03a b.n 8002be6 + } + } + } + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) + 8002b70: 687b ldr r3, [r7, #4] + 8002b72: 685b ldr r3, [r3, #4] + 8002b74: 2b03 cmp r3, #3 + 8002b76: d111 bne.n 8002b9c + { + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + 8002b78: e009 b.n 8002b8e + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 8002b7a: f7fe facd bl 8001118 + 8002b7e: 0002 movs r2, r0 + 8002b80: 68fb ldr r3, [r7, #12] + 8002b82: 1ad3 subs r3, r2, r3 + 8002b84: 4a4d ldr r2, [pc, #308] ; (8002cbc ) + 8002b86: 4293 cmp r3, r2 + 8002b88: d901 bls.n 8002b8e + { + return HAL_TIMEOUT; + 8002b8a: 2303 movs r3, #3 + 8002b8c: e08f b.n 8002cae + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + 8002b8e: 4b4c ldr r3, [pc, #304] ; (8002cc0 ) + 8002b90: 68db ldr r3, [r3, #12] + 8002b92: 220c movs r2, #12 + 8002b94: 4013 ands r3, r2 + 8002b96: 2b0c cmp r3, #12 + 8002b98: d1ef bne.n 8002b7a + 8002b9a: e024 b.n 8002be6 + } + } + } + else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSI) + 8002b9c: 687b ldr r3, [r7, #4] + 8002b9e: 685b ldr r3, [r3, #4] + 8002ba0: 2b01 cmp r3, #1 + 8002ba2: d11b bne.n 8002bdc + { + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSI) + 8002ba4: e009 b.n 8002bba + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 8002ba6: f7fe fab7 bl 8001118 + 8002baa: 0002 movs r2, r0 + 8002bac: 68fb ldr r3, [r7, #12] + 8002bae: 1ad3 subs r3, r2, r3 + 8002bb0: 4a42 ldr r2, [pc, #264] ; (8002cbc ) + 8002bb2: 4293 cmp r3, r2 + 8002bb4: d901 bls.n 8002bba + { + return HAL_TIMEOUT; + 8002bb6: 2303 movs r3, #3 + 8002bb8: e079 b.n 8002cae + while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_HSI) + 8002bba: 4b41 ldr r3, [pc, #260] ; (8002cc0 ) + 8002bbc: 68db ldr r3, [r3, #12] + 8002bbe: 220c movs r2, #12 + 8002bc0: 4013 ands r3, r2 + 8002bc2: 2b04 cmp r3, #4 + 8002bc4: d1ef bne.n 8002ba6 + 8002bc6: e00e b.n 8002be6 + } + else + { + while(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_MSI) + { + if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) + 8002bc8: f7fe faa6 bl 8001118 + 8002bcc: 0002 movs r2, r0 + 8002bce: 68fb ldr r3, [r7, #12] + 8002bd0: 1ad3 subs r3, r2, r3 + 8002bd2: 4a3a ldr r2, [pc, #232] ; (8002cbc ) + 8002bd4: 4293 cmp r3, r2 + 8002bd6: d901 bls.n 8002bdc + { + return HAL_TIMEOUT; + 8002bd8: 2303 movs r3, #3 + 8002bda: e068 b.n 8002cae + while(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_MSI) + 8002bdc: 4b38 ldr r3, [pc, #224] ; (8002cc0 ) + 8002bde: 68db ldr r3, [r3, #12] + 8002be0: 220c movs r2, #12 + 8002be2: 4013 ands r3, r2 + 8002be4: d1f0 bne.n 8002bc8 + } + } + } + } + /* Decreasing the number of wait states because of lower CPU frequency */ + if(FLatency < __HAL_FLASH_GET_LATENCY()) + 8002be6: 4b34 ldr r3, [pc, #208] ; (8002cb8 ) + 8002be8: 681b ldr r3, [r3, #0] + 8002bea: 2201 movs r2, #1 + 8002bec: 4013 ands r3, r2 + 8002bee: 683a ldr r2, [r7, #0] + 8002bf0: 429a cmp r2, r3 + 8002bf2: d21e bcs.n 8002c32 + { + /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ + __HAL_FLASH_SET_LATENCY(FLatency); + 8002bf4: 4b30 ldr r3, [pc, #192] ; (8002cb8 ) + 8002bf6: 681b ldr r3, [r3, #0] + 8002bf8: 2201 movs r2, #1 + 8002bfa: 4393 bics r3, r2 + 8002bfc: 0019 movs r1, r3 + 8002bfe: 4b2e ldr r3, [pc, #184] ; (8002cb8 ) + 8002c00: 683a ldr r2, [r7, #0] + 8002c02: 430a orrs r2, r1 + 8002c04: 601a str r2, [r3, #0] + + /* Check that the new number of wait states is taken into account to access the Flash + memory by polling the FLASH_ACR register */ + tickstart = HAL_GetTick(); + 8002c06: f7fe fa87 bl 8001118 + 8002c0a: 0003 movs r3, r0 + 8002c0c: 60fb str r3, [r7, #12] + + while (__HAL_FLASH_GET_LATENCY() != FLatency) + 8002c0e: e009 b.n 8002c24 + { + if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) + 8002c10: f7fe fa82 bl 8001118 + 8002c14: 0002 movs r2, r0 + 8002c16: 68fb ldr r3, [r7, #12] + 8002c18: 1ad3 subs r3, r2, r3 + 8002c1a: 4a28 ldr r2, [pc, #160] ; (8002cbc ) + 8002c1c: 4293 cmp r3, r2 + 8002c1e: d901 bls.n 8002c24 + { + return HAL_TIMEOUT; + 8002c20: 2303 movs r3, #3 + 8002c22: e044 b.n 8002cae + while (__HAL_FLASH_GET_LATENCY() != FLatency) + 8002c24: 4b24 ldr r3, [pc, #144] ; (8002cb8 ) + 8002c26: 681b ldr r3, [r3, #0] + 8002c28: 2201 movs r2, #1 + 8002c2a: 4013 ands r3, r2 + 8002c2c: 683a ldr r2, [r7, #0] + 8002c2e: 429a cmp r2, r3 + 8002c30: d1ee bne.n 8002c10 + } + } + } + + /*-------------------------- PCLK1 Configuration ---------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) + 8002c32: 687b ldr r3, [r7, #4] + 8002c34: 681b ldr r3, [r3, #0] + 8002c36: 2204 movs r2, #4 + 8002c38: 4013 ands r3, r2 + 8002c3a: d009 beq.n 8002c50 + { + assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider); + 8002c3c: 4b20 ldr r3, [pc, #128] ; (8002cc0 ) + 8002c3e: 68db ldr r3, [r3, #12] + 8002c40: 4a20 ldr r2, [pc, #128] ; (8002cc4 ) + 8002c42: 4013 ands r3, r2 + 8002c44: 0019 movs r1, r3 + 8002c46: 687b ldr r3, [r7, #4] + 8002c48: 68da ldr r2, [r3, #12] + 8002c4a: 4b1d ldr r3, [pc, #116] ; (8002cc0 ) + 8002c4c: 430a orrs r2, r1 + 8002c4e: 60da str r2, [r3, #12] + } + + /*-------------------------- PCLK2 Configuration ---------------------------*/ + if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) + 8002c50: 687b ldr r3, [r7, #4] + 8002c52: 681b ldr r3, [r3, #0] + 8002c54: 2208 movs r2, #8 + 8002c56: 4013 ands r3, r2 + 8002c58: d00a beq.n 8002c70 + { + assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3)); + 8002c5a: 4b19 ldr r3, [pc, #100] ; (8002cc0 ) + 8002c5c: 68db ldr r3, [r3, #12] + 8002c5e: 4a1a ldr r2, [pc, #104] ; (8002cc8 ) + 8002c60: 4013 ands r3, r2 + 8002c62: 0019 movs r1, r3 + 8002c64: 687b ldr r3, [r7, #4] + 8002c66: 691b ldr r3, [r3, #16] + 8002c68: 00da lsls r2, r3, #3 + 8002c6a: 4b15 ldr r3, [pc, #84] ; (8002cc0 ) + 8002c6c: 430a orrs r2, r1 + 8002c6e: 60da str r2, [r3, #12] + } + + /* Update the SystemCoreClock global variable */ + SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE)>> RCC_CFGR_HPRE_Pos]; + 8002c70: f000 f832 bl 8002cd8 + 8002c74: 0001 movs r1, r0 + 8002c76: 4b12 ldr r3, [pc, #72] ; (8002cc0 ) + 8002c78: 68db ldr r3, [r3, #12] + 8002c7a: 091b lsrs r3, r3, #4 + 8002c7c: 220f movs r2, #15 + 8002c7e: 4013 ands r3, r2 + 8002c80: 4a12 ldr r2, [pc, #72] ; (8002ccc ) + 8002c82: 5cd3 ldrb r3, [r2, r3] + 8002c84: 000a movs r2, r1 + 8002c86: 40da lsrs r2, r3 + 8002c88: 4b11 ldr r3, [pc, #68] ; (8002cd0 ) + 8002c8a: 601a str r2, [r3, #0] + + /* Configure the source of time base considering new system clocks settings*/ + status = HAL_InitTick(uwTickPrio); + 8002c8c: 4b11 ldr r3, [pc, #68] ; (8002cd4 ) + 8002c8e: 681b ldr r3, [r3, #0] + 8002c90: 250b movs r5, #11 + 8002c92: 197c adds r4, r7, r5 + 8002c94: 0018 movs r0, r3 + 8002c96: f7fe f9f9 bl 800108c + 8002c9a: 0003 movs r3, r0 + 8002c9c: 7023 strb r3, [r4, #0] + if(status != HAL_OK) + 8002c9e: 197b adds r3, r7, r5 + 8002ca0: 781b ldrb r3, [r3, #0] + 8002ca2: 2b00 cmp r3, #0 + 8002ca4: d002 beq.n 8002cac + { + return status; + 8002ca6: 197b adds r3, r7, r5 + 8002ca8: 781b ldrb r3, [r3, #0] + 8002caa: e000 b.n 8002cae + } + + return HAL_OK; + 8002cac: 2300 movs r3, #0 +} + 8002cae: 0018 movs r0, r3 + 8002cb0: 46bd mov sp, r7 + 8002cb2: b004 add sp, #16 + 8002cb4: bdb0 pop {r4, r5, r7, pc} + 8002cb6: 46c0 nop ; (mov r8, r8) + 8002cb8: 40022000 .word 0x40022000 + 8002cbc: 00001388 .word 0x00001388 + 8002cc0: 40021000 .word 0x40021000 + 8002cc4: fffff8ff .word 0xfffff8ff + 8002cc8: ffffc7ff .word 0xffffc7ff + 8002ccc: 08004348 .word 0x08004348 + 8002cd0: 20000000 .word 0x20000000 + 8002cd4: 20000004 .word 0x20000004 + +08002cd8 : + * right SYSCLK value. Otherwise, any configuration based on this function will be incorrect. + * + * @retval SYSCLK frequency + */ +uint32_t HAL_RCC_GetSysClockFreq(void) +{ + 8002cd8: b5b0 push {r4, r5, r7, lr} + 8002cda: b08e sub sp, #56 ; 0x38 + 8002cdc: af00 add r7, sp, #0 + uint32_t tmpreg, pllm, plld, pllvco, msiclkrange; /* no init needed */ + uint32_t sysclockfreq; + + tmpreg = RCC->CFGR; + 8002cde: 4b4c ldr r3, [pc, #304] ; (8002e10 ) + 8002ce0: 68db ldr r3, [r3, #12] + 8002ce2: 62fb str r3, [r7, #44] ; 0x2c + + /* Get SYSCLK source -------------------------------------------------------*/ + switch (tmpreg & RCC_CFGR_SWS) + 8002ce4: 6afa ldr r2, [r7, #44] ; 0x2c + 8002ce6: 230c movs r3, #12 + 8002ce8: 4013 ands r3, r2 + 8002cea: 2b0c cmp r3, #12 + 8002cec: d014 beq.n 8002d18 + 8002cee: d900 bls.n 8002cf2 + 8002cf0: e07b b.n 8002dea + 8002cf2: 2b04 cmp r3, #4 + 8002cf4: d002 beq.n 8002cfc + 8002cf6: 2b08 cmp r3, #8 + 8002cf8: d00b beq.n 8002d12 + 8002cfa: e076 b.n 8002dea + { + case RCC_SYSCLKSOURCE_STATUS_HSI: /* HSI used as system clock source */ + { + if ((RCC->CR & RCC_CR_HSIDIVF) != 0U) + 8002cfc: 4b44 ldr r3, [pc, #272] ; (8002e10 ) + 8002cfe: 681b ldr r3, [r3, #0] + 8002d00: 2210 movs r2, #16 + 8002d02: 4013 ands r3, r2 + 8002d04: d002 beq.n 8002d0c + { + sysclockfreq = (HSI_VALUE >> 2); + 8002d06: 4b43 ldr r3, [pc, #268] ; (8002e14 ) + 8002d08: 633b str r3, [r7, #48] ; 0x30 + } + else + { + sysclockfreq = HSI_VALUE; + } + break; + 8002d0a: e07c b.n 8002e06 + sysclockfreq = HSI_VALUE; + 8002d0c: 4b42 ldr r3, [pc, #264] ; (8002e18 ) + 8002d0e: 633b str r3, [r7, #48] ; 0x30 + break; + 8002d10: e079 b.n 8002e06 + } + case RCC_SYSCLKSOURCE_STATUS_HSE: /* HSE used as system clock */ + { + sysclockfreq = HSE_VALUE; + 8002d12: 4b42 ldr r3, [pc, #264] ; (8002e1c ) + 8002d14: 633b str r3, [r7, #48] ; 0x30 + break; + 8002d16: e076 b.n 8002e06 + } + case RCC_SYSCLKSOURCE_STATUS_PLLCLK: /* PLL used as system clock */ + { + pllm = PLLMulTable[(uint32_t)(tmpreg & RCC_CFGR_PLLMUL) >> RCC_CFGR_PLLMUL_Pos]; + 8002d18: 6afb ldr r3, [r7, #44] ; 0x2c + 8002d1a: 0c9a lsrs r2, r3, #18 + 8002d1c: 230f movs r3, #15 + 8002d1e: 401a ands r2, r3 + 8002d20: 4b3f ldr r3, [pc, #252] ; (8002e20 ) + 8002d22: 5c9b ldrb r3, [r3, r2] + 8002d24: 62bb str r3, [r7, #40] ; 0x28 + plld = ((uint32_t)(tmpreg & RCC_CFGR_PLLDIV) >> RCC_CFGR_PLLDIV_Pos) + 1U; + 8002d26: 6afb ldr r3, [r7, #44] ; 0x2c + 8002d28: 0d9a lsrs r2, r3, #22 + 8002d2a: 2303 movs r3, #3 + 8002d2c: 4013 ands r3, r2 + 8002d2e: 3301 adds r3, #1 + 8002d30: 627b str r3, [r7, #36] ; 0x24 + if (__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLSOURCE_HSI) + 8002d32: 4b37 ldr r3, [pc, #220] ; (8002e10 ) + 8002d34: 68da ldr r2, [r3, #12] + 8002d36: 2380 movs r3, #128 ; 0x80 + 8002d38: 025b lsls r3, r3, #9 + 8002d3a: 4013 ands r3, r2 + 8002d3c: d01a beq.n 8002d74 + { + /* HSE used as PLL clock source */ + pllvco = (uint32_t)(((uint64_t)HSE_VALUE * (uint64_t)pllm) / (uint64_t)plld); + 8002d3e: 6abb ldr r3, [r7, #40] ; 0x28 + 8002d40: 61bb str r3, [r7, #24] + 8002d42: 2300 movs r3, #0 + 8002d44: 61fb str r3, [r7, #28] + 8002d46: 4a35 ldr r2, [pc, #212] ; (8002e1c ) + 8002d48: 2300 movs r3, #0 + 8002d4a: 69b8 ldr r0, [r7, #24] + 8002d4c: 69f9 ldr r1, [r7, #28] + 8002d4e: f7fd fa87 bl 8000260 <__aeabi_lmul> + 8002d52: 0002 movs r2, r0 + 8002d54: 000b movs r3, r1 + 8002d56: 0010 movs r0, r2 + 8002d58: 0019 movs r1, r3 + 8002d5a: 6a7b ldr r3, [r7, #36] ; 0x24 + 8002d5c: 613b str r3, [r7, #16] + 8002d5e: 2300 movs r3, #0 + 8002d60: 617b str r3, [r7, #20] + 8002d62: 693a ldr r2, [r7, #16] + 8002d64: 697b ldr r3, [r7, #20] + 8002d66: f7fd fa5b bl 8000220 <__aeabi_uldivmod> + 8002d6a: 0002 movs r2, r0 + 8002d6c: 000b movs r3, r1 + 8002d6e: 0013 movs r3, r2 + 8002d70: 637b str r3, [r7, #52] ; 0x34 + 8002d72: e037 b.n 8002de4 + } + else + { + if ((RCC->CR & RCC_CR_HSIDIVF) != 0U) + 8002d74: 4b26 ldr r3, [pc, #152] ; (8002e10 ) + 8002d76: 681b ldr r3, [r3, #0] + 8002d78: 2210 movs r2, #16 + 8002d7a: 4013 ands r3, r2 + 8002d7c: d01a beq.n 8002db4 + { + pllvco = (uint32_t)((((uint64_t)(HSI_VALUE >> 2)) * (uint64_t)pllm) / (uint64_t)plld); + 8002d7e: 6abb ldr r3, [r7, #40] ; 0x28 + 8002d80: 60bb str r3, [r7, #8] + 8002d82: 2300 movs r3, #0 + 8002d84: 60fb str r3, [r7, #12] + 8002d86: 4a23 ldr r2, [pc, #140] ; (8002e14 ) + 8002d88: 2300 movs r3, #0 + 8002d8a: 68b8 ldr r0, [r7, #8] + 8002d8c: 68f9 ldr r1, [r7, #12] + 8002d8e: f7fd fa67 bl 8000260 <__aeabi_lmul> + 8002d92: 0002 movs r2, r0 + 8002d94: 000b movs r3, r1 + 8002d96: 0010 movs r0, r2 + 8002d98: 0019 movs r1, r3 + 8002d9a: 6a7b ldr r3, [r7, #36] ; 0x24 + 8002d9c: 603b str r3, [r7, #0] + 8002d9e: 2300 movs r3, #0 + 8002da0: 607b str r3, [r7, #4] + 8002da2: 683a ldr r2, [r7, #0] + 8002da4: 687b ldr r3, [r7, #4] + 8002da6: f7fd fa3b bl 8000220 <__aeabi_uldivmod> + 8002daa: 0002 movs r2, r0 + 8002dac: 000b movs r3, r1 + 8002dae: 0013 movs r3, r2 + 8002db0: 637b str r3, [r7, #52] ; 0x34 + 8002db2: e017 b.n 8002de4 + } + else + { + pllvco = (uint32_t)(((uint64_t)HSI_VALUE * (uint64_t)pllm) / (uint64_t)plld); + 8002db4: 6abb ldr r3, [r7, #40] ; 0x28 + 8002db6: 0018 movs r0, r3 + 8002db8: 2300 movs r3, #0 + 8002dba: 0019 movs r1, r3 + 8002dbc: 4a16 ldr r2, [pc, #88] ; (8002e18 ) + 8002dbe: 2300 movs r3, #0 + 8002dc0: f7fd fa4e bl 8000260 <__aeabi_lmul> + 8002dc4: 0002 movs r2, r0 + 8002dc6: 000b movs r3, r1 + 8002dc8: 0010 movs r0, r2 + 8002dca: 0019 movs r1, r3 + 8002dcc: 6a7b ldr r3, [r7, #36] ; 0x24 + 8002dce: 001c movs r4, r3 + 8002dd0: 2300 movs r3, #0 + 8002dd2: 001d movs r5, r3 + 8002dd4: 0022 movs r2, r4 + 8002dd6: 002b movs r3, r5 + 8002dd8: f7fd fa22 bl 8000220 <__aeabi_uldivmod> + 8002ddc: 0002 movs r2, r0 + 8002dde: 000b movs r3, r1 + 8002de0: 0013 movs r3, r2 + 8002de2: 637b str r3, [r7, #52] ; 0x34 + } + } + sysclockfreq = pllvco; + 8002de4: 6b7b ldr r3, [r7, #52] ; 0x34 + 8002de6: 633b str r3, [r7, #48] ; 0x30 + break; + 8002de8: e00d b.n 8002e06 + } + 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; + 8002dea: 4b09 ldr r3, [pc, #36] ; (8002e10 ) + 8002dec: 685b ldr r3, [r3, #4] + 8002dee: 0b5b lsrs r3, r3, #13 + 8002df0: 2207 movs r2, #7 + 8002df2: 4013 ands r3, r2 + 8002df4: 623b str r3, [r7, #32] + sysclockfreq = (32768U * (1UL << (msiclkrange + 1U))); + 8002df6: 6a3b ldr r3, [r7, #32] + 8002df8: 3301 adds r3, #1 + 8002dfa: 2280 movs r2, #128 ; 0x80 + 8002dfc: 0212 lsls r2, r2, #8 + 8002dfe: 409a lsls r2, r3 + 8002e00: 0013 movs r3, r2 + 8002e02: 633b str r3, [r7, #48] ; 0x30 + break; + 8002e04: 46c0 nop ; (mov r8, r8) + } + } + return sysclockfreq; + 8002e06: 6b3b ldr r3, [r7, #48] ; 0x30 +} + 8002e08: 0018 movs r0, r3 + 8002e0a: 46bd mov sp, r7 + 8002e0c: b00e add sp, #56 ; 0x38 + 8002e0e: bdb0 pop {r4, r5, r7, pc} + 8002e10: 40021000 .word 0x40021000 + 8002e14: 003d0900 .word 0x003d0900 + 8002e18: 00f42400 .word 0x00f42400 + 8002e1c: 007a1200 .word 0x007a1200 + 8002e20: 08004360 .word 0x08004360 + +08002e24 : + * @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) +{ + 8002e24: b580 push {r7, lr} + 8002e26: af00 add r7, sp, #0 + return SystemCoreClock; + 8002e28: 4b02 ldr r3, [pc, #8] ; (8002e34 ) + 8002e2a: 681b ldr r3, [r3, #0] +} + 8002e2c: 0018 movs r0, r3 + 8002e2e: 46bd mov sp, r7 + 8002e30: bd80 pop {r7, pc} + 8002e32: 46c0 nop ; (mov r8, r8) + 8002e34: 20000000 .word 0x20000000 + +08002e38 : + * @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) +{ + 8002e38: b580 push {r7, lr} + 8002e3a: af00 add r7, sp, #0 + /* Get HCLK source and Compute PCLK1 frequency ---------------------------*/ + return (HAL_RCC_GetHCLKFreq() >> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE1) >> RCC_CFGR_PPRE1_Pos]); + 8002e3c: f7ff fff2 bl 8002e24 + 8002e40: 0001 movs r1, r0 + 8002e42: 4b06 ldr r3, [pc, #24] ; (8002e5c ) + 8002e44: 68db ldr r3, [r3, #12] + 8002e46: 0a1b lsrs r3, r3, #8 + 8002e48: 2207 movs r2, #7 + 8002e4a: 4013 ands r3, r2 + 8002e4c: 4a04 ldr r2, [pc, #16] ; (8002e60 ) + 8002e4e: 5cd3 ldrb r3, [r2, r3] + 8002e50: 40d9 lsrs r1, r3 + 8002e52: 000b movs r3, r1 +} + 8002e54: 0018 movs r0, r3 + 8002e56: 46bd mov sp, r7 + 8002e58: bd80 pop {r7, pc} + 8002e5a: 46c0 nop ; (mov r8, r8) + 8002e5c: 40021000 .word 0x40021000 + 8002e60: 08004358 .word 0x08004358 + +08002e64 : + * @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) +{ + 8002e64: b580 push {r7, lr} + 8002e66: af00 add r7, sp, #0 + /* Get HCLK source and Compute PCLK2 frequency ---------------------------*/ + return (HAL_RCC_GetHCLKFreq()>> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE2) >> RCC_CFGR_PPRE2_Pos]); + 8002e68: f7ff ffdc bl 8002e24 + 8002e6c: 0001 movs r1, r0 + 8002e6e: 4b06 ldr r3, [pc, #24] ; (8002e88 ) + 8002e70: 68db ldr r3, [r3, #12] + 8002e72: 0adb lsrs r3, r3, #11 + 8002e74: 2207 movs r2, #7 + 8002e76: 4013 ands r3, r2 + 8002e78: 4a04 ldr r2, [pc, #16] ; (8002e8c ) + 8002e7a: 5cd3 ldrb r3, [r2, r3] + 8002e7c: 40d9 lsrs r1, r3 + 8002e7e: 000b movs r3, r1 +} + 8002e80: 0018 movs r0, r3 + 8002e82: 46bd mov sp, r7 + 8002e84: bd80 pop {r7, pc} + 8002e86: 46c0 nop ; (mov r8, r8) + 8002e88: 40021000 .word 0x40021000 + 8002e8c: 08004358 .word 0x08004358 + +08002e90 : + * @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) +{ + 8002e90: b580 push {r7, lr} + 8002e92: b086 sub sp, #24 + 8002e94: af00 add r7, sp, #0 + 8002e96: 6078 str r0, [r7, #4] + uint32_t tickstart; + uint32_t temp_reg; + FlagStatus pwrclkchanged = RESET; + 8002e98: 2017 movs r0, #23 + 8002e9a: 183b adds r3, r7, r0 + 8002e9c: 2200 movs r2, #0 + 8002e9e: 701a strb r2, [r3, #0] + + /* Check the parameters */ + assert_param(IS_RCC_PERIPHCLOCK(PeriphClkInit->PeriphClockSelection)); + + /*------------------------------- RTC/LCD Configuration ------------------------*/ + if ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC) + 8002ea0: 687b ldr r3, [r7, #4] + 8002ea2: 681b ldr r3, [r3, #0] + 8002ea4: 2220 movs r2, #32 + 8002ea6: 4013 ands r3, r2 + 8002ea8: d100 bne.n 8002eac + 8002eaa: e0c2 b.n 8003032 +#endif /* LCD */ + + /* 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()) + 8002eac: 4b81 ldr r3, [pc, #516] ; (80030b4 ) + 8002eae: 6b9a ldr r2, [r3, #56] ; 0x38 + 8002eb0: 2380 movs r3, #128 ; 0x80 + 8002eb2: 055b lsls r3, r3, #21 + 8002eb4: 4013 ands r3, r2 + 8002eb6: d109 bne.n 8002ecc + { + __HAL_RCC_PWR_CLK_ENABLE(); + 8002eb8: 4b7e ldr r3, [pc, #504] ; (80030b4 ) + 8002eba: 6b9a ldr r2, [r3, #56] ; 0x38 + 8002ebc: 4b7d ldr r3, [pc, #500] ; (80030b4 ) + 8002ebe: 2180 movs r1, #128 ; 0x80 + 8002ec0: 0549 lsls r1, r1, #21 + 8002ec2: 430a orrs r2, r1 + 8002ec4: 639a str r2, [r3, #56] ; 0x38 + pwrclkchanged = SET; + 8002ec6: 183b adds r3, r7, r0 + 8002ec8: 2201 movs r2, #1 + 8002eca: 701a strb r2, [r3, #0] + } + + if(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 8002ecc: 4b7a ldr r3, [pc, #488] ; (80030b8 ) + 8002ece: 681a ldr r2, [r3, #0] + 8002ed0: 2380 movs r3, #128 ; 0x80 + 8002ed2: 005b lsls r3, r3, #1 + 8002ed4: 4013 ands r3, r2 + 8002ed6: d11a bne.n 8002f0e + { + /* Enable write access to Backup domain */ + SET_BIT(PWR->CR, PWR_CR_DBP); + 8002ed8: 4b77 ldr r3, [pc, #476] ; (80030b8 ) + 8002eda: 681a ldr r2, [r3, #0] + 8002edc: 4b76 ldr r3, [pc, #472] ; (80030b8 ) + 8002ede: 2180 movs r1, #128 ; 0x80 + 8002ee0: 0049 lsls r1, r1, #1 + 8002ee2: 430a orrs r2, r1 + 8002ee4: 601a str r2, [r3, #0] + + /* Wait for Backup domain Write protection disable */ + tickstart = HAL_GetTick(); + 8002ee6: f7fe f917 bl 8001118 + 8002eea: 0003 movs r3, r0 + 8002eec: 613b str r3, [r7, #16] + + while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 8002eee: e008 b.n 8002f02 + { + if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) + 8002ef0: f7fe f912 bl 8001118 + 8002ef4: 0002 movs r2, r0 + 8002ef6: 693b ldr r3, [r7, #16] + 8002ef8: 1ad3 subs r3, r2, r3 + 8002efa: 2b64 cmp r3, #100 ; 0x64 + 8002efc: d901 bls.n 8002f02 + { + return HAL_TIMEOUT; + 8002efe: 2303 movs r3, #3 + 8002f00: e0d4 b.n 80030ac + while(HAL_IS_BIT_CLR(PWR->CR, PWR_CR_DBP)) + 8002f02: 4b6d ldr r3, [pc, #436] ; (80030b8 ) + 8002f04: 681a ldr r2, [r3, #0] + 8002f06: 2380 movs r3, #128 ; 0x80 + 8002f08: 005b lsls r3, r3, #1 + 8002f0a: 4013 ands r3, r2 + 8002f0c: d0f0 beq.n 8002ef0 + } + } + } + + /* Check if user wants to change HSE RTC prescaler whereas HSE is enabled */ + temp_reg = (RCC->CR & RCC_CR_RTCPRE); + 8002f0e: 4b69 ldr r3, [pc, #420] ; (80030b4 ) + 8002f10: 681a ldr r2, [r3, #0] + 8002f12: 23c0 movs r3, #192 ; 0xc0 + 8002f14: 039b lsls r3, r3, #14 + 8002f16: 4013 ands r3, r2 + 8002f18: 60fb str r3, [r7, #12] + if ((temp_reg != (PeriphClkInit->RTCClockSelection & RCC_CR_RTCPRE)) + 8002f1a: 687b ldr r3, [r7, #4] + 8002f1c: 685a ldr r2, [r3, #4] + 8002f1e: 23c0 movs r3, #192 ; 0xc0 + 8002f20: 039b lsls r3, r3, #14 + 8002f22: 4013 ands r3, r2 + 8002f24: 68fa ldr r2, [r7, #12] + 8002f26: 429a cmp r2, r3 + 8002f28: d013 beq.n 8002f52 +#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) + 8002f2a: 687b ldr r3, [r7, #4] + 8002f2c: 685a ldr r2, [r3, #4] + 8002f2e: 23c0 movs r3, #192 ; 0xc0 + 8002f30: 029b lsls r3, r3, #10 + 8002f32: 401a ands r2, r3 + 8002f34: 23c0 movs r3, #192 ; 0xc0 + 8002f36: 029b lsls r3, r3, #10 + 8002f38: 429a cmp r2, r3 + 8002f3a: d10a bne.n 8002f52 + { + if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSERDY)) + 8002f3c: 4b5d ldr r3, [pc, #372] ; (80030b4 ) + 8002f3e: 681a ldr r2, [r3, #0] + 8002f40: 2380 movs r3, #128 ; 0x80 + 8002f42: 029b lsls r3, r3, #10 + 8002f44: 401a ands r2, r3 + 8002f46: 2380 movs r3, #128 ; 0x80 + 8002f48: 029b lsls r3, r3, #10 + 8002f4a: 429a cmp r2, r3 + 8002f4c: d101 bne.n 8002f52 + { + /* To update HSE divider, first switch-OFF HSE clock oscillator*/ + return HAL_ERROR; + 8002f4e: 2301 movs r3, #1 + 8002f50: e0ac b.n 80030ac + } + } + } + + /* Reset the Backup domain only if the RTC Clock source selection is modified from reset value */ + temp_reg = (RCC->CSR & RCC_CSR_RTCSEL); + 8002f52: 4b58 ldr r3, [pc, #352] ; (80030b4 ) + 8002f54: 6d1a ldr r2, [r3, #80] ; 0x50 + 8002f56: 23c0 movs r3, #192 ; 0xc0 + 8002f58: 029b lsls r3, r3, #10 + 8002f5a: 4013 ands r3, r2 + 8002f5c: 60fb str r3, [r7, #12] + + if((temp_reg != 0x00000000U) && (((temp_reg != (PeriphClkInit->RTCClockSelection & RCC_CSR_RTCSEL)) \ + 8002f5e: 68fb ldr r3, [r7, #12] + 8002f60: 2b00 cmp r3, #0 + 8002f62: d03b beq.n 8002fdc + 8002f64: 687b ldr r3, [r7, #4] + 8002f66: 685a ldr r2, [r3, #4] + 8002f68: 23c0 movs r3, #192 ; 0xc0 + 8002f6a: 029b lsls r3, r3, #10 + 8002f6c: 4013 ands r3, r2 + 8002f6e: 68fa ldr r2, [r7, #12] + 8002f70: 429a cmp r2, r3 + 8002f72: d033 beq.n 8002fdc + && (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC)) + 8002f74: 687b ldr r3, [r7, #4] + 8002f76: 681b ldr r3, [r3, #0] + 8002f78: 2220 movs r2, #32 + 8002f7a: 4013 ands r3, r2 + 8002f7c: d02e beq.n 8002fdc + && (((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)); + 8002f7e: 4b4d ldr r3, [pc, #308] ; (80030b4 ) + 8002f80: 6d1b ldr r3, [r3, #80] ; 0x50 + 8002f82: 4a4e ldr r2, [pc, #312] ; (80030bc ) + 8002f84: 4013 ands r3, r2 + 8002f86: 60fb str r3, [r7, #12] + + /* RTC Clock selection can be changed only if the Backup Domain is reset */ + __HAL_RCC_BACKUPRESET_FORCE(); + 8002f88: 4b4a ldr r3, [pc, #296] ; (80030b4 ) + 8002f8a: 6d1a ldr r2, [r3, #80] ; 0x50 + 8002f8c: 4b49 ldr r3, [pc, #292] ; (80030b4 ) + 8002f8e: 2180 movs r1, #128 ; 0x80 + 8002f90: 0309 lsls r1, r1, #12 + 8002f92: 430a orrs r2, r1 + 8002f94: 651a str r2, [r3, #80] ; 0x50 + __HAL_RCC_BACKUPRESET_RELEASE(); + 8002f96: 4b47 ldr r3, [pc, #284] ; (80030b4 ) + 8002f98: 6d1a ldr r2, [r3, #80] ; 0x50 + 8002f9a: 4b46 ldr r3, [pc, #280] ; (80030b4 ) + 8002f9c: 4948 ldr r1, [pc, #288] ; (80030c0 ) + 8002f9e: 400a ands r2, r1 + 8002fa0: 651a str r2, [r3, #80] ; 0x50 + + /* Restore the Content of CSR register */ + RCC->CSR = temp_reg; + 8002fa2: 4b44 ldr r3, [pc, #272] ; (80030b4 ) + 8002fa4: 68fa ldr r2, [r7, #12] + 8002fa6: 651a str r2, [r3, #80] ; 0x50 + + /* Wait for LSERDY if LSE was enabled */ + if (HAL_IS_BIT_SET(temp_reg, RCC_CSR_LSEON)) + 8002fa8: 68fa ldr r2, [r7, #12] + 8002faa: 2380 movs r3, #128 ; 0x80 + 8002fac: 005b lsls r3, r3, #1 + 8002fae: 4013 ands r3, r2 + 8002fb0: d014 beq.n 8002fdc + { + /* Get Start Tick */ + tickstart = HAL_GetTick(); + 8002fb2: f7fe f8b1 bl 8001118 + 8002fb6: 0003 movs r3, r0 + 8002fb8: 613b str r3, [r7, #16] + + /* Wait till LSE is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U) + 8002fba: e009 b.n 8002fd0 + { + if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) + 8002fbc: f7fe f8ac bl 8001118 + 8002fc0: 0002 movs r2, r0 + 8002fc2: 693b ldr r3, [r7, #16] + 8002fc4: 1ad3 subs r3, r2, r3 + 8002fc6: 4a3f ldr r2, [pc, #252] ; (80030c4 ) + 8002fc8: 4293 cmp r3, r2 + 8002fca: d901 bls.n 8002fd0 + { + return HAL_TIMEOUT; + 8002fcc: 2303 movs r3, #3 + 8002fce: e06d b.n 80030ac + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U) + 8002fd0: 4b38 ldr r3, [pc, #224] ; (80030b4 ) + 8002fd2: 6d1a ldr r2, [r3, #80] ; 0x50 + 8002fd4: 2380 movs r3, #128 ; 0x80 + 8002fd6: 009b lsls r3, r3, #2 + 8002fd8: 4013 ands r3, r2 + 8002fda: d0ef beq.n 8002fbc + } + } + } + } + __HAL_RCC_RTC_CONFIG(PeriphClkInit->RTCClockSelection); + 8002fdc: 687b ldr r3, [r7, #4] + 8002fde: 685a ldr r2, [r3, #4] + 8002fe0: 23c0 movs r3, #192 ; 0xc0 + 8002fe2: 029b lsls r3, r3, #10 + 8002fe4: 401a ands r2, r3 + 8002fe6: 23c0 movs r3, #192 ; 0xc0 + 8002fe8: 029b lsls r3, r3, #10 + 8002fea: 429a cmp r2, r3 + 8002fec: d10c bne.n 8003008 + 8002fee: 4b31 ldr r3, [pc, #196] ; (80030b4 ) + 8002ff0: 681b ldr r3, [r3, #0] + 8002ff2: 4a35 ldr r2, [pc, #212] ; (80030c8 ) + 8002ff4: 4013 ands r3, r2 + 8002ff6: 0019 movs r1, r3 + 8002ff8: 687b ldr r3, [r7, #4] + 8002ffa: 685a ldr r2, [r3, #4] + 8002ffc: 23c0 movs r3, #192 ; 0xc0 + 8002ffe: 039b lsls r3, r3, #14 + 8003000: 401a ands r2, r3 + 8003002: 4b2c ldr r3, [pc, #176] ; (80030b4 ) + 8003004: 430a orrs r2, r1 + 8003006: 601a str r2, [r3, #0] + 8003008: 4b2a ldr r3, [pc, #168] ; (80030b4 ) + 800300a: 6d19 ldr r1, [r3, #80] ; 0x50 + 800300c: 687b ldr r3, [r7, #4] + 800300e: 685a ldr r2, [r3, #4] + 8003010: 23c0 movs r3, #192 ; 0xc0 + 8003012: 029b lsls r3, r3, #10 + 8003014: 401a ands r2, r3 + 8003016: 4b27 ldr r3, [pc, #156] ; (80030b4 ) + 8003018: 430a orrs r2, r1 + 800301a: 651a str r2, [r3, #80] ; 0x50 + + /* Require to disable power clock if necessary */ + if(pwrclkchanged == SET) + 800301c: 2317 movs r3, #23 + 800301e: 18fb adds r3, r7, r3 + 8003020: 781b ldrb r3, [r3, #0] + 8003022: 2b01 cmp r3, #1 + 8003024: d105 bne.n 8003032 + { + __HAL_RCC_PWR_CLK_DISABLE(); + 8003026: 4b23 ldr r3, [pc, #140] ; (80030b4 ) + 8003028: 6b9a ldr r2, [r3, #56] ; 0x38 + 800302a: 4b22 ldr r3, [pc, #136] ; (80030b4 ) + 800302c: 4927 ldr r1, [pc, #156] ; (80030cc ) + 800302e: 400a ands r2, r1 + 8003030: 639a str r2, [r3, #56] ; 0x38 + __HAL_RCC_USART1_CONFIG(PeriphClkInit->Usart1ClockSelection); + } +#endif /* RCC_CCIPR_USART1SEL */ + + /*----------------------------- USART2 Configuration --------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2) + 8003032: 687b ldr r3, [r7, #4] + 8003034: 681b ldr r3, [r3, #0] + 8003036: 2202 movs r2, #2 + 8003038: 4013 ands r3, r2 + 800303a: d009 beq.n 8003050 + { + /* Check the parameters */ + assert_param(IS_RCC_USART2CLKSOURCE(PeriphClkInit->Usart2ClockSelection)); + + /* Configure the USART2 clock source */ + __HAL_RCC_USART2_CONFIG(PeriphClkInit->Usart2ClockSelection); + 800303c: 4b1d ldr r3, [pc, #116] ; (80030b4 ) + 800303e: 6cdb ldr r3, [r3, #76] ; 0x4c + 8003040: 220c movs r2, #12 + 8003042: 4393 bics r3, r2 + 8003044: 0019 movs r1, r3 + 8003046: 687b ldr r3, [r7, #4] + 8003048: 689a ldr r2, [r3, #8] + 800304a: 4b1a ldr r3, [pc, #104] ; (80030b4 ) + 800304c: 430a orrs r2, r1 + 800304e: 64da str r2, [r3, #76] ; 0x4c + } + + /*------------------------------ LPUART1 Configuration ------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPUART1) == RCC_PERIPHCLK_LPUART1) + 8003050: 687b ldr r3, [r7, #4] + 8003052: 681b ldr r3, [r3, #0] + 8003054: 2204 movs r2, #4 + 8003056: 4013 ands r3, r2 + 8003058: d009 beq.n 800306e + { + /* Check the parameters */ + assert_param(IS_RCC_LPUART1CLKSOURCE(PeriphClkInit->Lpuart1ClockSelection)); + + /* Configure the LPUAR1 clock source */ + __HAL_RCC_LPUART1_CONFIG(PeriphClkInit->Lpuart1ClockSelection); + 800305a: 4b16 ldr r3, [pc, #88] ; (80030b4 ) + 800305c: 6cdb ldr r3, [r3, #76] ; 0x4c + 800305e: 4a1c ldr r2, [pc, #112] ; (80030d0 ) + 8003060: 4013 ands r3, r2 + 8003062: 0019 movs r1, r3 + 8003064: 687b ldr r3, [r7, #4] + 8003066: 68da ldr r2, [r3, #12] + 8003068: 4b12 ldr r3, [pc, #72] ; (80030b4 ) + 800306a: 430a orrs r2, r1 + 800306c: 64da str r2, [r3, #76] ; 0x4c + } + + /*------------------------------ I2C1 Configuration ------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1) + 800306e: 687b ldr r3, [r7, #4] + 8003070: 681b ldr r3, [r3, #0] + 8003072: 2208 movs r2, #8 + 8003074: 4013 ands r3, r2 + 8003076: d009 beq.n 800308c + { + /* Check the parameters */ + assert_param(IS_RCC_I2C1CLKSOURCE(PeriphClkInit->I2c1ClockSelection)); + + /* Configure the I2C1 clock source */ + __HAL_RCC_I2C1_CONFIG(PeriphClkInit->I2c1ClockSelection); + 8003078: 4b0e ldr r3, [pc, #56] ; (80030b4 ) + 800307a: 6cdb ldr r3, [r3, #76] ; 0x4c + 800307c: 4a15 ldr r2, [pc, #84] ; (80030d4 ) + 800307e: 4013 ands r3, r2 + 8003080: 0019 movs r1, r3 + 8003082: 687b ldr r3, [r7, #4] + 8003084: 691a ldr r2, [r3, #16] + 8003086: 4b0b ldr r3, [pc, #44] ; (80030b4 ) + 8003088: 430a orrs r2, r1 + 800308a: 64da str r2, [r3, #76] ; 0x4c + __HAL_RCC_USB_CONFIG(PeriphClkInit->UsbClockSelection); + } +#endif /* USB */ + + /*---------------------------- LPTIM1 configuration ------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPTIM1) == (RCC_PERIPHCLK_LPTIM1)) + 800308c: 687b ldr r3, [r7, #4] + 800308e: 681b ldr r3, [r3, #0] + 8003090: 2280 movs r2, #128 ; 0x80 + 8003092: 4013 ands r3, r2 + 8003094: d009 beq.n 80030aa + { + assert_param(IS_RCC_LPTIMCLK(PeriphClkInit->LptimClockSelection)); + __HAL_RCC_LPTIM1_CONFIG(PeriphClkInit->LptimClockSelection); + 8003096: 4b07 ldr r3, [pc, #28] ; (80030b4 ) + 8003098: 6cdb ldr r3, [r3, #76] ; 0x4c + 800309a: 4a0f ldr r2, [pc, #60] ; (80030d8 ) + 800309c: 4013 ands r3, r2 + 800309e: 0019 movs r1, r3 + 80030a0: 687b ldr r3, [r7, #4] + 80030a2: 695a ldr r2, [r3, #20] + 80030a4: 4b03 ldr r3, [pc, #12] ; (80030b4 ) + 80030a6: 430a orrs r2, r1 + 80030a8: 64da str r2, [r3, #76] ; 0x4c + } + + return HAL_OK; + 80030aa: 2300 movs r3, #0 +} + 80030ac: 0018 movs r0, r3 + 80030ae: 46bd mov sp, r7 + 80030b0: b006 add sp, #24 + 80030b2: bd80 pop {r7, pc} + 80030b4: 40021000 .word 0x40021000 + 80030b8: 40007000 .word 0x40007000 + 80030bc: fffcffff .word 0xfffcffff + 80030c0: fff7ffff .word 0xfff7ffff + 80030c4: 00001388 .word 0x00001388 + 80030c8: ffcfffff .word 0xffcfffff + 80030cc: efffffff .word 0xefffffff + 80030d0: fffff3ff .word 0xfffff3ff + 80030d4: ffffcfff .word 0xffffcfff + 80030d8: fff3ffff .word 0xfff3ffff + +080030dc : + * 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) +{ + 80030dc: b580 push {r7, lr} + 80030de: b082 sub sp, #8 + 80030e0: af00 add r7, sp, #0 + 80030e2: 6078 str r0, [r7, #4] + /* Check the TIM handle allocation */ + if (htim == NULL) + 80030e4: 687b ldr r3, [r7, #4] + 80030e6: 2b00 cmp r3, #0 + 80030e8: d101 bne.n 80030ee + { + return HAL_ERROR; + 80030ea: 2301 movs r3, #1 + 80030ec: e032 b.n 8003154 + assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + assert_param(IS_TIM_PERIOD(htim->Init.Period)); + assert_param(IS_TIM_PRESCALER(htim->Init.Prescaler)); + assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + + if (htim->State == HAL_TIM_STATE_RESET) + 80030ee: 687b ldr r3, [r7, #4] + 80030f0: 2239 movs r2, #57 ; 0x39 + 80030f2: 5c9b ldrb r3, [r3, r2] + 80030f4: b2db uxtb r3, r3 + 80030f6: 2b00 cmp r3, #0 + 80030f8: d107 bne.n 800310a + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + 80030fa: 687b ldr r3, [r7, #4] + 80030fc: 2238 movs r2, #56 ; 0x38 + 80030fe: 2100 movs r1, #0 + 8003100: 5499 strb r1, [r3, r2] + } + /* 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); + 8003102: 687b ldr r3, [r7, #4] + 8003104: 0018 movs r0, r3 + 8003106: f7fd fe7f bl 8000e08 +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + 800310a: 687b ldr r3, [r7, #4] + 800310c: 2239 movs r2, #57 ; 0x39 + 800310e: 2102 movs r1, #2 + 8003110: 5499 strb r1, [r3, r2] + + /* Set the Time Base configuration */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + 8003112: 687b ldr r3, [r7, #4] + 8003114: 681a ldr r2, [r3, #0] + 8003116: 687b ldr r3, [r7, #4] + 8003118: 3304 adds r3, #4 + 800311a: 0019 movs r1, r3 + 800311c: 0010 movs r0, r2 + 800311e: f000 f9ff bl 8003520 + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + 8003122: 687b ldr r3, [r7, #4] + 8003124: 223e movs r2, #62 ; 0x3e + 8003126: 2101 movs r1, #1 + 8003128: 5499 strb r1, [r3, r2] + + /* Initialize the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 800312a: 687b ldr r3, [r7, #4] + 800312c: 223a movs r2, #58 ; 0x3a + 800312e: 2101 movs r1, #1 + 8003130: 5499 strb r1, [r3, r2] + 8003132: 687b ldr r3, [r7, #4] + 8003134: 223b movs r2, #59 ; 0x3b + 8003136: 2101 movs r1, #1 + 8003138: 5499 strb r1, [r3, r2] + 800313a: 687b ldr r3, [r7, #4] + 800313c: 223c movs r2, #60 ; 0x3c + 800313e: 2101 movs r1, #1 + 8003140: 5499 strb r1, [r3, r2] + 8003142: 687b ldr r3, [r7, #4] + 8003144: 223d movs r2, #61 ; 0x3d + 8003146: 2101 movs r1, #1 + 8003148: 5499 strb r1, [r3, r2] + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + 800314a: 687b ldr r3, [r7, #4] + 800314c: 2239 movs r2, #57 ; 0x39 + 800314e: 2101 movs r1, #1 + 8003150: 5499 strb r1, [r3, r2] + + return HAL_OK; + 8003152: 2300 movs r3, #0 +} + 8003154: 0018 movs r0, r3 + 8003156: 46bd mov sp, r7 + 8003158: b002 add sp, #8 + 800315a: bd80 pop {r7, pc} + +0800315c : + * 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) +{ + 800315c: b580 push {r7, lr} + 800315e: b082 sub sp, #8 + 8003160: af00 add r7, sp, #0 + 8003162: 6078 str r0, [r7, #4] + /* Check the TIM handle allocation */ + if (htim == NULL) + 8003164: 687b ldr r3, [r7, #4] + 8003166: 2b00 cmp r3, #0 + 8003168: d101 bne.n 800316e + { + return HAL_ERROR; + 800316a: 2301 movs r3, #1 + 800316c: e032 b.n 80031d4 + assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + assert_param(IS_TIM_PERIOD(htim->Init.Period)); + assert_param(IS_TIM_PRESCALER(htim->Init.Prescaler)); + assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + + if (htim->State == HAL_TIM_STATE_RESET) + 800316e: 687b ldr r3, [r7, #4] + 8003170: 2239 movs r2, #57 ; 0x39 + 8003172: 5c9b ldrb r3, [r3, r2] + 8003174: b2db uxtb r3, r3 + 8003176: 2b00 cmp r3, #0 + 8003178: d107 bne.n 800318a + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + 800317a: 687b ldr r3, [r7, #4] + 800317c: 2238 movs r2, #56 ; 0x38 + 800317e: 2100 movs r1, #0 + 8003180: 5499 strb r1, [r3, r2] + } + /* 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); + 8003182: 687b ldr r3, [r7, #4] + 8003184: 0018 movs r0, r3 + 8003186: f000 f829 bl 80031dc +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + 800318a: 687b ldr r3, [r7, #4] + 800318c: 2239 movs r2, #57 ; 0x39 + 800318e: 2102 movs r1, #2 + 8003190: 5499 strb r1, [r3, r2] + + /* Init the base time for the PWM */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + 8003192: 687b ldr r3, [r7, #4] + 8003194: 681a ldr r2, [r3, #0] + 8003196: 687b ldr r3, [r7, #4] + 8003198: 3304 adds r3, #4 + 800319a: 0019 movs r1, r3 + 800319c: 0010 movs r0, r2 + 800319e: f000 f9bf bl 8003520 + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + 80031a2: 687b ldr r3, [r7, #4] + 80031a4: 223e movs r2, #62 ; 0x3e + 80031a6: 2101 movs r1, #1 + 80031a8: 5499 strb r1, [r3, r2] + + /* Initialize the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 80031aa: 687b ldr r3, [r7, #4] + 80031ac: 223a movs r2, #58 ; 0x3a + 80031ae: 2101 movs r1, #1 + 80031b0: 5499 strb r1, [r3, r2] + 80031b2: 687b ldr r3, [r7, #4] + 80031b4: 223b movs r2, #59 ; 0x3b + 80031b6: 2101 movs r1, #1 + 80031b8: 5499 strb r1, [r3, r2] + 80031ba: 687b ldr r3, [r7, #4] + 80031bc: 223c movs r2, #60 ; 0x3c + 80031be: 2101 movs r1, #1 + 80031c0: 5499 strb r1, [r3, r2] + 80031c2: 687b ldr r3, [r7, #4] + 80031c4: 223d movs r2, #61 ; 0x3d + 80031c6: 2101 movs r1, #1 + 80031c8: 5499 strb r1, [r3, r2] + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + 80031ca: 687b ldr r3, [r7, #4] + 80031cc: 2239 movs r2, #57 ; 0x39 + 80031ce: 2101 movs r1, #1 + 80031d0: 5499 strb r1, [r3, r2] + + return HAL_OK; + 80031d2: 2300 movs r3, #0 +} + 80031d4: 0018 movs r0, r3 + 80031d6: 46bd mov sp, r7 + 80031d8: b002 add sp, #8 + 80031da: bd80 pop {r7, pc} + +080031dc : + * @brief Initializes the TIM PWM MSP. + * @param htim TIM PWM handle + * @retval None + */ +__weak void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim) +{ + 80031dc: b580 push {r7, lr} + 80031de: b082 sub sp, #8 + 80031e0: af00 add r7, sp, #0 + 80031e2: 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 + */ +} + 80031e4: 46c0 nop ; (mov r8, r8) + 80031e6: 46bd mov sp, r7 + 80031e8: b002 add sp, #8 + 80031ea: bd80 pop {r7, pc} + +080031ec : + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, + TIM_OC_InitTypeDef *sConfig, + uint32_t Channel) +{ + 80031ec: b580 push {r7, lr} + 80031ee: b086 sub sp, #24 + 80031f0: af00 add r7, sp, #0 + 80031f2: 60f8 str r0, [r7, #12] + 80031f4: 60b9 str r1, [r7, #8] + 80031f6: 607a str r2, [r7, #4] + HAL_StatusTypeDef status = HAL_OK; + 80031f8: 2317 movs r3, #23 + 80031fa: 18fb adds r3, r7, r3 + 80031fc: 2200 movs r2, #0 + 80031fe: 701a strb r2, [r3, #0] + 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); + 8003200: 68fb ldr r3, [r7, #12] + 8003202: 2238 movs r2, #56 ; 0x38 + 8003204: 5c9b ldrb r3, [r3, r2] + 8003206: 2b01 cmp r3, #1 + 8003208: d101 bne.n 800320e + 800320a: 2302 movs r3, #2 + 800320c: e0ad b.n 800336a + 800320e: 68fb ldr r3, [r7, #12] + 8003210: 2238 movs r2, #56 ; 0x38 + 8003212: 2101 movs r1, #1 + 8003214: 5499 strb r1, [r3, r2] + + switch (Channel) + 8003216: 687b ldr r3, [r7, #4] + 8003218: 2b0c cmp r3, #12 + 800321a: d100 bne.n 800321e + 800321c: e076 b.n 800330c + 800321e: 687b ldr r3, [r7, #4] + 8003220: 2b0c cmp r3, #12 + 8003222: d900 bls.n 8003226 + 8003224: e095 b.n 8003352 + 8003226: 687b ldr r3, [r7, #4] + 8003228: 2b08 cmp r3, #8 + 800322a: d04e beq.n 80032ca + 800322c: 687b ldr r3, [r7, #4] + 800322e: 2b08 cmp r3, #8 + 8003230: d900 bls.n 8003234 + 8003232: e08e b.n 8003352 + 8003234: 687b ldr r3, [r7, #4] + 8003236: 2b00 cmp r3, #0 + 8003238: d003 beq.n 8003242 + 800323a: 687b ldr r3, [r7, #4] + 800323c: 2b04 cmp r3, #4 + 800323e: d021 beq.n 8003284 + 8003240: e087 b.n 8003352 + { + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); + + /* Configure the Channel 1 in PWM mode */ + TIM_OC1_SetConfig(htim->Instance, sConfig); + 8003242: 68fb ldr r3, [r7, #12] + 8003244: 681b ldr r3, [r3, #0] + 8003246: 68ba ldr r2, [r7, #8] + 8003248: 0011 movs r1, r2 + 800324a: 0018 movs r0, r3 + 800324c: f000 f9bc bl 80035c8 + + /* Set the Preload enable bit for channel1 */ + htim->Instance->CCMR1 |= TIM_CCMR1_OC1PE; + 8003250: 68fb ldr r3, [r7, #12] + 8003252: 681b ldr r3, [r3, #0] + 8003254: 699a ldr r2, [r3, #24] + 8003256: 68fb ldr r3, [r7, #12] + 8003258: 681b ldr r3, [r3, #0] + 800325a: 2108 movs r1, #8 + 800325c: 430a orrs r2, r1 + 800325e: 619a str r2, [r3, #24] + + /* Configure the Output Fast mode */ + htim->Instance->CCMR1 &= ~TIM_CCMR1_OC1FE; + 8003260: 68fb ldr r3, [r7, #12] + 8003262: 681b ldr r3, [r3, #0] + 8003264: 699a ldr r2, [r3, #24] + 8003266: 68fb ldr r3, [r7, #12] + 8003268: 681b ldr r3, [r3, #0] + 800326a: 2104 movs r1, #4 + 800326c: 438a bics r2, r1 + 800326e: 619a str r2, [r3, #24] + htim->Instance->CCMR1 |= sConfig->OCFastMode; + 8003270: 68fb ldr r3, [r7, #12] + 8003272: 681b ldr r3, [r3, #0] + 8003274: 6999 ldr r1, [r3, #24] + 8003276: 68bb ldr r3, [r7, #8] + 8003278: 68da ldr r2, [r3, #12] + 800327a: 68fb ldr r3, [r7, #12] + 800327c: 681b ldr r3, [r3, #0] + 800327e: 430a orrs r2, r1 + 8003280: 619a str r2, [r3, #24] + break; + 8003282: e06b b.n 800335c + { + /* Check the parameters */ + assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); + + /* Configure the Channel 2 in PWM mode */ + TIM_OC2_SetConfig(htim->Instance, sConfig); + 8003284: 68fb ldr r3, [r7, #12] + 8003286: 681b ldr r3, [r3, #0] + 8003288: 68ba ldr r2, [r7, #8] + 800328a: 0011 movs r1, r2 + 800328c: 0018 movs r0, r3 + 800328e: f000 f9d7 bl 8003640 + + /* Set the Preload enable bit for channel2 */ + htim->Instance->CCMR1 |= TIM_CCMR1_OC2PE; + 8003292: 68fb ldr r3, [r7, #12] + 8003294: 681b ldr r3, [r3, #0] + 8003296: 699a ldr r2, [r3, #24] + 8003298: 68fb ldr r3, [r7, #12] + 800329a: 681b ldr r3, [r3, #0] + 800329c: 2180 movs r1, #128 ; 0x80 + 800329e: 0109 lsls r1, r1, #4 + 80032a0: 430a orrs r2, r1 + 80032a2: 619a str r2, [r3, #24] + + /* Configure the Output Fast mode */ + htim->Instance->CCMR1 &= ~TIM_CCMR1_OC2FE; + 80032a4: 68fb ldr r3, [r7, #12] + 80032a6: 681b ldr r3, [r3, #0] + 80032a8: 699a ldr r2, [r3, #24] + 80032aa: 68fb ldr r3, [r7, #12] + 80032ac: 681b ldr r3, [r3, #0] + 80032ae: 4931 ldr r1, [pc, #196] ; (8003374 ) + 80032b0: 400a ands r2, r1 + 80032b2: 619a str r2, [r3, #24] + htim->Instance->CCMR1 |= sConfig->OCFastMode << 8U; + 80032b4: 68fb ldr r3, [r7, #12] + 80032b6: 681b ldr r3, [r3, #0] + 80032b8: 6999 ldr r1, [r3, #24] + 80032ba: 68bb ldr r3, [r7, #8] + 80032bc: 68db ldr r3, [r3, #12] + 80032be: 021a lsls r2, r3, #8 + 80032c0: 68fb ldr r3, [r7, #12] + 80032c2: 681b ldr r3, [r3, #0] + 80032c4: 430a orrs r2, r1 + 80032c6: 619a str r2, [r3, #24] + break; + 80032c8: e048 b.n 800335c + { + /* Check the parameters */ + assert_param(IS_TIM_CC3_INSTANCE(htim->Instance)); + + /* Configure the Channel 3 in PWM mode */ + TIM_OC3_SetConfig(htim->Instance, sConfig); + 80032ca: 68fb ldr r3, [r7, #12] + 80032cc: 681b ldr r3, [r3, #0] + 80032ce: 68ba ldr r2, [r7, #8] + 80032d0: 0011 movs r1, r2 + 80032d2: 0018 movs r0, r3 + 80032d4: f000 f9f6 bl 80036c4 + + /* Set the Preload enable bit for channel3 */ + htim->Instance->CCMR2 |= TIM_CCMR2_OC3PE; + 80032d8: 68fb ldr r3, [r7, #12] + 80032da: 681b ldr r3, [r3, #0] + 80032dc: 69da ldr r2, [r3, #28] + 80032de: 68fb ldr r3, [r7, #12] + 80032e0: 681b ldr r3, [r3, #0] + 80032e2: 2108 movs r1, #8 + 80032e4: 430a orrs r2, r1 + 80032e6: 61da str r2, [r3, #28] + + /* Configure the Output Fast mode */ + htim->Instance->CCMR2 &= ~TIM_CCMR2_OC3FE; + 80032e8: 68fb ldr r3, [r7, #12] + 80032ea: 681b ldr r3, [r3, #0] + 80032ec: 69da ldr r2, [r3, #28] + 80032ee: 68fb ldr r3, [r7, #12] + 80032f0: 681b ldr r3, [r3, #0] + 80032f2: 2104 movs r1, #4 + 80032f4: 438a bics r2, r1 + 80032f6: 61da str r2, [r3, #28] + htim->Instance->CCMR2 |= sConfig->OCFastMode; + 80032f8: 68fb ldr r3, [r7, #12] + 80032fa: 681b ldr r3, [r3, #0] + 80032fc: 69d9 ldr r1, [r3, #28] + 80032fe: 68bb ldr r3, [r7, #8] + 8003300: 68da ldr r2, [r3, #12] + 8003302: 68fb ldr r3, [r7, #12] + 8003304: 681b ldr r3, [r3, #0] + 8003306: 430a orrs r2, r1 + 8003308: 61da str r2, [r3, #28] + break; + 800330a: e027 b.n 800335c + { + /* Check the parameters */ + assert_param(IS_TIM_CC4_INSTANCE(htim->Instance)); + + /* Configure the Channel 4 in PWM mode */ + TIM_OC4_SetConfig(htim->Instance, sConfig); + 800330c: 68fb ldr r3, [r7, #12] + 800330e: 681b ldr r3, [r3, #0] + 8003310: 68ba ldr r2, [r7, #8] + 8003312: 0011 movs r1, r2 + 8003314: 0018 movs r0, r3 + 8003316: f000 fa15 bl 8003744 + + /* Set the Preload enable bit for channel4 */ + htim->Instance->CCMR2 |= TIM_CCMR2_OC4PE; + 800331a: 68fb ldr r3, [r7, #12] + 800331c: 681b ldr r3, [r3, #0] + 800331e: 69da ldr r2, [r3, #28] + 8003320: 68fb ldr r3, [r7, #12] + 8003322: 681b ldr r3, [r3, #0] + 8003324: 2180 movs r1, #128 ; 0x80 + 8003326: 0109 lsls r1, r1, #4 + 8003328: 430a orrs r2, r1 + 800332a: 61da str r2, [r3, #28] + + /* Configure the Output Fast mode */ + htim->Instance->CCMR2 &= ~TIM_CCMR2_OC4FE; + 800332c: 68fb ldr r3, [r7, #12] + 800332e: 681b ldr r3, [r3, #0] + 8003330: 69da ldr r2, [r3, #28] + 8003332: 68fb ldr r3, [r7, #12] + 8003334: 681b ldr r3, [r3, #0] + 8003336: 490f ldr r1, [pc, #60] ; (8003374 ) + 8003338: 400a ands r2, r1 + 800333a: 61da str r2, [r3, #28] + htim->Instance->CCMR2 |= sConfig->OCFastMode << 8U; + 800333c: 68fb ldr r3, [r7, #12] + 800333e: 681b ldr r3, [r3, #0] + 8003340: 69d9 ldr r1, [r3, #28] + 8003342: 68bb ldr r3, [r7, #8] + 8003344: 68db ldr r3, [r3, #12] + 8003346: 021a lsls r2, r3, #8 + 8003348: 68fb ldr r3, [r7, #12] + 800334a: 681b ldr r3, [r3, #0] + 800334c: 430a orrs r2, r1 + 800334e: 61da str r2, [r3, #28] + break; + 8003350: e004 b.n 800335c + } + + default: + status = HAL_ERROR; + 8003352: 2317 movs r3, #23 + 8003354: 18fb adds r3, r7, r3 + 8003356: 2201 movs r2, #1 + 8003358: 701a strb r2, [r3, #0] + break; + 800335a: 46c0 nop ; (mov r8, r8) + } + + __HAL_UNLOCK(htim); + 800335c: 68fb ldr r3, [r7, #12] + 800335e: 2238 movs r2, #56 ; 0x38 + 8003360: 2100 movs r1, #0 + 8003362: 5499 strb r1, [r3, r2] + + return status; + 8003364: 2317 movs r3, #23 + 8003366: 18fb adds r3, r7, r3 + 8003368: 781b ldrb r3, [r3, #0] +} + 800336a: 0018 movs r0, r3 + 800336c: 46bd mov sp, r7 + 800336e: b006 add sp, #24 + 8003370: bd80 pop {r7, pc} + 8003372: 46c0 nop ; (mov r8, r8) + 8003374: fffffbff .word 0xfffffbff + +08003378 : + * @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, TIM_ClockConfigTypeDef *sClockSourceConfig) +{ + 8003378: b580 push {r7, lr} + 800337a: b084 sub sp, #16 + 800337c: af00 add r7, sp, #0 + 800337e: 6078 str r0, [r7, #4] + 8003380: 6039 str r1, [r7, #0] + HAL_StatusTypeDef status = HAL_OK; + 8003382: 230f movs r3, #15 + 8003384: 18fb adds r3, r7, r3 + 8003386: 2200 movs r2, #0 + 8003388: 701a strb r2, [r3, #0] + uint32_t tmpsmcr; + + /* Process Locked */ + __HAL_LOCK(htim); + 800338a: 687b ldr r3, [r7, #4] + 800338c: 2238 movs r2, #56 ; 0x38 + 800338e: 5c9b ldrb r3, [r3, r2] + 8003390: 2b01 cmp r3, #1 + 8003392: d101 bne.n 8003398 + 8003394: 2302 movs r3, #2 + 8003396: e0bc b.n 8003512 + 8003398: 687b ldr r3, [r7, #4] + 800339a: 2238 movs r2, #56 ; 0x38 + 800339c: 2101 movs r1, #1 + 800339e: 5499 strb r1, [r3, r2] + + htim->State = HAL_TIM_STATE_BUSY; + 80033a0: 687b ldr r3, [r7, #4] + 80033a2: 2239 movs r2, #57 ; 0x39 + 80033a4: 2102 movs r1, #2 + 80033a6: 5499 strb r1, [r3, r2] + + /* Check the parameters */ + assert_param(IS_TIM_CLOCKSOURCE(sClockSourceConfig->ClockSource)); + + /* Reset the SMS, TS, ECE, ETPS and ETRF bits */ + tmpsmcr = htim->Instance->SMCR; + 80033a8: 687b ldr r3, [r7, #4] + 80033aa: 681b ldr r3, [r3, #0] + 80033ac: 689b ldr r3, [r3, #8] + 80033ae: 60bb str r3, [r7, #8] + tmpsmcr &= ~(TIM_SMCR_SMS | TIM_SMCR_TS); + 80033b0: 68bb ldr r3, [r7, #8] + 80033b2: 2277 movs r2, #119 ; 0x77 + 80033b4: 4393 bics r3, r2 + 80033b6: 60bb str r3, [r7, #8] + tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); + 80033b8: 68bb ldr r3, [r7, #8] + 80033ba: 4a58 ldr r2, [pc, #352] ; (800351c ) + 80033bc: 4013 ands r3, r2 + 80033be: 60bb str r3, [r7, #8] + htim->Instance->SMCR = tmpsmcr; + 80033c0: 687b ldr r3, [r7, #4] + 80033c2: 681b ldr r3, [r3, #0] + 80033c4: 68ba ldr r2, [r7, #8] + 80033c6: 609a str r2, [r3, #8] + + switch (sClockSourceConfig->ClockSource) + 80033c8: 683b ldr r3, [r7, #0] + 80033ca: 681b ldr r3, [r3, #0] + 80033cc: 2280 movs r2, #128 ; 0x80 + 80033ce: 0192 lsls r2, r2, #6 + 80033d0: 4293 cmp r3, r2 + 80033d2: d040 beq.n 8003456 + 80033d4: 2280 movs r2, #128 ; 0x80 + 80033d6: 0192 lsls r2, r2, #6 + 80033d8: 4293 cmp r3, r2 + 80033da: d900 bls.n 80033de + 80033dc: e088 b.n 80034f0 + 80033de: 2280 movs r2, #128 ; 0x80 + 80033e0: 0152 lsls r2, r2, #5 + 80033e2: 4293 cmp r3, r2 + 80033e4: d100 bne.n 80033e8 + 80033e6: e088 b.n 80034fa + 80033e8: 2280 movs r2, #128 ; 0x80 + 80033ea: 0152 lsls r2, r2, #5 + 80033ec: 4293 cmp r3, r2 + 80033ee: d900 bls.n 80033f2 + 80033f0: e07e b.n 80034f0 + 80033f2: 2b70 cmp r3, #112 ; 0x70 + 80033f4: d018 beq.n 8003428 + 80033f6: d900 bls.n 80033fa + 80033f8: e07a b.n 80034f0 + 80033fa: 2b60 cmp r3, #96 ; 0x60 + 80033fc: d04f beq.n 800349e + 80033fe: d900 bls.n 8003402 + 8003400: e076 b.n 80034f0 + 8003402: 2b50 cmp r3, #80 ; 0x50 + 8003404: d03b beq.n 800347e + 8003406: d900 bls.n 800340a + 8003408: e072 b.n 80034f0 + 800340a: 2b40 cmp r3, #64 ; 0x40 + 800340c: d057 beq.n 80034be + 800340e: d900 bls.n 8003412 + 8003410: e06e b.n 80034f0 + 8003412: 2b30 cmp r3, #48 ; 0x30 + 8003414: d063 beq.n 80034de + 8003416: d86b bhi.n 80034f0 + 8003418: 2b20 cmp r3, #32 + 800341a: d060 beq.n 80034de + 800341c: d868 bhi.n 80034f0 + 800341e: 2b00 cmp r3, #0 + 8003420: d05d beq.n 80034de + 8003422: 2b10 cmp r3, #16 + 8003424: d05b beq.n 80034de + 8003426: e063 b.n 80034f0 + 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, + 8003428: 687b ldr r3, [r7, #4] + 800342a: 6818 ldr r0, [r3, #0] + 800342c: 683b ldr r3, [r7, #0] + 800342e: 6899 ldr r1, [r3, #8] + 8003430: 683b ldr r3, [r7, #0] + 8003432: 685a ldr r2, [r3, #4] + 8003434: 683b ldr r3, [r7, #0] + 8003436: 68db ldr r3, [r3, #12] + 8003438: f000 fa44 bl 80038c4 + sClockSourceConfig->ClockPrescaler, + sClockSourceConfig->ClockPolarity, + sClockSourceConfig->ClockFilter); + + /* Select the External clock mode1 and the ETRF trigger */ + tmpsmcr = htim->Instance->SMCR; + 800343c: 687b ldr r3, [r7, #4] + 800343e: 681b ldr r3, [r3, #0] + 8003440: 689b ldr r3, [r3, #8] + 8003442: 60bb str r3, [r7, #8] + tmpsmcr |= (TIM_SLAVEMODE_EXTERNAL1 | TIM_CLOCKSOURCE_ETRMODE1); + 8003444: 68bb ldr r3, [r7, #8] + 8003446: 2277 movs r2, #119 ; 0x77 + 8003448: 4313 orrs r3, r2 + 800344a: 60bb str r3, [r7, #8] + /* Write to TIMx SMCR */ + htim->Instance->SMCR = tmpsmcr; + 800344c: 687b ldr r3, [r7, #4] + 800344e: 681b ldr r3, [r3, #0] + 8003450: 68ba ldr r2, [r7, #8] + 8003452: 609a str r2, [r3, #8] + break; + 8003454: e052 b.n 80034fc + 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, + 8003456: 687b ldr r3, [r7, #4] + 8003458: 6818 ldr r0, [r3, #0] + 800345a: 683b ldr r3, [r7, #0] + 800345c: 6899 ldr r1, [r3, #8] + 800345e: 683b ldr r3, [r7, #0] + 8003460: 685a ldr r2, [r3, #4] + 8003462: 683b ldr r3, [r7, #0] + 8003464: 68db ldr r3, [r3, #12] + 8003466: f000 fa2d bl 80038c4 + sClockSourceConfig->ClockPrescaler, + sClockSourceConfig->ClockPolarity, + sClockSourceConfig->ClockFilter); + /* Enable the External clock mode2 */ + htim->Instance->SMCR |= TIM_SMCR_ECE; + 800346a: 687b ldr r3, [r7, #4] + 800346c: 681b ldr r3, [r3, #0] + 800346e: 689a ldr r2, [r3, #8] + 8003470: 687b ldr r3, [r7, #4] + 8003472: 681b ldr r3, [r3, #0] + 8003474: 2180 movs r1, #128 ; 0x80 + 8003476: 01c9 lsls r1, r1, #7 + 8003478: 430a orrs r2, r1 + 800347a: 609a str r2, [r3, #8] + break; + 800347c: e03e b.n 80034fc + + /* 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, + 800347e: 687b ldr r3, [r7, #4] + 8003480: 6818 ldr r0, [r3, #0] + 8003482: 683b ldr r3, [r7, #0] + 8003484: 6859 ldr r1, [r3, #4] + 8003486: 683b ldr r3, [r7, #0] + 8003488: 68db ldr r3, [r3, #12] + 800348a: 001a movs r2, r3 + 800348c: f000 f9a0 bl 80037d0 + sClockSourceConfig->ClockPolarity, + sClockSourceConfig->ClockFilter); + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1); + 8003490: 687b ldr r3, [r7, #4] + 8003492: 681b ldr r3, [r3, #0] + 8003494: 2150 movs r1, #80 ; 0x50 + 8003496: 0018 movs r0, r3 + 8003498: f000 f9fa bl 8003890 + break; + 800349c: e02e b.n 80034fc + + /* 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, + 800349e: 687b ldr r3, [r7, #4] + 80034a0: 6818 ldr r0, [r3, #0] + 80034a2: 683b ldr r3, [r7, #0] + 80034a4: 6859 ldr r1, [r3, #4] + 80034a6: 683b ldr r3, [r7, #0] + 80034a8: 68db ldr r3, [r3, #12] + 80034aa: 001a movs r2, r3 + 80034ac: f000 f9be bl 800382c + sClockSourceConfig->ClockPolarity, + sClockSourceConfig->ClockFilter); + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI2); + 80034b0: 687b ldr r3, [r7, #4] + 80034b2: 681b ldr r3, [r3, #0] + 80034b4: 2160 movs r1, #96 ; 0x60 + 80034b6: 0018 movs r0, r3 + 80034b8: f000 f9ea bl 8003890 + break; + 80034bc: e01e b.n 80034fc + + /* 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, + 80034be: 687b ldr r3, [r7, #4] + 80034c0: 6818 ldr r0, [r3, #0] + 80034c2: 683b ldr r3, [r7, #0] + 80034c4: 6859 ldr r1, [r3, #4] + 80034c6: 683b ldr r3, [r7, #0] + 80034c8: 68db ldr r3, [r3, #12] + 80034ca: 001a movs r2, r3 + 80034cc: f000 f980 bl 80037d0 + sClockSourceConfig->ClockPolarity, + sClockSourceConfig->ClockFilter); + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1ED); + 80034d0: 687b ldr r3, [r7, #4] + 80034d2: 681b ldr r3, [r3, #0] + 80034d4: 2140 movs r1, #64 ; 0x40 + 80034d6: 0018 movs r0, r3 + 80034d8: f000 f9da bl 8003890 + break; + 80034dc: e00e b.n 80034fc + 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); + 80034de: 687b ldr r3, [r7, #4] + 80034e0: 681a ldr r2, [r3, #0] + 80034e2: 683b ldr r3, [r7, #0] + 80034e4: 681b ldr r3, [r3, #0] + 80034e6: 0019 movs r1, r3 + 80034e8: 0010 movs r0, r2 + 80034ea: f000 f9d1 bl 8003890 + break; + 80034ee: e005 b.n 80034fc + } + + default: + status = HAL_ERROR; + 80034f0: 230f movs r3, #15 + 80034f2: 18fb adds r3, r7, r3 + 80034f4: 2201 movs r2, #1 + 80034f6: 701a strb r2, [r3, #0] + break; + 80034f8: e000 b.n 80034fc + break; + 80034fa: 46c0 nop ; (mov r8, r8) + } + htim->State = HAL_TIM_STATE_READY; + 80034fc: 687b ldr r3, [r7, #4] + 80034fe: 2239 movs r2, #57 ; 0x39 + 8003500: 2101 movs r1, #1 + 8003502: 5499 strb r1, [r3, r2] + + __HAL_UNLOCK(htim); + 8003504: 687b ldr r3, [r7, #4] + 8003506: 2238 movs r2, #56 ; 0x38 + 8003508: 2100 movs r1, #0 + 800350a: 5499 strb r1, [r3, r2] + + return status; + 800350c: 230f movs r3, #15 + 800350e: 18fb adds r3, r7, r3 + 8003510: 781b ldrb r3, [r3, #0] +} + 8003512: 0018 movs r0, r3 + 8003514: 46bd mov sp, r7 + 8003516: b004 add sp, #16 + 8003518: bd80 pop {r7, pc} + 800351a: 46c0 nop ; (mov r8, r8) + 800351c: ffff00ff .word 0xffff00ff + +08003520 : + * @param TIMx TIM peripheral + * @param Structure TIM Base configuration structure + * @retval None + */ +static void TIM_Base_SetConfig(TIM_TypeDef *TIMx, TIM_Base_InitTypeDef *Structure) +{ + 8003520: b580 push {r7, lr} + 8003522: b084 sub sp, #16 + 8003524: af00 add r7, sp, #0 + 8003526: 6078 str r0, [r7, #4] + 8003528: 6039 str r1, [r7, #0] + uint32_t tmpcr1; + tmpcr1 = TIMx->CR1; + 800352a: 687b ldr r3, [r7, #4] + 800352c: 681b ldr r3, [r3, #0] + 800352e: 60fb str r3, [r7, #12] + + /* Set TIM Time Base Unit parameters ---------------------------------------*/ + if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx)) + 8003530: 687a ldr r2, [r7, #4] + 8003532: 2380 movs r3, #128 ; 0x80 + 8003534: 05db lsls r3, r3, #23 + 8003536: 429a cmp r2, r3 + 8003538: d007 beq.n 800354a + 800353a: 687b ldr r3, [r7, #4] + 800353c: 4a1f ldr r2, [pc, #124] ; (80035bc ) + 800353e: 4293 cmp r3, r2 + 8003540: d003 beq.n 800354a + 8003542: 687b ldr r3, [r7, #4] + 8003544: 4a1e ldr r2, [pc, #120] ; (80035c0 ) + 8003546: 4293 cmp r3, r2 + 8003548: d108 bne.n 800355c + { + /* Select the Counter Mode */ + tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS); + 800354a: 68fb ldr r3, [r7, #12] + 800354c: 2270 movs r2, #112 ; 0x70 + 800354e: 4393 bics r3, r2 + 8003550: 60fb str r3, [r7, #12] + tmpcr1 |= Structure->CounterMode; + 8003552: 683b ldr r3, [r7, #0] + 8003554: 685b ldr r3, [r3, #4] + 8003556: 68fa ldr r2, [r7, #12] + 8003558: 4313 orrs r3, r2 + 800355a: 60fb str r3, [r7, #12] + } + + if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx)) + 800355c: 687a ldr r2, [r7, #4] + 800355e: 2380 movs r3, #128 ; 0x80 + 8003560: 05db lsls r3, r3, #23 + 8003562: 429a cmp r2, r3 + 8003564: d007 beq.n 8003576 + 8003566: 687b ldr r3, [r7, #4] + 8003568: 4a14 ldr r2, [pc, #80] ; (80035bc ) + 800356a: 4293 cmp r3, r2 + 800356c: d003 beq.n 8003576 + 800356e: 687b ldr r3, [r7, #4] + 8003570: 4a13 ldr r2, [pc, #76] ; (80035c0 ) + 8003572: 4293 cmp r3, r2 + 8003574: d108 bne.n 8003588 + { + /* Set the clock division */ + tmpcr1 &= ~TIM_CR1_CKD; + 8003576: 68fb ldr r3, [r7, #12] + 8003578: 4a12 ldr r2, [pc, #72] ; (80035c4 ) + 800357a: 4013 ands r3, r2 + 800357c: 60fb str r3, [r7, #12] + tmpcr1 |= (uint32_t)Structure->ClockDivision; + 800357e: 683b ldr r3, [r7, #0] + 8003580: 68db ldr r3, [r3, #12] + 8003582: 68fa ldr r2, [r7, #12] + 8003584: 4313 orrs r3, r2 + 8003586: 60fb str r3, [r7, #12] + } + + /* Set the auto-reload preload */ + MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload); + 8003588: 68fb ldr r3, [r7, #12] + 800358a: 2280 movs r2, #128 ; 0x80 + 800358c: 4393 bics r3, r2 + 800358e: 001a movs r2, r3 + 8003590: 683b ldr r3, [r7, #0] + 8003592: 691b ldr r3, [r3, #16] + 8003594: 4313 orrs r3, r2 + 8003596: 60fb str r3, [r7, #12] + + TIMx->CR1 = tmpcr1; + 8003598: 687b ldr r3, [r7, #4] + 800359a: 68fa ldr r2, [r7, #12] + 800359c: 601a str r2, [r3, #0] + + /* Set the Autoreload value */ + TIMx->ARR = (uint32_t)Structure->Period ; + 800359e: 683b ldr r3, [r7, #0] + 80035a0: 689a ldr r2, [r3, #8] + 80035a2: 687b ldr r3, [r7, #4] + 80035a4: 62da str r2, [r3, #44] ; 0x2c + + /* Set the Prescaler value */ + TIMx->PSC = Structure->Prescaler; + 80035a6: 683b ldr r3, [r7, #0] + 80035a8: 681a ldr r2, [r3, #0] + 80035aa: 687b ldr r3, [r7, #4] + 80035ac: 629a str r2, [r3, #40] ; 0x28 + + /* Generate an update event to reload the Prescaler + and the repetition counter (only for advanced timer) value immediately */ + TIMx->EGR = TIM_EGR_UG; + 80035ae: 687b ldr r3, [r7, #4] + 80035b0: 2201 movs r2, #1 + 80035b2: 615a str r2, [r3, #20] +} + 80035b4: 46c0 nop ; (mov r8, r8) + 80035b6: 46bd mov sp, r7 + 80035b8: b004 add sp, #16 + 80035ba: bd80 pop {r7, pc} + 80035bc: 40010800 .word 0x40010800 + 80035c0: 40011400 .word 0x40011400 + 80035c4: fffffcff .word 0xfffffcff + +080035c8 : + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC1_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config) +{ + 80035c8: b580 push {r7, lr} + 80035ca: b086 sub sp, #24 + 80035cc: af00 add r7, sp, #0 + 80035ce: 6078 str r0, [r7, #4] + 80035d0: 6039 str r1, [r7, #0] + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Disable the Channel 1: Reset the CC1E Bit */ + TIMx->CCER &= ~TIM_CCER_CC1E; + 80035d2: 687b ldr r3, [r7, #4] + 80035d4: 6a1b ldr r3, [r3, #32] + 80035d6: 2201 movs r2, #1 + 80035d8: 4393 bics r3, r2 + 80035da: 001a movs r2, r3 + 80035dc: 687b ldr r3, [r7, #4] + 80035de: 621a str r2, [r3, #32] + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + 80035e0: 687b ldr r3, [r7, #4] + 80035e2: 6a1b ldr r3, [r3, #32] + 80035e4: 617b str r3, [r7, #20] + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + 80035e6: 687b ldr r3, [r7, #4] + 80035e8: 685b ldr r3, [r3, #4] + 80035ea: 613b str r3, [r7, #16] + + /* Get the TIMx CCMR1 register value */ + tmpccmrx = TIMx->CCMR1; + 80035ec: 687b ldr r3, [r7, #4] + 80035ee: 699b ldr r3, [r3, #24] + 80035f0: 60fb str r3, [r7, #12] + + /* Reset the Output Compare Mode Bits */ + tmpccmrx &= ~TIM_CCMR1_OC1M; + 80035f2: 68fb ldr r3, [r7, #12] + 80035f4: 2270 movs r2, #112 ; 0x70 + 80035f6: 4393 bics r3, r2 + 80035f8: 60fb str r3, [r7, #12] + tmpccmrx &= ~TIM_CCMR1_CC1S; + 80035fa: 68fb ldr r3, [r7, #12] + 80035fc: 2203 movs r2, #3 + 80035fe: 4393 bics r3, r2 + 8003600: 60fb str r3, [r7, #12] + /* Select the Output Compare Mode */ + tmpccmrx |= OC_Config->OCMode; + 8003602: 683b ldr r3, [r7, #0] + 8003604: 681b ldr r3, [r3, #0] + 8003606: 68fa ldr r2, [r7, #12] + 8003608: 4313 orrs r3, r2 + 800360a: 60fb str r3, [r7, #12] + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC1P; + 800360c: 697b ldr r3, [r7, #20] + 800360e: 2202 movs r2, #2 + 8003610: 4393 bics r3, r2 + 8003612: 617b str r3, [r7, #20] + /* Set the Output Compare Polarity */ + tmpccer |= OC_Config->OCPolarity; + 8003614: 683b ldr r3, [r7, #0] + 8003616: 689b ldr r3, [r3, #8] + 8003618: 697a ldr r2, [r7, #20] + 800361a: 4313 orrs r3, r2 + 800361c: 617b str r3, [r7, #20] + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + 800361e: 687b ldr r3, [r7, #4] + 8003620: 693a ldr r2, [r7, #16] + 8003622: 605a str r2, [r3, #4] + + /* Write to TIMx CCMR1 */ + TIMx->CCMR1 = tmpccmrx; + 8003624: 687b ldr r3, [r7, #4] + 8003626: 68fa ldr r2, [r7, #12] + 8003628: 619a str r2, [r3, #24] + + /* Set the Capture Compare Register value */ + TIMx->CCR1 = OC_Config->Pulse; + 800362a: 683b ldr r3, [r7, #0] + 800362c: 685a ldr r2, [r3, #4] + 800362e: 687b ldr r3, [r7, #4] + 8003630: 635a str r2, [r3, #52] ; 0x34 + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; + 8003632: 687b ldr r3, [r7, #4] + 8003634: 697a ldr r2, [r7, #20] + 8003636: 621a str r2, [r3, #32] +} + 8003638: 46c0 nop ; (mov r8, r8) + 800363a: 46bd mov sp, r7 + 800363c: b006 add sp, #24 + 800363e: bd80 pop {r7, pc} + +08003640 : + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC2_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config) +{ + 8003640: b580 push {r7, lr} + 8003642: b086 sub sp, #24 + 8003644: af00 add r7, sp, #0 + 8003646: 6078 str r0, [r7, #4] + 8003648: 6039 str r1, [r7, #0] + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Disable the Channel 2: Reset the CC2E Bit */ + TIMx->CCER &= ~TIM_CCER_CC2E; + 800364a: 687b ldr r3, [r7, #4] + 800364c: 6a1b ldr r3, [r3, #32] + 800364e: 2210 movs r2, #16 + 8003650: 4393 bics r3, r2 + 8003652: 001a movs r2, r3 + 8003654: 687b ldr r3, [r7, #4] + 8003656: 621a str r2, [r3, #32] + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + 8003658: 687b ldr r3, [r7, #4] + 800365a: 6a1b ldr r3, [r3, #32] + 800365c: 617b str r3, [r7, #20] + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + 800365e: 687b ldr r3, [r7, #4] + 8003660: 685b ldr r3, [r3, #4] + 8003662: 613b str r3, [r7, #16] + + /* Get the TIMx CCMR1 register value */ + tmpccmrx = TIMx->CCMR1; + 8003664: 687b ldr r3, [r7, #4] + 8003666: 699b ldr r3, [r3, #24] + 8003668: 60fb str r3, [r7, #12] + + /* Reset the Output Compare mode and Capture/Compare selection Bits */ + tmpccmrx &= ~TIM_CCMR1_OC2M; + 800366a: 68fb ldr r3, [r7, #12] + 800366c: 4a13 ldr r2, [pc, #76] ; (80036bc ) + 800366e: 4013 ands r3, r2 + 8003670: 60fb str r3, [r7, #12] + tmpccmrx &= ~TIM_CCMR1_CC2S; + 8003672: 68fb ldr r3, [r7, #12] + 8003674: 4a12 ldr r2, [pc, #72] ; (80036c0 ) + 8003676: 4013 ands r3, r2 + 8003678: 60fb str r3, [r7, #12] + + /* Select the Output Compare Mode */ + tmpccmrx |= (OC_Config->OCMode << 8U); + 800367a: 683b ldr r3, [r7, #0] + 800367c: 681b ldr r3, [r3, #0] + 800367e: 021b lsls r3, r3, #8 + 8003680: 68fa ldr r2, [r7, #12] + 8003682: 4313 orrs r3, r2 + 8003684: 60fb str r3, [r7, #12] + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC2P; + 8003686: 697b ldr r3, [r7, #20] + 8003688: 2220 movs r2, #32 + 800368a: 4393 bics r3, r2 + 800368c: 617b str r3, [r7, #20] + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 4U); + 800368e: 683b ldr r3, [r7, #0] + 8003690: 689b ldr r3, [r3, #8] + 8003692: 011b lsls r3, r3, #4 + 8003694: 697a ldr r2, [r7, #20] + 8003696: 4313 orrs r3, r2 + 8003698: 617b str r3, [r7, #20] + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + 800369a: 687b ldr r3, [r7, #4] + 800369c: 693a ldr r2, [r7, #16] + 800369e: 605a str r2, [r3, #4] + + /* Write to TIMx CCMR1 */ + TIMx->CCMR1 = tmpccmrx; + 80036a0: 687b ldr r3, [r7, #4] + 80036a2: 68fa ldr r2, [r7, #12] + 80036a4: 619a str r2, [r3, #24] + + /* Set the Capture Compare Register value */ + TIMx->CCR2 = OC_Config->Pulse; + 80036a6: 683b ldr r3, [r7, #0] + 80036a8: 685a ldr r2, [r3, #4] + 80036aa: 687b ldr r3, [r7, #4] + 80036ac: 639a str r2, [r3, #56] ; 0x38 + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; + 80036ae: 687b ldr r3, [r7, #4] + 80036b0: 697a ldr r2, [r7, #20] + 80036b2: 621a str r2, [r3, #32] +} + 80036b4: 46c0 nop ; (mov r8, r8) + 80036b6: 46bd mov sp, r7 + 80036b8: b006 add sp, #24 + 80036ba: bd80 pop {r7, pc} + 80036bc: ffff8fff .word 0xffff8fff + 80036c0: fffffcff .word 0xfffffcff + +080036c4 : + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC3_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config) +{ + 80036c4: b580 push {r7, lr} + 80036c6: b086 sub sp, #24 + 80036c8: af00 add r7, sp, #0 + 80036ca: 6078 str r0, [r7, #4] + 80036cc: 6039 str r1, [r7, #0] + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Disable the Channel 3: Reset the CC2E Bit */ + TIMx->CCER &= ~TIM_CCER_CC3E; + 80036ce: 687b ldr r3, [r7, #4] + 80036d0: 6a1b ldr r3, [r3, #32] + 80036d2: 4a1a ldr r2, [pc, #104] ; (800373c ) + 80036d4: 401a ands r2, r3 + 80036d6: 687b ldr r3, [r7, #4] + 80036d8: 621a str r2, [r3, #32] + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + 80036da: 687b ldr r3, [r7, #4] + 80036dc: 6a1b ldr r3, [r3, #32] + 80036de: 617b str r3, [r7, #20] + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + 80036e0: 687b ldr r3, [r7, #4] + 80036e2: 685b ldr r3, [r3, #4] + 80036e4: 613b str r3, [r7, #16] + + /* Get the TIMx CCMR2 register value */ + tmpccmrx = TIMx->CCMR2; + 80036e6: 687b ldr r3, [r7, #4] + 80036e8: 69db ldr r3, [r3, #28] + 80036ea: 60fb str r3, [r7, #12] + + /* Reset the Output Compare mode and Capture/Compare selection Bits */ + tmpccmrx &= ~TIM_CCMR2_OC3M; + 80036ec: 68fb ldr r3, [r7, #12] + 80036ee: 2270 movs r2, #112 ; 0x70 + 80036f0: 4393 bics r3, r2 + 80036f2: 60fb str r3, [r7, #12] + tmpccmrx &= ~TIM_CCMR2_CC3S; + 80036f4: 68fb ldr r3, [r7, #12] + 80036f6: 2203 movs r2, #3 + 80036f8: 4393 bics r3, r2 + 80036fa: 60fb str r3, [r7, #12] + /* Select the Output Compare Mode */ + tmpccmrx |= OC_Config->OCMode; + 80036fc: 683b ldr r3, [r7, #0] + 80036fe: 681b ldr r3, [r3, #0] + 8003700: 68fa ldr r2, [r7, #12] + 8003702: 4313 orrs r3, r2 + 8003704: 60fb str r3, [r7, #12] + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC3P; + 8003706: 697b ldr r3, [r7, #20] + 8003708: 4a0d ldr r2, [pc, #52] ; (8003740 ) + 800370a: 4013 ands r3, r2 + 800370c: 617b str r3, [r7, #20] + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 8U); + 800370e: 683b ldr r3, [r7, #0] + 8003710: 689b ldr r3, [r3, #8] + 8003712: 021b lsls r3, r3, #8 + 8003714: 697a ldr r2, [r7, #20] + 8003716: 4313 orrs r3, r2 + 8003718: 617b str r3, [r7, #20] + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + 800371a: 687b ldr r3, [r7, #4] + 800371c: 693a ldr r2, [r7, #16] + 800371e: 605a str r2, [r3, #4] + + /* Write to TIMx CCMR2 */ + TIMx->CCMR2 = tmpccmrx; + 8003720: 687b ldr r3, [r7, #4] + 8003722: 68fa ldr r2, [r7, #12] + 8003724: 61da str r2, [r3, #28] + + /* Set the Capture Compare Register value */ + TIMx->CCR3 = OC_Config->Pulse; + 8003726: 683b ldr r3, [r7, #0] + 8003728: 685a ldr r2, [r3, #4] + 800372a: 687b ldr r3, [r7, #4] + 800372c: 63da str r2, [r3, #60] ; 0x3c + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; + 800372e: 687b ldr r3, [r7, #4] + 8003730: 697a ldr r2, [r7, #20] + 8003732: 621a str r2, [r3, #32] +} + 8003734: 46c0 nop ; (mov r8, r8) + 8003736: 46bd mov sp, r7 + 8003738: b006 add sp, #24 + 800373a: bd80 pop {r7, pc} + 800373c: fffffeff .word 0xfffffeff + 8003740: fffffdff .word 0xfffffdff + +08003744 : + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC4_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config) +{ + 8003744: b580 push {r7, lr} + 8003746: b086 sub sp, #24 + 8003748: af00 add r7, sp, #0 + 800374a: 6078 str r0, [r7, #4] + 800374c: 6039 str r1, [r7, #0] + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Disable the Channel 4: Reset the CC4E Bit */ + TIMx->CCER &= ~TIM_CCER_CC4E; + 800374e: 687b ldr r3, [r7, #4] + 8003750: 6a1b ldr r3, [r3, #32] + 8003752: 4a1b ldr r2, [pc, #108] ; (80037c0 ) + 8003754: 401a ands r2, r3 + 8003756: 687b ldr r3, [r7, #4] + 8003758: 621a str r2, [r3, #32] + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + 800375a: 687b ldr r3, [r7, #4] + 800375c: 6a1b ldr r3, [r3, #32] + 800375e: 617b str r3, [r7, #20] + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + 8003760: 687b ldr r3, [r7, #4] + 8003762: 685b ldr r3, [r3, #4] + 8003764: 613b str r3, [r7, #16] + + /* Get the TIMx CCMR2 register value */ + tmpccmrx = TIMx->CCMR2; + 8003766: 687b ldr r3, [r7, #4] + 8003768: 69db ldr r3, [r3, #28] + 800376a: 60fb str r3, [r7, #12] + + /* Reset the Output Compare mode and Capture/Compare selection Bits */ + tmpccmrx &= ~TIM_CCMR2_OC4M; + 800376c: 68fb ldr r3, [r7, #12] + 800376e: 4a15 ldr r2, [pc, #84] ; (80037c4 ) + 8003770: 4013 ands r3, r2 + 8003772: 60fb str r3, [r7, #12] + tmpccmrx &= ~TIM_CCMR2_CC4S; + 8003774: 68fb ldr r3, [r7, #12] + 8003776: 4a14 ldr r2, [pc, #80] ; (80037c8 ) + 8003778: 4013 ands r3, r2 + 800377a: 60fb str r3, [r7, #12] + + /* Select the Output Compare Mode */ + tmpccmrx |= (OC_Config->OCMode << 8U); + 800377c: 683b ldr r3, [r7, #0] + 800377e: 681b ldr r3, [r3, #0] + 8003780: 021b lsls r3, r3, #8 + 8003782: 68fa ldr r2, [r7, #12] + 8003784: 4313 orrs r3, r2 + 8003786: 60fb str r3, [r7, #12] + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC4P; + 8003788: 697b ldr r3, [r7, #20] + 800378a: 4a10 ldr r2, [pc, #64] ; (80037cc ) + 800378c: 4013 ands r3, r2 + 800378e: 617b str r3, [r7, #20] + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 12U); + 8003790: 683b ldr r3, [r7, #0] + 8003792: 689b ldr r3, [r3, #8] + 8003794: 031b lsls r3, r3, #12 + 8003796: 697a ldr r2, [r7, #20] + 8003798: 4313 orrs r3, r2 + 800379a: 617b str r3, [r7, #20] + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + 800379c: 687b ldr r3, [r7, #4] + 800379e: 693a ldr r2, [r7, #16] + 80037a0: 605a str r2, [r3, #4] + + /* Write to TIMx CCMR2 */ + TIMx->CCMR2 = tmpccmrx; + 80037a2: 687b ldr r3, [r7, #4] + 80037a4: 68fa ldr r2, [r7, #12] + 80037a6: 61da str r2, [r3, #28] + + /* Set the Capture Compare Register value */ + TIMx->CCR4 = OC_Config->Pulse; + 80037a8: 683b ldr r3, [r7, #0] + 80037aa: 685a ldr r2, [r3, #4] + 80037ac: 687b ldr r3, [r7, #4] + 80037ae: 641a str r2, [r3, #64] ; 0x40 + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; + 80037b0: 687b ldr r3, [r7, #4] + 80037b2: 697a ldr r2, [r7, #20] + 80037b4: 621a str r2, [r3, #32] +} + 80037b6: 46c0 nop ; (mov r8, r8) + 80037b8: 46bd mov sp, r7 + 80037ba: b006 add sp, #24 + 80037bc: bd80 pop {r7, pc} + 80037be: 46c0 nop ; (mov r8, r8) + 80037c0: ffffefff .word 0xffffefff + 80037c4: ffff8fff .word 0xffff8fff + 80037c8: fffffcff .word 0xfffffcff + 80037cc: ffffdfff .word 0xffffdfff + +080037d0 : + * @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) +{ + 80037d0: b580 push {r7, lr} + 80037d2: b086 sub sp, #24 + 80037d4: af00 add r7, sp, #0 + 80037d6: 60f8 str r0, [r7, #12] + 80037d8: 60b9 str r1, [r7, #8] + 80037da: 607a str r2, [r7, #4] + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Disable the Channel 1: Reset the CC1E Bit */ + tmpccer = TIMx->CCER; + 80037dc: 68fb ldr r3, [r7, #12] + 80037de: 6a1b ldr r3, [r3, #32] + 80037e0: 617b str r3, [r7, #20] + TIMx->CCER &= ~TIM_CCER_CC1E; + 80037e2: 68fb ldr r3, [r7, #12] + 80037e4: 6a1b ldr r3, [r3, #32] + 80037e6: 2201 movs r2, #1 + 80037e8: 4393 bics r3, r2 + 80037ea: 001a movs r2, r3 + 80037ec: 68fb ldr r3, [r7, #12] + 80037ee: 621a str r2, [r3, #32] + tmpccmr1 = TIMx->CCMR1; + 80037f0: 68fb ldr r3, [r7, #12] + 80037f2: 699b ldr r3, [r3, #24] + 80037f4: 613b str r3, [r7, #16] + + /* Set the filter */ + tmpccmr1 &= ~TIM_CCMR1_IC1F; + 80037f6: 693b ldr r3, [r7, #16] + 80037f8: 22f0 movs r2, #240 ; 0xf0 + 80037fa: 4393 bics r3, r2 + 80037fc: 613b str r3, [r7, #16] + tmpccmr1 |= (TIM_ICFilter << 4U); + 80037fe: 687b ldr r3, [r7, #4] + 8003800: 011b lsls r3, r3, #4 + 8003802: 693a ldr r2, [r7, #16] + 8003804: 4313 orrs r3, r2 + 8003806: 613b str r3, [r7, #16] + + /* Select the Polarity and set the CC1E Bit */ + tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP); + 8003808: 697b ldr r3, [r7, #20] + 800380a: 220a movs r2, #10 + 800380c: 4393 bics r3, r2 + 800380e: 617b str r3, [r7, #20] + tmpccer |= TIM_ICPolarity; + 8003810: 697a ldr r2, [r7, #20] + 8003812: 68bb ldr r3, [r7, #8] + 8003814: 4313 orrs r3, r2 + 8003816: 617b str r3, [r7, #20] + + /* Write to TIMx CCMR1 and CCER registers */ + TIMx->CCMR1 = tmpccmr1; + 8003818: 68fb ldr r3, [r7, #12] + 800381a: 693a ldr r2, [r7, #16] + 800381c: 619a str r2, [r3, #24] + TIMx->CCER = tmpccer; + 800381e: 68fb ldr r3, [r7, #12] + 8003820: 697a ldr r2, [r7, #20] + 8003822: 621a str r2, [r3, #32] +} + 8003824: 46c0 nop ; (mov r8, r8) + 8003826: 46bd mov sp, r7 + 8003828: b006 add sp, #24 + 800382a: bd80 pop {r7, pc} + +0800382c : + * @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) +{ + 800382c: b580 push {r7, lr} + 800382e: b086 sub sp, #24 + 8003830: af00 add r7, sp, #0 + 8003832: 60f8 str r0, [r7, #12] + 8003834: 60b9 str r1, [r7, #8] + 8003836: 607a str r2, [r7, #4] + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Disable the Channel 2: Reset the CC2E Bit */ + TIMx->CCER &= ~TIM_CCER_CC2E; + 8003838: 68fb ldr r3, [r7, #12] + 800383a: 6a1b ldr r3, [r3, #32] + 800383c: 2210 movs r2, #16 + 800383e: 4393 bics r3, r2 + 8003840: 001a movs r2, r3 + 8003842: 68fb ldr r3, [r7, #12] + 8003844: 621a str r2, [r3, #32] + tmpccmr1 = TIMx->CCMR1; + 8003846: 68fb ldr r3, [r7, #12] + 8003848: 699b ldr r3, [r3, #24] + 800384a: 617b str r3, [r7, #20] + tmpccer = TIMx->CCER; + 800384c: 68fb ldr r3, [r7, #12] + 800384e: 6a1b ldr r3, [r3, #32] + 8003850: 613b str r3, [r7, #16] + + /* Set the filter */ + tmpccmr1 &= ~TIM_CCMR1_IC2F; + 8003852: 697b ldr r3, [r7, #20] + 8003854: 4a0d ldr r2, [pc, #52] ; (800388c ) + 8003856: 4013 ands r3, r2 + 8003858: 617b str r3, [r7, #20] + tmpccmr1 |= (TIM_ICFilter << 12U); + 800385a: 687b ldr r3, [r7, #4] + 800385c: 031b lsls r3, r3, #12 + 800385e: 697a ldr r2, [r7, #20] + 8003860: 4313 orrs r3, r2 + 8003862: 617b str r3, [r7, #20] + + /* Select the Polarity and set the CC2E Bit */ + tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP); + 8003864: 693b ldr r3, [r7, #16] + 8003866: 22a0 movs r2, #160 ; 0xa0 + 8003868: 4393 bics r3, r2 + 800386a: 613b str r3, [r7, #16] + tmpccer |= (TIM_ICPolarity << 4U); + 800386c: 68bb ldr r3, [r7, #8] + 800386e: 011b lsls r3, r3, #4 + 8003870: 693a ldr r2, [r7, #16] + 8003872: 4313 orrs r3, r2 + 8003874: 613b str r3, [r7, #16] + + /* Write to TIMx CCMR1 and CCER registers */ + TIMx->CCMR1 = tmpccmr1 ; + 8003876: 68fb ldr r3, [r7, #12] + 8003878: 697a ldr r2, [r7, #20] + 800387a: 619a str r2, [r3, #24] + TIMx->CCER = tmpccer; + 800387c: 68fb ldr r3, [r7, #12] + 800387e: 693a ldr r2, [r7, #16] + 8003880: 621a str r2, [r3, #32] +} + 8003882: 46c0 nop ; (mov r8, r8) + 8003884: 46bd mov sp, r7 + 8003886: b006 add sp, #24 + 8003888: bd80 pop {r7, pc} + 800388a: 46c0 nop ; (mov r8, r8) + 800388c: ffff0fff .word 0xffff0fff + +08003890 : + * @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) +{ + 8003890: b580 push {r7, lr} + 8003892: b084 sub sp, #16 + 8003894: af00 add r7, sp, #0 + 8003896: 6078 str r0, [r7, #4] + 8003898: 6039 str r1, [r7, #0] + uint32_t tmpsmcr; + + /* Get the TIMx SMCR register value */ + tmpsmcr = TIMx->SMCR; + 800389a: 687b ldr r3, [r7, #4] + 800389c: 689b ldr r3, [r3, #8] + 800389e: 60fb str r3, [r7, #12] + /* Reset the TS Bits */ + tmpsmcr &= ~TIM_SMCR_TS; + 80038a0: 68fb ldr r3, [r7, #12] + 80038a2: 2270 movs r2, #112 ; 0x70 + 80038a4: 4393 bics r3, r2 + 80038a6: 60fb str r3, [r7, #12] + /* Set the Input Trigger source and the slave mode*/ + tmpsmcr |= (InputTriggerSource | TIM_SLAVEMODE_EXTERNAL1); + 80038a8: 683a ldr r2, [r7, #0] + 80038aa: 68fb ldr r3, [r7, #12] + 80038ac: 4313 orrs r3, r2 + 80038ae: 2207 movs r2, #7 + 80038b0: 4313 orrs r3, r2 + 80038b2: 60fb str r3, [r7, #12] + /* Write to TIMx SMCR */ + TIMx->SMCR = tmpsmcr; + 80038b4: 687b ldr r3, [r7, #4] + 80038b6: 68fa ldr r2, [r7, #12] + 80038b8: 609a str r2, [r3, #8] +} + 80038ba: 46c0 nop ; (mov r8, r8) + 80038bc: 46bd mov sp, r7 + 80038be: b004 add sp, #16 + 80038c0: bd80 pop {r7, pc} + ... + +080038c4 : + * 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) +{ + 80038c4: b580 push {r7, lr} + 80038c6: b086 sub sp, #24 + 80038c8: af00 add r7, sp, #0 + 80038ca: 60f8 str r0, [r7, #12] + 80038cc: 60b9 str r1, [r7, #8] + 80038ce: 607a str r2, [r7, #4] + 80038d0: 603b str r3, [r7, #0] + uint32_t tmpsmcr; + + tmpsmcr = TIMx->SMCR; + 80038d2: 68fb ldr r3, [r7, #12] + 80038d4: 689b ldr r3, [r3, #8] + 80038d6: 617b str r3, [r7, #20] + + /* Reset the ETR Bits */ + tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); + 80038d8: 697b ldr r3, [r7, #20] + 80038da: 4a09 ldr r2, [pc, #36] ; (8003900 ) + 80038dc: 4013 ands r3, r2 + 80038de: 617b str r3, [r7, #20] + + /* Set the Prescaler, the Filter value and the Polarity */ + tmpsmcr |= (uint32_t)(TIM_ExtTRGPrescaler | (TIM_ExtTRGPolarity | (ExtTRGFilter << 8U))); + 80038e0: 683b ldr r3, [r7, #0] + 80038e2: 021a lsls r2, r3, #8 + 80038e4: 687b ldr r3, [r7, #4] + 80038e6: 431a orrs r2, r3 + 80038e8: 68bb ldr r3, [r7, #8] + 80038ea: 4313 orrs r3, r2 + 80038ec: 697a ldr r2, [r7, #20] + 80038ee: 4313 orrs r3, r2 + 80038f0: 617b str r3, [r7, #20] + + /* Write to TIMx SMCR */ + TIMx->SMCR = tmpsmcr; + 80038f2: 68fb ldr r3, [r7, #12] + 80038f4: 697a ldr r2, [r7, #20] + 80038f6: 609a str r2, [r3, #8] +} + 80038f8: 46c0 nop ; (mov r8, r8) + 80038fa: 46bd mov sp, r7 + 80038fc: b006 add sp, #24 + 80038fe: bd80 pop {r7, pc} + 8003900: ffff00ff .word 0xffff00ff + +08003904 : + * mode. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, + TIM_MasterConfigTypeDef *sMasterConfig) +{ + 8003904: b580 push {r7, lr} + 8003906: b084 sub sp, #16 + 8003908: af00 add r7, sp, #0 + 800390a: 6078 str r0, [r7, #4] + 800390c: 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); + 800390e: 687b ldr r3, [r7, #4] + 8003910: 2238 movs r2, #56 ; 0x38 + 8003912: 5c9b ldrb r3, [r3, r2] + 8003914: 2b01 cmp r3, #1 + 8003916: d101 bne.n 800391c + 8003918: 2302 movs r3, #2 + 800391a: e042 b.n 80039a2 + 800391c: 687b ldr r3, [r7, #4] + 800391e: 2238 movs r2, #56 ; 0x38 + 8003920: 2101 movs r1, #1 + 8003922: 5499 strb r1, [r3, r2] + + /* Change the handler state */ + htim->State = HAL_TIM_STATE_BUSY; + 8003924: 687b ldr r3, [r7, #4] + 8003926: 2239 movs r2, #57 ; 0x39 + 8003928: 2102 movs r1, #2 + 800392a: 5499 strb r1, [r3, r2] + + /* Get the TIMx CR2 register value */ + tmpcr2 = htim->Instance->CR2; + 800392c: 687b ldr r3, [r7, #4] + 800392e: 681b ldr r3, [r3, #0] + 8003930: 685b ldr r3, [r3, #4] + 8003932: 60fb str r3, [r7, #12] + + /* Get the TIMx SMCR register value */ + tmpsmcr = htim->Instance->SMCR; + 8003934: 687b ldr r3, [r7, #4] + 8003936: 681b ldr r3, [r3, #0] + 8003938: 689b ldr r3, [r3, #8] + 800393a: 60bb str r3, [r7, #8] + + /* Reset the MMS Bits */ + tmpcr2 &= ~TIM_CR2_MMS; + 800393c: 68fb ldr r3, [r7, #12] + 800393e: 2270 movs r2, #112 ; 0x70 + 8003940: 4393 bics r3, r2 + 8003942: 60fb str r3, [r7, #12] + /* Select the TRGO source */ + tmpcr2 |= sMasterConfig->MasterOutputTrigger; + 8003944: 683b ldr r3, [r7, #0] + 8003946: 681b ldr r3, [r3, #0] + 8003948: 68fa ldr r2, [r7, #12] + 800394a: 4313 orrs r3, r2 + 800394c: 60fb str r3, [r7, #12] + + /* Update TIMx CR2 */ + htim->Instance->CR2 = tmpcr2; + 800394e: 687b ldr r3, [r7, #4] + 8003950: 681b ldr r3, [r3, #0] + 8003952: 68fa ldr r2, [r7, #12] + 8003954: 605a str r2, [r3, #4] + + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + 8003956: 687b ldr r3, [r7, #4] + 8003958: 681a ldr r2, [r3, #0] + 800395a: 2380 movs r3, #128 ; 0x80 + 800395c: 05db lsls r3, r3, #23 + 800395e: 429a cmp r2, r3 + 8003960: d009 beq.n 8003976 + 8003962: 687b ldr r3, [r7, #4] + 8003964: 681b ldr r3, [r3, #0] + 8003966: 4a11 ldr r2, [pc, #68] ; (80039ac ) + 8003968: 4293 cmp r3, r2 + 800396a: d004 beq.n 8003976 + 800396c: 687b ldr r3, [r7, #4] + 800396e: 681b ldr r3, [r3, #0] + 8003970: 4a0f ldr r2, [pc, #60] ; (80039b0 ) + 8003972: 4293 cmp r3, r2 + 8003974: d10c bne.n 8003990 + { + /* Reset the MSM Bit */ + tmpsmcr &= ~TIM_SMCR_MSM; + 8003976: 68bb ldr r3, [r7, #8] + 8003978: 2280 movs r2, #128 ; 0x80 + 800397a: 4393 bics r3, r2 + 800397c: 60bb str r3, [r7, #8] + /* Set master mode */ + tmpsmcr |= sMasterConfig->MasterSlaveMode; + 800397e: 683b ldr r3, [r7, #0] + 8003980: 685b ldr r3, [r3, #4] + 8003982: 68ba ldr r2, [r7, #8] + 8003984: 4313 orrs r3, r2 + 8003986: 60bb str r3, [r7, #8] + + /* Update TIMx SMCR */ + htim->Instance->SMCR = tmpsmcr; + 8003988: 687b ldr r3, [r7, #4] + 800398a: 681b ldr r3, [r3, #0] + 800398c: 68ba ldr r2, [r7, #8] + 800398e: 609a str r2, [r3, #8] + } + + /* Change the htim state */ + htim->State = HAL_TIM_STATE_READY; + 8003990: 687b ldr r3, [r7, #4] + 8003992: 2239 movs r2, #57 ; 0x39 + 8003994: 2101 movs r1, #1 + 8003996: 5499 strb r1, [r3, r2] + + __HAL_UNLOCK(htim); + 8003998: 687b ldr r3, [r7, #4] + 800399a: 2238 movs r2, #56 ; 0x38 + 800399c: 2100 movs r1, #0 + 800399e: 5499 strb r1, [r3, r2] + + return HAL_OK; + 80039a0: 2300 movs r3, #0 +} + 80039a2: 0018 movs r0, r3 + 80039a4: 46bd mov sp, r7 + 80039a6: b004 add sp, #16 + 80039a8: bd80 pop {r7, pc} + 80039aa: 46c0 nop ; (mov r8, r8) + 80039ac: 40010800 .word 0x40010800 + 80039b0: 40011400 .word 0x40011400 + +080039b4 : + * @brief Configure the UART peripheral. + * @param huart UART handle. + * @retval HAL status + */ +HAL_StatusTypeDef UART_SetConfig(UART_HandleTypeDef *huart) +{ + 80039b4: b5b0 push {r4, r5, r7, lr} + 80039b6: b08e sub sp, #56 ; 0x38 + 80039b8: af00 add r7, sp, #0 + 80039ba: 61f8 str r0, [r7, #28] + uint32_t tmpreg; + uint16_t brrtemp; + UART_ClockSourceTypeDef clocksource; + uint32_t usartdiv; + HAL_StatusTypeDef ret = HAL_OK; + 80039bc: 231a movs r3, #26 + 80039be: 2218 movs r2, #24 + 80039c0: 4694 mov ip, r2 + 80039c2: 44bc add ip, r7 + 80039c4: 4463 add r3, ip + 80039c6: 2200 movs r2, #0 + 80039c8: 701a strb r2, [r3, #0] + * the UART Word Length, Parity, Mode and oversampling: + * set the M bits according to huart->Init.WordLength value + * set PCE and PS bits according to huart->Init.Parity value + * set TE and RE bits according to huart->Init.Mode value + * set OVER8 bit according to huart->Init.OverSampling value */ + tmpreg = (uint32_t)huart->Init.WordLength | huart->Init.Parity | huart->Init.Mode | huart->Init.OverSampling ; + 80039ca: 69fb ldr r3, [r7, #28] + 80039cc: 689a ldr r2, [r3, #8] + 80039ce: 69fb ldr r3, [r7, #28] + 80039d0: 691b ldr r3, [r3, #16] + 80039d2: 431a orrs r2, r3 + 80039d4: 69fb ldr r3, [r7, #28] + 80039d6: 695b ldr r3, [r3, #20] + 80039d8: 431a orrs r2, r3 + 80039da: 69fb ldr r3, [r7, #28] + 80039dc: 69db ldr r3, [r3, #28] + 80039de: 4313 orrs r3, r2 + 80039e0: 637b str r3, [r7, #52] ; 0x34 + MODIFY_REG(huart->Instance->CR1, USART_CR1_FIELDS, tmpreg); + 80039e2: 69fb ldr r3, [r7, #28] + 80039e4: 681b ldr r3, [r3, #0] + 80039e6: 681b ldr r3, [r3, #0] + 80039e8: 4abc ldr r2, [pc, #752] ; (8003cdc ) + 80039ea: 4013 ands r3, r2 + 80039ec: 0019 movs r1, r3 + 80039ee: 69fb ldr r3, [r7, #28] + 80039f0: 681b ldr r3, [r3, #0] + 80039f2: 6b7a ldr r2, [r7, #52] ; 0x34 + 80039f4: 430a orrs r2, r1 + 80039f6: 601a str r2, [r3, #0] + + /*-------------------------- USART CR2 Configuration -----------------------*/ + /* Configure the UART Stop Bits: Set STOP[13:12] bits according + * to huart->Init.StopBits value */ + MODIFY_REG(huart->Instance->CR2, USART_CR2_STOP, huart->Init.StopBits); + 80039f8: 69fb ldr r3, [r7, #28] + 80039fa: 681b ldr r3, [r3, #0] + 80039fc: 685b ldr r3, [r3, #4] + 80039fe: 4ab8 ldr r2, [pc, #736] ; (8003ce0 ) + 8003a00: 4013 ands r3, r2 + 8003a02: 0019 movs r1, r3 + 8003a04: 69fb ldr r3, [r7, #28] + 8003a06: 68da ldr r2, [r3, #12] + 8003a08: 69fb ldr r3, [r7, #28] + 8003a0a: 681b ldr r3, [r3, #0] + 8003a0c: 430a orrs r2, r1 + 8003a0e: 605a str r2, [r3, #4] + /* Configure + * - UART HardWare Flow Control: set CTSE and RTSE bits according + * to huart->Init.HwFlowCtl value + * - one-bit sampling method versus three samples' majority rule according + * to huart->Init.OneBitSampling (not applicable to LPUART) */ + tmpreg = (uint32_t)huart->Init.HwFlowCtl; + 8003a10: 69fb ldr r3, [r7, #28] + 8003a12: 699b ldr r3, [r3, #24] + 8003a14: 637b str r3, [r7, #52] ; 0x34 + + if (!(UART_INSTANCE_LOWPOWER(huart))) + 8003a16: 69fb ldr r3, [r7, #28] + 8003a18: 681b ldr r3, [r3, #0] + 8003a1a: 4ab2 ldr r2, [pc, #712] ; (8003ce4 ) + 8003a1c: 4293 cmp r3, r2 + 8003a1e: d004 beq.n 8003a2a + { + tmpreg |= huart->Init.OneBitSampling; + 8003a20: 69fb ldr r3, [r7, #28] + 8003a22: 6a1b ldr r3, [r3, #32] + 8003a24: 6b7a ldr r2, [r7, #52] ; 0x34 + 8003a26: 4313 orrs r3, r2 + 8003a28: 637b str r3, [r7, #52] ; 0x34 + } + MODIFY_REG(huart->Instance->CR3, USART_CR3_FIELDS, tmpreg); + 8003a2a: 69fb ldr r3, [r7, #28] + 8003a2c: 681b ldr r3, [r3, #0] + 8003a2e: 689b ldr r3, [r3, #8] + 8003a30: 4aad ldr r2, [pc, #692] ; (8003ce8 ) + 8003a32: 4013 ands r3, r2 + 8003a34: 0019 movs r1, r3 + 8003a36: 69fb ldr r3, [r7, #28] + 8003a38: 681b ldr r3, [r3, #0] + 8003a3a: 6b7a ldr r2, [r7, #52] ; 0x34 + 8003a3c: 430a orrs r2, r1 + 8003a3e: 609a str r2, [r3, #8] + + + /*-------------------------- USART BRR Configuration -----------------------*/ + UART_GETCLOCKSOURCE(huart, clocksource); + 8003a40: 69fb ldr r3, [r7, #28] + 8003a42: 681b ldr r3, [r3, #0] + 8003a44: 4aa9 ldr r2, [pc, #676] ; (8003cec ) + 8003a46: 4293 cmp r3, r2 + 8003a48: d136 bne.n 8003ab8 + 8003a4a: 4ba9 ldr r3, [pc, #676] ; (8003cf0 ) + 8003a4c: 6cdb ldr r3, [r3, #76] ; 0x4c + 8003a4e: 220c movs r2, #12 + 8003a50: 4013 ands r3, r2 + 8003a52: 2b0c cmp r3, #12 + 8003a54: d020 beq.n 8003a98 + 8003a56: d827 bhi.n 8003aa8 + 8003a58: 2b08 cmp r3, #8 + 8003a5a: d00d beq.n 8003a78 + 8003a5c: d824 bhi.n 8003aa8 + 8003a5e: 2b00 cmp r3, #0 + 8003a60: d002 beq.n 8003a68 + 8003a62: 2b04 cmp r3, #4 + 8003a64: d010 beq.n 8003a88 + 8003a66: e01f b.n 8003aa8 + 8003a68: 231b movs r3, #27 + 8003a6a: 2218 movs r2, #24 + 8003a6c: 4694 mov ip, r2 + 8003a6e: 44bc add ip, r7 + 8003a70: 4463 add r3, ip + 8003a72: 2200 movs r2, #0 + 8003a74: 701a strb r2, [r3, #0] + 8003a76: e06f b.n 8003b58 + 8003a78: 231b movs r3, #27 + 8003a7a: 2218 movs r2, #24 + 8003a7c: 4694 mov ip, r2 + 8003a7e: 44bc add ip, r7 + 8003a80: 4463 add r3, ip + 8003a82: 2202 movs r2, #2 + 8003a84: 701a strb r2, [r3, #0] + 8003a86: e067 b.n 8003b58 + 8003a88: 231b movs r3, #27 + 8003a8a: 2218 movs r2, #24 + 8003a8c: 4694 mov ip, r2 + 8003a8e: 44bc add ip, r7 + 8003a90: 4463 add r3, ip + 8003a92: 2204 movs r2, #4 + 8003a94: 701a strb r2, [r3, #0] + 8003a96: e05f b.n 8003b58 + 8003a98: 231b movs r3, #27 + 8003a9a: 2218 movs r2, #24 + 8003a9c: 4694 mov ip, r2 + 8003a9e: 44bc add ip, r7 + 8003aa0: 4463 add r3, ip + 8003aa2: 2208 movs r2, #8 + 8003aa4: 701a strb r2, [r3, #0] + 8003aa6: e057 b.n 8003b58 + 8003aa8: 231b movs r3, #27 + 8003aaa: 2218 movs r2, #24 + 8003aac: 4694 mov ip, r2 + 8003aae: 44bc add ip, r7 + 8003ab0: 4463 add r3, ip + 8003ab2: 2210 movs r2, #16 + 8003ab4: 701a strb r2, [r3, #0] + 8003ab6: e04f b.n 8003b58 + 8003ab8: 69fb ldr r3, [r7, #28] + 8003aba: 681b ldr r3, [r3, #0] + 8003abc: 4a89 ldr r2, [pc, #548] ; (8003ce4 ) + 8003abe: 4293 cmp r3, r2 + 8003ac0: d143 bne.n 8003b4a + 8003ac2: 4b8b ldr r3, [pc, #556] ; (8003cf0 ) + 8003ac4: 6cda ldr r2, [r3, #76] ; 0x4c + 8003ac6: 23c0 movs r3, #192 ; 0xc0 + 8003ac8: 011b lsls r3, r3, #4 + 8003aca: 4013 ands r3, r2 + 8003acc: 22c0 movs r2, #192 ; 0xc0 + 8003ace: 0112 lsls r2, r2, #4 + 8003ad0: 4293 cmp r3, r2 + 8003ad2: d02a beq.n 8003b2a + 8003ad4: 22c0 movs r2, #192 ; 0xc0 + 8003ad6: 0112 lsls r2, r2, #4 + 8003ad8: 4293 cmp r3, r2 + 8003ada: d82e bhi.n 8003b3a + 8003adc: 2280 movs r2, #128 ; 0x80 + 8003ade: 0112 lsls r2, r2, #4 + 8003ae0: 4293 cmp r3, r2 + 8003ae2: d012 beq.n 8003b0a + 8003ae4: 2280 movs r2, #128 ; 0x80 + 8003ae6: 0112 lsls r2, r2, #4 + 8003ae8: 4293 cmp r3, r2 + 8003aea: d826 bhi.n 8003b3a + 8003aec: 2b00 cmp r3, #0 + 8003aee: d004 beq.n 8003afa + 8003af0: 2280 movs r2, #128 ; 0x80 + 8003af2: 00d2 lsls r2, r2, #3 + 8003af4: 4293 cmp r3, r2 + 8003af6: d010 beq.n 8003b1a + 8003af8: e01f b.n 8003b3a + 8003afa: 231b movs r3, #27 + 8003afc: 2218 movs r2, #24 + 8003afe: 4694 mov ip, r2 + 8003b00: 44bc add ip, r7 + 8003b02: 4463 add r3, ip + 8003b04: 2200 movs r2, #0 + 8003b06: 701a strb r2, [r3, #0] + 8003b08: e026 b.n 8003b58 + 8003b0a: 231b movs r3, #27 + 8003b0c: 2218 movs r2, #24 + 8003b0e: 4694 mov ip, r2 + 8003b10: 44bc add ip, r7 + 8003b12: 4463 add r3, ip + 8003b14: 2202 movs r2, #2 + 8003b16: 701a strb r2, [r3, #0] + 8003b18: e01e b.n 8003b58 + 8003b1a: 231b movs r3, #27 + 8003b1c: 2218 movs r2, #24 + 8003b1e: 4694 mov ip, r2 + 8003b20: 44bc add ip, r7 + 8003b22: 4463 add r3, ip + 8003b24: 2204 movs r2, #4 + 8003b26: 701a strb r2, [r3, #0] + 8003b28: e016 b.n 8003b58 + 8003b2a: 231b movs r3, #27 + 8003b2c: 2218 movs r2, #24 + 8003b2e: 4694 mov ip, r2 + 8003b30: 44bc add ip, r7 + 8003b32: 4463 add r3, ip + 8003b34: 2208 movs r2, #8 + 8003b36: 701a strb r2, [r3, #0] + 8003b38: e00e b.n 8003b58 + 8003b3a: 231b movs r3, #27 + 8003b3c: 2218 movs r2, #24 + 8003b3e: 4694 mov ip, r2 + 8003b40: 44bc add ip, r7 + 8003b42: 4463 add r3, ip + 8003b44: 2210 movs r2, #16 + 8003b46: 701a strb r2, [r3, #0] + 8003b48: e006 b.n 8003b58 + 8003b4a: 231b movs r3, #27 + 8003b4c: 2218 movs r2, #24 + 8003b4e: 4694 mov ip, r2 + 8003b50: 44bc add ip, r7 + 8003b52: 4463 add r3, ip + 8003b54: 2210 movs r2, #16 + 8003b56: 701a strb r2, [r3, #0] + + /* Check LPUART instance */ + if (UART_INSTANCE_LOWPOWER(huart)) + 8003b58: 69fb ldr r3, [r7, #28] + 8003b5a: 681b ldr r3, [r3, #0] + 8003b5c: 4a61 ldr r2, [pc, #388] ; (8003ce4 ) + 8003b5e: 4293 cmp r3, r2 + 8003b60: d000 beq.n 8003b64 + 8003b62: e088 b.n 8003c76 + { + /* Retrieve frequency clock */ + switch (clocksource) + 8003b64: 231b movs r3, #27 + 8003b66: 2218 movs r2, #24 + 8003b68: 4694 mov ip, r2 + 8003b6a: 44bc add ip, r7 + 8003b6c: 4463 add r3, ip + 8003b6e: 781b ldrb r3, [r3, #0] + 8003b70: 2b08 cmp r3, #8 + 8003b72: d01d beq.n 8003bb0 + 8003b74: dc20 bgt.n 8003bb8 + 8003b76: 2b04 cmp r3, #4 + 8003b78: d015 beq.n 8003ba6 + 8003b7a: dc1d bgt.n 8003bb8 + 8003b7c: 2b00 cmp r3, #0 + 8003b7e: d002 beq.n 8003b86 + 8003b80: 2b02 cmp r3, #2 + 8003b82: d005 beq.n 8003b90 + 8003b84: e018 b.n 8003bb8 + { + case UART_CLOCKSOURCE_PCLK1: + pclk = HAL_RCC_GetPCLK1Freq(); + 8003b86: f7ff f957 bl 8002e38 + 8003b8a: 0003 movs r3, r0 + 8003b8c: 62fb str r3, [r7, #44] ; 0x2c + break; + 8003b8e: e01d b.n 8003bcc + case UART_CLOCKSOURCE_HSI: + if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIDIV) != 0U) + 8003b90: 4b57 ldr r3, [pc, #348] ; (8003cf0 ) + 8003b92: 681b ldr r3, [r3, #0] + 8003b94: 2210 movs r2, #16 + 8003b96: 4013 ands r3, r2 + 8003b98: d002 beq.n 8003ba0 + { + pclk = (uint32_t)(HSI_VALUE >> 2U); + 8003b9a: 4b56 ldr r3, [pc, #344] ; (8003cf4 ) + 8003b9c: 62fb str r3, [r7, #44] ; 0x2c + } + else + { + pclk = (uint32_t) HSI_VALUE; + } + break; + 8003b9e: e015 b.n 8003bcc + pclk = (uint32_t) HSI_VALUE; + 8003ba0: 4b55 ldr r3, [pc, #340] ; (8003cf8 ) + 8003ba2: 62fb str r3, [r7, #44] ; 0x2c + break; + 8003ba4: e012 b.n 8003bcc + case UART_CLOCKSOURCE_SYSCLK: + pclk = HAL_RCC_GetSysClockFreq(); + 8003ba6: f7ff f897 bl 8002cd8 + 8003baa: 0003 movs r3, r0 + 8003bac: 62fb str r3, [r7, #44] ; 0x2c + break; + 8003bae: e00d b.n 8003bcc + case UART_CLOCKSOURCE_LSE: + pclk = (uint32_t) LSE_VALUE; + 8003bb0: 2380 movs r3, #128 ; 0x80 + 8003bb2: 021b lsls r3, r3, #8 + 8003bb4: 62fb str r3, [r7, #44] ; 0x2c + break; + 8003bb6: e009 b.n 8003bcc + default: + pclk = 0U; + 8003bb8: 2300 movs r3, #0 + 8003bba: 62fb str r3, [r7, #44] ; 0x2c + ret = HAL_ERROR; + 8003bbc: 231a movs r3, #26 + 8003bbe: 2218 movs r2, #24 + 8003bc0: 4694 mov ip, r2 + 8003bc2: 44bc add ip, r7 + 8003bc4: 4463 add r3, ip + 8003bc6: 2201 movs r2, #1 + 8003bc8: 701a strb r2, [r3, #0] + break; + 8003bca: 46c0 nop ; (mov r8, r8) + } + + /* If proper clock source reported */ + if (pclk != 0U) + 8003bcc: 6afb ldr r3, [r7, #44] ; 0x2c + 8003bce: 2b00 cmp r3, #0 + 8003bd0: d100 bne.n 8003bd4 + 8003bd2: e139 b.n 8003e48 + { + /* No Prescaler applicable */ + /* Ensure that Frequency clock is in the range [3 * baudrate, 4096 * baudrate] */ + if ((pclk < (3U * huart->Init.BaudRate)) || + 8003bd4: 69fb ldr r3, [r7, #28] + 8003bd6: 685a ldr r2, [r3, #4] + 8003bd8: 0013 movs r3, r2 + 8003bda: 005b lsls r3, r3, #1 + 8003bdc: 189b adds r3, r3, r2 + 8003bde: 6afa ldr r2, [r7, #44] ; 0x2c + 8003be0: 429a cmp r2, r3 + 8003be2: d305 bcc.n 8003bf0 + (pclk > (4096U * huart->Init.BaudRate))) + 8003be4: 69fb ldr r3, [r7, #28] + 8003be6: 685b ldr r3, [r3, #4] + 8003be8: 031b lsls r3, r3, #12 + if ((pclk < (3U * huart->Init.BaudRate)) || + 8003bea: 6afa ldr r2, [r7, #44] ; 0x2c + 8003bec: 429a cmp r2, r3 + 8003bee: d907 bls.n 8003c00 + { + ret = HAL_ERROR; + 8003bf0: 231a movs r3, #26 + 8003bf2: 2218 movs r2, #24 + 8003bf4: 4694 mov ip, r2 + 8003bf6: 44bc add ip, r7 + 8003bf8: 4463 add r3, ip + 8003bfa: 2201 movs r2, #1 + 8003bfc: 701a strb r2, [r3, #0] + 8003bfe: e123 b.n 8003e48 + } + else + { + usartdiv = (uint32_t)(UART_DIV_LPUART(pclk, huart->Init.BaudRate)); + 8003c00: 6afb ldr r3, [r7, #44] ; 0x2c + 8003c02: 613b str r3, [r7, #16] + 8003c04: 2300 movs r3, #0 + 8003c06: 617b str r3, [r7, #20] + 8003c08: 6939 ldr r1, [r7, #16] + 8003c0a: 697a ldr r2, [r7, #20] + 8003c0c: 000b movs r3, r1 + 8003c0e: 0e1b lsrs r3, r3, #24 + 8003c10: 0010 movs r0, r2 + 8003c12: 0205 lsls r5, r0, #8 + 8003c14: 431d orrs r5, r3 + 8003c16: 000b movs r3, r1 + 8003c18: 021c lsls r4, r3, #8 + 8003c1a: 69fb ldr r3, [r7, #28] + 8003c1c: 685b ldr r3, [r3, #4] + 8003c1e: 085b lsrs r3, r3, #1 + 8003c20: 60bb str r3, [r7, #8] + 8003c22: 2300 movs r3, #0 + 8003c24: 60fb str r3, [r7, #12] + 8003c26: 68b8 ldr r0, [r7, #8] + 8003c28: 68f9 ldr r1, [r7, #12] + 8003c2a: 1900 adds r0, r0, r4 + 8003c2c: 4169 adcs r1, r5 + 8003c2e: 69fb ldr r3, [r7, #28] + 8003c30: 685b ldr r3, [r3, #4] + 8003c32: 603b str r3, [r7, #0] + 8003c34: 2300 movs r3, #0 + 8003c36: 607b str r3, [r7, #4] + 8003c38: 683a ldr r2, [r7, #0] + 8003c3a: 687b ldr r3, [r7, #4] + 8003c3c: f7fc faf0 bl 8000220 <__aeabi_uldivmod> + 8003c40: 0002 movs r2, r0 + 8003c42: 000b movs r3, r1 + 8003c44: 0013 movs r3, r2 + 8003c46: 62bb str r3, [r7, #40] ; 0x28 + if ((usartdiv >= LPUART_BRR_MIN) && (usartdiv <= LPUART_BRR_MAX)) + 8003c48: 6aba ldr r2, [r7, #40] ; 0x28 + 8003c4a: 23c0 movs r3, #192 ; 0xc0 + 8003c4c: 009b lsls r3, r3, #2 + 8003c4e: 429a cmp r2, r3 + 8003c50: d309 bcc.n 8003c66 + 8003c52: 6aba ldr r2, [r7, #40] ; 0x28 + 8003c54: 2380 movs r3, #128 ; 0x80 + 8003c56: 035b lsls r3, r3, #13 + 8003c58: 429a cmp r2, r3 + 8003c5a: d204 bcs.n 8003c66 + { + huart->Instance->BRR = usartdiv; + 8003c5c: 69fb ldr r3, [r7, #28] + 8003c5e: 681b ldr r3, [r3, #0] + 8003c60: 6aba ldr r2, [r7, #40] ; 0x28 + 8003c62: 60da str r2, [r3, #12] + 8003c64: e0f0 b.n 8003e48 + } + else + { + ret = HAL_ERROR; + 8003c66: 231a movs r3, #26 + 8003c68: 2218 movs r2, #24 + 8003c6a: 4694 mov ip, r2 + 8003c6c: 44bc add ip, r7 + 8003c6e: 4463 add r3, ip + 8003c70: 2201 movs r2, #1 + 8003c72: 701a strb r2, [r3, #0] + 8003c74: e0e8 b.n 8003e48 + } + } /* if ( (pclk < (3 * huart->Init.BaudRate) ) || (pclk > (4096 * huart->Init.BaudRate) )) */ + } /* if (pclk != 0) */ + } + /* Check UART Over Sampling to set Baud Rate Register */ + else if (huart->Init.OverSampling == UART_OVERSAMPLING_8) + 8003c76: 69fb ldr r3, [r7, #28] + 8003c78: 69da ldr r2, [r3, #28] + 8003c7a: 2380 movs r3, #128 ; 0x80 + 8003c7c: 021b lsls r3, r3, #8 + 8003c7e: 429a cmp r2, r3 + 8003c80: d000 beq.n 8003c84 + 8003c82: e087 b.n 8003d94 + { + switch (clocksource) + 8003c84: 231b movs r3, #27 + 8003c86: 2218 movs r2, #24 + 8003c88: 4694 mov ip, r2 + 8003c8a: 44bc add ip, r7 + 8003c8c: 4463 add r3, ip + 8003c8e: 781b ldrb r3, [r3, #0] + 8003c90: 2b08 cmp r3, #8 + 8003c92: d835 bhi.n 8003d00 + 8003c94: 009a lsls r2, r3, #2 + 8003c96: 4b19 ldr r3, [pc, #100] ; (8003cfc ) + 8003c98: 18d3 adds r3, r2, r3 + 8003c9a: 681b ldr r3, [r3, #0] + 8003c9c: 469f mov pc, r3 + { + case UART_CLOCKSOURCE_PCLK1: + pclk = HAL_RCC_GetPCLK1Freq(); + 8003c9e: f7ff f8cb bl 8002e38 + 8003ca2: 0003 movs r3, r0 + 8003ca4: 62fb str r3, [r7, #44] ; 0x2c + break; + 8003ca6: e035 b.n 8003d14 + case UART_CLOCKSOURCE_PCLK2: + pclk = HAL_RCC_GetPCLK2Freq(); + 8003ca8: f7ff f8dc bl 8002e64 + 8003cac: 0003 movs r3, r0 + 8003cae: 62fb str r3, [r7, #44] ; 0x2c + break; + 8003cb0: e030 b.n 8003d14 + case UART_CLOCKSOURCE_HSI: + if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIDIV) != 0U) + 8003cb2: 4b0f ldr r3, [pc, #60] ; (8003cf0 ) + 8003cb4: 681b ldr r3, [r3, #0] + 8003cb6: 2210 movs r2, #16 + 8003cb8: 4013 ands r3, r2 + 8003cba: d002 beq.n 8003cc2 + { + pclk = (uint32_t)(HSI_VALUE >> 2U); + 8003cbc: 4b0d ldr r3, [pc, #52] ; (8003cf4 ) + 8003cbe: 62fb str r3, [r7, #44] ; 0x2c + } + else + { + pclk = (uint32_t) HSI_VALUE; + } + break; + 8003cc0: e028 b.n 8003d14 + pclk = (uint32_t) HSI_VALUE; + 8003cc2: 4b0d ldr r3, [pc, #52] ; (8003cf8 ) + 8003cc4: 62fb str r3, [r7, #44] ; 0x2c + break; + 8003cc6: e025 b.n 8003d14 + case UART_CLOCKSOURCE_SYSCLK: + pclk = HAL_RCC_GetSysClockFreq(); + 8003cc8: f7ff f806 bl 8002cd8 + 8003ccc: 0003 movs r3, r0 + 8003cce: 62fb str r3, [r7, #44] ; 0x2c + break; + 8003cd0: e020 b.n 8003d14 + case UART_CLOCKSOURCE_LSE: + pclk = (uint32_t) LSE_VALUE; + 8003cd2: 2380 movs r3, #128 ; 0x80 + 8003cd4: 021b lsls r3, r3, #8 + 8003cd6: 62fb str r3, [r7, #44] ; 0x2c + break; + 8003cd8: e01c b.n 8003d14 + 8003cda: 46c0 nop ; (mov r8, r8) + 8003cdc: efff69f3 .word 0xefff69f3 + 8003ce0: ffffcfff .word 0xffffcfff + 8003ce4: 40004800 .word 0x40004800 + 8003ce8: fffff4ff .word 0xfffff4ff + 8003cec: 40004400 .word 0x40004400 + 8003cf0: 40021000 .word 0x40021000 + 8003cf4: 003d0900 .word 0x003d0900 + 8003cf8: 00f42400 .word 0x00f42400 + 8003cfc: 0800436c .word 0x0800436c + default: + pclk = 0U; + 8003d00: 2300 movs r3, #0 + 8003d02: 62fb str r3, [r7, #44] ; 0x2c + ret = HAL_ERROR; + 8003d04: 231a movs r3, #26 + 8003d06: 2218 movs r2, #24 + 8003d08: 4694 mov ip, r2 + 8003d0a: 44bc add ip, r7 + 8003d0c: 4463 add r3, ip + 8003d0e: 2201 movs r2, #1 + 8003d10: 701a strb r2, [r3, #0] + break; + 8003d12: 46c0 nop ; (mov r8, r8) + } + + /* USARTDIV must be greater than or equal to 0d16 */ + if (pclk != 0U) + 8003d14: 6afb ldr r3, [r7, #44] ; 0x2c + 8003d16: 2b00 cmp r3, #0 + 8003d18: d100 bne.n 8003d1c + 8003d1a: e095 b.n 8003e48 + { + usartdiv = (uint16_t)(UART_DIV_SAMPLING8(pclk, huart->Init.BaudRate)); + 8003d1c: 6afb ldr r3, [r7, #44] ; 0x2c + 8003d1e: 005a lsls r2, r3, #1 + 8003d20: 69fb ldr r3, [r7, #28] + 8003d22: 685b ldr r3, [r3, #4] + 8003d24: 085b lsrs r3, r3, #1 + 8003d26: 18d2 adds r2, r2, r3 + 8003d28: 69fb ldr r3, [r7, #28] + 8003d2a: 685b ldr r3, [r3, #4] + 8003d2c: 0019 movs r1, r3 + 8003d2e: 0010 movs r0, r2 + 8003d30: f7fc f9ea bl 8000108 <__udivsi3> + 8003d34: 0003 movs r3, r0 + 8003d36: b29b uxth r3, r3 + 8003d38: 62bb str r3, [r7, #40] ; 0x28 + if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX)) + 8003d3a: 6abb ldr r3, [r7, #40] ; 0x28 + 8003d3c: 2b0f cmp r3, #15 + 8003d3e: d921 bls.n 8003d84 + 8003d40: 6aba ldr r2, [r7, #40] ; 0x28 + 8003d42: 2380 movs r3, #128 ; 0x80 + 8003d44: 025b lsls r3, r3, #9 + 8003d46: 429a cmp r2, r3 + 8003d48: d21c bcs.n 8003d84 + { + brrtemp = (uint16_t)(usartdiv & 0xFFF0U); + 8003d4a: 6abb ldr r3, [r7, #40] ; 0x28 + 8003d4c: b29a uxth r2, r3 + 8003d4e: 200e movs r0, #14 + 8003d50: 2418 movs r4, #24 + 8003d52: 193b adds r3, r7, r4 + 8003d54: 181b adds r3, r3, r0 + 8003d56: 210f movs r1, #15 + 8003d58: 438a bics r2, r1 + 8003d5a: 801a strh r2, [r3, #0] + brrtemp |= (uint16_t)((usartdiv & (uint16_t)0x000FU) >> 1U); + 8003d5c: 6abb ldr r3, [r7, #40] ; 0x28 + 8003d5e: 085b lsrs r3, r3, #1 + 8003d60: b29b uxth r3, r3 + 8003d62: 2207 movs r2, #7 + 8003d64: 4013 ands r3, r2 + 8003d66: b299 uxth r1, r3 + 8003d68: 193b adds r3, r7, r4 + 8003d6a: 181b adds r3, r3, r0 + 8003d6c: 193a adds r2, r7, r4 + 8003d6e: 1812 adds r2, r2, r0 + 8003d70: 8812 ldrh r2, [r2, #0] + 8003d72: 430a orrs r2, r1 + 8003d74: 801a strh r2, [r3, #0] + huart->Instance->BRR = brrtemp; + 8003d76: 69fb ldr r3, [r7, #28] + 8003d78: 681b ldr r3, [r3, #0] + 8003d7a: 193a adds r2, r7, r4 + 8003d7c: 1812 adds r2, r2, r0 + 8003d7e: 8812 ldrh r2, [r2, #0] + 8003d80: 60da str r2, [r3, #12] + 8003d82: e061 b.n 8003e48 + } + else + { + ret = HAL_ERROR; + 8003d84: 231a movs r3, #26 + 8003d86: 2218 movs r2, #24 + 8003d88: 4694 mov ip, r2 + 8003d8a: 44bc add ip, r7 + 8003d8c: 4463 add r3, ip + 8003d8e: 2201 movs r2, #1 + 8003d90: 701a strb r2, [r3, #0] + 8003d92: e059 b.n 8003e48 + } + } + } + else + { + switch (clocksource) + 8003d94: 231b movs r3, #27 + 8003d96: 2218 movs r2, #24 + 8003d98: 4694 mov ip, r2 + 8003d9a: 44bc add ip, r7 + 8003d9c: 4463 add r3, ip + 8003d9e: 781b ldrb r3, [r3, #0] + 8003da0: 2b08 cmp r3, #8 + 8003da2: d822 bhi.n 8003dea + 8003da4: 009a lsls r2, r3, #2 + 8003da6: 4b30 ldr r3, [pc, #192] ; (8003e68 ) + 8003da8: 18d3 adds r3, r2, r3 + 8003daa: 681b ldr r3, [r3, #0] + 8003dac: 469f mov pc, r3 + { + case UART_CLOCKSOURCE_PCLK1: + pclk = HAL_RCC_GetPCLK1Freq(); + 8003dae: f7ff f843 bl 8002e38 + 8003db2: 0003 movs r3, r0 + 8003db4: 62fb str r3, [r7, #44] ; 0x2c + break; + 8003db6: e022 b.n 8003dfe + case UART_CLOCKSOURCE_PCLK2: + pclk = HAL_RCC_GetPCLK2Freq(); + 8003db8: f7ff f854 bl 8002e64 + 8003dbc: 0003 movs r3, r0 + 8003dbe: 62fb str r3, [r7, #44] ; 0x2c + break; + 8003dc0: e01d b.n 8003dfe + case UART_CLOCKSOURCE_HSI: + if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIDIV) != 0U) + 8003dc2: 4b2a ldr r3, [pc, #168] ; (8003e6c ) + 8003dc4: 681b ldr r3, [r3, #0] + 8003dc6: 2210 movs r2, #16 + 8003dc8: 4013 ands r3, r2 + 8003dca: d002 beq.n 8003dd2 + { + pclk = (uint32_t)(HSI_VALUE >> 2U); + 8003dcc: 4b28 ldr r3, [pc, #160] ; (8003e70 ) + 8003dce: 62fb str r3, [r7, #44] ; 0x2c + } + else + { + pclk = (uint32_t) HSI_VALUE; + } + break; + 8003dd0: e015 b.n 8003dfe + pclk = (uint32_t) HSI_VALUE; + 8003dd2: 4b28 ldr r3, [pc, #160] ; (8003e74 ) + 8003dd4: 62fb str r3, [r7, #44] ; 0x2c + break; + 8003dd6: e012 b.n 8003dfe + case UART_CLOCKSOURCE_SYSCLK: + pclk = HAL_RCC_GetSysClockFreq(); + 8003dd8: f7fe ff7e bl 8002cd8 + 8003ddc: 0003 movs r3, r0 + 8003dde: 62fb str r3, [r7, #44] ; 0x2c + break; + 8003de0: e00d b.n 8003dfe + case UART_CLOCKSOURCE_LSE: + pclk = (uint32_t) LSE_VALUE; + 8003de2: 2380 movs r3, #128 ; 0x80 + 8003de4: 021b lsls r3, r3, #8 + 8003de6: 62fb str r3, [r7, #44] ; 0x2c + break; + 8003de8: e009 b.n 8003dfe + default: + pclk = 0U; + 8003dea: 2300 movs r3, #0 + 8003dec: 62fb str r3, [r7, #44] ; 0x2c + ret = HAL_ERROR; + 8003dee: 231a movs r3, #26 + 8003df0: 2218 movs r2, #24 + 8003df2: 4694 mov ip, r2 + 8003df4: 44bc add ip, r7 + 8003df6: 4463 add r3, ip + 8003df8: 2201 movs r2, #1 + 8003dfa: 701a strb r2, [r3, #0] + break; + 8003dfc: 46c0 nop ; (mov r8, r8) + } + + if (pclk != 0U) + 8003dfe: 6afb ldr r3, [r7, #44] ; 0x2c + 8003e00: 2b00 cmp r3, #0 + 8003e02: d021 beq.n 8003e48 + { + /* USARTDIV must be greater than or equal to 0d16 */ + usartdiv = (uint16_t)(UART_DIV_SAMPLING16(pclk, huart->Init.BaudRate)); + 8003e04: 69fb ldr r3, [r7, #28] + 8003e06: 685b ldr r3, [r3, #4] + 8003e08: 085a lsrs r2, r3, #1 + 8003e0a: 6afb ldr r3, [r7, #44] ; 0x2c + 8003e0c: 18d2 adds r2, r2, r3 + 8003e0e: 69fb ldr r3, [r7, #28] + 8003e10: 685b ldr r3, [r3, #4] + 8003e12: 0019 movs r1, r3 + 8003e14: 0010 movs r0, r2 + 8003e16: f7fc f977 bl 8000108 <__udivsi3> + 8003e1a: 0003 movs r3, r0 + 8003e1c: b29b uxth r3, r3 + 8003e1e: 62bb str r3, [r7, #40] ; 0x28 + if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX)) + 8003e20: 6abb ldr r3, [r7, #40] ; 0x28 + 8003e22: 2b0f cmp r3, #15 + 8003e24: d909 bls.n 8003e3a + 8003e26: 6aba ldr r2, [r7, #40] ; 0x28 + 8003e28: 2380 movs r3, #128 ; 0x80 + 8003e2a: 025b lsls r3, r3, #9 + 8003e2c: 429a cmp r2, r3 + 8003e2e: d204 bcs.n 8003e3a + { + huart->Instance->BRR = usartdiv; + 8003e30: 69fb ldr r3, [r7, #28] + 8003e32: 681b ldr r3, [r3, #0] + 8003e34: 6aba ldr r2, [r7, #40] ; 0x28 + 8003e36: 60da str r2, [r3, #12] + 8003e38: e006 b.n 8003e48 + } + else + { + ret = HAL_ERROR; + 8003e3a: 231a movs r3, #26 + 8003e3c: 2218 movs r2, #24 + 8003e3e: 4694 mov ip, r2 + 8003e40: 44bc add ip, r7 + 8003e42: 4463 add r3, ip + 8003e44: 2201 movs r2, #1 + 8003e46: 701a strb r2, [r3, #0] + } + } + + + /* Clear ISR function pointers */ + huart->RxISR = NULL; + 8003e48: 69fb ldr r3, [r7, #28] + 8003e4a: 2200 movs r2, #0 + 8003e4c: 665a str r2, [r3, #100] ; 0x64 + huart->TxISR = NULL; + 8003e4e: 69fb ldr r3, [r7, #28] + 8003e50: 2200 movs r2, #0 + 8003e52: 669a str r2, [r3, #104] ; 0x68 + + return ret; + 8003e54: 231a movs r3, #26 + 8003e56: 2218 movs r2, #24 + 8003e58: 4694 mov ip, r2 + 8003e5a: 44bc add ip, r7 + 8003e5c: 4463 add r3, ip + 8003e5e: 781b ldrb r3, [r3, #0] +} + 8003e60: 0018 movs r0, r3 + 8003e62: 46bd mov sp, r7 + 8003e64: b00e add sp, #56 ; 0x38 + 8003e66: bdb0 pop {r4, r5, r7, pc} + 8003e68: 08004390 .word 0x08004390 + 8003e6c: 40021000 .word 0x40021000 + 8003e70: 003d0900 .word 0x003d0900 + 8003e74: 00f42400 .word 0x00f42400 + +08003e78 : + * @brief Configure the UART peripheral advanced features. + * @param huart UART handle. + * @retval None + */ +void UART_AdvFeatureConfig(UART_HandleTypeDef *huart) +{ + 8003e78: b580 push {r7, lr} + 8003e7a: b082 sub sp, #8 + 8003e7c: af00 add r7, sp, #0 + 8003e7e: 6078 str r0, [r7, #4] + /* Check whether the set of advanced features to configure is properly set */ + assert_param(IS_UART_ADVFEATURE_INIT(huart->AdvancedInit.AdvFeatureInit)); + + /* if required, configure TX pin active level inversion */ + if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_TXINVERT_INIT)) + 8003e80: 687b ldr r3, [r7, #4] + 8003e82: 6a5b ldr r3, [r3, #36] ; 0x24 + 8003e84: 2201 movs r2, #1 + 8003e86: 4013 ands r3, r2 + 8003e88: d00b beq.n 8003ea2 + { + assert_param(IS_UART_ADVFEATURE_TXINV(huart->AdvancedInit.TxPinLevelInvert)); + MODIFY_REG(huart->Instance->CR2, USART_CR2_TXINV, huart->AdvancedInit.TxPinLevelInvert); + 8003e8a: 687b ldr r3, [r7, #4] + 8003e8c: 681b ldr r3, [r3, #0] + 8003e8e: 685b ldr r3, [r3, #4] + 8003e90: 4a4a ldr r2, [pc, #296] ; (8003fbc ) + 8003e92: 4013 ands r3, r2 + 8003e94: 0019 movs r1, r3 + 8003e96: 687b ldr r3, [r7, #4] + 8003e98: 6a9a ldr r2, [r3, #40] ; 0x28 + 8003e9a: 687b ldr r3, [r7, #4] + 8003e9c: 681b ldr r3, [r3, #0] + 8003e9e: 430a orrs r2, r1 + 8003ea0: 605a str r2, [r3, #4] + } + + /* if required, configure RX pin active level inversion */ + if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_RXINVERT_INIT)) + 8003ea2: 687b ldr r3, [r7, #4] + 8003ea4: 6a5b ldr r3, [r3, #36] ; 0x24 + 8003ea6: 2202 movs r2, #2 + 8003ea8: 4013 ands r3, r2 + 8003eaa: d00b beq.n 8003ec4 + { + assert_param(IS_UART_ADVFEATURE_RXINV(huart->AdvancedInit.RxPinLevelInvert)); + MODIFY_REG(huart->Instance->CR2, USART_CR2_RXINV, huart->AdvancedInit.RxPinLevelInvert); + 8003eac: 687b ldr r3, [r7, #4] + 8003eae: 681b ldr r3, [r3, #0] + 8003eb0: 685b ldr r3, [r3, #4] + 8003eb2: 4a43 ldr r2, [pc, #268] ; (8003fc0 ) + 8003eb4: 4013 ands r3, r2 + 8003eb6: 0019 movs r1, r3 + 8003eb8: 687b ldr r3, [r7, #4] + 8003eba: 6ada ldr r2, [r3, #44] ; 0x2c + 8003ebc: 687b ldr r3, [r7, #4] + 8003ebe: 681b ldr r3, [r3, #0] + 8003ec0: 430a orrs r2, r1 + 8003ec2: 605a str r2, [r3, #4] + } + + /* if required, configure data inversion */ + if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_DATAINVERT_INIT)) + 8003ec4: 687b ldr r3, [r7, #4] + 8003ec6: 6a5b ldr r3, [r3, #36] ; 0x24 + 8003ec8: 2204 movs r2, #4 + 8003eca: 4013 ands r3, r2 + 8003ecc: d00b beq.n 8003ee6 + { + assert_param(IS_UART_ADVFEATURE_DATAINV(huart->AdvancedInit.DataInvert)); + MODIFY_REG(huart->Instance->CR2, USART_CR2_DATAINV, huart->AdvancedInit.DataInvert); + 8003ece: 687b ldr r3, [r7, #4] + 8003ed0: 681b ldr r3, [r3, #0] + 8003ed2: 685b ldr r3, [r3, #4] + 8003ed4: 4a3b ldr r2, [pc, #236] ; (8003fc4 ) + 8003ed6: 4013 ands r3, r2 + 8003ed8: 0019 movs r1, r3 + 8003eda: 687b ldr r3, [r7, #4] + 8003edc: 6b1a ldr r2, [r3, #48] ; 0x30 + 8003ede: 687b ldr r3, [r7, #4] + 8003ee0: 681b ldr r3, [r3, #0] + 8003ee2: 430a orrs r2, r1 + 8003ee4: 605a str r2, [r3, #4] + } + + /* if required, configure RX/TX pins swap */ + if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_SWAP_INIT)) + 8003ee6: 687b ldr r3, [r7, #4] + 8003ee8: 6a5b ldr r3, [r3, #36] ; 0x24 + 8003eea: 2208 movs r2, #8 + 8003eec: 4013 ands r3, r2 + 8003eee: d00b beq.n 8003f08 + { + assert_param(IS_UART_ADVFEATURE_SWAP(huart->AdvancedInit.Swap)); + MODIFY_REG(huart->Instance->CR2, USART_CR2_SWAP, huart->AdvancedInit.Swap); + 8003ef0: 687b ldr r3, [r7, #4] + 8003ef2: 681b ldr r3, [r3, #0] + 8003ef4: 685b ldr r3, [r3, #4] + 8003ef6: 4a34 ldr r2, [pc, #208] ; (8003fc8 ) + 8003ef8: 4013 ands r3, r2 + 8003efa: 0019 movs r1, r3 + 8003efc: 687b ldr r3, [r7, #4] + 8003efe: 6b5a ldr r2, [r3, #52] ; 0x34 + 8003f00: 687b ldr r3, [r7, #4] + 8003f02: 681b ldr r3, [r3, #0] + 8003f04: 430a orrs r2, r1 + 8003f06: 605a str r2, [r3, #4] + } + + /* if required, configure RX overrun detection disabling */ + if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_RXOVERRUNDISABLE_INIT)) + 8003f08: 687b ldr r3, [r7, #4] + 8003f0a: 6a5b ldr r3, [r3, #36] ; 0x24 + 8003f0c: 2210 movs r2, #16 + 8003f0e: 4013 ands r3, r2 + 8003f10: d00b beq.n 8003f2a + { + assert_param(IS_UART_OVERRUN(huart->AdvancedInit.OverrunDisable)); + MODIFY_REG(huart->Instance->CR3, USART_CR3_OVRDIS, huart->AdvancedInit.OverrunDisable); + 8003f12: 687b ldr r3, [r7, #4] + 8003f14: 681b ldr r3, [r3, #0] + 8003f16: 689b ldr r3, [r3, #8] + 8003f18: 4a2c ldr r2, [pc, #176] ; (8003fcc ) + 8003f1a: 4013 ands r3, r2 + 8003f1c: 0019 movs r1, r3 + 8003f1e: 687b ldr r3, [r7, #4] + 8003f20: 6b9a ldr r2, [r3, #56] ; 0x38 + 8003f22: 687b ldr r3, [r7, #4] + 8003f24: 681b ldr r3, [r3, #0] + 8003f26: 430a orrs r2, r1 + 8003f28: 609a str r2, [r3, #8] + } + + /* if required, configure DMA disabling on reception error */ + if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_DMADISABLEONERROR_INIT)) + 8003f2a: 687b ldr r3, [r7, #4] + 8003f2c: 6a5b ldr r3, [r3, #36] ; 0x24 + 8003f2e: 2220 movs r2, #32 + 8003f30: 4013 ands r3, r2 + 8003f32: d00b beq.n 8003f4c + { + assert_param(IS_UART_ADVFEATURE_DMAONRXERROR(huart->AdvancedInit.DMADisableonRxError)); + MODIFY_REG(huart->Instance->CR3, USART_CR3_DDRE, huart->AdvancedInit.DMADisableonRxError); + 8003f34: 687b ldr r3, [r7, #4] + 8003f36: 681b ldr r3, [r3, #0] + 8003f38: 689b ldr r3, [r3, #8] + 8003f3a: 4a25 ldr r2, [pc, #148] ; (8003fd0 ) + 8003f3c: 4013 ands r3, r2 + 8003f3e: 0019 movs r1, r3 + 8003f40: 687b ldr r3, [r7, #4] + 8003f42: 6bda ldr r2, [r3, #60] ; 0x3c + 8003f44: 687b ldr r3, [r7, #4] + 8003f46: 681b ldr r3, [r3, #0] + 8003f48: 430a orrs r2, r1 + 8003f4a: 609a str r2, [r3, #8] + } + + /* if required, configure auto Baud rate detection scheme */ + if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_AUTOBAUDRATE_INIT)) + 8003f4c: 687b ldr r3, [r7, #4] + 8003f4e: 6a5b ldr r3, [r3, #36] ; 0x24 + 8003f50: 2240 movs r2, #64 ; 0x40 + 8003f52: 4013 ands r3, r2 + 8003f54: d01d beq.n 8003f92 + { + assert_param(IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(huart->Instance)); + assert_param(IS_UART_ADVFEATURE_AUTOBAUDRATE(huart->AdvancedInit.AutoBaudRateEnable)); + MODIFY_REG(huart->Instance->CR2, USART_CR2_ABREN, huart->AdvancedInit.AutoBaudRateEnable); + 8003f56: 687b ldr r3, [r7, #4] + 8003f58: 681b ldr r3, [r3, #0] + 8003f5a: 685b ldr r3, [r3, #4] + 8003f5c: 4a1d ldr r2, [pc, #116] ; (8003fd4 ) + 8003f5e: 4013 ands r3, r2 + 8003f60: 0019 movs r1, r3 + 8003f62: 687b ldr r3, [r7, #4] + 8003f64: 6c1a ldr r2, [r3, #64] ; 0x40 + 8003f66: 687b ldr r3, [r7, #4] + 8003f68: 681b ldr r3, [r3, #0] + 8003f6a: 430a orrs r2, r1 + 8003f6c: 605a str r2, [r3, #4] + /* set auto Baudrate detection parameters if detection is enabled */ + if (huart->AdvancedInit.AutoBaudRateEnable == UART_ADVFEATURE_AUTOBAUDRATE_ENABLE) + 8003f6e: 687b ldr r3, [r7, #4] + 8003f70: 6c1a ldr r2, [r3, #64] ; 0x40 + 8003f72: 2380 movs r3, #128 ; 0x80 + 8003f74: 035b lsls r3, r3, #13 + 8003f76: 429a cmp r2, r3 + 8003f78: d10b bne.n 8003f92 + { + assert_param(IS_UART_ADVFEATURE_AUTOBAUDRATEMODE(huart->AdvancedInit.AutoBaudRateMode)); + MODIFY_REG(huart->Instance->CR2, USART_CR2_ABRMODE, huart->AdvancedInit.AutoBaudRateMode); + 8003f7a: 687b ldr r3, [r7, #4] + 8003f7c: 681b ldr r3, [r3, #0] + 8003f7e: 685b ldr r3, [r3, #4] + 8003f80: 4a15 ldr r2, [pc, #84] ; (8003fd8 ) + 8003f82: 4013 ands r3, r2 + 8003f84: 0019 movs r1, r3 + 8003f86: 687b ldr r3, [r7, #4] + 8003f88: 6c5a ldr r2, [r3, #68] ; 0x44 + 8003f8a: 687b ldr r3, [r7, #4] + 8003f8c: 681b ldr r3, [r3, #0] + 8003f8e: 430a orrs r2, r1 + 8003f90: 605a str r2, [r3, #4] + } + } + + /* if required, configure MSB first on communication line */ + if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_MSBFIRST_INIT)) + 8003f92: 687b ldr r3, [r7, #4] + 8003f94: 6a5b ldr r3, [r3, #36] ; 0x24 + 8003f96: 2280 movs r2, #128 ; 0x80 + 8003f98: 4013 ands r3, r2 + 8003f9a: d00b beq.n 8003fb4 + { + assert_param(IS_UART_ADVFEATURE_MSBFIRST(huart->AdvancedInit.MSBFirst)); + MODIFY_REG(huart->Instance->CR2, USART_CR2_MSBFIRST, huart->AdvancedInit.MSBFirst); + 8003f9c: 687b ldr r3, [r7, #4] + 8003f9e: 681b ldr r3, [r3, #0] + 8003fa0: 685b ldr r3, [r3, #4] + 8003fa2: 4a0e ldr r2, [pc, #56] ; (8003fdc ) + 8003fa4: 4013 ands r3, r2 + 8003fa6: 0019 movs r1, r3 + 8003fa8: 687b ldr r3, [r7, #4] + 8003faa: 6c9a ldr r2, [r3, #72] ; 0x48 + 8003fac: 687b ldr r3, [r7, #4] + 8003fae: 681b ldr r3, [r3, #0] + 8003fb0: 430a orrs r2, r1 + 8003fb2: 605a str r2, [r3, #4] + } +} + 8003fb4: 46c0 nop ; (mov r8, r8) + 8003fb6: 46bd mov sp, r7 + 8003fb8: b002 add sp, #8 + 8003fba: bd80 pop {r7, pc} + 8003fbc: fffdffff .word 0xfffdffff + 8003fc0: fffeffff .word 0xfffeffff + 8003fc4: fffbffff .word 0xfffbffff + 8003fc8: ffff7fff .word 0xffff7fff + 8003fcc: ffffefff .word 0xffffefff + 8003fd0: ffffdfff .word 0xffffdfff + 8003fd4: ffefffff .word 0xffefffff + 8003fd8: ff9fffff .word 0xff9fffff + 8003fdc: fff7ffff .word 0xfff7ffff + +08003fe0 : + * @brief Check the UART Idle State. + * @param huart UART handle. + * @retval HAL status + */ +HAL_StatusTypeDef UART_CheckIdleState(UART_HandleTypeDef *huart) +{ + 8003fe0: b580 push {r7, lr} + 8003fe2: b086 sub sp, #24 + 8003fe4: af02 add r7, sp, #8 + 8003fe6: 6078 str r0, [r7, #4] + uint32_t tickstart; + + /* Initialize the UART ErrorCode */ + huart->ErrorCode = HAL_UART_ERROR_NONE; + 8003fe8: 687b ldr r3, [r7, #4] + 8003fea: 2280 movs r2, #128 ; 0x80 + 8003fec: 2100 movs r1, #0 + 8003fee: 5099 str r1, [r3, r2] + + /* Init tickstart for timeout management */ + tickstart = HAL_GetTick(); + 8003ff0: f7fd f892 bl 8001118 + 8003ff4: 0003 movs r3, r0 + 8003ff6: 60fb str r3, [r7, #12] + + /* Check if the Transmitter is enabled */ + if ((huart->Instance->CR1 & USART_CR1_TE) == USART_CR1_TE) + 8003ff8: 687b ldr r3, [r7, #4] + 8003ffa: 681b ldr r3, [r3, #0] + 8003ffc: 681b ldr r3, [r3, #0] + 8003ffe: 2208 movs r2, #8 + 8004000: 4013 ands r3, r2 + 8004002: 2b08 cmp r3, #8 + 8004004: d10c bne.n 8004020 + { + /* Wait until TEACK flag is set */ + if (UART_WaitOnFlagUntilTimeout(huart, USART_ISR_TEACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK) + 8004006: 68fb ldr r3, [r7, #12] + 8004008: 2280 movs r2, #128 ; 0x80 + 800400a: 0391 lsls r1, r2, #14 + 800400c: 6878 ldr r0, [r7, #4] + 800400e: 4a17 ldr r2, [pc, #92] ; (800406c ) + 8004010: 9200 str r2, [sp, #0] + 8004012: 2200 movs r2, #0 + 8004014: f000 f82c bl 8004070 + 8004018: 1e03 subs r3, r0, #0 + 800401a: d001 beq.n 8004020 + { + /* Timeout occurred */ + return HAL_TIMEOUT; + 800401c: 2303 movs r3, #3 + 800401e: e021 b.n 8004064 + } + } + + /* Check if the Receiver is enabled */ + if ((huart->Instance->CR1 & USART_CR1_RE) == USART_CR1_RE) + 8004020: 687b ldr r3, [r7, #4] + 8004022: 681b ldr r3, [r3, #0] + 8004024: 681b ldr r3, [r3, #0] + 8004026: 2204 movs r2, #4 + 8004028: 4013 ands r3, r2 + 800402a: 2b04 cmp r3, #4 + 800402c: d10c bne.n 8004048 + { + /* Wait until REACK flag is set */ + if (UART_WaitOnFlagUntilTimeout(huart, USART_ISR_REACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK) + 800402e: 68fb ldr r3, [r7, #12] + 8004030: 2280 movs r2, #128 ; 0x80 + 8004032: 03d1 lsls r1, r2, #15 + 8004034: 6878 ldr r0, [r7, #4] + 8004036: 4a0d ldr r2, [pc, #52] ; (800406c ) + 8004038: 9200 str r2, [sp, #0] + 800403a: 2200 movs r2, #0 + 800403c: f000 f818 bl 8004070 + 8004040: 1e03 subs r3, r0, #0 + 8004042: d001 beq.n 8004048 + { + /* Timeout occurred */ + return HAL_TIMEOUT; + 8004044: 2303 movs r3, #3 + 8004046: e00d b.n 8004064 + } + } + + /* Initialize the UART State */ + huart->gState = HAL_UART_STATE_READY; + 8004048: 687b ldr r3, [r7, #4] + 800404a: 2220 movs r2, #32 + 800404c: 679a str r2, [r3, #120] ; 0x78 + huart->RxState = HAL_UART_STATE_READY; + 800404e: 687b ldr r3, [r7, #4] + 8004050: 2220 movs r2, #32 + 8004052: 67da str r2, [r3, #124] ; 0x7c + huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; + 8004054: 687b ldr r3, [r7, #4] + 8004056: 2200 movs r2, #0 + 8004058: 661a str r2, [r3, #96] ; 0x60 + + __HAL_UNLOCK(huart); + 800405a: 687b ldr r3, [r7, #4] + 800405c: 2274 movs r2, #116 ; 0x74 + 800405e: 2100 movs r1, #0 + 8004060: 5499 strb r1, [r3, r2] + + return HAL_OK; + 8004062: 2300 movs r3, #0 +} + 8004064: 0018 movs r0, r3 + 8004066: 46bd mov sp, r7 + 8004068: b004 add sp, #16 + 800406a: bd80 pop {r7, pc} + 800406c: 01ffffff .word 0x01ffffff + +08004070 : + * @param Timeout Timeout duration + * @retval HAL status + */ +HAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(UART_HandleTypeDef *huart, uint32_t Flag, FlagStatus Status, + uint32_t Tickstart, uint32_t Timeout) +{ + 8004070: b580 push {r7, lr} + 8004072: b094 sub sp, #80 ; 0x50 + 8004074: af00 add r7, sp, #0 + 8004076: 60f8 str r0, [r7, #12] + 8004078: 60b9 str r1, [r7, #8] + 800407a: 603b str r3, [r7, #0] + 800407c: 1dfb adds r3, r7, #7 + 800407e: 701a strb r2, [r3, #0] + /* Wait until flag is set */ + while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status) + 8004080: e0a3 b.n 80041ca + { + /* Check for the Timeout */ + if (Timeout != HAL_MAX_DELAY) + 8004082: 6dbb ldr r3, [r7, #88] ; 0x58 + 8004084: 3301 adds r3, #1 + 8004086: d100 bne.n 800408a + 8004088: e09f b.n 80041ca + { + if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) + 800408a: f7fd f845 bl 8001118 + 800408e: 0002 movs r2, r0 + 8004090: 683b ldr r3, [r7, #0] + 8004092: 1ad3 subs r3, r2, r3 + 8004094: 6dba ldr r2, [r7, #88] ; 0x58 + 8004096: 429a cmp r2, r3 + 8004098: d302 bcc.n 80040a0 + 800409a: 6dbb ldr r3, [r7, #88] ; 0x58 + 800409c: 2b00 cmp r3, #0 + 800409e: d13d bne.n 800411c + */ +__STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 80040a0: f3ef 8310 mrs r3, PRIMASK + 80040a4: 62bb str r3, [r7, #40] ; 0x28 + return(result); + 80040a6: 6abb ldr r3, [r7, #40] ; 0x28 + { + /* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error) + interrupts for the interrupt process */ + ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE)); + 80040a8: 647b str r3, [r7, #68] ; 0x44 + 80040aa: 2301 movs r3, #1 + 80040ac: 62fb str r3, [r7, #44] ; 0x2c + \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"); + 80040ae: 6afb ldr r3, [r7, #44] ; 0x2c + 80040b0: f383 8810 msr PRIMASK, r3 +} + 80040b4: 46c0 nop ; (mov r8, r8) + 80040b6: 68fb ldr r3, [r7, #12] + 80040b8: 681b ldr r3, [r3, #0] + 80040ba: 681a ldr r2, [r3, #0] + 80040bc: 68fb ldr r3, [r7, #12] + 80040be: 681b ldr r3, [r3, #0] + 80040c0: 494c ldr r1, [pc, #304] ; (80041f4 ) + 80040c2: 400a ands r2, r1 + 80040c4: 601a str r2, [r3, #0] + 80040c6: 6c7b ldr r3, [r7, #68] ; 0x44 + 80040c8: 633b str r3, [r7, #48] ; 0x30 + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 80040ca: 6b3b ldr r3, [r7, #48] ; 0x30 + 80040cc: f383 8810 msr PRIMASK, r3 +} + 80040d0: 46c0 nop ; (mov r8, r8) + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 80040d2: f3ef 8310 mrs r3, PRIMASK + 80040d6: 637b str r3, [r7, #52] ; 0x34 + return(result); + 80040d8: 6b7b ldr r3, [r7, #52] ; 0x34 + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); + 80040da: 643b str r3, [r7, #64] ; 0x40 + 80040dc: 2301 movs r3, #1 + 80040de: 63bb str r3, [r7, #56] ; 0x38 + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 80040e0: 6bbb ldr r3, [r7, #56] ; 0x38 + 80040e2: f383 8810 msr PRIMASK, r3 +} + 80040e6: 46c0 nop ; (mov r8, r8) + 80040e8: 68fb ldr r3, [r7, #12] + 80040ea: 681b ldr r3, [r3, #0] + 80040ec: 689a ldr r2, [r3, #8] + 80040ee: 68fb ldr r3, [r7, #12] + 80040f0: 681b ldr r3, [r3, #0] + 80040f2: 2101 movs r1, #1 + 80040f4: 438a bics r2, r1 + 80040f6: 609a str r2, [r3, #8] + 80040f8: 6c3b ldr r3, [r7, #64] ; 0x40 + 80040fa: 63fb str r3, [r7, #60] ; 0x3c + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 80040fc: 6bfb ldr r3, [r7, #60] ; 0x3c + 80040fe: f383 8810 msr PRIMASK, r3 +} + 8004102: 46c0 nop ; (mov r8, r8) + + huart->gState = HAL_UART_STATE_READY; + 8004104: 68fb ldr r3, [r7, #12] + 8004106: 2220 movs r2, #32 + 8004108: 679a str r2, [r3, #120] ; 0x78 + huart->RxState = HAL_UART_STATE_READY; + 800410a: 68fb ldr r3, [r7, #12] + 800410c: 2220 movs r2, #32 + 800410e: 67da str r2, [r3, #124] ; 0x7c + + __HAL_UNLOCK(huart); + 8004110: 68fb ldr r3, [r7, #12] + 8004112: 2274 movs r2, #116 ; 0x74 + 8004114: 2100 movs r1, #0 + 8004116: 5499 strb r1, [r3, r2] + + return HAL_TIMEOUT; + 8004118: 2303 movs r3, #3 + 800411a: e067 b.n 80041ec + } + + if (READ_BIT(huart->Instance->CR1, USART_CR1_RE) != 0U) + 800411c: 68fb ldr r3, [r7, #12] + 800411e: 681b ldr r3, [r3, #0] + 8004120: 681b ldr r3, [r3, #0] + 8004122: 2204 movs r2, #4 + 8004124: 4013 ands r3, r2 + 8004126: d050 beq.n 80041ca + { + if (__HAL_UART_GET_FLAG(huart, UART_FLAG_RTOF) == SET) + 8004128: 68fb ldr r3, [r7, #12] + 800412a: 681b ldr r3, [r3, #0] + 800412c: 69da ldr r2, [r3, #28] + 800412e: 2380 movs r3, #128 ; 0x80 + 8004130: 011b lsls r3, r3, #4 + 8004132: 401a ands r2, r3 + 8004134: 2380 movs r3, #128 ; 0x80 + 8004136: 011b lsls r3, r3, #4 + 8004138: 429a cmp r2, r3 + 800413a: d146 bne.n 80041ca + { + /* Clear Receiver Timeout flag*/ + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_RTOF); + 800413c: 68fb ldr r3, [r7, #12] + 800413e: 681b ldr r3, [r3, #0] + 8004140: 2280 movs r2, #128 ; 0x80 + 8004142: 0112 lsls r2, r2, #4 + 8004144: 621a str r2, [r3, #32] + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 8004146: f3ef 8310 mrs r3, PRIMASK + 800414a: 613b str r3, [r7, #16] + return(result); + 800414c: 693b ldr r3, [r7, #16] + + /* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error) + interrupts for the interrupt process */ + ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE)); + 800414e: 64fb str r3, [r7, #76] ; 0x4c + 8004150: 2301 movs r3, #1 + 8004152: 617b str r3, [r7, #20] + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 8004154: 697b ldr r3, [r7, #20] + 8004156: f383 8810 msr PRIMASK, r3 +} + 800415a: 46c0 nop ; (mov r8, r8) + 800415c: 68fb ldr r3, [r7, #12] + 800415e: 681b ldr r3, [r3, #0] + 8004160: 681a ldr r2, [r3, #0] + 8004162: 68fb ldr r3, [r7, #12] + 8004164: 681b ldr r3, [r3, #0] + 8004166: 4923 ldr r1, [pc, #140] ; (80041f4 ) + 8004168: 400a ands r2, r1 + 800416a: 601a str r2, [r3, #0] + 800416c: 6cfb ldr r3, [r7, #76] ; 0x4c + 800416e: 61bb str r3, [r7, #24] + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 8004170: 69bb ldr r3, [r7, #24] + 8004172: f383 8810 msr PRIMASK, r3 +} + 8004176: 46c0 nop ; (mov r8, r8) + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 8004178: f3ef 8310 mrs r3, PRIMASK + 800417c: 61fb str r3, [r7, #28] + return(result); + 800417e: 69fb ldr r3, [r7, #28] + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); + 8004180: 64bb str r3, [r7, #72] ; 0x48 + 8004182: 2301 movs r3, #1 + 8004184: 623b str r3, [r7, #32] + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 8004186: 6a3b ldr r3, [r7, #32] + 8004188: f383 8810 msr PRIMASK, r3 +} + 800418c: 46c0 nop ; (mov r8, r8) + 800418e: 68fb ldr r3, [r7, #12] + 8004190: 681b ldr r3, [r3, #0] + 8004192: 689a ldr r2, [r3, #8] + 8004194: 68fb ldr r3, [r7, #12] + 8004196: 681b ldr r3, [r3, #0] + 8004198: 2101 movs r1, #1 + 800419a: 438a bics r2, r1 + 800419c: 609a str r2, [r3, #8] + 800419e: 6cbb ldr r3, [r7, #72] ; 0x48 + 80041a0: 627b str r3, [r7, #36] ; 0x24 + __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 80041a2: 6a7b ldr r3, [r7, #36] ; 0x24 + 80041a4: f383 8810 msr PRIMASK, r3 +} + 80041a8: 46c0 nop ; (mov r8, r8) + + huart->gState = HAL_UART_STATE_READY; + 80041aa: 68fb ldr r3, [r7, #12] + 80041ac: 2220 movs r2, #32 + 80041ae: 679a str r2, [r3, #120] ; 0x78 + huart->RxState = HAL_UART_STATE_READY; + 80041b0: 68fb ldr r3, [r7, #12] + 80041b2: 2220 movs r2, #32 + 80041b4: 67da str r2, [r3, #124] ; 0x7c + huart->ErrorCode = HAL_UART_ERROR_RTO; + 80041b6: 68fb ldr r3, [r7, #12] + 80041b8: 2280 movs r2, #128 ; 0x80 + 80041ba: 2120 movs r1, #32 + 80041bc: 5099 str r1, [r3, r2] + + /* Process Unlocked */ + __HAL_UNLOCK(huart); + 80041be: 68fb ldr r3, [r7, #12] + 80041c0: 2274 movs r2, #116 ; 0x74 + 80041c2: 2100 movs r1, #0 + 80041c4: 5499 strb r1, [r3, r2] + + return HAL_TIMEOUT; + 80041c6: 2303 movs r3, #3 + 80041c8: e010 b.n 80041ec + while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status) + 80041ca: 68fb ldr r3, [r7, #12] + 80041cc: 681b ldr r3, [r3, #0] + 80041ce: 69db ldr r3, [r3, #28] + 80041d0: 68ba ldr r2, [r7, #8] + 80041d2: 4013 ands r3, r2 + 80041d4: 68ba ldr r2, [r7, #8] + 80041d6: 1ad3 subs r3, r2, r3 + 80041d8: 425a negs r2, r3 + 80041da: 4153 adcs r3, r2 + 80041dc: b2db uxtb r3, r3 + 80041de: 001a movs r2, r3 + 80041e0: 1dfb adds r3, r7, #7 + 80041e2: 781b ldrb r3, [r3, #0] + 80041e4: 429a cmp r2, r3 + 80041e6: d100 bne.n 80041ea + 80041e8: e74b b.n 8004082 + } + } + } + } + return HAL_OK; + 80041ea: 2300 movs r3, #0 +} + 80041ec: 0018 movs r0, r3 + 80041ee: 46bd mov sp, r7 + 80041f0: b014 add sp, #80 ; 0x50 + 80041f2: bd80 pop {r7, pc} + 80041f4: fffffe5f .word 0xfffffe5f + +080041f8 : + * oversampling rate). + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RS485Ex_Init(UART_HandleTypeDef *huart, uint32_t Polarity, uint32_t AssertionTime, + uint32_t DeassertionTime) +{ + 80041f8: b580 push {r7, lr} + 80041fa: b086 sub sp, #24 + 80041fc: af00 add r7, sp, #0 + 80041fe: 60f8 str r0, [r7, #12] + 8004200: 60b9 str r1, [r7, #8] + 8004202: 607a str r2, [r7, #4] + 8004204: 603b str r3, [r7, #0] + uint32_t temp; + + /* Check the UART handle allocation */ + if (huart == NULL) + 8004206: 68fb ldr r3, [r7, #12] + 8004208: 2b00 cmp r3, #0 + 800420a: d101 bne.n 8004210 + { + return HAL_ERROR; + 800420c: 2301 movs r3, #1 + 800420e: e05b b.n 80042c8 + assert_param(IS_UART_ASSERTIONTIME(AssertionTime)); + + /* Check the Driver Enable deassertion time */ + assert_param(IS_UART_DEASSERTIONTIME(DeassertionTime)); + + if (huart->gState == HAL_UART_STATE_RESET) + 8004210: 68fb ldr r3, [r7, #12] + 8004212: 6f9b ldr r3, [r3, #120] ; 0x78 + 8004214: 2b00 cmp r3, #0 + 8004216: d107 bne.n 8004228 + { + /* Allocate lock resource and initialize it */ + huart->Lock = HAL_UNLOCKED; + 8004218: 68fb ldr r3, [r7, #12] + 800421a: 2274 movs r2, #116 ; 0x74 + 800421c: 2100 movs r1, #0 + 800421e: 5499 strb r1, [r3, r2] + + /* Init the low level hardware */ + huart->MspInitCallback(huart); +#else + /* Init the low level hardware : GPIO, CLOCK, CORTEX */ + HAL_UART_MspInit(huart); + 8004220: 68fb ldr r3, [r7, #12] + 8004222: 0018 movs r0, r3 + 8004224: f7fc fe88 bl 8000f38 +#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */ + } + + huart->gState = HAL_UART_STATE_BUSY; + 8004228: 68fb ldr r3, [r7, #12] + 800422a: 2224 movs r2, #36 ; 0x24 + 800422c: 679a str r2, [r3, #120] ; 0x78 + + /* Disable the Peripheral */ + __HAL_UART_DISABLE(huart); + 800422e: 68fb ldr r3, [r7, #12] + 8004230: 681b ldr r3, [r3, #0] + 8004232: 681a ldr r2, [r3, #0] + 8004234: 68fb ldr r3, [r7, #12] + 8004236: 681b ldr r3, [r3, #0] + 8004238: 2101 movs r1, #1 + 800423a: 438a bics r2, r1 + 800423c: 601a str r2, [r3, #0] + + /* Set the UART Communication parameters */ + if (UART_SetConfig(huart) == HAL_ERROR) + 800423e: 68fb ldr r3, [r7, #12] + 8004240: 0018 movs r0, r3 + 8004242: f7ff fbb7 bl 80039b4 + 8004246: 0003 movs r3, r0 + 8004248: 2b01 cmp r3, #1 + 800424a: d101 bne.n 8004250 + { + return HAL_ERROR; + 800424c: 2301 movs r3, #1 + 800424e: e03b b.n 80042c8 + } + + if (huart->AdvancedInit.AdvFeatureInit != UART_ADVFEATURE_NO_INIT) + 8004250: 68fb ldr r3, [r7, #12] + 8004252: 6a5b ldr r3, [r3, #36] ; 0x24 + 8004254: 2b00 cmp r3, #0 + 8004256: d003 beq.n 8004260 + { + UART_AdvFeatureConfig(huart); + 8004258: 68fb ldr r3, [r7, #12] + 800425a: 0018 movs r0, r3 + 800425c: f7ff fe0c bl 8003e78 + } + + /* Enable the Driver Enable mode by setting the DEM bit in the CR3 register */ + SET_BIT(huart->Instance->CR3, USART_CR3_DEM); + 8004260: 68fb ldr r3, [r7, #12] + 8004262: 681b ldr r3, [r3, #0] + 8004264: 689a ldr r2, [r3, #8] + 8004266: 68fb ldr r3, [r7, #12] + 8004268: 681b ldr r3, [r3, #0] + 800426a: 2180 movs r1, #128 ; 0x80 + 800426c: 01c9 lsls r1, r1, #7 + 800426e: 430a orrs r2, r1 + 8004270: 609a str r2, [r3, #8] + + /* Set the Driver Enable polarity */ + MODIFY_REG(huart->Instance->CR3, USART_CR3_DEP, Polarity); + 8004272: 68fb ldr r3, [r7, #12] + 8004274: 681b ldr r3, [r3, #0] + 8004276: 689b ldr r3, [r3, #8] + 8004278: 4a15 ldr r2, [pc, #84] ; (80042d0 ) + 800427a: 4013 ands r3, r2 + 800427c: 0019 movs r1, r3 + 800427e: 68fb ldr r3, [r7, #12] + 8004280: 681b ldr r3, [r3, #0] + 8004282: 68ba ldr r2, [r7, #8] + 8004284: 430a orrs r2, r1 + 8004286: 609a str r2, [r3, #8] + + /* Set the Driver Enable assertion and deassertion times */ + temp = (AssertionTime << UART_CR1_DEAT_ADDRESS_LSB_POS); + 8004288: 687b ldr r3, [r7, #4] + 800428a: 055b lsls r3, r3, #21 + 800428c: 617b str r3, [r7, #20] + temp |= (DeassertionTime << UART_CR1_DEDT_ADDRESS_LSB_POS); + 800428e: 683b ldr r3, [r7, #0] + 8004290: 041b lsls r3, r3, #16 + 8004292: 697a ldr r2, [r7, #20] + 8004294: 4313 orrs r3, r2 + 8004296: 617b str r3, [r7, #20] + MODIFY_REG(huart->Instance->CR1, (USART_CR1_DEDT | USART_CR1_DEAT), temp); + 8004298: 68fb ldr r3, [r7, #12] + 800429a: 681b ldr r3, [r3, #0] + 800429c: 681b ldr r3, [r3, #0] + 800429e: 4a0d ldr r2, [pc, #52] ; (80042d4 ) + 80042a0: 4013 ands r3, r2 + 80042a2: 0019 movs r1, r3 + 80042a4: 68fb ldr r3, [r7, #12] + 80042a6: 681b ldr r3, [r3, #0] + 80042a8: 697a ldr r2, [r7, #20] + 80042aa: 430a orrs r2, r1 + 80042ac: 601a str r2, [r3, #0] + + /* Enable the Peripheral */ + __HAL_UART_ENABLE(huart); + 80042ae: 68fb ldr r3, [r7, #12] + 80042b0: 681b ldr r3, [r3, #0] + 80042b2: 681a ldr r2, [r3, #0] + 80042b4: 68fb ldr r3, [r7, #12] + 80042b6: 681b ldr r3, [r3, #0] + 80042b8: 2101 movs r1, #1 + 80042ba: 430a orrs r2, r1 + 80042bc: 601a str r2, [r3, #0] + + /* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */ + return (UART_CheckIdleState(huart)); + 80042be: 68fb ldr r3, [r7, #12] + 80042c0: 0018 movs r0, r3 + 80042c2: f7ff fe8d bl 8003fe0 + 80042c6: 0003 movs r3, r0 +} + 80042c8: 0018 movs r0, r3 + 80042ca: 46bd mov sp, r7 + 80042cc: b006 add sp, #24 + 80042ce: bd80 pop {r7, pc} + 80042d0: ffff7fff .word 0xffff7fff + 80042d4: fc00ffff .word 0xfc00ffff + +080042d8 <__libc_init_array>: + 80042d8: b570 push {r4, r5, r6, lr} + 80042da: 2600 movs r6, #0 + 80042dc: 4d0c ldr r5, [pc, #48] ; (8004310 <__libc_init_array+0x38>) + 80042de: 4c0d ldr r4, [pc, #52] ; (8004314 <__libc_init_array+0x3c>) + 80042e0: 1b64 subs r4, r4, r5 + 80042e2: 10a4 asrs r4, r4, #2 + 80042e4: 42a6 cmp r6, r4 + 80042e6: d109 bne.n 80042fc <__libc_init_array+0x24> + 80042e8: 2600 movs r6, #0 + 80042ea: f000 f821 bl 8004330 <_init> + 80042ee: 4d0a ldr r5, [pc, #40] ; (8004318 <__libc_init_array+0x40>) + 80042f0: 4c0a ldr r4, [pc, #40] ; (800431c <__libc_init_array+0x44>) + 80042f2: 1b64 subs r4, r4, r5 + 80042f4: 10a4 asrs r4, r4, #2 + 80042f6: 42a6 cmp r6, r4 + 80042f8: d105 bne.n 8004306 <__libc_init_array+0x2e> + 80042fa: bd70 pop {r4, r5, r6, pc} + 80042fc: 00b3 lsls r3, r6, #2 + 80042fe: 58eb ldr r3, [r5, r3] + 8004300: 4798 blx r3 + 8004302: 3601 adds r6, #1 + 8004304: e7ee b.n 80042e4 <__libc_init_array+0xc> + 8004306: 00b3 lsls r3, r6, #2 + 8004308: 58eb ldr r3, [r5, r3] + 800430a: 4798 blx r3 + 800430c: 3601 adds r6, #1 + 800430e: e7f2 b.n 80042f6 <__libc_init_array+0x1e> + 8004310: 080043bc .word 0x080043bc + 8004314: 080043bc .word 0x080043bc + 8004318: 080043bc .word 0x080043bc + 800431c: 080043c0 .word 0x080043c0 + +08004320 : + 8004320: 0003 movs r3, r0 + 8004322: 1882 adds r2, r0, r2 + 8004324: 4293 cmp r3, r2 + 8004326: d100 bne.n 800432a + 8004328: 4770 bx lr + 800432a: 7019 strb r1, [r3, #0] + 800432c: 3301 adds r3, #1 + 800432e: e7f9 b.n 8004324 + +08004330 <_init>: + 8004330: b5f8 push {r3, r4, r5, r6, r7, lr} + 8004332: 46c0 nop ; (mov r8, r8) + 8004334: bcf8 pop {r3, r4, r5, r6, r7} + 8004336: bc08 pop {r3} + 8004338: 469e mov lr, r3 + 800433a: 4770 bx lr + +0800433c <_fini>: + 800433c: b5f8 push {r3, r4, r5, r6, r7, lr} + 800433e: 46c0 nop ; (mov r8, r8) + 8004340: bcf8 pop {r3, r4, r5, r6, r7} + 8004342: bc08 pop {r3} + 8004344: 469e mov lr, r3 + 8004346: 4770 bx lr diff --git a/fw_hal/Debug/iaq_wired_sensor_hal.map b/fw_hal/Debug/iaq_wired_sensor_hal.map new file mode 100644 index 0000000..da69530 --- /dev/null +++ b/fw_hal/Debug/iaq_wired_sensor_hal.map @@ -0,0 +1,4511 @@ +Archive member included to satisfy reference by file (symbol) + +/opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-errno.o) + ./Core/Src/syscalls.o (__errno) +/opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-exit.o) + /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/crt0.o (exit) +/opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-impure.o) + /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-exit.o) (_global_impure_ptr) +/opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-init.o) + /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/crt0.o (__libc_init_array) +/opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-memset.o) + /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/crt0.o (memset) +/opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_udivsi3.o) + ./Core/Src/scd4x.o (__aeabi_uidiv) +/opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_dvmd_tls.o) + /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_udivsi3.o) (__aeabi_idiv0) +/opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_aeabi_uldivmod.o) + ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o (__aeabi_uldivmod) +/opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_muldi3.o) + ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o (__aeabi_lmul) +/opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_udivmoddi4.o) + /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_aeabi_uldivmod.o) (__udivmoddi4) +/opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_clzdi2.o) + /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_udivmoddi4.o) (__clzdi2) +/opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_clzsi2.o) + /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_clzdi2.o) (__clzsi2) + +Allocating common symbols +Common symbol size file + +T_SHT4x 0x4 ./Core/Src/main.o +hi2c1 0x4c ./Core/Src/main.o +modbus_buffer 0x100 ./Core/Src/modbus.o +data_registers_numbers + 0x2 ./Core/Src/main.o +uwTick 0x4 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o +pFlash 0x18 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o +identification_registers_numbers + 0x2 ./Core/Src/main.o +T_SCD4x 0x4 ./Core/Src/main.o +i2c_context 0x4 ./Core/Src/i2c.o +htim22 0x40 ./Core/Src/main.o +RH_SCD4x 0x4 ./Core/Src/main.o +config_registers_numbers + 0x2 ./Core/Src/main.o +sensor_config 0x14 ./Core/Src/main.o +timeout 0x2 ./Core/Src/i2c.o +sps30_measured_data + 0x14 ./Core/Src/main.o +htim2 0x40 ./Core/Src/main.o +huart2 0x84 ./Core/Src/main.o +CO2 0x4 ./Core/Src/main.o +RH_SHT4x 0x4 ./Core/Src/main.o +htim21 0x40 ./Core/Src/main.o + +Discarded input sections + + .text 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/crti.o + .data 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/crti.o + .bss 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/crti.o + .data 0x0000000000000000 0x4 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/crtbegin.o + .text 0x0000000000000000 0x80 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/crt0.o + .data 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/crt0.o + .bss 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/crt0.o + .ARM.extab 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/crt0.o + .ARM.exidx 0x0000000000000000 0x10 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/crt0.o + .ARM.attributes + 0x0000000000000000 0x1b /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/crt0.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/config.o + .text 0x0000000000000000 0x0 ./Core/Src/config.o + .data 0x0000000000000000 0x0 ./Core/Src/config.o + .bss 0x0000000000000000 0x0 ./Core/Src/config.o + .rodata.config_baudrates + 0x0000000000000000 0x28 ./Core/Src/config.o + .rodata.config_baudrates_length + 0x0000000000000000 0x1 ./Core/Src/config.o + .text.config_read + 0x0000000000000000 0xa0 ./Core/Src/config.o + .text.config_write + 0x0000000000000000 0x128 ./Core/Src/config.o + .text.eeprom_lock + 0x0000000000000000 0x7c ./Core/Src/config.o + .text.eeprom_unlock + 0x0000000000000000 0x8c ./Core/Src/config.o + .text.eeprom_program_byte + 0x0000000000000000 0x50 ./Core/Src/config.o + .text.eeprom_program_halfword + 0x0000000000000000 0x50 ./Core/Src/config.o + .text.eeprom_program_word + 0x0000000000000000 0x48 ./Core/Src/config.o + .debug_info 0x0000000000000000 0x50d ./Core/Src/config.o + .debug_abbrev 0x0000000000000000 0x1ad ./Core/Src/config.o + .debug_aranges + 0x0000000000000000 0x50 ./Core/Src/config.o + .debug_ranges 0x0000000000000000 0x40 ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x1d3 ./Core/Src/config.o + .debug_macro 0x0000000000000000 0xa7e ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x22 ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x8e ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x51 ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x103 ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x6a ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x1df ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x2e ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x28 ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x1c ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x22 ./Core/Src/config.o + .debug_macro 0x0000000000000000 0xb5 ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x3ad ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x7f00 ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x66 ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x125 ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x355c ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x174 ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x5b ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x8b5 ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x474 ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x189 ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x13f ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x10d ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x82 ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x28e ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x28 ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x129 ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x244 ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x22c ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x5b ./Core/Src/config.o + .debug_macro 0x0000000000000000 0xa5 ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x18d ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x16 ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x773 ./Core/Src/config.o + .debug_macro 0x0000000000000000 0xc6 ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x5ba ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x44 ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x12a ./Core/Src/config.o + .debug_macro 0x0000000000000000 0x12a ./Core/Src/config.o + .debug_line 0x0000000000000000 0x8fa ./Core/Src/config.o + .debug_str 0x0000000000000000 0x67859 ./Core/Src/config.o + .comment 0x0000000000000000 0x54 ./Core/Src/config.o + .debug_frame 0x0000000000000000 0xf0 ./Core/Src/config.o + .ARM.attributes + 0x0000000000000000 0x2c ./Core/Src/config.o + .group 0x0000000000000000 0xc ./Core/Src/crc8.o + .group 0x0000000000000000 0xc ./Core/Src/crc8.o + .group 0x0000000000000000 0xc ./Core/Src/crc8.o + .group 0x0000000000000000 0xc ./Core/Src/crc8.o + .group 0x0000000000000000 0xc ./Core/Src/crc8.o + .group 0x0000000000000000 0xc ./Core/Src/crc8.o + .group 0x0000000000000000 0xc ./Core/Src/crc8.o + .group 0x0000000000000000 0xc ./Core/Src/crc8.o + .text 0x0000000000000000 0x0 ./Core/Src/crc8.o + .data 0x0000000000000000 0x0 ./Core/Src/crc8.o + .bss 0x0000000000000000 0x0 ./Core/Src/crc8.o + .text.crc8_calculate + 0x0000000000000000 0xac ./Core/Src/crc8.o + .debug_info 0x0000000000000000 0x111 ./Core/Src/crc8.o + .debug_abbrev 0x0000000000000000 0x9d ./Core/Src/crc8.o + .debug_aranges + 0x0000000000000000 0x20 ./Core/Src/crc8.o + .debug_ranges 0x0000000000000000 0x10 ./Core/Src/crc8.o + .debug_macro 0x0000000000000000 0x72 ./Core/Src/crc8.o + .debug_macro 0x0000000000000000 0xa7e ./Core/Src/crc8.o + .debug_macro 0x0000000000000000 0x22 ./Core/Src/crc8.o + .debug_macro 0x0000000000000000 0x8e ./Core/Src/crc8.o + .debug_macro 0x0000000000000000 0x51 ./Core/Src/crc8.o + .debug_macro 0x0000000000000000 0x103 ./Core/Src/crc8.o + .debug_macro 0x0000000000000000 0x6a ./Core/Src/crc8.o + .debug_macro 0x0000000000000000 0x1df ./Core/Src/crc8.o + .debug_macro 0x0000000000000000 0x10 ./Core/Src/crc8.o + .debug_line 0x0000000000000000 0x3be ./Core/Src/crc8.o + .debug_str 0x0000000000000000 0x3c71 ./Core/Src/crc8.o + .comment 0x0000000000000000 0x54 ./Core/Src/crc8.o + .debug_frame 0x0000000000000000 0x30 ./Core/Src/crc8.o + .ARM.attributes + 0x0000000000000000 0x2c ./Core/Src/crc8.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/i2c.o + .text 0x0000000000000000 0x0 ./Core/Src/i2c.o + .data 0x0000000000000000 0x0 ./Core/Src/i2c.o + .bss 0x0000000000000000 0x0 ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0xa7e ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0x22 ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0x8e ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0x51 ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0x103 ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0x6a ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0x1df ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0x125 ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0x2e ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0x28 ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0x1c ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0x22 ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0xb5 ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0x3ad ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0x7f00 ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0x66 ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0x355c ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0x174 ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0x5b ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0x8b5 ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0x474 ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0x189 ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0x13f ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0x10d ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0x82 ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0x28e ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0x28 ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0x129 ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0x244 ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0x22c ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0x5b ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0xa5 ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0x18d ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0x16 ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0x773 ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0xc6 ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0x5ba ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0x44 ./Core/Src/i2c.o + .debug_macro 0x0000000000000000 0x12a ./Core/Src/i2c.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/main.o + .text 0x0000000000000000 0x0 ./Core/Src/main.o + .data 0x0000000000000000 0x0 ./Core/Src/main.o + .bss 0x0000000000000000 0x0 ./Core/Src/main.o + .rodata.tim21_prescaler + 0x0000000000000000 0x2 ./Core/Src/main.o + .rodata.tim21_period + 0x0000000000000000 0x2 ./Core/Src/main.o + .rodata.led_pwm_prescaler + 0x0000000000000000 0x2 ./Core/Src/main.o + .rodata.led_pwm_period + 0x0000000000000000 0x2 ./Core/Src/main.o + .bss.sensor_config_pending_write + 0x0000000000000000 0x1 ./Core/Src/main.o + .bss.baudrate_changed + 0x0000000000000000 0x1 ./Core/Src/main.o + .bss.modbus_address_changed + 0x0000000000000000 0x1 ./Core/Src/main.o + .bss.co2_valid + 0x0000000000000000 0x1 ./Core/Src/main.o + .debug_macro 0x0000000000000000 0xa7e ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x125 ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x2e ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x28 ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x22 ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x8e ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x51 ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x103 ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x6a ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x1df ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x1c ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x22 ./Core/Src/main.o + .debug_macro 0x0000000000000000 0xb5 ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x3ad ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x7f00 ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x66 ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x355c ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x174 ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x5b ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x8b5 ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x474 ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x189 ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x13f ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x10d ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x82 ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x28e ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x28 ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x129 ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x244 ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x22c ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x5b ./Core/Src/main.o + .debug_macro 0x0000000000000000 0xa5 ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x18d ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x16 ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x773 ./Core/Src/main.o + .debug_macro 0x0000000000000000 0xc6 ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x5ba ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x44 ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x12a ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x28 ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x16 ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x1c ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x22 ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x22 ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x5e ./Core/Src/main.o + .debug_macro 0x0000000000000000 0x130 ./Core/Src/main.o + .group 0x0000000000000000 0xc ./Core/Src/modbus.o + .group 0x0000000000000000 0xc ./Core/Src/modbus.o + .group 0x0000000000000000 0xc ./Core/Src/modbus.o + .group 0x0000000000000000 0xc ./Core/Src/modbus.o + .group 0x0000000000000000 0xc ./Core/Src/modbus.o + .group 0x0000000000000000 0xc ./Core/Src/modbus.o + .group 0x0000000000000000 0xc ./Core/Src/modbus.o + .group 0x0000000000000000 0xc ./Core/Src/modbus.o + .text 0x0000000000000000 0x0 ./Core/Src/modbus.o + .data 0x0000000000000000 0x0 ./Core/Src/modbus.o + .bss 0x0000000000000000 0x0 ./Core/Src/modbus.o + .data.modbus_slave_address + 0x0000000000000000 0x1 ./Core/Src/modbus.o + .text.modbus_CRC16 + 0x0000000000000000 0x94 ./Core/Src/modbus.o + .text.modbus_copy_reply_to_buffer + 0x0000000000000000 0x194 ./Core/Src/modbus.o + .text.modbus_slave_set_address + 0x0000000000000000 0x30 ./Core/Src/modbus.o + .text.modbus_slave_process_msg + 0x0000000000000000 0x54c ./Core/Src/modbus.o + .rodata.modbus_slave_process_msg + 0x0000000000000000 0x60 ./Core/Src/modbus.o + .debug_info 0x0000000000000000 0x58f ./Core/Src/modbus.o + .debug_abbrev 0x0000000000000000 0x1dc ./Core/Src/modbus.o + .debug_aranges + 0x0000000000000000 0x38 ./Core/Src/modbus.o + .debug_ranges 0x0000000000000000 0x28 ./Core/Src/modbus.o + .debug_macro 0x0000000000000000 0x80 ./Core/Src/modbus.o + .debug_macro 0x0000000000000000 0xa7e ./Core/Src/modbus.o + .debug_macro 0x0000000000000000 0x22 ./Core/Src/modbus.o + .debug_macro 0x0000000000000000 0x8e ./Core/Src/modbus.o + .debug_macro 0x0000000000000000 0x51 ./Core/Src/modbus.o + .debug_macro 0x0000000000000000 0x103 ./Core/Src/modbus.o + .debug_macro 0x0000000000000000 0x6a ./Core/Src/modbus.o + .debug_macro 0x0000000000000000 0x1df ./Core/Src/modbus.o + .debug_macro 0x0000000000000000 0x58 ./Core/Src/modbus.o + .debug_line 0x0000000000000000 0x6fa ./Core/Src/modbus.o + .debug_str 0x0000000000000000 0x44c0 ./Core/Src/modbus.o + .comment 0x0000000000000000 0x54 ./Core/Src/modbus.o + .debug_frame 0x0000000000000000 0x98 ./Core/Src/modbus.o + .ARM.attributes + 0x0000000000000000 0x2c ./Core/Src/modbus.o + COMMON 0x0000000000000000 0x100 ./Core/Src/modbus.o + .group 0x0000000000000000 0xc ./Core/Src/rgb_led.o + .group 0x0000000000000000 0xc ./Core/Src/rgb_led.o + .group 0x0000000000000000 0xc ./Core/Src/rgb_led.o + .group 0x0000000000000000 0xc ./Core/Src/rgb_led.o + .group 0x0000000000000000 0xc ./Core/Src/rgb_led.o + .group 0x0000000000000000 0xc ./Core/Src/rgb_led.o + .group 0x0000000000000000 0xc ./Core/Src/rgb_led.o + .text 0x0000000000000000 0x0 ./Core/Src/rgb_led.o + .data 0x0000000000000000 0x0 ./Core/Src/rgb_led.o + .bss 0x0000000000000000 0x0 ./Core/Src/rgb_led.o + .text.rgb_led_set_duty_cycles + 0x0000000000000000 0x2a ./Core/Src/rgb_led.o + .text.rgb_led_set_color + 0x0000000000000000 0x18 ./Core/Src/rgb_led.o + .debug_info 0x0000000000000000 0x159 ./Core/Src/rgb_led.o + .debug_abbrev 0x0000000000000000 0xac ./Core/Src/rgb_led.o + .debug_aranges + 0x0000000000000000 0x28 ./Core/Src/rgb_led.o + .debug_ranges 0x0000000000000000 0x18 ./Core/Src/rgb_led.o + .debug_macro 0x0000000000000000 0x6d ./Core/Src/rgb_led.o + .debug_macro 0x0000000000000000 0xa7e ./Core/Src/rgb_led.o + .debug_macro 0x0000000000000000 0x22 ./Core/Src/rgb_led.o + .debug_macro 0x0000000000000000 0x8e ./Core/Src/rgb_led.o + .debug_macro 0x0000000000000000 0x51 ./Core/Src/rgb_led.o + .debug_macro 0x0000000000000000 0x103 ./Core/Src/rgb_led.o + .debug_macro 0x0000000000000000 0x6a ./Core/Src/rgb_led.o + .debug_macro 0x0000000000000000 0x1df ./Core/Src/rgb_led.o + .debug_line 0x0000000000000000 0x398 ./Core/Src/rgb_led.o + .debug_str 0x0000000000000000 0x3c9c ./Core/Src/rgb_led.o + .comment 0x0000000000000000 0x54 ./Core/Src/rgb_led.o + .debug_frame 0x0000000000000000 0x50 ./Core/Src/rgb_led.o + .ARM.attributes + 0x0000000000000000 0x2c ./Core/Src/rgb_led.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/scd4x.o + .text 0x0000000000000000 0x0 ./Core/Src/scd4x.o + .data 0x0000000000000000 0x0 ./Core/Src/scd4x.o + .bss 0x0000000000000000 0x0 ./Core/Src/scd4x.o + .text.scd4x_read_data + 0x0000000000000000 0x14 ./Core/Src/scd4x.o + .text.scd4x_stop_periodic_measurement + 0x0000000000000000 0x18 ./Core/Src/scd4x.o + .text.scd4x_perform_factory_reset + 0x0000000000000000 0x18 ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0xa7e ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x22 ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x8e ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x51 ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x103 ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x6a ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x1df ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x125 ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x2e ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x28 ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x1c ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x22 ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0xb5 ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x3ad ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x7f00 ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x66 ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x355c ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x174 ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x5b ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x8b5 ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x474 ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x189 ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x13f ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x10d ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x82 ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x28e ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x28 ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x129 ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x244 ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x22c ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x5b ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0xa5 ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x18d ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x16 ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x773 ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0xc6 ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x5ba ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x44 ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x12a ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x16 ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x22 ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x5e ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x130 ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x28 ./Core/Src/scd4x.o + .debug_macro 0x0000000000000000 0x1c ./Core/Src/scd4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sht4x.o + .text 0x0000000000000000 0x0 ./Core/Src/sht4x.o + .data 0x0000000000000000 0x0 ./Core/Src/sht4x.o + .bss 0x0000000000000000 0x0 ./Core/Src/sht4x.o + .text.sht4x_send_cmd + 0x0000000000000000 0x16 ./Core/Src/sht4x.o + .text.sht4x_read_data + 0x0000000000000000 0x14 ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0xa7e ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x22 ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x8e ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x51 ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x103 ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x6a ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x1df ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x125 ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x2e ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x28 ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x1c ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x22 ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0xb5 ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x3ad ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x7f00 ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x66 ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x355c ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x174 ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x5b ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x8b5 ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x474 ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x189 ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x13f ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x10d ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x82 ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x28e ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x28 ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x129 ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x244 ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x22c ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x5b ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0xa5 ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x18d ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x16 ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x773 ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0xc6 ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x5ba ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x44 ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x12a ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x16 ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x1c ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x22 ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x5e ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x130 ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x28 ./Core/Src/sht4x.o + .debug_macro 0x0000000000000000 0x1c ./Core/Src/sht4x.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/sps30.o + .text 0x0000000000000000 0x0 ./Core/Src/sps30.o + .data 0x0000000000000000 0x0 ./Core/Src/sps30.o + .bss 0x0000000000000000 0x0 ./Core/Src/sps30.o + .text.sps30_send_cmd + 0x0000000000000000 0x54 ./Core/Src/sps30.o + .text.sps30_start_measurement + 0x0000000000000000 0x62 ./Core/Src/sps30.o + .text.sps30_stop_measurement + 0x0000000000000000 0x16 ./Core/Src/sps30.o + .text.sps30_read_measured_values + 0x0000000000000000 0xf2 ./Core/Src/sps30.o + .text.sps30_sleep + 0x0000000000000000 0x18 ./Core/Src/sps30.o + .text.sps30_wake_up + 0x0000000000000000 0x18 ./Core/Src/sps30.o + .text.sps30_start_fan_cleaning + 0x0000000000000000 0x18 ./Core/Src/sps30.o + .text.sps30_reset + 0x0000000000000000 0x18 ./Core/Src/sps30.o + .text.sps30_read_status_register + 0x0000000000000000 0x4e ./Core/Src/sps30.o + .text.sps30_read_firmware_version + 0x0000000000000000 0x64 ./Core/Src/sps30.o + .text.calculate_crc + 0x0000000000000000 0xa0 ./Core/Src/sps30.o + .debug_info 0x0000000000000000 0x62b ./Core/Src/sps30.o + .debug_abbrev 0x0000000000000000 0x18e ./Core/Src/sps30.o + .debug_aranges + 0x0000000000000000 0x70 ./Core/Src/sps30.o + .debug_ranges 0x0000000000000000 0x60 ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x237 ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0xa7e ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x22 ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x8e ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x51 ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x103 ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x6a ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x1df ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x125 ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x2e ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x28 ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x1c ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x22 ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0xb5 ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x3ad ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x7f00 ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x66 ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x355c ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x174 ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x5b ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x8b5 ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x474 ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x189 ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x13f ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x10d ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x82 ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x28e ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x28 ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x129 ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x244 ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x22c ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x5b ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0xa5 ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x18d ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x16 ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x773 ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0xc6 ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x5ba ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x44 ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x12a ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x16 ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x1c ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x22 ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x5e ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x130 ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x28 ./Core/Src/sps30.o + .debug_macro 0x0000000000000000 0x1c ./Core/Src/sps30.o + .debug_line 0x0000000000000000 0x933 ./Core/Src/sps30.o + .debug_str 0x0000000000000000 0x67dd2 ./Core/Src/sps30.o + .comment 0x0000000000000000 0x54 ./Core/Src/sps30.o + .debug_frame 0x0000000000000000 0x164 ./Core/Src/sps30.o + .ARM.attributes + 0x0000000000000000 0x2c ./Core/Src/sps30.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_hal_msp.o + .text 0x0000000000000000 0x0 ./Core/Src/stm32l0xx_hal_msp.o + .data 0x0000000000000000 0x0 ./Core/Src/stm32l0xx_hal_msp.o + .bss 0x0000000000000000 0x0 ./Core/Src/stm32l0xx_hal_msp.o + .text.HAL_I2C_MspDeInit + 0x0000000000000000 0x54 ./Core/Src/stm32l0xx_hal_msp.o + .text.HAL_TIM_Base_MspDeInit + 0x0000000000000000 0x64 ./Core/Src/stm32l0xx_hal_msp.o + .text.HAL_UART_MspDeInit + 0x0000000000000000 0x40 ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0xa7e ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x125 ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x2e ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x28 ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x22 ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x8e ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x51 ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x103 ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x6a ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x1df ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x1c ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x22 ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0xb5 ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x3ad ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x7f00 ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x66 ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x355c ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x174 ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x5b ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x8b5 ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x474 ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x189 ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x13f ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x10d ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x82 ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x28e ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x28 ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x129 ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x244 ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x22c ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x5b ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0xa5 ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x18d ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x16 ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x773 ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0xc6 ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x5ba ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x44 ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x12a ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x28 ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x16 ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x1c ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x22 ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x22 ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x5e ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000000 0x130 ./Core/Src/stm32l0xx_hal_msp.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/stm32l0xx_it.o + .text 0x0000000000000000 0x0 ./Core/Src/stm32l0xx_it.o + .data 0x0000000000000000 0x0 ./Core/Src/stm32l0xx_it.o + .bss 0x0000000000000000 0x0 ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0xa7e ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x125 ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x2e ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x28 ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x22 ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x8e ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x51 ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x103 ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x6a ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x1df ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x1c ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x22 ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0xb5 ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x3ad ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x7f00 ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x66 ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x355c ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x174 ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x5b ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x8b5 ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x474 ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x189 ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x13f ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x10d ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x82 ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x28e ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x28 ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x129 ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x244 ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x22c ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x5b ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0xa5 ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x18d ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x16 ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x773 ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0xc6 ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x5ba ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x44 ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x12a ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x28 ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x16 ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x1c ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x22 ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x22 ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x5e ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000000 0x130 ./Core/Src/stm32l0xx_it.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/syscalls.o + .text 0x0000000000000000 0x0 ./Core/Src/syscalls.o + .data 0x0000000000000000 0x0 ./Core/Src/syscalls.o + .bss 0x0000000000000000 0x0 ./Core/Src/syscalls.o + .bss.__env 0x0000000000000000 0x4 ./Core/Src/syscalls.o + .data.environ 0x0000000000000000 0x4 ./Core/Src/syscalls.o + .text.initialise_monitor_handles + 0x0000000000000000 0xa ./Core/Src/syscalls.o + .text._getpid 0x0000000000000000 0xc ./Core/Src/syscalls.o + .text._kill 0x0000000000000000 0x20 ./Core/Src/syscalls.o + .text._exit 0x0000000000000000 0x18 ./Core/Src/syscalls.o + .text._read 0x0000000000000000 0x3a ./Core/Src/syscalls.o + .text._write 0x0000000000000000 0x38 ./Core/Src/syscalls.o + .text._close 0x0000000000000000 0x14 ./Core/Src/syscalls.o + .text._fstat 0x0000000000000000 0x1c ./Core/Src/syscalls.o + .text._isatty 0x0000000000000000 0x12 ./Core/Src/syscalls.o + .text._lseek 0x0000000000000000 0x16 ./Core/Src/syscalls.o + .text._open 0x0000000000000000 0x1c ./Core/Src/syscalls.o + .text._wait 0x0000000000000000 0x1e ./Core/Src/syscalls.o + .text._unlink 0x0000000000000000 0x1e ./Core/Src/syscalls.o + .text._times 0x0000000000000000 0x14 ./Core/Src/syscalls.o + .text._stat 0x0000000000000000 0x1c ./Core/Src/syscalls.o + .text._link 0x0000000000000000 0x20 ./Core/Src/syscalls.o + .text._fork 0x0000000000000000 0x18 ./Core/Src/syscalls.o + .text._execve 0x0000000000000000 0x22 ./Core/Src/syscalls.o + .debug_info 0x0000000000000000 0xfa8 ./Core/Src/syscalls.o + .debug_abbrev 0x0000000000000000 0x286 ./Core/Src/syscalls.o + .debug_aranges + 0x0000000000000000 0xa8 ./Core/Src/syscalls.o + .debug_ranges 0x0000000000000000 0x98 ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x24c ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0xa7e ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x22 ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x4c ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x18 ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x94 ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x3c ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x34 ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x57 ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x174 ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x339 ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x43 ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x34 ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x58 ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x71 ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x12a ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x35 ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x6a ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x52 ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x22 ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x40 ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0xd5 ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x3d ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x35 ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x12c ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x29 ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x241 ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x1c ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x10 ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x145 ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x189 ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x16 ./Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0xce ./Core/Src/syscalls.o + .debug_line 0x0000000000000000 0x7d5 ./Core/Src/syscalls.o + .debug_str 0x0000000000000000 0x8dec ./Core/Src/syscalls.o + .comment 0x0000000000000000 0x54 ./Core/Src/syscalls.o + .debug_frame 0x0000000000000000 0x244 ./Core/Src/syscalls.o + .ARM.attributes + 0x0000000000000000 0x2c ./Core/Src/syscalls.o + .group 0x0000000000000000 0xc ./Core/Src/sysmem.o + .group 0x0000000000000000 0xc ./Core/Src/sysmem.o + .group 0x0000000000000000 0xc ./Core/Src/sysmem.o + .group 0x0000000000000000 0xc ./Core/Src/sysmem.o + .group 0x0000000000000000 0xc ./Core/Src/sysmem.o + .group 0x0000000000000000 0xc ./Core/Src/sysmem.o + .group 0x0000000000000000 0xc ./Core/Src/sysmem.o + .group 0x0000000000000000 0xc ./Core/Src/sysmem.o + .group 0x0000000000000000 0xc ./Core/Src/sysmem.o + .group 0x0000000000000000 0xc ./Core/Src/sysmem.o + .group 0x0000000000000000 0xc ./Core/Src/sysmem.o + .group 0x0000000000000000 0xc ./Core/Src/sysmem.o + .group 0x0000000000000000 0xc ./Core/Src/sysmem.o + .group 0x0000000000000000 0xc ./Core/Src/sysmem.o + .group 0x0000000000000000 0xc ./Core/Src/sysmem.o + .group 0x0000000000000000 0xc ./Core/Src/sysmem.o + .group 0x0000000000000000 0xc ./Core/Src/sysmem.o + .group 0x0000000000000000 0xc ./Core/Src/sysmem.o + .group 0x0000000000000000 0xc ./Core/Src/sysmem.o + .group 0x0000000000000000 0xc ./Core/Src/sysmem.o + .group 0x0000000000000000 0xc ./Core/Src/sysmem.o + .group 0x0000000000000000 0xc ./Core/Src/sysmem.o + .text 0x0000000000000000 0x0 ./Core/Src/sysmem.o + .data 0x0000000000000000 0x0 ./Core/Src/sysmem.o + .bss 0x0000000000000000 0x0 ./Core/Src/sysmem.o + .bss.__sbrk_heap_end + 0x0000000000000000 0x4 ./Core/Src/sysmem.o + .text._sbrk 0x0000000000000000 0x6c ./Core/Src/sysmem.o + .debug_info 0x0000000000000000 0xa25 ./Core/Src/sysmem.o + .debug_abbrev 0x0000000000000000 0x1bf ./Core/Src/sysmem.o + .debug_aranges + 0x0000000000000000 0x20 ./Core/Src/sysmem.o + .debug_ranges 0x0000000000000000 0x10 ./Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0xff ./Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0xa7e ./Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x10 ./Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x22 ./Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x4c ./Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x18 ./Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x94 ./Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x3c ./Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x34 ./Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x174 ./Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x16 ./Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x43 ./Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x57 ./Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x34 ./Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x10 ./Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x58 ./Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x71 ./Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x1c ./Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x12a ./Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x23b ./Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x103 ./Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x6a ./Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x1df ./Core/Src/sysmem.o + .debug_line 0x0000000000000000 0x4cb ./Core/Src/sysmem.o + .debug_str 0x0000000000000000 0x61bf ./Core/Src/sysmem.o + .comment 0x0000000000000000 0x54 ./Core/Src/sysmem.o + .debug_frame 0x0000000000000000 0x30 ./Core/Src/sysmem.o + .ARM.attributes + 0x0000000000000000 0x2c ./Core/Src/sysmem.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .group 0x0000000000000000 0xc ./Core/Src/system_stm32l0xx.o + .text 0x0000000000000000 0x0 ./Core/Src/system_stm32l0xx.o + .data 0x0000000000000000 0x0 ./Core/Src/system_stm32l0xx.o + .bss 0x0000000000000000 0x0 ./Core/Src/system_stm32l0xx.o + .text.SystemCoreClockUpdate + 0x0000000000000000 0x170 ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0xa7e ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0x2e ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0x28 ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0x22 ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0x8e ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0x51 ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0x103 ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0x6a ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0x1df ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0x1c ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0x22 ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0xb5 ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0x3ad ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0x7f00 ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0x66 ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0x125 ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0x355c ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0x174 ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0x5b ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0x8b5 ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0x474 ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0x189 ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0x13f ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0x10d ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0x82 ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0x28e ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0x28 ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0x129 ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0x244 ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0x22c ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0x5b ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0xa5 ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0x18d ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0x16 ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0x773 ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0xc6 ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0x5ba ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0x44 ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000000000 0x12a ./Core/Src/system_stm32l0xx.o + .text 0x0000000000000000 0x14 ./Core/Startup/startup_stm32l031g6ux.o + .data 0x0000000000000000 0x0 ./Core/Startup/startup_stm32l031g6ux.o + .bss 0x0000000000000000 0x0 ./Core/Startup/startup_stm32l031g6ux.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .text 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .data 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .bss 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .text.HAL_DeInit + 0x0000000000000000 0x4c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .text.HAL_MspInit + 0x0000000000000000 0xa ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .text.HAL_MspDeInit + 0x0000000000000000 0xa ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .text.HAL_GetTickPrio + 0x0000000000000000 0x14 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .text.HAL_SetTickFreq + 0x0000000000000000 0x6c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .text.HAL_GetTickFreq + 0x0000000000000000 0x14 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .text.HAL_SuspendTick + 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .text.HAL_ResumeTick + 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .text.HAL_GetHalVersion + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .text.HAL_GetREVID + 0x0000000000000000 0x14 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .text.HAL_GetDEVID + 0x0000000000000000 0x18 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .text.HAL_GetUIDw0 + 0x0000000000000000 0x14 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .text.HAL_GetUIDw1 + 0x0000000000000000 0x14 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .text.HAL_GetUIDw2 + 0x0000000000000000 0x14 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .text.HAL_DBGMCU_EnableDBGSleepMode + 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .text.HAL_DBGMCU_DisableDBGSleepMode + 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .text.HAL_DBGMCU_EnableDBGStopMode + 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .text.HAL_DBGMCU_DisableDBGStopMode + 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .text.HAL_DBGMCU_EnableDBGStandbyMode + 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .text.HAL_DBGMCU_DisableDBGStandbyMode + 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .text.HAL_DBGMCU_DBG_EnableLowPowerConfig + 0x0000000000000000 0x20 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .text.HAL_DBGMCU_DBG_DisableLowPowerConfig + 0x0000000000000000 0x24 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .text.HAL_SYSCFG_GetBootMode + 0x0000000000000000 0x18 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .text.HAL_SYSCFG_VREFINT_OutputSelect + 0x0000000000000000 0x2c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .text.HAL_SYSCFG_Enable_Lock_VREFINT + 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .text.HAL_SYSCFG_Disable_Lock_VREFINT + 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0xa7e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0x125 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0x8e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0x51 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0x103 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0x6a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0x1df ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0xb5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0x3ad ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0x7f00 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0x66 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0x355c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0x174 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0x5b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0x8b5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0x474 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0x189 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0x13f ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0x10d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0x82 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0x28e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0x129 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0x244 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0x22c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0x5b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0xa5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0x18d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0x16 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0x773 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0xc6 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0x5ba ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0x44 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000000000 0x12a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .text 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .data 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .bss 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .text.__NVIC_EnableIRQ + 0x0000000000000000 0x34 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .text.__NVIC_DisableIRQ + 0x0000000000000000 0x44 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .text.__NVIC_GetPendingIRQ + 0x0000000000000000 0x40 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .text.__NVIC_SetPendingIRQ + 0x0000000000000000 0x38 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .text.__NVIC_ClearPendingIRQ + 0x0000000000000000 0x38 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .text.__NVIC_GetPriority + 0x0000000000000000 0x7c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .text.__NVIC_SystemReset + 0x0000000000000000 0x24 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .text.HAL_NVIC_EnableIRQ + 0x0000000000000000 0x20 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .text.HAL_NVIC_DisableIRQ + 0x0000000000000000 0x20 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .text.HAL_NVIC_SystemReset + 0x0000000000000000 0x8 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .text.HAL_NVIC_GetPriority + 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .text.HAL_NVIC_SetPendingIRQ + 0x0000000000000000 0x20 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .text.HAL_NVIC_GetPendingIRQ + 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .text.HAL_NVIC_ClearPendingIRQ + 0x0000000000000000 0x20 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .text.HAL_SYSTICK_CLKSourceConfig + 0x0000000000000000 0x34 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .text.HAL_SYSTICK_IRQHandler + 0x0000000000000000 0xe ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .text.HAL_SYSTICK_Callback + 0x0000000000000000 0xa ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0xa7e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x125 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x8e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x51 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x103 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x6a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x1df ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0xb5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x3ad ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x7f00 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x66 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x355c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x174 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x5b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x8b5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x474 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x189 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x13f ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x10d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x82 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x28e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x129 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x244 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x22c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x5b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0xa5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x18d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x16 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x773 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0xc6 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x5ba ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x44 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x0000000000000000 0x12a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .text 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .data 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .bss 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .text.HAL_DMA_Init + 0x0000000000000000 0xf0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .text.HAL_DMA_DeInit + 0x0000000000000000 0xbc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .text.HAL_DMA_Start + 0x0000000000000000 0x92 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .text.HAL_DMA_Start_IT + 0x0000000000000000 0xcc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .text.HAL_DMA_Abort + 0x0000000000000000 0x80 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .text.HAL_DMA_Abort_IT + 0x0000000000000000 0x8e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .text.HAL_DMA_PollForTransfer + 0x0000000000000000 0x154 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .text.HAL_DMA_IRQHandler + 0x0000000000000000 0x15c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .text.HAL_DMA_RegisterCallback + 0x0000000000000000 0xa0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .text.HAL_DMA_UnRegisterCallback + 0x0000000000000000 0xb0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .rodata.HAL_DMA_UnRegisterCallback + 0x0000000000000000 0x14 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .text.HAL_DMA_GetState + 0x0000000000000000 0x18 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .text.HAL_DMA_GetError + 0x0000000000000000 0x14 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .text.DMA_SetConfig + 0x0000000000000000 0x5c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_info 0x0000000000000000 0x834 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_abbrev 0x0000000000000000 0x1f0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_aranges + 0x0000000000000000 0x80 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_ranges 0x0000000000000000 0x70 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0x1c4 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0xa7e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0x125 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0x8e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0x51 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0x103 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0x6a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0x1df ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0xb5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0x3ad ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0x7f00 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0x66 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0x355c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0x174 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0x5b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0x8b5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0x474 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0x189 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0x13f ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0x10d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0x82 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0x28e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0x129 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0x244 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0x22c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0x5b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0xa5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0x18d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0x16 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0x773 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0xc6 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0x5ba ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0x44 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_macro 0x0000000000000000 0x12a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_line 0x0000000000000000 0xc0c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_str 0x0000000000000000 0x672f9 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .comment 0x0000000000000000 0x54 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .debug_frame 0x0000000000000000 0x1b0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .ARM.attributes + 0x0000000000000000 0x2c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .text 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .data 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .bss 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .text.HAL_EXTI_SetConfigLine + 0x0000000000000000 0x148 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .text.HAL_EXTI_GetConfigLine + 0x0000000000000000 0xec ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .text.HAL_EXTI_ClearConfigLine + 0x0000000000000000 0xc0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .text.HAL_EXTI_RegisterCallback + 0x0000000000000000 0x42 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .text.HAL_EXTI_GetHandle + 0x0000000000000000 0x24 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .text.HAL_EXTI_IRQHandler + 0x0000000000000000 0x48 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .text.HAL_EXTI_GetPending + 0x0000000000000000 0x3c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .text.HAL_EXTI_ClearPending + 0x0000000000000000 0x2c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .text.HAL_EXTI_GenerateSWI + 0x0000000000000000 0x2c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_info 0x0000000000000000 0x63d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_abbrev 0x0000000000000000 0x1e2 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_aranges + 0x0000000000000000 0x60 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_ranges 0x0000000000000000 0x50 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0x1c4 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0xa7e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0x125 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0x8e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0x51 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0x103 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0x6a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0x1df ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0xb5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0x3ad ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0x7f00 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0x66 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0x355c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0x174 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0x5b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0x8b5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0x474 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0x189 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0x13f ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0x10d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0x82 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0x28e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0x129 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0x244 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0x22c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0x5b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0xa5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0x18d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0x16 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0x773 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0xc6 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0x5ba ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0x44 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_macro 0x0000000000000000 0x12a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_line 0x0000000000000000 0x99d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_str 0x0000000000000000 0x670d5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .comment 0x0000000000000000 0x54 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .debug_frame 0x0000000000000000 0x130 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .ARM.attributes + 0x0000000000000000 0x2c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .text 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .data 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .bss 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .text.HAL_FLASH_Program + 0x0000000000000000 0x78 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .text.HAL_FLASH_Program_IT + 0x0000000000000000 0x68 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .text.HAL_FLASH_IRQHandler + 0x0000000000000000 0x1a8 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .text.HAL_FLASH_EndOfOperationCallback + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .text.HAL_FLASH_OperationErrorCallback + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .text.HAL_FLASH_Unlock + 0x0000000000000000 0xa8 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .text.HAL_FLASH_Lock + 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .text.HAL_FLASH_OB_Unlock + 0x0000000000000000 0x74 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .text.HAL_FLASH_OB_Lock + 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .text.HAL_FLASH_OB_Launch + 0x0000000000000000 0x2c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .text.HAL_FLASH_GetError + 0x0000000000000000 0x14 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .text.FLASH_WaitForLastOperation + 0x0000000000000000 0xe4 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .text.FLASH_SetErrorCode + 0x0000000000000000 0x138 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_info 0x0000000000000000 0x66d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_abbrev 0x0000000000000000 0x2a8 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_aranges + 0x0000000000000000 0x80 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_ranges 0x0000000000000000 0x70 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0x1c5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0xa7e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0x125 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0x8e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0x51 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0x103 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0x6a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0x1df ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0xb5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0x3ad ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0x7f00 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0x66 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0x355c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0x174 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0x5b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0x8b5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0x474 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0x189 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0x13f ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0x10d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0x82 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0x28e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0x129 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0x244 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0x22c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0x5b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0xa5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0x18d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0x16 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0x773 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0xc6 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0x5ba ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0x44 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_macro 0x0000000000000000 0x12a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_line 0x0000000000000000 0xa96 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_str 0x0000000000000000 0x6716f ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .comment 0x0000000000000000 0x54 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .debug_frame 0x0000000000000000 0x1a4 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .ARM.attributes + 0x0000000000000000 0x2c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + COMMON 0x0000000000000000 0x18 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .text 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .data 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .bss 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .text.HAL_FLASHEx_Erase + 0x0000000000000000 0xcc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .text.HAL_FLASHEx_Erase_IT + 0x0000000000000000 0x98 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .text.HAL_FLASHEx_OBProgram + 0x0000000000000000 0x140 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .text.HAL_FLASHEx_OBGetConfig + 0x0000000000000000 0x50 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .text.HAL_FLASHEx_AdvOBProgram + 0x0000000000000000 0x3e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .text.HAL_FLASHEx_AdvOBGetConfig + 0x0000000000000000 0x3c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .text.HAL_FLASHEx_OB_SelectPCROP + 0x0000000000000000 0xa4 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .text.HAL_FLASHEx_OB_DeSelectPCROP + 0x0000000000000000 0x98 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Unlock + 0x0000000000000000 0x5c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Lock + 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Erase + 0x0000000000000000 0x58 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_Program + 0x0000000000000000 0xb0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_EnableFixedTimeProgram + 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .text.HAL_FLASHEx_DATAEEPROM_DisableFixedTimeProgram + 0x0000000000000000 0x20 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .text.FLASH_OB_RDPConfig + 0x0000000000000000 0xa0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .text.FLASH_OB_BORConfig + 0x0000000000000000 0x94 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .text.FLASH_OB_BOOTBit1Config + 0x0000000000000000 0x94 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .text.FLASH_OB_GetUser + 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .text.FLASH_OB_GetRDP + 0x0000000000000000 0x34 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .text.FLASH_OB_GetBOR + 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .text.FLASH_OB_GetBOOTBit1 + 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .text.FLASH_OB_GetWRP + 0x0000000000000000 0x14 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .text.FLASH_OB_ProtectedSectorsConfig + 0x0000000000000000 0xb4 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .text.FLASH_OB_UserConfig + 0x0000000000000000 0xcc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .text.FLASH_PageErase + 0x0000000000000000 0x44 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_info 0x0000000000000000 0xafe ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_abbrev 0x0000000000000000 0x2ee ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_aranges + 0x0000000000000000 0xe0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_ranges 0x0000000000000000 0xd0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x1c4 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0xa7e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x125 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x8e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x51 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x103 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x6a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x1df ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0xb5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x3ad ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x7f00 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x66 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x355c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x174 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x5b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x8b5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x474 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x189 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x13f ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x10d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x82 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x28e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x129 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x244 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x22c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x5b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0xa5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x18d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x16 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x773 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0xc6 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x5ba ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x44 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_macro 0x0000000000000000 0x12a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_line 0x0000000000000000 0xd10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_str 0x0000000000000000 0x6744e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .comment 0x0000000000000000 0x54 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .debug_frame 0x0000000000000000 0x344 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .ARM.attributes + 0x0000000000000000 0x2c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .text 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .data 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .bss 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .RamFunc 0x0000000000000000 0x338 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_info 0x0000000000000000 0x446 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_abbrev 0x0000000000000000 0x1ac ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_aranges + 0x0000000000000000 0x48 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_ranges 0x0000000000000000 0x38 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0x1c4 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0xa7e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0x125 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0x8e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0x51 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0x103 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0x6a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0x1df ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0xb5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0x3ad ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0x7f00 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0x66 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0x355c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0x174 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0x5b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0x8b5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0x474 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0x189 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0x13f ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0x10d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0x82 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0x28e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0x129 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0x244 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0x22c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0x5b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0xa5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0x18d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0x16 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0x773 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0xc6 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0x5ba ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0x44 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_macro 0x0000000000000000 0x12a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_line 0x0000000000000000 0x81b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_str 0x0000000000000000 0x670ba ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .comment 0x0000000000000000 0x54 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .debug_frame 0x0000000000000000 0xcc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .ARM.attributes + 0x0000000000000000 0x2c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .text 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .data 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .bss 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .text.HAL_GPIO_DeInit + 0x0000000000000000 0x1a4 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .text.HAL_GPIO_ReadPin + 0x0000000000000000 0x3a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .text.HAL_GPIO_WritePin + 0x0000000000000000 0x3a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .text.HAL_GPIO_TogglePin + 0x0000000000000000 0x36 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .text.HAL_GPIO_LockPin + 0x0000000000000000 0x52 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .text.HAL_GPIO_EXTI_IRQHandler + 0x0000000000000000 0x38 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .text.HAL_GPIO_EXTI_Callback + 0x0000000000000000 0x14 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0xa7e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x125 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x8e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x51 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x103 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x6a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x1df ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0xb5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x3ad ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x7f00 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x66 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x355c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x174 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x5b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x8b5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x474 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x189 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x13f ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x10d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x82 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x28e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x129 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x244 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x22c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x5b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0xa5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x18d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x16 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x773 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0xc6 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x5ba ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x44 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x0000000000000000 0x12a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .data 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .bss 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_DeInit + 0x0000000000000000 0x60 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_MspInit + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_MspDeInit + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_Slave_Transmit + 0x0000000000000000 0x22c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_Slave_Receive + 0x0000000000000000 0x214 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_Master_Transmit_IT + 0x0000000000000000 0xf8 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_Master_Receive_IT + 0x0000000000000000 0xf8 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_Slave_Transmit_IT + 0x0000000000000000 0xac ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_Slave_Receive_IT + 0x0000000000000000 0xac ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_Master_Transmit_DMA + 0x0000000000000000 0x20c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_Master_Receive_DMA + 0x0000000000000000 0x20c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_Slave_Transmit_DMA + 0x0000000000000000 0x180 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_Slave_Receive_DMA + 0x0000000000000000 0x180 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_Mem_Write + 0x0000000000000000 0x25c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_Mem_Write_IT + 0x0000000000000000 0x150 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_Mem_Read_IT + 0x0000000000000000 0x154 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_Mem_Write_DMA + 0x0000000000000000 0x21c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_Mem_Read_DMA + 0x0000000000000000 0x220 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_IsDeviceReady + 0x0000000000000000 0x234 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_Master_Seq_Transmit_IT + 0x0000000000000000 0x124 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_Master_Seq_Transmit_DMA + 0x0000000000000000 0x234 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_Master_Seq_Receive_IT + 0x0000000000000000 0x124 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_Master_Seq_Receive_DMA + 0x0000000000000000 0x234 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_Slave_Seq_Transmit_IT + 0x0000000000000000 0x160 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_Slave_Seq_Transmit_DMA + 0x0000000000000000 0x298 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_Slave_Seq_Receive_IT + 0x0000000000000000 0x164 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_Slave_Seq_Receive_DMA + 0x0000000000000000 0x294 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_EnableListen_IT + 0x0000000000000000 0x44 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_DisableListen_IT + 0x0000000000000000 0x68 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_Master_Abort_IT + 0x0000000000000000 0xac ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_EV_IRQHandler + 0x0000000000000000 0x34 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_ER_IRQHandler + 0x0000000000000000 0xc4 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_MasterTxCpltCallback + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_MasterRxCpltCallback + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_SlaveTxCpltCallback + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_SlaveRxCpltCallback + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_AddrCallback + 0x0000000000000000 0x20 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_ListenCpltCallback + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_MemTxCpltCallback + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_MemRxCpltCallback + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_ErrorCallback + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_AbortCpltCallback + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_GetState + 0x0000000000000000 0x18 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_GetMode + 0x0000000000000000 0x18 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2C_GetError + 0x0000000000000000 0x14 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.I2C_Master_ISR_IT + 0x0000000000000000 0x284 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.I2C_Slave_ISR_IT + 0x0000000000000000 0x228 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.I2C_Master_ISR_DMA + 0x0000000000000000 0x218 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.I2C_Slave_ISR_DMA + 0x0000000000000000 0x1ec ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.I2C_RequestMemoryWrite + 0x0000000000000000 0xc8 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.I2C_ITAddrCplt + 0x0000000000000000 0x148 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.I2C_ITMasterSeqCplt + 0x0000000000000000 0x82 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.I2C_ITSlaveSeqCplt + 0x0000000000000000 0xcc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.I2C_ITMasterCplt + 0x0000000000000000 0x1a4 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.I2C_ITSlaveCplt + 0x0000000000000000 0x248 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.I2C_ITListenCplt + 0x0000000000000000 0xb4 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.I2C_ITError + 0x0000000000000000 0x1c4 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.I2C_TreatErrorCallback + 0x0000000000000000 0x52 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.I2C_DMAMasterTransmitCplt + 0x0000000000000000 0xa0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.I2C_DMASlaveTransmitCplt + 0x0000000000000000 0x48 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.I2C_DMAMasterReceiveCplt + 0x0000000000000000 0xa0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.I2C_DMASlaveReceiveCplt + 0x0000000000000000 0x50 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.I2C_DMAError + 0x0000000000000000 0x32 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.I2C_DMAAbort + 0x0000000000000000 0x3e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.I2C_Enable_IRQ + 0x0000000000000000 0xd0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.I2C_Disable_IRQ + 0x0000000000000000 0xc6 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.I2C_ConvertOtherXferOptions + 0x0000000000000000 0x34 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0xa7e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x125 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x8e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x51 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x103 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x6a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x1df ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0xb5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x3ad ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x7f00 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x66 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x355c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x174 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x5b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x8b5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x474 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x189 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x13f ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x10d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x82 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x28e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x129 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x244 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x22c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x5b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0xa5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x18d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x16 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x773 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0xc6 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x5ba ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x44 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000000000 0x12a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .text 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .data 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .bss 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .text.HAL_I2CEx_EnableWakeUp + 0x0000000000000000 0x82 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .text.HAL_I2CEx_DisableWakeUp + 0x0000000000000000 0x84 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .text.HAL_I2CEx_EnableFastModePlus + 0x0000000000000000 0x30 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .text.HAL_I2CEx_DisableFastModePlus + 0x0000000000000000 0x34 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0xa7e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0x125 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0x8e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0x51 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0x103 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0x6a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0x1df ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0xb5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0x3ad ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0x7f00 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0x66 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0x355c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0x174 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0x5b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0x8b5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0x474 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0x189 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0x13f ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0x10d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0x82 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0x28e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0x129 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0x244 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0x22c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0x5b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0xa5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0x18d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0x16 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0x773 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0xc6 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0x5ba ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0x44 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000000000 0x12a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .text 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .data 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .bss 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .text.HAL_PWR_DeInit + 0x0000000000000000 0x2c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .text.HAL_PWR_EnableBkUpAccess + 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .text.HAL_PWR_DisableBkUpAccess + 0x0000000000000000 0x20 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .text.HAL_PWR_ConfigPVD + 0x0000000000000000 0xc4 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .text.HAL_PWR_EnablePVD + 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .text.HAL_PWR_DisablePVD + 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .text.HAL_PWR_EnableWakeUpPin + 0x0000000000000000 0x20 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .text.HAL_PWR_DisableWakeUpPin + 0x0000000000000000 0x24 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .text.HAL_PWR_EnterSLEEPMode + 0x0000000000000000 0xb0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .text.HAL_PWR_EnterSTOPMode + 0x0000000000000000 0xb8 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .text.HAL_PWR_EnterSTANDBYMode + 0x0000000000000000 0x2c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .text.HAL_PWR_EnableSleepOnExit + 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .text.HAL_PWR_DisableSleepOnExit + 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .text.HAL_PWR_EnableSEVOnPend + 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .text.HAL_PWR_DisableSEVOnPend + 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .text.HAL_PWR_PVD_IRQHandler + 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .text.HAL_PWR_PVDCallback + 0x0000000000000000 0xa ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_info 0x0000000000000000 0x6fc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_abbrev 0x0000000000000000 0x1ad ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_aranges + 0x0000000000000000 0xa0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_ranges 0x0000000000000000 0x90 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x1dc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0xa7e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x125 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x8e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x51 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x103 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x6a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x1df ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0xb5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x3ad ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x7f00 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x66 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x355c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x174 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x5b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x8b5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x474 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x189 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x13f ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x10d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x82 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x28e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x129 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x244 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x22c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x5b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0xa5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x18d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x16 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x773 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0xc6 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x5ba ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x44 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_macro 0x0000000000000000 0x12a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_line 0x0000000000000000 0x90c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_str 0x0000000000000000 0x6720a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .comment 0x0000000000000000 0x54 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .debug_frame 0x0000000000000000 0x200 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .ARM.attributes + 0x0000000000000000 0x2c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .text 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .data 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .bss 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .text.HAL_PWREx_GetVoltageRange + 0x0000000000000000 0x18 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .text.HAL_PWREx_EnableFastWakeUp + 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .text.HAL_PWREx_DisableFastWakeUp + 0x0000000000000000 0x20 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .text.HAL_PWREx_EnableUltraLowPower + 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .text.HAL_PWREx_DisableUltraLowPower + 0x0000000000000000 0x20 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .text.HAL_PWREx_EnableLowPowerRunMode + 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .text.HAL_PWREx_DisableLowPowerRunMode + 0x0000000000000000 0x7c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_info 0x0000000000000000 0x27a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_abbrev 0x0000000000000000 0x132 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_aranges + 0x0000000000000000 0x50 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_ranges 0x0000000000000000 0x40 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0x1ca ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0xa7e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0x125 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0x8e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0x51 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0x103 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0x6a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0x1df ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0xb5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0x3ad ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0x7f00 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0x66 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0x355c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0x174 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0x5b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0x8b5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0x474 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0x189 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0x13f ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0x10d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0x82 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0x28e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0x129 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0x244 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0x22c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0x5b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0xa5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0x18d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0x16 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0x773 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0xc6 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0x5ba ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0x44 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_macro 0x0000000000000000 0x12a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_line 0x0000000000000000 0x79b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_str 0x0000000000000000 0x66fca ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .comment 0x0000000000000000 0x54 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .debug_frame 0x0000000000000000 0xd8 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .ARM.attributes + 0x0000000000000000 0x2c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .text 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .data 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .bss 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .text.HAL_RCC_DeInit + 0x0000000000000000 0x148 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .text.HAL_RCC_MCOConfig + 0x0000000000000000 0x108 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .text.HAL_RCC_EnableCSS + 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .text.HAL_RCC_GetOscConfig + 0x0000000000000000 0x160 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .text.HAL_RCC_GetClockConfig + 0x0000000000000000 0x64 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .text.HAL_RCC_NMI_IRQHandler + 0x0000000000000000 0x2c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .text.HAL_RCC_CSSCallback + 0x0000000000000000 0xa ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0xa7e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x125 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x8e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x51 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x103 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x6a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x1df ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0xb5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x3ad ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x7f00 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x66 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x355c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x174 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x5b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x8b5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x474 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x189 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x13f ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x10d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x82 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x28e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x129 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x244 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x22c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x5b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0xa5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x18d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x16 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x773 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0xc6 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x5ba ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x44 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000000000 0x12a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .text 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .data 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .bss 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .text.HAL_RCCEx_GetPeriphCLKConfig + 0x0000000000000000 0x90 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .text.HAL_RCCEx_GetPeriphCLKFreq + 0x0000000000000000 0x298 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .text.HAL_RCCEx_EnableLSECSS + 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .text.HAL_RCCEx_DisableLSECSS + 0x0000000000000000 0x2c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .text.HAL_RCCEx_EnableLSECSS_IT + 0x0000000000000000 0x48 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .text.HAL_RCCEx_LSECSS_IRQHandler + 0x0000000000000000 0x24 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .text.HAL_RCCEx_LSECSS_Callback + 0x0000000000000000 0xa ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0xa7e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x125 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x8e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x51 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x103 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x6a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x1df ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0xb5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x3ad ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x7f00 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x66 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x355c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x174 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x5b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x8b5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x474 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x189 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x13f ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x10d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x82 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x28e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x129 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x244 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x22c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x5b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0xa5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x18d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x16 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x773 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0xc6 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x5ba ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x44 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000000000 0x12a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .data 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .bss 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_Base_DeInit + 0x0000000000000000 0x7c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_Base_MspInit + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_Base_MspDeInit + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_Base_Start + 0x0000000000000000 0x88 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_Base_Stop + 0x0000000000000000 0x3c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_Base_Start_IT + 0x0000000000000000 0x98 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_Base_Stop_IT + 0x0000000000000000 0x4c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_Base_Start_DMA + 0x0000000000000000 0x104 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_Base_Stop_DMA + 0x0000000000000000 0x58 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_OC_Init + 0x0000000000000000 0x80 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_OC_DeInit + 0x0000000000000000 0x7c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_OC_MspInit + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_OC_MspDeInit + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_OC_Start + 0x0000000000000000 0x118 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_OC_Stop + 0x0000000000000000 0x7c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_OC_Start_IT + 0x0000000000000000 0x1a4 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_OC_Stop_IT + 0x0000000000000000 0x108 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_OC_Start_DMA + 0x0000000000000000 0x314 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_OC_Stop_DMA + 0x0000000000000000 0x140 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_PWM_DeInit + 0x0000000000000000 0x7c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_PWM_MspDeInit + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_PWM_Start + 0x0000000000000000 0x118 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_PWM_Stop + 0x0000000000000000 0x7c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_PWM_Start_IT + 0x0000000000000000 0x1a4 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_PWM_Stop_IT + 0x0000000000000000 0x108 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_PWM_Start_DMA + 0x0000000000000000 0x314 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_PWM_Stop_DMA + 0x0000000000000000 0x140 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_IC_Init + 0x0000000000000000 0x80 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_IC_DeInit + 0x0000000000000000 0x7c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_IC_MspInit + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_IC_MspDeInit + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_IC_Start + 0x0000000000000000 0x100 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_IC_Stop + 0x0000000000000000 0x7c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_IC_Start_IT + 0x0000000000000000 0x190 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_IC_Stop_IT + 0x0000000000000000 0x108 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_IC_Start_DMA + 0x0000000000000000 0x2a0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_IC_Stop_DMA + 0x0000000000000000 0x140 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_OnePulse_Init + 0x0000000000000000 0x92 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_OnePulse_DeInit + 0x0000000000000000 0x6c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_OnePulse_MspInit + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_OnePulse_MspDeInit + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_OnePulse_Start + 0x0000000000000000 0x6c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_OnePulse_Stop + 0x0000000000000000 0x60 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_OnePulse_Start_IT + 0x0000000000000000 0x8c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_OnePulse_Stop_IT + 0x0000000000000000 0x80 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_Encoder_Init + 0x0000000000000000 0x140 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_Encoder_DeInit + 0x0000000000000000 0x6c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_Encoder_MspInit + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_Encoder_MspDeInit + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_Encoder_Start + 0x0000000000000000 0xea ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_Encoder_Stop + 0x0000000000000000 0xd8 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_Encoder_Start_IT + 0x0000000000000000 0x12a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_Encoder_Stop_IT + 0x0000000000000000 0x114 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_Encoder_Start_DMA + 0x0000000000000000 0x2bc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_Encoder_Stop_DMA + 0x0000000000000000 0x144 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_IRQHandler + 0x0000000000000000 0x1d0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_OC_ConfigChannel + 0x0000000000000000 0xb0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_IC_ConfigChannel + 0x0000000000000000 0x148 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_OnePulse_ConfigChannel + 0x0000000000000000 0x1ac ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_DMABurst_WriteStart + 0x0000000000000000 0x4e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_DMABurst_MultiWriteStart + 0x0000000000000000 0x268 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_DMABurst_WriteStop + 0x0000000000000000 0xfc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_DMABurst_ReadStart + 0x0000000000000000 0x4e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_DMABurst_MultiReadStart + 0x0000000000000000 0x268 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_DMABurst_ReadStop + 0x0000000000000000 0xfc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_GenerateEvent + 0x0000000000000000 0x4a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_ConfigOCrefClear + 0x0000000000000000 0x1a4 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_ConfigTI1Input + 0x0000000000000000 0x34 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_SlaveConfigSynchro + 0x0000000000000000 0x8c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_SlaveConfigSynchro_IT + 0x0000000000000000 0x8c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_ReadCapturedValue + 0x0000000000000000 0x68 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_PeriodElapsedCallback + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_PeriodElapsedHalfCpltCallback + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_OC_DelayElapsedCallback + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_IC_CaptureCallback + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_IC_CaptureHalfCpltCallback + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_PWM_PulseFinishedCallback + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_PWM_PulseFinishedHalfCpltCallback + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_TriggerCallback + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_TriggerHalfCpltCallback + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_ErrorCallback + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_Base_GetState + 0x0000000000000000 0x18 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_OC_GetState + 0x0000000000000000 0x18 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_PWM_GetState + 0x0000000000000000 0x18 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_IC_GetState + 0x0000000000000000 0x18 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_OnePulse_GetState + 0x0000000000000000 0x18 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_Encoder_GetState + 0x0000000000000000 0x18 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_GetActiveChannel + 0x0000000000000000 0x14 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_GetChannelState + 0x0000000000000000 0x54 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIM_DMABurstState + 0x0000000000000000 0x18 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.TIM_DMAError + 0x0000000000000000 0x94 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.TIM_DMADelayPulseCplt + 0x0000000000000000 0xaa ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.TIM_DMADelayPulseHalfCplt + 0x0000000000000000 0x6a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.TIM_DMACaptureCplt + 0x0000000000000000 0xaa ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.TIM_DMACaptureHalfCplt + 0x0000000000000000 0x6a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.TIM_DMAPeriodElapsedCplt + 0x0000000000000000 0x30 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.TIM_DMAPeriodElapsedHalfCplt + 0x0000000000000000 0x1e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.TIM_DMATriggerCplt + 0x0000000000000000 0x30 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.TIM_DMATriggerHalfCplt + 0x0000000000000000 0x1e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.TIM_SlaveTimer_SetConfig + 0x0000000000000000 0x124 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.TIM_TI1_SetConfig + 0x0000000000000000 0xac ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.TIM_TI2_SetConfig + 0x0000000000000000 0x84 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.TIM_TI3_SetConfig + 0x0000000000000000 0x80 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.TIM_TI4_SetConfig + 0x0000000000000000 0x8c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.TIM_CCxChannelCmd + 0x0000000000000000 0x46 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0xa7e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0x125 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0x8e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0x51 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0x103 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0x6a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0x1df ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0xb5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0x3ad ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0x7f00 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0x66 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0x355c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0x174 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0x5b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0x8b5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0x474 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0x189 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0x13f ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0x10d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0x82 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0x28e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0x129 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0x244 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0x22c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0x5b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0xa5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0x18d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0x16 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0x773 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0xc6 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0x5ba ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0x44 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000000000 0x12a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .text 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .data 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .bss 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .text.HAL_TIMEx_RemapConfig + 0x0000000000000000 0x3a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0xa7e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x125 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x8e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x51 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x103 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x6a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x1df ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0xb5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x3ad ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x7f00 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x66 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x355c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x174 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x5b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x8b5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x474 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x189 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x13f ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x10d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x82 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x28e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x129 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x244 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x22c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x5b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0xa5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x18d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x16 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x773 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0xc6 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x5ba ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x44 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x0000000000000000 0x12a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .data 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .bss 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_UART_Init + 0x0000000000000000 0xa8 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_HalfDuplex_Init + 0x0000000000000000 0xb8 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_LIN_Init + 0x0000000000000000 0xf0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_MultiProcessor_Init + 0x0000000000000000 0xf0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_UART_DeInit + 0x0000000000000000 0x74 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_UART_MspInit + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_UART_MspDeInit + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_UART_Transmit + 0x0000000000000000 0x150 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_UART_Receive + 0x0000000000000000 0x1dc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_UART_Transmit_IT + 0x0000000000000000 0x100 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_UART_Receive_IT + 0x0000000000000000 0xd0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_UART_Transmit_DMA + 0x0000000000000000 0x144 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_UART_Receive_DMA + 0x0000000000000000 0xd0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_UART_DMAPause + 0x0000000000000000 0x130 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_UART_DMAResume + 0x0000000000000000 0x112 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_UART_DMAStop + 0x0000000000000000 0x11e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_UART_Abort + 0x0000000000000000 0x1ec ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_UART_AbortTransmit + 0x0000000000000000 0xcc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_UART_AbortReceive + 0x0000000000000000 0x15c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_UART_Abort_IT + 0x0000000000000000 0x238 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_UART_AbortTransmit_IT + 0x0000000000000000 0xf0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_UART_AbortReceive_IT + 0x0000000000000000 0x18c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_UART_IRQHandler + 0x0000000000000000 0x5b4 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_UART_TxCpltCallback + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_UART_TxHalfCpltCallback + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_UART_RxCpltCallback + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_UART_RxHalfCpltCallback + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_UART_ErrorCallback + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_UART_AbortCpltCallback + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_UART_AbortTransmitCpltCallback + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_UART_AbortReceiveCpltCallback + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_UARTEx_RxEventCallback + 0x0000000000000000 0x16 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_UART_ReceiverTimeout_Config + 0x0000000000000000 0x34 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_UART_EnableReceiverTimeout + 0x0000000000000000 0x6c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_UART_DisableReceiverTimeout + 0x0000000000000000 0x70 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_MultiProcessor_EnableMuteMode + 0x0000000000000000 0x70 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_MultiProcessor_DisableMuteMode + 0x0000000000000000 0x74 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_MultiProcessor_EnterMuteMode + 0x0000000000000000 0x20 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_HalfDuplex_EnableTransmitter + 0x0000000000000000 0xa0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_HalfDuplex_EnableReceiver + 0x0000000000000000 0xa0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_LIN_SendBreak + 0x0000000000000000 0x4c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_UART_GetState + 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.HAL_UART_GetError + 0x0000000000000000 0x16 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.UART_Start_Receive_IT + 0x0000000000000000 0x160 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.UART_Start_Receive_DMA + 0x0000000000000000 0x144 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.UART_EndTxTransfer + 0x0000000000000000 0x48 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.UART_EndRxTransfer + 0x0000000000000000 0xc4 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.UART_DMATransmitCplt + 0x0000000000000000 0x98 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.UART_DMATxHalfCplt + 0x0000000000000000 0x1e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.UART_DMAReceiveCplt + 0x0000000000000000 0x128 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.UART_DMARxHalfCplt + 0x0000000000000000 0x3c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.UART_DMAError + 0x0000000000000000 0x82 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.UART_DMAAbortOnError + 0x0000000000000000 0x2e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.UART_DMATxAbortCallback + 0x0000000000000000 0x6c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.UART_DMARxAbortCallback + 0x0000000000000000 0x7c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.UART_DMATxOnlyAbortCallback + 0x0000000000000000 0x2c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.UART_DMARxOnlyAbortCallback + 0x0000000000000000 0x4a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.UART_TxISR_8BIT + 0x0000000000000000 0xb2 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.UART_TxISR_16BIT + 0x0000000000000000 0xbc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.UART_EndTransmit_IT + 0x0000000000000000 0x56 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.UART_RxISR_8BIT + 0x0000000000000000 0x168 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .text.UART_RxISR_16BIT + 0x0000000000000000 0x168 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0xa7e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0x125 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0x8e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0x51 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0x103 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0x6a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0x1df ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0xb5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0x3ad ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0x7f00 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0x66 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0x355c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0x174 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0x5b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0x8b5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0x474 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0x189 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0x13f ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0x10d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0x82 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0x28e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0x129 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0x244 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0x22c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0x5b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0xa5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0x18d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0x16 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0x773 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0xc6 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0x5ba ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0x44 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x0000000000000000 0x12a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .group 0x0000000000000000 0xc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .text 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .data 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .bss 0x0000000000000000 0x0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .text.HAL_UARTEx_WakeupCallback + 0x0000000000000000 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .text.HAL_UARTEx_EnableClockStopMode + 0x0000000000000000 0x64 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .text.HAL_UARTEx_DisableClockStopMode + 0x0000000000000000 0x68 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .text.HAL_MultiProcessorEx_AddressLength_Set + 0x0000000000000000 0x62 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .text.HAL_UARTEx_StopModeWakeUpSourceConfig + 0x0000000000000000 0xcc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .text.HAL_UARTEx_EnableStopMode + 0x0000000000000000 0x62 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .text.HAL_UARTEx_DisableStopMode + 0x0000000000000000 0x62 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .text.HAL_UARTEx_ReceiveToIdle + 0x0000000000000000 0x248 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .text.HAL_UARTEx_ReceiveToIdle_IT + 0x0000000000000000 0xde ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .text.HAL_UARTEx_ReceiveToIdle_DMA + 0x0000000000000000 0xde ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .text.UARTEx_Wakeup_AddressConfig + 0x0000000000000000 0x48 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0xa7e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0x125 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0x2e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0x8e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0x51 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0x103 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0x6a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0x1df ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0x1c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0x22 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0xb5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0x3ad ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0x7f00 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0x66 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0x355c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0x174 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0x5b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0x8b5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0x474 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0x189 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0x13f ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0x10d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0x82 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0x28e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0x129 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0x244 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0x22c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0x5b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0xa5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0x18d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0x16 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0x773 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0xc6 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0x5ba ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0x44 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_macro 0x0000000000000000 0x12a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .text 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-errno.o) + .data 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-errno.o) + .bss 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-errno.o) + .text.__errno 0x0000000000000000 0xc /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-errno.o) + .debug_frame 0x0000000000000000 0x20 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-errno.o) + .ARM.attributes + 0x0000000000000000 0x2c /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-errno.o) + .text 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-exit.o) + .data 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-exit.o) + .bss 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-exit.o) + .text.exit 0x0000000000000000 0x2c /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-exit.o) + .debug_frame 0x0000000000000000 0x28 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-exit.o) + .ARM.attributes + 0x0000000000000000 0x2c /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-exit.o) + .text 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-impure.o) + .data 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-impure.o) + .bss 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-impure.o) + .data._impure_ptr + 0x0000000000000000 0x4 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-impure.o) + .data.impure_data + 0x0000000000000000 0x60 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-impure.o) + .rodata._global_impure_ptr + 0x0000000000000000 0x4 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-impure.o) + .ARM.attributes + 0x0000000000000000 0x2c /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-impure.o) + .text 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-init.o) + .data 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-init.o) + .bss 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-init.o) + .text 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-memset.o) + .data 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-memset.o) + .bss 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-memset.o) + .data 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_udivsi3.o) + .bss 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_udivsi3.o) + .data 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_dvmd_tls.o) + .bss 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_dvmd_tls.o) + .data 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .bss 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .data 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_muldi3.o) + .bss 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_muldi3.o) + .data 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_udivmoddi4.o) + .bss 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_udivmoddi4.o) + .ARM.extab 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_udivmoddi4.o) + .data 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_clzdi2.o) + .bss 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_clzdi2.o) + .data 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_clzsi2.o) + .bss 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_clzsi2.o) + .text 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/crtend.o + .data 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/crtend.o + .bss 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/crtend.o + .eh_frame 0x0000000000000000 0x4 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/crtend.o + .ARM.attributes + 0x0000000000000000 0x2c /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/crtend.o + .text 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/crtn.o + .data 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/crtn.o + .bss 0x0000000000000000 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/crtn.o + +Memory Configuration + +Name Origin Length Attributes +RAM 0x0000000020000000 0x0000000000002000 xrw +FLASH 0x0000000008000000 0x0000000000008000 xr +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + +LOAD /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/crti.o +LOAD /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/crtbegin.o +LOAD /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/crt0.o +LOAD ./Core/Src/config.o +LOAD ./Core/Src/crc8.o +LOAD ./Core/Src/i2c.o +LOAD ./Core/Src/main.o +LOAD ./Core/Src/modbus.o +LOAD ./Core/Src/rgb_led.o +LOAD ./Core/Src/scd4x.o +LOAD ./Core/Src/sht4x.o +LOAD ./Core/Src/sps30.o +LOAD ./Core/Src/stm32l0xx_hal_msp.o +LOAD ./Core/Src/stm32l0xx_it.o +LOAD ./Core/Src/syscalls.o +LOAD ./Core/Src/sysmem.o +LOAD ./Core/Src/system_stm32l0xx.o +LOAD ./Core/Startup/startup_stm32l031g6ux.o +LOAD ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o +LOAD ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o +LOAD ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o +LOAD ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o +LOAD ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o +LOAD ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o +LOAD ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o +LOAD ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o +LOAD ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o +LOAD ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o +LOAD ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o +LOAD ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o +LOAD ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o +LOAD ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o +LOAD ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o +LOAD ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o +LOAD ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o +LOAD ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o +START GROUP +LOAD /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a +LOAD /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libm.a +END GROUP +START GROUP +LOAD /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a +LOAD /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a +END GROUP +START GROUP +LOAD /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a +LOAD /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a +LOAD /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libnosys.a +END GROUP +START GROUP +LOAD /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a +LOAD /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a +LOAD /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libnosys.a +END GROUP +LOAD /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/crtend.o +LOAD /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/crtn.o + 0x0000000020002000 _estack = (ORIGIN (RAM) + LENGTH (RAM)) + 0x0000000000000200 _Min_Heap_Size = 0x200 + 0x0000000000000400 _Min_Stack_Size = 0x400 + +.isr_vector 0x0000000008000000 0xc0 + 0x0000000008000000 . = ALIGN (0x4) + *(.isr_vector) + .isr_vector 0x0000000008000000 0xc0 ./Core/Startup/startup_stm32l031g6ux.o + 0x0000000008000000 g_pfnVectors + 0x00000000080000c0 . = ALIGN (0x4) + +.text 0x00000000080000c0 0x4288 + 0x00000000080000c0 . = ALIGN (0x4) + *(.text) + .text 0x00000000080000c0 0x48 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/crtbegin.o + .text 0x0000000008000108 0x114 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_udivsi3.o) + 0x0000000008000108 __udivsi3 + 0x0000000008000108 __aeabi_uidiv + 0x0000000008000214 __aeabi_uidivmod + .text 0x000000000800021c 0x4 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_dvmd_tls.o) + 0x000000000800021c __aeabi_ldiv0 + 0x000000000800021c __aeabi_idiv0 + .text 0x0000000008000220 0x40 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_aeabi_uldivmod.o) + 0x0000000008000220 __aeabi_uldivmod + .text 0x0000000008000260 0x50 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_muldi3.o) + 0x0000000008000260 __aeabi_lmul + 0x0000000008000260 __muldi3 + .text 0x00000000080002b0 0x198 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_udivmoddi4.o) + 0x00000000080002b0 __udivmoddi4 + .text 0x0000000008000448 0x18 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_clzdi2.o) + 0x0000000008000448 __clzdi2 + .text 0x0000000008000460 0x3c /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_clzsi2.o) + 0x0000000008000460 __clzsi2 + *(.text*) + .text.i2c_init + 0x000000000800049c 0x3c ./Core/Src/i2c.o + 0x000000000800049c i2c_init + .text.i2c_transmit + 0x00000000080004d8 0x4c ./Core/Src/i2c.o + 0x00000000080004d8 i2c_transmit + .text.i2c_receive + 0x0000000008000524 0x4c ./Core/Src/i2c.o + 0x0000000008000524 i2c_receive + .text.i2c_transmit_receive + 0x0000000008000570 0x6c ./Core/Src/i2c.o + 0x0000000008000570 i2c_transmit_receive + .text.main 0x00000000080005dc 0x84 ./Core/Src/main.o + 0x00000000080005dc main + .text.SystemClock_Config + 0x0000000008000660 0xe8 ./Core/Src/main.o + 0x0000000008000660 SystemClock_Config + .text.MX_I2C1_Init + 0x0000000008000748 0x80 ./Core/Src/main.o + .text.MX_TIM2_Init + 0x00000000080007c8 0x10c ./Core/Src/main.o + .text.MX_TIM21_Init + 0x00000000080008d4 0xb4 ./Core/Src/main.o + .text.MX_TIM22_Init + 0x0000000008000988 0x130 ./Core/Src/main.o + .text.MX_USART2_UART_Init + 0x0000000008000ab8 0x68 ./Core/Src/main.o + .text.MX_GPIO_Init + 0x0000000008000b20 0x2c ./Core/Src/main.o + .text.Error_Handler + 0x0000000008000b4c 0xa ./Core/Src/main.o + 0x0000000008000b4c Error_Handler + .text.scd4x_send_cmd + 0x0000000008000b56 0x4c ./Core/Src/scd4x.o + 0x0000000008000b56 scd4x_send_cmd + *fill* 0x0000000008000ba2 0x2 + .text.scd4x_start_periodic_measurement + 0x0000000008000ba4 0x18 ./Core/Src/scd4x.o + 0x0000000008000ba4 scd4x_start_periodic_measurement + .text.scd4x_read_measurement + 0x0000000008000bbc 0xd0 ./Core/Src/scd4x.o + 0x0000000008000bbc scd4x_read_measurement + .text.sht4x_measure + 0x0000000008000c8c 0xcc ./Core/Src/sht4x.o + 0x0000000008000c8c sht4x_measure + .text.HAL_MspInit + 0x0000000008000d58 0x28 ./Core/Src/stm32l0xx_hal_msp.o + 0x0000000008000d58 HAL_MspInit + .text.HAL_I2C_MspInit + 0x0000000008000d80 0x88 ./Core/Src/stm32l0xx_hal_msp.o + 0x0000000008000d80 HAL_I2C_MspInit + .text.HAL_TIM_Base_MspInit + 0x0000000008000e08 0x64 ./Core/Src/stm32l0xx_hal_msp.o + 0x0000000008000e08 HAL_TIM_Base_MspInit + .text.HAL_TIM_MspPostInit + 0x0000000008000e6c 0xcc ./Core/Src/stm32l0xx_hal_msp.o + 0x0000000008000e6c HAL_TIM_MspPostInit + .text.HAL_UART_MspInit + 0x0000000008000f38 0x88 ./Core/Src/stm32l0xx_hal_msp.o + 0x0000000008000f38 HAL_UART_MspInit + .text.NMI_Handler + 0x0000000008000fc0 0x6 ./Core/Src/stm32l0xx_it.o + 0x0000000008000fc0 NMI_Handler + .text.HardFault_Handler + 0x0000000008000fc6 0x6 ./Core/Src/stm32l0xx_it.o + 0x0000000008000fc6 HardFault_Handler + .text.SVC_Handler + 0x0000000008000fcc 0xa ./Core/Src/stm32l0xx_it.o + 0x0000000008000fcc SVC_Handler + .text.PendSV_Handler + 0x0000000008000fd6 0xa ./Core/Src/stm32l0xx_it.o + 0x0000000008000fd6 PendSV_Handler + .text.SysTick_Handler + 0x0000000008000fe0 0xe ./Core/Src/stm32l0xx_it.o + 0x0000000008000fe0 SysTick_Handler + .text.SystemInit + 0x0000000008000fee 0xa ./Core/Src/system_stm32l0xx.o + 0x0000000008000fee SystemInit + .text.Reset_Handler + 0x0000000008000ff8 0x50 ./Core/Startup/startup_stm32l031g6ux.o + 0x0000000008000ff8 Reset_Handler + .text.Default_Handler + 0x0000000008001048 0x2 ./Core/Startup/startup_stm32l031g6ux.o + 0x0000000008001048 ADC1_COMP_IRQHandler + 0x0000000008001048 PVD_IRQHandler + 0x0000000008001048 I2C1_IRQHandler + 0x0000000008001048 SPI1_IRQHandler + 0x0000000008001048 EXTI2_3_IRQHandler + 0x0000000008001048 RTC_IRQHandler + 0x0000000008001048 DMA1_Channel4_5_6_7_IRQHandler + 0x0000000008001048 EXTI4_15_IRQHandler + 0x0000000008001048 RCC_IRQHandler + 0x0000000008001048 DMA1_Channel1_IRQHandler + 0x0000000008001048 Default_Handler + 0x0000000008001048 TIM22_IRQHandler + 0x0000000008001048 EXTI0_1_IRQHandler + 0x0000000008001048 TIM21_IRQHandler + 0x0000000008001048 WWDG_IRQHandler + 0x0000000008001048 LPUART1_IRQHandler + 0x0000000008001048 TIM2_IRQHandler + 0x0000000008001048 DMA1_Channel2_3_IRQHandler + 0x0000000008001048 USART2_IRQHandler + 0x0000000008001048 FLASH_IRQHandler + 0x0000000008001048 LPTIM1_IRQHandler + *fill* 0x000000000800104a 0x2 + .text.HAL_Init + 0x000000000800104c 0x40 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + 0x000000000800104c HAL_Init + .text.HAL_InitTick + 0x000000000800108c 0x68 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + 0x000000000800108c HAL_InitTick + .text.HAL_IncTick + 0x00000000080010f4 0x24 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + 0x00000000080010f4 HAL_IncTick + .text.HAL_GetTick + 0x0000000008001118 0x14 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + 0x0000000008001118 HAL_GetTick + .text.HAL_Delay + 0x000000000800112c 0x48 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + 0x000000000800112c HAL_Delay + .text.__NVIC_SetPriority + 0x0000000008001174 0xdc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .text.SysTick_Config + 0x0000000008001250 0x48 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .text.HAL_NVIC_SetPriority + 0x0000000008001298 0x2a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + 0x0000000008001298 HAL_NVIC_SetPriority + .text.HAL_SYSTICK_Config + 0x00000000080012c2 0x1a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + 0x00000000080012c2 HAL_SYSTICK_Config + .text.HAL_GPIO_Init + 0x00000000080012dc 0x2dc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + 0x00000000080012dc HAL_GPIO_Init + .text.HAL_I2C_Init + 0x00000000080015b8 0x12c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + 0x00000000080015b8 HAL_I2C_Init + .text.HAL_I2C_Master_Transmit + 0x00000000080016e4 0x210 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + 0x00000000080016e4 HAL_I2C_Master_Transmit + .text.HAL_I2C_Master_Receive + 0x00000000080018f4 0x210 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + 0x00000000080018f4 HAL_I2C_Master_Receive + .text.HAL_I2C_Mem_Read + 0x0000000008001b04 0x268 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + 0x0000000008001b04 HAL_I2C_Mem_Read + .text.I2C_RequestMemoryRead + 0x0000000008001d6c 0xc4 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.I2C_Flush_TXDR + 0x0000000008001e30 0x44 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.I2C_WaitOnFlagUntilTimeout + 0x0000000008001e74 0x7e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.I2C_WaitOnTXISFlagUntilTimeout + 0x0000000008001ef2 0x7e ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.I2C_WaitOnSTOPFlagUntilTimeout + 0x0000000008001f70 0x78 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.I2C_WaitOnRXNEFlagUntilTimeout + 0x0000000008001fe8 0xd8 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.I2C_IsAcknowledgeFailed + 0x00000000080020c0 0xf4 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.I2C_TransferConfig + 0x00000000080021b4 0x6c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .text.HAL_I2CEx_ConfigAnalogFilter + 0x0000000008002220 0x98 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + 0x0000000008002220 HAL_I2CEx_ConfigAnalogFilter + .text.HAL_I2CEx_ConfigDigitalFilter + 0x00000000080022b8 0x98 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + 0x00000000080022b8 HAL_I2CEx_ConfigDigitalFilter + .text.HAL_RCC_OscConfig + 0x0000000008002350 0x6f8 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + 0x0000000008002350 HAL_RCC_OscConfig + .text.HAL_RCC_ClockConfig + 0x0000000008002a48 0x290 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + 0x0000000008002a48 HAL_RCC_ClockConfig + .text.HAL_RCC_GetSysClockFreq + 0x0000000008002cd8 0x14c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + 0x0000000008002cd8 HAL_RCC_GetSysClockFreq + .text.HAL_RCC_GetHCLKFreq + 0x0000000008002e24 0x14 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + 0x0000000008002e24 HAL_RCC_GetHCLKFreq + .text.HAL_RCC_GetPCLK1Freq + 0x0000000008002e38 0x2c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + 0x0000000008002e38 HAL_RCC_GetPCLK1Freq + .text.HAL_RCC_GetPCLK2Freq + 0x0000000008002e64 0x2c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + 0x0000000008002e64 HAL_RCC_GetPCLK2Freq + .text.HAL_RCCEx_PeriphCLKConfig + 0x0000000008002e90 0x24c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + 0x0000000008002e90 HAL_RCCEx_PeriphCLKConfig + .text.HAL_TIM_Base_Init + 0x00000000080030dc 0x80 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + 0x00000000080030dc HAL_TIM_Base_Init + .text.HAL_TIM_PWM_Init + 0x000000000800315c 0x80 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + 0x000000000800315c HAL_TIM_PWM_Init + .text.HAL_TIM_PWM_MspInit + 0x00000000080031dc 0x10 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + 0x00000000080031dc HAL_TIM_PWM_MspInit + .text.HAL_TIM_PWM_ConfigChannel + 0x00000000080031ec 0x18c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + 0x00000000080031ec HAL_TIM_PWM_ConfigChannel + .text.HAL_TIM_ConfigClockSource + 0x0000000008003378 0x1a8 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + 0x0000000008003378 HAL_TIM_ConfigClockSource + .text.TIM_Base_SetConfig + 0x0000000008003520 0xa8 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.TIM_OC1_SetConfig + 0x00000000080035c8 0x78 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.TIM_OC2_SetConfig + 0x0000000008003640 0x84 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.TIM_OC3_SetConfig + 0x00000000080036c4 0x80 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.TIM_OC4_SetConfig + 0x0000000008003744 0x8c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.TIM_TI1_ConfigInputStage + 0x00000000080037d0 0x5c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.TIM_TI2_ConfigInputStage + 0x000000000800382c 0x64 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.TIM_ITRx_SetConfig + 0x0000000008003890 0x32 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + *fill* 0x00000000080038c2 0x2 + .text.TIM_ETR_SetConfig + 0x00000000080038c4 0x40 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .text.HAL_TIMEx_MasterConfigSynchronization + 0x0000000008003904 0xb0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + 0x0000000008003904 HAL_TIMEx_MasterConfigSynchronization + .text.UART_SetConfig + 0x00000000080039b4 0x4c4 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + 0x00000000080039b4 UART_SetConfig + .text.UART_AdvFeatureConfig + 0x0000000008003e78 0x168 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + 0x0000000008003e78 UART_AdvFeatureConfig + .text.UART_CheckIdleState + 0x0000000008003fe0 0x90 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + 0x0000000008003fe0 UART_CheckIdleState + .text.UART_WaitOnFlagUntilTimeout + 0x0000000008004070 0x188 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + 0x0000000008004070 UART_WaitOnFlagUntilTimeout + .text.HAL_RS485Ex_Init + 0x00000000080041f8 0xe0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + 0x00000000080041f8 HAL_RS485Ex_Init + .text.__libc_init_array + 0x00000000080042d8 0x48 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-init.o) + 0x00000000080042d8 __libc_init_array + .text.memset 0x0000000008004320 0x10 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-memset.o) + 0x0000000008004320 memset + *(.glue_7) + .glue_7 0x0000000008004330 0x0 linker stubs + *(.glue_7t) + .glue_7t 0x0000000008004330 0x0 linker stubs + *(.eh_frame) + .eh_frame 0x0000000008004330 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/crtbegin.o + *(.init) + .init 0x0000000008004330 0x4 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/crti.o + 0x0000000008004330 _init + .init 0x0000000008004334 0x8 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/crtn.o + *(.fini) + .fini 0x000000000800433c 0x4 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/crti.o + 0x000000000800433c _fini + .fini 0x0000000008004340 0x8 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/crtn.o + 0x0000000008004348 . = ALIGN (0x4) + 0x0000000008004348 _etext = . + +.vfp11_veneer 0x0000000008004348 0x0 + .vfp11_veneer 0x0000000008004348 0x0 linker stubs + +.v4_bx 0x0000000008004348 0x0 + .v4_bx 0x0000000008004348 0x0 linker stubs + +.iplt 0x0000000008004348 0x0 + .iplt 0x0000000008004348 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/crtbegin.o + +.rodata 0x0000000008004348 0x6c + 0x0000000008004348 . = ALIGN (0x4) + *(.rodata) + *(.rodata*) + .rodata.AHBPrescTable + 0x0000000008004348 0x10 ./Core/Src/system_stm32l0xx.o + 0x0000000008004348 AHBPrescTable + .rodata.APBPrescTable + 0x0000000008004358 0x8 ./Core/Src/system_stm32l0xx.o + 0x0000000008004358 APBPrescTable + .rodata.PLLMulTable + 0x0000000008004360 0x9 ./Core/Src/system_stm32l0xx.o + 0x0000000008004360 PLLMulTable + *fill* 0x0000000008004369 0x3 + .rodata.UART_SetConfig + 0x000000000800436c 0x48 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + 0x00000000080043b4 . = ALIGN (0x4) + +.ARM.extab 0x00000000080043b4 0x0 + 0x00000000080043b4 . = ALIGN (0x4) + *(.ARM.extab* .gnu.linkonce.armextab.*) + 0x00000000080043b4 . = ALIGN (0x4) + +.ARM 0x00000000080043b4 0x8 + 0x00000000080043b4 . = ALIGN (0x4) + 0x00000000080043b4 __exidx_start = . + *(.ARM.exidx*) + .ARM.exidx 0x00000000080043b4 0x8 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_udivmoddi4.o) + 0x00000000080043bc __exidx_end = . + 0x00000000080043bc . = ALIGN (0x4) + +.rel.dyn 0x00000000080043bc 0x0 + .rel.iplt 0x00000000080043bc 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/crtbegin.o + +.preinit_array 0x00000000080043bc 0x0 + 0x00000000080043bc . = ALIGN (0x4) + 0x00000000080043bc PROVIDE (__preinit_array_start = .) + *(.preinit_array*) + 0x00000000080043bc PROVIDE (__preinit_array_end = .) + 0x00000000080043bc . = ALIGN (0x4) + +.init_array 0x00000000080043bc 0x4 + 0x00000000080043bc . = ALIGN (0x4) + 0x00000000080043bc PROVIDE (__init_array_start = .) + *(SORT_BY_NAME(.init_array.*)) + *(.init_array*) + .init_array 0x00000000080043bc 0x4 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/crtbegin.o + 0x00000000080043c0 PROVIDE (__init_array_end = .) + 0x00000000080043c0 . = ALIGN (0x4) + +.fini_array 0x00000000080043c0 0x4 + 0x00000000080043c0 . = ALIGN (0x4) + [!provide] PROVIDE (__fini_array_start = .) + *(SORT_BY_NAME(.fini_array.*)) + *(.fini_array*) + .fini_array 0x00000000080043c0 0x4 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/crtbegin.o + [!provide] PROVIDE (__fini_array_end = .) + 0x00000000080043c4 . = ALIGN (0x4) + 0x00000000080043c4 _sidata = LOADADDR (.data) + +.data 0x0000000020000000 0xc load address 0x00000000080043c4 + 0x0000000020000000 . = ALIGN (0x4) + 0x0000000020000000 _sdata = . + *(.data) + *(.data*) + .data.SystemCoreClock + 0x0000000020000000 0x4 ./Core/Src/system_stm32l0xx.o + 0x0000000020000000 SystemCoreClock + .data.uwTickPrio + 0x0000000020000004 0x4 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + 0x0000000020000004 uwTickPrio + .data.uwTickFreq + 0x0000000020000008 0x1 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + 0x0000000020000008 uwTickFreq + *(.RamFunc) + *(.RamFunc*) + 0x000000002000000c . = ALIGN (0x4) + *fill* 0x0000000020000009 0x3 + 0x000000002000000c _edata = . + +.igot.plt 0x000000002000000c 0x0 load address 0x00000000080043d0 + .igot.plt 0x000000002000000c 0x0 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/crtbegin.o + 0x000000002000000c . = ALIGN (0x4) + +.bss 0x000000002000000c 0x204 load address 0x00000000080043d0 + 0x000000002000000c _sbss = . + 0x000000002000000c __bss_start__ = _sbss + *(.bss) + .bss 0x000000002000000c 0x1c /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/crtbegin.o + *(.bss*) + .bss.led_pwm_pulse_r + 0x0000000020000028 0x2 ./Core/Src/main.o + 0x0000000020000028 led_pwm_pulse_r + .bss.led_pwm_pulse_g + 0x000000002000002a 0x2 ./Core/Src/main.o + 0x000000002000002a led_pwm_pulse_g + .bss.led_pwm_pulse_b + 0x000000002000002c 0x2 ./Core/Src/main.o + 0x000000002000002c led_pwm_pulse_b + *(COMMON) + *fill* 0x000000002000002e 0x2 + COMMON 0x0000000020000030 0x6 ./Core/Src/i2c.o + 0x0000000020000030 i2c_context + 0x0000000020000034 timeout + *fill* 0x0000000020000036 0x2 + COMMON 0x0000000020000038 0x1d4 ./Core/Src/main.o + 0x0000000020000038 T_SHT4x + 0x000000002000003c hi2c1 + 0x0000000020000088 data_registers_numbers + 0x000000002000008a identification_registers_numbers + 0x000000002000008c T_SCD4x + 0x0000000020000090 htim22 + 0x00000000200000d0 RH_SCD4x + 0x00000000200000d4 config_registers_numbers + 0x00000000200000d8 sensor_config + 0x00000000200000ec sps30_measured_data + 0x0000000020000100 htim2 + 0x0000000020000140 huart2 + 0x00000000200001c4 CO2 + 0x00000000200001c8 RH_SHT4x + 0x00000000200001cc htim21 + COMMON 0x000000002000020c 0x4 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + 0x000000002000020c uwTick + 0x0000000020000210 . = ALIGN (0x4) + 0x0000000020000210 _ebss = . + 0x0000000020000210 __bss_end__ = _ebss + +._user_heap_stack + 0x0000000020000210 0x600 load address 0x00000000080043d0 + 0x0000000020000210 . = ALIGN (0x8) + [!provide] PROVIDE (end = .) + 0x0000000020000210 PROVIDE (_end = .) + 0x0000000020000410 . = (. + _Min_Heap_Size) + *fill* 0x0000000020000210 0x200 + 0x0000000020000810 . = (. + _Min_Stack_Size) + *fill* 0x0000000020000410 0x400 + 0x0000000020000810 . = ALIGN (0x8) + +/DISCARD/ + libc.a(*) + libm.a(*) + libgcc.a(*) + +.ARM.attributes + 0x0000000000000000 0x28 + *(.ARM.attributes) + .ARM.attributes + 0x0000000000000000 0x1e /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/crti.o + .ARM.attributes + 0x000000000000001e 0x2c /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/crtbegin.o + .ARM.attributes + 0x000000000000004a 0x2c ./Core/Src/i2c.o + .ARM.attributes + 0x0000000000000076 0x2c ./Core/Src/main.o + .ARM.attributes + 0x00000000000000a2 0x2c ./Core/Src/scd4x.o + .ARM.attributes + 0x00000000000000ce 0x2c ./Core/Src/sht4x.o + .ARM.attributes + 0x00000000000000fa 0x2c ./Core/Src/stm32l0xx_hal_msp.o + .ARM.attributes + 0x0000000000000126 0x2c ./Core/Src/stm32l0xx_it.o + .ARM.attributes + 0x0000000000000152 0x2c ./Core/Src/system_stm32l0xx.o + .ARM.attributes + 0x000000000000017e 0x22 ./Core/Startup/startup_stm32l031g6ux.o + .ARM.attributes + 0x00000000000001a0 0x2c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .ARM.attributes + 0x00000000000001cc 0x2c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .ARM.attributes + 0x00000000000001f8 0x2c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .ARM.attributes + 0x0000000000000224 0x2c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .ARM.attributes + 0x0000000000000250 0x2c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .ARM.attributes + 0x000000000000027c 0x2c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .ARM.attributes + 0x00000000000002a8 0x2c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .ARM.attributes + 0x00000000000002d4 0x2c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .ARM.attributes + 0x0000000000000300 0x2c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .ARM.attributes + 0x000000000000032c 0x2c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .ARM.attributes + 0x0000000000000358 0x2c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .ARM.attributes + 0x0000000000000384 0x2c /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-init.o) + .ARM.attributes + 0x00000000000003b0 0x2c /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-memset.o) + .ARM.attributes + 0x00000000000003dc 0x1e /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_udivsi3.o) + .ARM.attributes + 0x00000000000003fa 0x1e /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_dvmd_tls.o) + .ARM.attributes + 0x0000000000000418 0x1e /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .ARM.attributes + 0x0000000000000436 0x2c /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_muldi3.o) + .ARM.attributes + 0x0000000000000462 0x2c /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_udivmoddi4.o) + .ARM.attributes + 0x000000000000048e 0x1e /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_clzdi2.o) + .ARM.attributes + 0x00000000000004ac 0x1e /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_clzsi2.o) + .ARM.attributes + 0x00000000000004ca 0x1e /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/crtn.o +OUTPUT(iaq_wired_sensor_hal.elf elf32-littlearm) +LOAD linker stubs +LOAD /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc.a +LOAD /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libm.a +LOAD /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a + +.debug_info 0x0000000000000000 0x10e4e + .debug_info 0x0000000000000000 0x8d3 ./Core/Src/i2c.o + .debug_info 0x00000000000008d3 0x1667 ./Core/Src/main.o + .debug_info 0x0000000000001f3a 0x422 ./Core/Src/scd4x.o + .debug_info 0x000000000000235c 0x3c2 ./Core/Src/sht4x.o + .debug_info 0x000000000000271e 0x11b8 ./Core/Src/stm32l0xx_hal_msp.o + .debug_info 0x00000000000038d6 0x278 ./Core/Src/stm32l0xx_it.o + .debug_info 0x0000000000003b4e 0x363 ./Core/Src/system_stm32l0xx.o + .debug_info 0x0000000000003eb1 0x22 ./Core/Startup/startup_stm32l031g6ux.o + .debug_info 0x0000000000003ed3 0x8b1 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_info 0x0000000000004784 0x7bf ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_info 0x0000000000004f43 0x787 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_info 0x00000000000056ca 0x21c3 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_info 0x000000000000788d 0x9c1 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_info 0x000000000000824e 0x9b7 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_info 0x0000000000008c05 0x567 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_info 0x000000000000916c 0x2a96 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_info 0x000000000000bc02 0x7d8 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_info 0x000000000000c3da 0x3ca7 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_info 0x0000000000010081 0xdcd ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + +.debug_abbrev 0x0000000000000000 0x2405 + .debug_abbrev 0x0000000000000000 0x1bf ./Core/Src/i2c.o + .debug_abbrev 0x00000000000001bf 0x27f ./Core/Src/main.o + .debug_abbrev 0x000000000000043e 0x15c ./Core/Src/scd4x.o + .debug_abbrev 0x000000000000059a 0x137 ./Core/Src/sht4x.o + .debug_abbrev 0x00000000000006d1 0x229 ./Core/Src/stm32l0xx_hal_msp.o + .debug_abbrev 0x00000000000008fa 0xd7 ./Core/Src/stm32l0xx_it.o + .debug_abbrev 0x00000000000009d1 0x145 ./Core/Src/system_stm32l0xx.o + .debug_abbrev 0x0000000000000b16 0x12 ./Core/Startup/startup_stm32l031g6ux.o + .debug_abbrev 0x0000000000000b28 0x267 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_abbrev 0x0000000000000d8f 0x28b ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_abbrev 0x000000000000101a 0x1e8 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_abbrev 0x0000000000001202 0x267 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_abbrev 0x0000000000001469 0x1d4 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_abbrev 0x000000000000163d 0x246 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_abbrev 0x0000000000001883 0x1ef ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_abbrev 0x0000000000001a72 0x26f ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_abbrev 0x0000000000001ce1 0x1c2 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_abbrev 0x0000000000001ea3 0x2c2 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_abbrev 0x0000000000002165 0x2a0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + +.debug_aranges 0x0000000000000000 0xe68 + .debug_aranges + 0x0000000000000000 0x38 ./Core/Src/i2c.o + .debug_aranges + 0x0000000000000038 0x60 ./Core/Src/main.o + .debug_aranges + 0x0000000000000098 0x48 ./Core/Src/scd4x.o + .debug_aranges + 0x00000000000000e0 0x30 ./Core/Src/sht4x.o + .debug_aranges + 0x0000000000000110 0x58 ./Core/Src/stm32l0xx_hal_msp.o + .debug_aranges + 0x0000000000000168 0x40 ./Core/Src/stm32l0xx_it.o + .debug_aranges + 0x00000000000001a8 0x28 ./Core/Src/system_stm32l0xx.o + .debug_aranges + 0x00000000000001d0 0x28 ./Core/Startup/startup_stm32l031g6ux.o + .debug_aranges + 0x00000000000001f8 0x110 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_aranges + 0x0000000000000308 0xc0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_aranges + 0x00000000000003c8 0x58 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_aranges + 0x0000000000000420 0x290 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_aranges + 0x00000000000006b0 0x48 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_aranges + 0x00000000000006f8 0x80 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_aranges + 0x0000000000000778 0x58 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_aranges + 0x00000000000007d0 0x3d0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_aranges + 0x0000000000000ba0 0x28 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_aranges + 0x0000000000000bc8 0x228 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_aranges + 0x0000000000000df0 0x78 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + +.debug_ranges 0x0000000000000000 0xd70 + .debug_ranges 0x0000000000000000 0x28 ./Core/Src/i2c.o + .debug_ranges 0x0000000000000028 0x50 ./Core/Src/main.o + .debug_ranges 0x0000000000000078 0x38 ./Core/Src/scd4x.o + .debug_ranges 0x00000000000000b0 0x20 ./Core/Src/sht4x.o + .debug_ranges 0x00000000000000d0 0x48 ./Core/Src/stm32l0xx_hal_msp.o + .debug_ranges 0x0000000000000118 0x30 ./Core/Src/stm32l0xx_it.o + .debug_ranges 0x0000000000000148 0x18 ./Core/Src/system_stm32l0xx.o + .debug_ranges 0x0000000000000160 0x20 ./Core/Startup/startup_stm32l031g6ux.o + .debug_ranges 0x0000000000000180 0x100 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_ranges 0x0000000000000280 0xb0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_ranges 0x0000000000000330 0x48 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_ranges 0x0000000000000378 0x280 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_ranges 0x00000000000005f8 0x38 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_ranges 0x0000000000000630 0x70 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_ranges 0x00000000000006a0 0x48 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_ranges 0x00000000000006e8 0x3c0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_ranges 0x0000000000000aa8 0x18 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_ranges 0x0000000000000ac0 0x248 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_ranges 0x0000000000000d08 0x68 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + +.debug_macro 0x0000000000000000 0x25fe + .debug_macro 0x0000000000000000 0x22d ./Core/Src/i2c.o + .debug_macro 0x000000000000022d 0x16 ./Core/Src/i2c.o + .debug_macro 0x0000000000000243 0x1c ./Core/Src/i2c.o + .debug_macro 0x000000000000025f 0x22 ./Core/Src/i2c.o + .debug_macro 0x0000000000000281 0x22 ./Core/Src/i2c.o + .debug_macro 0x00000000000002a3 0x5e ./Core/Src/i2c.o + .debug_macro 0x0000000000000301 0x130 ./Core/Src/i2c.o + .debug_macro 0x0000000000000431 0x28 ./Core/Src/i2c.o + .debug_macro 0x0000000000000459 0x22d ./Core/Src/main.o + .debug_macro 0x0000000000000686 0x23b ./Core/Src/scd4x.o + .debug_macro 0x00000000000008c1 0x1c ./Core/Src/scd4x.o + .debug_macro 0x00000000000008dd 0x23b ./Core/Src/sht4x.o + .debug_macro 0x0000000000000b18 0x22d ./Core/Src/stm32l0xx_hal_msp.o + .debug_macro 0x0000000000000d45 0x237 ./Core/Src/stm32l0xx_it.o + .debug_macro 0x0000000000000f7c 0x1c4 ./Core/Src/system_stm32l0xx.o + .debug_macro 0x0000000000001140 0x1e8 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_macro 0x0000000000001328 0x1c4 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_macro 0x00000000000014ec 0x1cb ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_macro 0x00000000000016b7 0x289 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_macro 0x0000000000001940 0x1c4 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_macro 0x0000000000001b04 0x1fa ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_macro 0x0000000000001cfe 0x1c4 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_macro 0x0000000000001ec2 0x1c5 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_macro 0x0000000000002087 0x1c4 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_macro 0x000000000000224b 0x1ef ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_macro 0x000000000000243a 0x1c4 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + +.debug_line 0x0000000000000000 0x11bbb + .debug_line 0x0000000000000000 0x77b ./Core/Src/i2c.o + .debug_line 0x000000000000077b 0x9a3 ./Core/Src/main.o + .debug_line 0x000000000000111e 0x802 ./Core/Src/scd4x.o + .debug_line 0x0000000000001920 0x7a9 ./Core/Src/sht4x.o + .debug_line 0x00000000000020c9 0x885 ./Core/Src/stm32l0xx_hal_msp.o + .debug_line 0x000000000000294e 0x787 ./Core/Src/stm32l0xx_it.o + .debug_line 0x00000000000030d5 0x77a ./Core/Src/system_stm32l0xx.o + .debug_line 0x000000000000384f 0x89 ./Core/Startup/startup_stm32l031g6ux.o + .debug_line 0x00000000000038d8 0xa1d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_line 0x00000000000042f5 0x9f4 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_line 0x0000000000004ce9 0xa99 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_line 0x0000000000005782 0x3294 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_line 0x0000000000008a16 0x8e7 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_line 0x00000000000092fd 0xe5d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_line 0x000000000000a15a 0xa3d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_line 0x000000000000ab97 0x2ec1 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_line 0x000000000000da58 0x797 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_line 0x000000000000e1ef 0x2d38 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_line 0x0000000000010f27 0xc94 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + +.debug_str 0x0000000000000000 0x6c093 + .debug_str 0x0000000000000000 0x67c82 ./Core/Src/i2c.o + 0x68008 (size before relaxing) + .debug_str 0x0000000000067c82 0xc05 ./Core/Src/main.o + 0x68c0a (size before relaxing) + .debug_str 0x0000000000068887 0x191 ./Core/Src/scd4x.o + 0x67c5e (size before relaxing) + .debug_str 0x0000000000068a18 0x162 ./Core/Src/sht4x.o + 0x67c73 (size before relaxing) + .debug_str 0x0000000000068b7a 0x134 ./Core/Src/stm32l0xx_hal_msp.o + 0x685ea (size before relaxing) + .debug_str 0x0000000000068cae 0x76 ./Core/Src/stm32l0xx_it.o + 0x67b1a (size before relaxing) + .debug_str 0x0000000000068d24 0x61 ./Core/Src/system_stm32l0xx.o + 0x66f47 (size before relaxing) + .debug_str 0x0000000000068d85 0x36 ./Core/Startup/startup_stm32l031g6ux.o + 0x7d (size before relaxing) + .debug_str 0x0000000000068dbb 0x50c ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + 0x67572 (size before relaxing) + .debug_str 0x00000000000692c7 0x203 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + 0x6728a (size before relaxing) + .debug_str 0x00000000000694ca 0x153 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + 0x67131 (size before relaxing) + .debug_str 0x000000000006961d 0xd46 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + 0x681b4 (size before relaxing) + .debug_str 0x000000000006a363 0xb8 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + 0x674f7 (size before relaxing) + .debug_str 0x000000000006a41b 0x2d2 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + 0x67416 (size before relaxing) + .debug_str 0x000000000006a6ed 0x13a ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + 0x6714a (size before relaxing) + .debug_str 0x000000000006a827 0xd59 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + 0x68237 (size before relaxing) + .debug_str 0x000000000006b580 0x7d ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + 0x6740e (size before relaxing) + .debug_str 0x000000000006b5fd 0x8b9 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + 0x67c6e (size before relaxing) + .debug_str 0x000000000006beb6 0x1dd ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + 0x67508 (size before relaxing) + +.comment 0x0000000000000000 0x53 + .comment 0x0000000000000000 0x53 ./Core/Src/i2c.o + 0x54 (size before relaxing) + .comment 0x0000000000000053 0x54 ./Core/Src/main.o + .comment 0x0000000000000053 0x54 ./Core/Src/scd4x.o + .comment 0x0000000000000053 0x54 ./Core/Src/sht4x.o + .comment 0x0000000000000053 0x54 ./Core/Src/stm32l0xx_hal_msp.o + .comment 0x0000000000000053 0x54 ./Core/Src/stm32l0xx_it.o + .comment 0x0000000000000053 0x54 ./Core/Src/system_stm32l0xx.o + .comment 0x0000000000000053 0x54 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .comment 0x0000000000000053 0x54 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .comment 0x0000000000000053 0x54 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .comment 0x0000000000000053 0x54 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .comment 0x0000000000000053 0x54 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .comment 0x0000000000000053 0x54 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .comment 0x0000000000000053 0x54 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .comment 0x0000000000000053 0x54 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .comment 0x0000000000000053 0x54 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .comment 0x0000000000000053 0x54 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .comment 0x0000000000000053 0x54 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + +.debug_frame 0x0000000000000000 0x33cc + .debug_frame 0x0000000000000000 0x94 ./Core/Src/i2c.o + .debug_frame 0x0000000000000094 0x120 ./Core/Src/main.o + .debug_frame 0x00000000000001b4 0xc8 ./Core/Src/scd4x.o + .debug_frame 0x000000000000027c 0x70 ./Core/Src/sht4x.o + .debug_frame 0x00000000000002ec 0x10c ./Core/Src/stm32l0xx_hal_msp.o + .debug_frame 0x00000000000003f8 0x9c ./Core/Src/stm32l0xx_it.o + .debug_frame 0x0000000000000494 0x4c ./Core/Src/system_stm32l0xx.o + .debug_frame 0x00000000000004e0 0x394 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o + .debug_frame 0x0000000000000874 0x2a0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o + .debug_frame 0x0000000000000b14 0x110 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o + .debug_frame 0x0000000000000c24 0xa24 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o + .debug_frame 0x0000000000001648 0xd0 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o + .debug_frame 0x0000000000001718 0x1a8 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o + .debug_frame 0x00000000000018c0 0xfc ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o + .debug_frame 0x00000000000019bc 0xef8 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o + .debug_frame 0x00000000000028b4 0x50 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o + .debug_frame 0x0000000000002904 0x854 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o + .debug_frame 0x0000000000003158 0x198 ./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o + .debug_frame 0x00000000000032f0 0x2c /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-init.o) + .debug_frame 0x000000000000331c 0x20 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a(lib_a-memset.o) + .debug_frame 0x000000000000333c 0x20 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_udivsi3.o) + .debug_frame 0x000000000000335c 0x34 /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_muldi3.o) + .debug_frame 0x0000000000003390 0x3c /opt/st/stm32cubeide_1.6.1/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.linux64_2.0.0.202105311346/tools/bin/../lib/gcc/arm-none-eabi/9.3.1/thumb/v6-m/nofp/libgcc.a(_udivmoddi4.o) diff --git a/fw_hal/Debug/makefile b/fw_hal/Debug/makefile new file mode 100644 index 0000000..1d3b85e --- /dev/null +++ b/fw_hal/Debug/makefile @@ -0,0 +1,100 @@ +################################################################################ +# Automatically-generated file. Do not edit! +# Toolchain: GNU Tools for STM32 (9-2020-q2-update) +################################################################################ + +-include ../makefile.init + +RM := rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include Drivers/STM32L0xx_HAL_Driver/Src/subdir.mk +-include Core/Startup/subdir.mk +-include Core/Src/subdir.mk +-include 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 := iaq_wired_sensor_hal +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 += \ +iaq_wired_sensor_hal.elf \ + +SIZE_OUTPUT += \ +default.size.stdout \ + +OBJDUMP_LIST += \ +iaq_wired_sensor_hal.list \ + +OBJCOPY_BIN += \ +iaq_wired_sensor_hal.bin \ + + +# All Target +all: main-build + +# Main-build Target +main-build: iaq_wired_sensor_hal.elf secondary-outputs + +# Tool invocations +iaq_wired_sensor_hal.elf: $(OBJS) $(USER_OBJS) /home/mrs/Personal/HDIoT/Smart_Household/iaq_wired_sensor/fw_hal/STM32L031G6UX_FLASH.ld makefile objects.list $(OPTIONAL_TOOL_DEPS) + arm-none-eabi-gcc -o "iaq_wired_sensor_hal.elf" @"objects.list" $(USER_OBJS) $(LIBS) -mcpu=cortex-m0plus -T"/home/mrs/Personal/HDIoT/Smart_Household/iaq_wired_sensor/fw_hal/STM32L031G6UX_FLASH.ld" --specs=nosys.specs -Wl,-Map="iaq_wired_sensor_hal.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 ' ' + +iaq_wired_sensor_hal.list: $(EXECUTABLES) makefile objects.list $(OPTIONAL_TOOL_DEPS) + arm-none-eabi-objdump -h -S $(EXECUTABLES) > "iaq_wired_sensor_hal.list" + @echo 'Finished building: $@' + @echo ' ' + +iaq_wired_sensor_hal.bin: $(EXECUTABLES) makefile objects.list $(OPTIONAL_TOOL_DEPS) + arm-none-eabi-objcopy -O binary $(EXECUTABLES) "iaq_wired_sensor_hal.bin" + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(SIZE_OUTPUT)$(OBJDUMP_LIST)$(EXECUTABLES)$(OBJS)$(S_DEPS)$(S_UPPER_DEPS)$(C_DEPS)$(OBJCOPY_BIN) iaq_wired_sensor_hal.elf + -@echo ' ' + +secondary-outputs: $(SIZE_OUTPUT) $(OBJDUMP_LIST) $(OBJCOPY_BIN) + +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 fail-specified-linker-script-missing warn-no-linker-script-specified + +-include ../makefile.targets diff --git a/fw_hal/Debug/objects.list b/fw_hal/Debug/objects.list new file mode 100644 index 0000000..0519383 --- /dev/null +++ b/fw_hal/Debug/objects.list @@ -0,0 +1,33 @@ +"./Core/Src/config.o" +"./Core/Src/crc8.o" +"./Core/Src/i2c.o" +"./Core/Src/main.o" +"./Core/Src/modbus.o" +"./Core/Src/rgb_led.o" +"./Core/Src/scd4x.o" +"./Core/Src/sht4x.o" +"./Core/Src/sps30.o" +"./Core/Src/stm32l0xx_hal_msp.o" +"./Core/Src/stm32l0xx_it.o" +"./Core/Src/syscalls.o" +"./Core/Src/sysmem.o" +"./Core/Src/system_stm32l0xx.o" +"./Core/Startup/startup_stm32l031g6ux.o" +"./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.o" +"./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.o" +"./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.o" +"./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.o" +"./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o" +"./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.o" +"./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.o" +"./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.o" +"./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.o" +"./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.o" +"./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.o" +"./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.o" +"./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.o" +"./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.o" +"./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.o" +"./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.o" +"./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.o" +"./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.o" diff --git a/fw_hal/Debug/objects.mk b/fw_hal/Debug/objects.mk new file mode 100644 index 0000000..e12976d --- /dev/null +++ b/fw_hal/Debug/objects.mk @@ -0,0 +1,9 @@ +################################################################################ +# Automatically-generated file. Do not edit! +# Toolchain: GNU Tools for STM32 (9-2020-q2-update) +################################################################################ + +USER_OBJS := + +LIBS := + diff --git a/fw_hal/Debug/sources.mk b/fw_hal/Debug/sources.mk new file mode 100644 index 0000000..a511ac3 --- /dev/null +++ b/fw_hal/Debug/sources.mk @@ -0,0 +1,26 @@ +################################################################################ +# Automatically-generated file. Do not edit! +# Toolchain: GNU Tools for STM32 (9-2020-q2-update) +################################################################################ + +ELF_SRCS := +OBJ_SRCS := +S_SRCS := +C_SRCS := +S_UPPER_SRCS := +O_SRCS := +SIZE_OUTPUT := +OBJDUMP_LIST := +EXECUTABLES := +OBJS := +S_DEPS := +S_UPPER_DEPS := +C_DEPS := +OBJCOPY_BIN := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +Core/Src \ +Core/Startup \ +Drivers/STM32L0xx_HAL_Driver/Src \ + diff --git a/fw_hal/Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h b/fw_hal/Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h new file mode 100644 index 0000000..9ee7ac8 --- /dev/null +++ b/fw_hal/Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h @@ -0,0 +1,6094 @@ +/** + ****************************************************************************** + * @file stm32l031xx.h + * @author MCD Application Team + * @brief CMSIS Cortex-M0+ Device Peripheral Access Layer Header File. + * This file contains all the peripheral register's definitions, bits + * definitions and memory mapping for stm32l031xx 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) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32l031xx + * @{ + */ + +#ifndef __STM32L031xx_H +#define __STM32L031xx_H + +#ifdef __cplusplus + extern "C" { +#endif + + +/** @addtogroup Configuration_section_for_CMSIS + * @{ + */ +/** + * @brief Configuration of the Cortex-M0+ Processor and Core Peripherals + */ +#define __CM0PLUS_REV 0U /*!< Core Revision r0p0 */ +#define __MPU_PRESENT 0U /*!< STM32L0xx provides no MPU */ +#define __VTOR_PRESENT 1U /*!< Vector Table Register supported */ +#define __NVIC_PRIO_BITS 2U /*!< STM32L0xx uses 2 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0U /*!< Set to 1 if different SysTick Config is used */ + +/** + * @} + */ + +/** @addtogroup Peripheral_interrupt_number_definition + * @{ + */ + +/** + * @brief stm32l031xx Interrupt Number Definition, according to the selected device + * in @ref Library_configuration_section + */ + +/*!< Interrupt Number Definition */ +typedef enum +{ +/****** Cortex-M0 Processor Exceptions Numbers ******************************************************/ + NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */ + HardFault_IRQn = -13, /*!< 3 Cortex-M0+ Hard Fault Interrupt */ + SVC_IRQn = -5, /*!< 11 Cortex-M0+ SV Call Interrupt */ + PendSV_IRQn = -2, /*!< 14 Cortex-M0+ Pend SV Interrupt */ + SysTick_IRQn = -1, /*!< 15 Cortex-M0+ System Tick Interrupt */ + +/****** STM32L-0 specific Interrupt Numbers *********************************************************/ + WWDG_IRQn = 0, /*!< Window WatchDog Interrupt */ + PVD_IRQn = 1, /*!< PVD through EXTI Line detect Interrupt */ + RTC_IRQn = 2, /*!< RTC through EXTI Line Interrupt */ + FLASH_IRQn = 3, /*!< FLASH Interrupt */ + RCC_IRQn = 4, /*!< RCC Interrupt */ + EXTI0_1_IRQn = 5, /*!< EXTI Line 0 and 1 Interrupts */ + EXTI2_3_IRQn = 6, /*!< EXTI Line 2 and 3 Interrupts */ + EXTI4_15_IRQn = 7, /*!< EXTI Line 4 to 15 Interrupts */ + DMA1_Channel1_IRQn = 9, /*!< DMA1 Channel 1 Interrupt */ + DMA1_Channel2_3_IRQn = 10, /*!< DMA1 Channel 2 and Channel 3 Interrupts */ + DMA1_Channel4_5_6_7_IRQn = 11, /*!< DMA1 Channel 4, Channel 5, Channel 6 and Channel 7 Interrupts */ + ADC1_COMP_IRQn = 12, /*!< ADC1, COMP1 and COMP2 Interrupts */ + LPTIM1_IRQn = 13, /*!< LPTIM1 Interrupt */ + TIM2_IRQn = 15, /*!< TIM2 Interrupt */ + TIM21_IRQn = 20, /*!< TIM21 Interrupt */ + TIM22_IRQn = 22, /*!< TIM22 Interrupt */ + I2C1_IRQn = 23, /*!< I2C1 Interrupt */ + SPI1_IRQn = 25, /*!< SPI1 Interrupt */ + USART2_IRQn = 28, /*!< USART2 Interrupt */ + LPUART1_IRQn = 29, /*!< LPUART1 Interrupt */ +} IRQn_Type; + +/** + * @} + */ + +#include "core_cm0plus.h" +#include "system_stm32l0xx.h" +#include + +/** @addtogroup Peripheral_registers_structures + * @{ + */ + +/** + * @brief Analog to Digital Converter + */ + +typedef struct +{ + __IO uint32_t ISR; /*!< ADC Interrupt and Status register, Address offset:0x00 */ + __IO uint32_t IER; /*!< ADC Interrupt Enable register, Address offset:0x04 */ + __IO uint32_t CR; /*!< ADC Control register, Address offset:0x08 */ + __IO uint32_t CFGR1; /*!< ADC Configuration register 1, Address offset:0x0C */ + __IO uint32_t CFGR2; /*!< ADC Configuration register 2, Address offset:0x10 */ + __IO uint32_t SMPR; /*!< ADC Sampling time register, Address offset:0x14 */ + uint32_t RESERVED1; /*!< Reserved, 0x18 */ + uint32_t RESERVED2; /*!< Reserved, 0x1C */ + __IO uint32_t TR; /*!< ADC watchdog threshold register, Address offset:0x20 */ + uint32_t RESERVED3; /*!< Reserved, 0x24 */ + __IO uint32_t CHSELR; /*!< ADC channel selection register, Address offset:0x28 */ + uint32_t RESERVED4[5]; /*!< Reserved, 0x2C */ + __IO uint32_t DR; /*!< ADC data register, Address offset:0x40 */ + uint32_t RESERVED5[28]; /*!< Reserved, 0x44 - 0xB0 */ + __IO uint32_t CALFACT; /*!< ADC data register, Address offset:0xB4 */ +} ADC_TypeDef; + +typedef struct +{ + __IO uint32_t CCR; +} ADC_Common_TypeDef; + + +/** + * @brief Comparator + */ + +typedef struct +{ + __IO uint32_t CSR; /*!< COMP comparator control and status register, Address offset: 0x18 */ +} 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, 0x05 */ +uint16_t RESERVED1; /*!< Reserved, 0x06 */ +__IO uint32_t CR; /*!< CRC Control register, Address offset: 0x08 */ +uint32_t RESERVED2; /*!< Reserved, 0x0C */ +__IO uint32_t INIT; /*!< Initial CRC value register, Address offset: 0x10 */ +__IO uint32_t POL; /*!< CRC polynomial register, Address offset: 0x14 */ +} CRC_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; + +typedef struct +{ + __IO uint32_t CSELR; /*!< DMA channel selection register, Address offset: 0xA8 */ +} DMA_Request_TypeDef; + +/** + * @brief External Interrupt/Event Controller + */ + +typedef struct +{ + __IO uint32_t IMR; /*!
© Copyright(c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32l0xx + * @{ + */ + +#ifndef __STM32L0xx_H +#define __STM32L0xx_H + +#ifdef __cplusplus + extern "C" { +#endif /* __cplusplus */ + +/** @addtogroup Library_configuration_section + * @{ + */ + +/** + * @brief STM32 Family + */ +#if !defined (STM32L0) +#define STM32L0 +#endif /* STM32L0 */ + +/* Uncomment the line below according to the target STM32 device used in your + application + */ + +#if !defined (STM32L010x4) && !defined (STM32L010x6) && !defined (STM32L010x8) && !defined (STM32L010xB) && \ + !defined (STM32L011xx) && !defined (STM32L021xx) && \ + !defined (STM32L031xx) && !defined (STM32L041xx) && \ + !defined (STM32L051xx) && !defined (STM32L052xx) && !defined (STM32L053xx) && \ + !defined (STM32L062xx) && !defined (STM32L063xx) && \ + !defined (STM32L071xx) && !defined (STM32L072xx) && !defined (STM32L073xx) && \ + !defined (STM32L081xx) && !defined (STM32L082xx) && !defined (STM32L083xx) + /* #define STM32L010x4 */ /*!< STM32L010K4, STM32L010F4 Devices */ + /* #define STM32L010x6 */ /*!< STM32L010C6 Devices */ + /* #define STM32L010x8 */ /*!< STM32L010K8, STM32L010R8 Devices */ + /* #define STM32L010xB */ /*!< STM32L010RB Devices */ + /* #define STM32L011xx */ /*!< STM32L031C6, STM32L031E6, STM32L031F6, STM32L031G6, STM32L031K6 Devices */ + /* #define STM32L021xx */ /*!< STM32L021D4, STM32L021F4, STM32L021G4, STM32L021K4 Devices */ + /* #define STM32L031xx */ /*!< STM32L031C6, STM32L031E6, STM32L031F6, STM32L031G6, STM32L031K6 Devices */ + /* #define STM32L041xx */ /*!< STM32L041C6, STM32L041K6, STM32L041G6, STM32L041F6, STM32L041E6 Devices */ + /* #define STM32L051xx */ /*!< STM32L051K8, STM32L051C6, STM32L051C8, STM32L051R6, STM32L051R8, STM32L051K6, STM32L051T6, STM32L051T8 Devices */ + /* #define STM32L052xx */ /*!< STM32L052K6, STM32L052K8, STM32L052C6, STM32L052C8, STM32L052R6, STM32L052R8, STM32L052T6, STM32L052T8 Devices */ + /* #define STM32L053xx */ /*!< STM32L053C6, STM32L053C8, STM32L053R6, STM32L053R8 Devices */ + /* #define STM32L062xx */ /*!< STM32L062K8 Devices */ + /* #define STM32L063xx */ /*!< STM32L063C8, STM32L063R8 Devices */ + /* #define STM32L071xx */ /*!< STM32L071V8, STM32L071K8, STM32L071VB, STM32L071RB, STM32L071CB, STM32L071KB, STM32L071VZ, STM32L071RZ, STM32L071CZ, STM32L071KZ, STM32L071C8 Devices */ + /* #define STM32L072xx */ /*!< STM32L072V8, STM32L072VB, STM32L072RB, STM32L072CB, STM32L072VZ, STM32L072RZ, STM32L072CZ, STM32L072KB, STM32L072KZ Devices */ + /* #define STM32L073xx */ /*!< STM32L073V8, STM32L073VB, STM32L073RB, STM32L073VZ, STM32L073RZ, STM32L073CB, STM32L073CZ Devices */ + /* #define STM32L081xx */ /*!< STM32L081CB, STM32L081CZ, STM32L081KZ Devices */ + /* #define STM32L082xx */ /*!< STM32L082KB, STM32L082KZ, STM32L082CZ Devices */ + /* #define STM32L083xx */ /*!< STM32L083V8, STM32L083VB, STM32L083RB, STM32L083VZ, STM32L083RZ, STM32L083CB, STM32L083CZ Devices */ +#endif + +/* Tip: To avoid modifying this file each time you need to switch between these + devices, you can define the device in your toolchain compiler preprocessor. + */ +#if !defined (USE_HAL_DRIVER) +/** + * @brief Comment the line below if you will not use the peripherals drivers. + In this case, these drivers will not be included and the application code will + be based on direct access to peripherals registers + */ + /*#define USE_HAL_DRIVER */ +#endif /* USE_HAL_DRIVER */ + +/** + * @brief CMSIS Device version number + */ +#define __STM32L0xx_CMSIS_VERSION_MAIN (0x01) /*!< [31:24] main version */ +#define __STM32L0xx_CMSIS_VERSION_SUB1 (0x09) /*!< [23:16] sub1 version */ +#define __STM32L0xx_CMSIS_VERSION_SUB2 (0x02) /*!< [15:8] sub2 version */ +#define __STM32L0xx_CMSIS_VERSION_RC (0x00) /*!< [7:0] release candidate */ +#define __STM32L0xx_CMSIS_VERSION ((__STM32L0xx_CMSIS_VERSION_MAIN << 24)\ + |(__STM32L0xx_CMSIS_VERSION_SUB1 << 16)\ + |(__STM32L0xx_CMSIS_VERSION_SUB2 << 8 )\ + |(__STM32L0xx_CMSIS_VERSION_RC)) + +/** + * @} + */ + +/** @addtogroup Device_Included + * @{ + */ +#if defined(STM32L010xB) + #include "stm32l010xb.h" +#elif defined(STM32L010x8) + #include "stm32l010x8.h" +#elif defined(STM32L010x6) + #include "stm32l010x6.h" +#elif defined(STM32L010x4) + #include "stm32l010x4.h" +#elif defined(STM32L011xx) + #include "stm32l011xx.h" +#elif defined(STM32L021xx) + #include "stm32l021xx.h" +#elif defined(STM32L031xx) + #include "stm32l031xx.h" +#elif defined(STM32L041xx) + #include "stm32l041xx.h" +#elif defined(STM32L051xx) + #include "stm32l051xx.h" +#elif defined(STM32L052xx) + #include "stm32l052xx.h" +#elif defined(STM32L053xx) + #include "stm32l053xx.h" +#elif defined(STM32L062xx) + #include "stm32l062xx.h" +#elif defined(STM32L063xx) + #include "stm32l063xx.h" +#elif defined(STM32L071xx) + #include "stm32l071xx.h" +#elif defined(STM32L072xx) + #include "stm32l072xx.h" +#elif defined(STM32L073xx) + #include "stm32l073xx.h" +#elif defined(STM32L082xx) + #include "stm32l082xx.h" +#elif defined(STM32L083xx) + #include "stm32l083xx.h" +#elif defined(STM32L081xx) + #include "stm32l081xx.h" +#else + #error "Please select first the target STM32L0xx device used in your application (in stm32l0xx.h file)" +#endif + +/** + * @} + */ + +/** @addtogroup Exported_types + * @{ + */ +typedef enum +{ + RESET = 0, + SET = !RESET +} FlagStatus, ITStatus; + +typedef enum +{ + DISABLE = 0, + ENABLE = !DISABLE +} FunctionalState; +#define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE)) + +typedef enum +{ + SUCCESS = 0, + ERROR = !SUCCESS +} ErrorStatus; + +/** + * @} + */ + + +/** @addtogroup Exported_macro + * @{ + */ +#define SET_BIT(REG, BIT) ((REG) |= (BIT)) + +#define CLEAR_BIT(REG, BIT) ((REG) &= ~(BIT)) + +#define READ_BIT(REG, BIT) ((REG) & (BIT)) + +#define CLEAR_REG(REG) ((REG) = (0x0)) + +#define WRITE_REG(REG, VAL) ((REG) = (VAL)) + +#define READ_REG(REG) ((REG)) + +#define MODIFY_REG(REG, CLEARMASK, SETMASK) WRITE_REG((REG), (((READ_REG(REG)) & (~(CLEARMASK))) | (SETMASK))) + +/* Use of interrupt control for register exclusive access */ +/* Atomic 32-bit register access macro to set one or several bits */ +#define ATOMIC_SET_BIT(REG, BIT) \ + do { \ + uint32_t primask; \ + primask = __get_PRIMASK(); \ + __set_PRIMASK(1); \ + SET_BIT((REG), (BIT)); \ + __set_PRIMASK(primask); \ + } while(0) + +/* Atomic 32-bit register access macro to clear one or several bits */ +#define ATOMIC_CLEAR_BIT(REG, BIT) \ + do { \ + uint32_t primask; \ + primask = __get_PRIMASK(); \ + __set_PRIMASK(1); \ + CLEAR_BIT((REG), (BIT)); \ + __set_PRIMASK(primask); \ + } while(0) + +/* Atomic 32-bit register access macro to clear and set one or several bits */ +#define ATOMIC_MODIFY_REG(REG, CLEARMSK, SETMASK) \ + do { \ + uint32_t primask; \ + primask = __get_PRIMASK(); \ + __set_PRIMASK(1); \ + MODIFY_REG((REG), (CLEARMSK), (SETMASK)); \ + __set_PRIMASK(primask); \ + } while(0) + +/* Atomic 16-bit register access macro to set one or several bits */ +#define ATOMIC_SETH_BIT(REG, BIT) ATOMIC_SET_BIT(REG, BIT) \ + +/* Atomic 16-bit register access macro to clear one or several bits */ +#define ATOMIC_CLEARH_BIT(REG, BIT) ATOMIC_CLEAR_BIT(REG, BIT) \ + +/* Atomic 16-bit register access macro to clear and set one or several bits */ +#define ATOMIC_MODIFYH_REG(REG, CLEARMSK, SETMASK) ATOMIC_MODIFY_REG(REG, CLEARMSK, SETMASK) \ + +/** + * @} + */ + +#if defined (USE_HAL_DRIVER) + #include "stm32l0xx_hal.h" +#endif /* USE_HAL_DRIVER */ + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __STM32L0xx_H */ +/** + * @} + */ + +/** + * @} + */ + + + + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/fw_hal/Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h b/fw_hal/Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h new file mode 100644 index 0000000..6427f46 --- /dev/null +++ b/fw_hal/Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h @@ -0,0 +1,109 @@ +/** + ****************************************************************************** + * @file system_stm32l0xx.h + * @author MCD Application Team + * @brief CMSIS Cortex-M0+ Device Peripheral Access Layer System Header File. + ****************************************************************************** + * @attention + * + *

© Copyright(c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32l0xx_system + * @{ + */ + +/** + * @brief Define to prevent recursive inclusion + */ +#ifndef __SYSTEM_STM32L0XX_H +#define __SYSTEM_STM32L0XX_H + +#ifdef __cplusplus + extern "C" { +#endif + +/** @addtogroup STM32L0xx_System_Includes + * @{ + */ + +/** + * @} + */ + + +/** @addtogroup STM32L0xx_System_Exported_types + * @{ + */ + /* This variable is updated in three ways: + 1) by calling CMSIS function SystemCoreClockUpdate() + 2) by calling HAL API function HAL_RCC_GetSysClockFreq() + 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. + */ +extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */ +/* +*/ +extern const uint8_t AHBPrescTable[16]; /*!< AHB prescalers table values */ +extern const uint8_t APBPrescTable[8]; /*!< APB prescalers table values */ +extern const uint8_t PLLMulTable[9]; /*!< PLL multipiers table values */ + + +/** + * @} + */ + +/** @addtogroup STM32L0xx_System_Exported_Constants + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32L0xx_System_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32L0xx_System_Exported_Functions + * @{ + */ + +extern void SystemInit(void); +extern void SystemCoreClockUpdate(void); +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /*__SYSTEM_STM32L0XX_H */ + +/** + * @} + */ + +/** + * @} + */ +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/fw_hal/Drivers/CMSIS/Include/cmsis_armcc.h b/fw_hal/Drivers/CMSIS/Include/cmsis_armcc.h new file mode 100644 index 0000000..7d751fb --- /dev/null +++ b/fw_hal/Drivers/CMSIS/Include/cmsis_armcc.h @@ -0,0 +1,865 @@ +/**************************************************************************//** + * @file cmsis_armcc.h + * @brief CMSIS compiler ARMCC (Arm Compiler 5) 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_ARMCC_H +#define __CMSIS_ARMCC_H + + +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 400677) + #error "Please use Arm Compiler Toolchain V4.0.677 or later!" +#endif + +/* CMSIS compiler control architecture macros */ +#if ((defined (__TARGET_ARCH_6_M ) && (__TARGET_ARCH_6_M == 1)) || \ + (defined (__TARGET_ARCH_6S_M ) && (__TARGET_ARCH_6S_M == 1)) ) + #define __ARM_ARCH_6M__ 1 +#endif + +#if (defined (__TARGET_ARCH_7_M ) && (__TARGET_ARCH_7_M == 1)) + #define __ARM_ARCH_7M__ 1 +#endif + +#if (defined (__TARGET_ARCH_7E_M) && (__TARGET_ARCH_7E_M == 1)) + #define __ARM_ARCH_7EM__ 1 +#endif + + /* __ARM_ARCH_8M_BASE__ not applicable */ + /* __ARM_ARCH_8M_MAIN__ not applicable */ + + +/* 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 static __forceinline +#endif +#ifndef __NO_RETURN + #define __NO_RETURN __declspec(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 __packed struct +#endif +#ifndef __PACKED_UNION + #define __PACKED_UNION __packed union +#endif +#ifndef __UNALIGNED_UINT32 /* deprecated */ + #define __UNALIGNED_UINT32(x) (*((__packed uint32_t *)(x))) +#endif +#ifndef __UNALIGNED_UINT16_WRITE + #define __UNALIGNED_UINT16_WRITE(addr, val) ((*((__packed uint16_t *)(addr))) = (val)) +#endif +#ifndef __UNALIGNED_UINT16_READ + #define __UNALIGNED_UINT16_READ(addr) (*((const __packed uint16_t *)(addr))) +#endif +#ifndef __UNALIGNED_UINT32_WRITE + #define __UNALIGNED_UINT32_WRITE(addr, val) ((*((__packed uint32_t *)(addr))) = (val)) +#endif +#ifndef __UNALIGNED_UINT32_READ + #define __UNALIGNED_UINT32_READ(addr) (*((const __packed uint32_t *)(addr))) +#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(); */ + + +/** + \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(); */ + +/** + \brief Get Control Register + \details Returns the content of the Control Register. + \return Control Register value + */ +__STATIC_INLINE uint32_t __get_CONTROL(void) +{ + register uint32_t __regControl __ASM("control"); + return(__regControl); +} + + +/** + \brief Set Control Register + \details Writes the given value to the Control Register. + \param [in] control Control Register value to set + */ +__STATIC_INLINE void __set_CONTROL(uint32_t control) +{ + register uint32_t __regControl __ASM("control"); + __regControl = control; +} + + +/** + \brief Get IPSR Register + \details Returns the content of the IPSR Register. + \return IPSR Register value + */ +__STATIC_INLINE uint32_t __get_IPSR(void) +{ + register uint32_t __regIPSR __ASM("ipsr"); + return(__regIPSR); +} + + +/** + \brief Get APSR Register + \details Returns the content of the APSR Register. + \return APSR Register value + */ +__STATIC_INLINE uint32_t __get_APSR(void) +{ + register uint32_t __regAPSR __ASM("apsr"); + return(__regAPSR); +} + + +/** + \brief Get xPSR Register + \details Returns the content of the xPSR Register. + \return xPSR Register value + */ +__STATIC_INLINE uint32_t __get_xPSR(void) +{ + register uint32_t __regXPSR __ASM("xpsr"); + return(__regXPSR); +} + + +/** + \brief Get Process Stack Pointer + \details Returns the current value of the Process Stack Pointer (PSP). + \return PSP Register value + */ +__STATIC_INLINE uint32_t __get_PSP(void) +{ + register uint32_t __regProcessStackPointer __ASM("psp"); + return(__regProcessStackPointer); +} + + +/** + \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_INLINE void __set_PSP(uint32_t topOfProcStack) +{ + register uint32_t __regProcessStackPointer __ASM("psp"); + __regProcessStackPointer = topOfProcStack; +} + + +/** + \brief Get Main Stack Pointer + \details Returns the current value of the Main Stack Pointer (MSP). + \return MSP Register value + */ +__STATIC_INLINE uint32_t __get_MSP(void) +{ + register uint32_t __regMainStackPointer __ASM("msp"); + return(__regMainStackPointer); +} + + +/** + \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_INLINE void __set_MSP(uint32_t topOfMainStack) +{ + register uint32_t __regMainStackPointer __ASM("msp"); + __regMainStackPointer = topOfMainStack; +} + + +/** + \brief Get Priority Mask + \details Returns the current state of the priority mask bit from the Priority Mask Register. + \return Priority Mask value + */ +__STATIC_INLINE uint32_t __get_PRIMASK(void) +{ + register uint32_t __regPriMask __ASM("primask"); + return(__regPriMask); +} + + +/** + \brief Set Priority Mask + \details Assigns the given value to the Priority Mask Register. + \param [in] priMask Priority Mask + */ +__STATIC_INLINE void __set_PRIMASK(uint32_t priMask) +{ + register uint32_t __regPriMask __ASM("primask"); + __regPriMask = (priMask); +} + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 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 + + +/** + \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 + + +/** + \brief Get Base Priority + \details Returns the current value of the Base Priority register. + \return Base Priority register value + */ +__STATIC_INLINE uint32_t __get_BASEPRI(void) +{ + register uint32_t __regBasePri __ASM("basepri"); + return(__regBasePri); +} + + +/** + \brief Set Base Priority + \details Assigns the given value to the Base Priority register. + \param [in] basePri Base Priority value to set + */ +__STATIC_INLINE void __set_BASEPRI(uint32_t basePri) +{ + register uint32_t __regBasePri __ASM("basepri"); + __regBasePri = (basePri & 0xFFU); +} + + +/** + \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_INLINE void __set_BASEPRI_MAX(uint32_t basePri) +{ + register uint32_t __regBasePriMax __ASM("basepri_max"); + __regBasePriMax = (basePri & 0xFFU); +} + + +/** + \brief Get Fault Mask + \details Returns the current value of the Fault Mask register. + \return Fault Mask register value + */ +__STATIC_INLINE uint32_t __get_FAULTMASK(void) +{ + register uint32_t __regFaultMask __ASM("faultmask"); + return(__regFaultMask); +} + + +/** + \brief Set Fault Mask + \details Assigns the given value to the Fault Mask register. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask) +{ + register uint32_t __regFaultMask __ASM("faultmask"); + __regFaultMask = (faultMask & (uint32_t)1U); +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ + + +/** + \brief Get FPSCR + \details Returns the current value of the Floating Point Status/Control register. + \return Floating Point Status/Control register value + */ +__STATIC_INLINE uint32_t __get_FPSCR(void) +{ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + register uint32_t __regfpscr __ASM("fpscr"); + return(__regfpscr); +#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_INLINE void __set_FPSCR(uint32_t fpscr) +{ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + register uint32_t __regfpscr __ASM("fpscr"); + __regfpscr = (fpscr); +#else + (void)fpscr; +#endif +} + + +/*@} end of CMSIS_Core_RegAccFunctions */ + + +/* ########################## Core Instruction Access ######################### */ +/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface + Access to dedicated instructions + @{ +*/ + +/** + \brief No Operation + \details No Operation does nothing. This instruction can be used for code alignment purposes. + */ +#define __NOP __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 __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 __wfe + + +/** + \brief Send Event + \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. + */ +#define __SEV __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() do {\ + __schedule_barrier();\ + __isb(0xF);\ + __schedule_barrier();\ + } while (0U) + +/** + \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() do {\ + __schedule_barrier();\ + __dsb(0xF);\ + __schedule_barrier();\ + } while (0U) + +/** + \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() do {\ + __schedule_barrier();\ + __dmb(0xF);\ + __schedule_barrier();\ + } while (0U) + + +/** + \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 __rev + + +/** + \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 + */ +#ifndef __NO_EMBEDDED_ASM +__attribute__((section(".rev16_text"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value) +{ + rev16 r0, r0 + bx lr +} +#endif + + +/** + \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 + */ +#ifndef __NO_EMBEDDED_ASM +__attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int16_t __REVSH(int16_t value) +{ + revsh r0, r0 + bx lr +} +#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 + */ +#define __ROR __ror + + +/** + \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) __breakpoint(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 + */ +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) + #define __RBIT __rbit +#else +__attribute__((always_inline)) __STATIC_INLINE uint32_t __RBIT(uint32_t value) +{ + uint32_t result; + 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 */ + 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/fw_hal/Drivers/CMSIS/Include/cmsis_armclang.h b/fw_hal/Drivers/CMSIS/Include/cmsis_armclang.h new file mode 100644 index 0000000..d8031b0 --- /dev/null +++ b/fw_hal/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/fw_hal/Drivers/CMSIS/Include/cmsis_compiler.h b/fw_hal/Drivers/CMSIS/Include/cmsis_compiler.h new file mode 100644 index 0000000..79a2cac --- /dev/null +++ b/fw_hal/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/fw_hal/Drivers/CMSIS/Include/cmsis_gcc.h b/fw_hal/Drivers/CMSIS/Include/cmsis_gcc.h new file mode 100644 index 0000000..1bd41a4 --- /dev/null +++ b/fw_hal/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/fw_hal/Drivers/CMSIS/Include/cmsis_iccarm.h b/fw_hal/Drivers/CMSIS/Include/cmsis_iccarm.h new file mode 100644 index 0000000..3c90a2c --- /dev/null +++ b/fw_hal/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/fw_hal/Drivers/CMSIS/Include/cmsis_version.h b/fw_hal/Drivers/CMSIS/Include/cmsis_version.h new file mode 100644 index 0000000..ae3f2e3 --- /dev/null +++ b/fw_hal/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/fw_hal/Drivers/CMSIS/Include/core_armv8mbl.h b/fw_hal/Drivers/CMSIS/Include/core_armv8mbl.h new file mode 100644 index 0000000..ec76ab2 --- /dev/null +++ b/fw_hal/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/fw_hal/Drivers/CMSIS/Include/core_armv8mml.h b/fw_hal/Drivers/CMSIS/Include/core_armv8mml.h new file mode 100644 index 0000000..2d0f106 --- /dev/null +++ b/fw_hal/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/fw_hal/Drivers/CMSIS/Include/core_cm0.h b/fw_hal/Drivers/CMSIS/Include/core_cm0.h new file mode 100644 index 0000000..6f82227 --- /dev/null +++ b/fw_hal/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/fw_hal/Drivers/CMSIS/Include/core_cm0plus.h b/fw_hal/Drivers/CMSIS/Include/core_cm0plus.h new file mode 100644 index 0000000..b9377e8 --- /dev/null +++ b/fw_hal/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/fw_hal/Drivers/CMSIS/Include/core_cm1.h b/fw_hal/Drivers/CMSIS/Include/core_cm1.h new file mode 100644 index 0000000..fd1c407 --- /dev/null +++ b/fw_hal/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/fw_hal/Drivers/CMSIS/Include/core_cm23.h b/fw_hal/Drivers/CMSIS/Include/core_cm23.h new file mode 100644 index 0000000..8202a8d --- /dev/null +++ b/fw_hal/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/fw_hal/Drivers/CMSIS/Include/core_cm3.h b/fw_hal/Drivers/CMSIS/Include/core_cm3.h new file mode 100644 index 0000000..b0dfbd3 --- /dev/null +++ b/fw_hal/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/fw_hal/Drivers/CMSIS/Include/core_cm33.h b/fw_hal/Drivers/CMSIS/Include/core_cm33.h new file mode 100644 index 0000000..02f82e2 --- /dev/null +++ b/fw_hal/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/fw_hal/Drivers/CMSIS/Include/core_cm4.h b/fw_hal/Drivers/CMSIS/Include/core_cm4.h new file mode 100644 index 0000000..308b868 --- /dev/null +++ b/fw_hal/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/fw_hal/Drivers/CMSIS/Include/core_cm7.h b/fw_hal/Drivers/CMSIS/Include/core_cm7.h new file mode 100644 index 0000000..ada6c2a --- /dev/null +++ b/fw_hal/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/fw_hal/Drivers/CMSIS/Include/core_sc000.h b/fw_hal/Drivers/CMSIS/Include/core_sc000.h new file mode 100644 index 0000000..9086c64 --- /dev/null +++ b/fw_hal/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/fw_hal/Drivers/CMSIS/Include/core_sc300.h b/fw_hal/Drivers/CMSIS/Include/core_sc300.h new file mode 100644 index 0000000..665822d --- /dev/null +++ b/fw_hal/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/fw_hal/Drivers/CMSIS/Include/mpu_armv7.h b/fw_hal/Drivers/CMSIS/Include/mpu_armv7.h new file mode 100644 index 0000000..7d4b600 --- /dev/null +++ b/fw_hal/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/fw_hal/Drivers/CMSIS/Include/mpu_armv8.h b/fw_hal/Drivers/CMSIS/Include/mpu_armv8.h new file mode 100644 index 0000000..99ee9f9 --- /dev/null +++ b/fw_hal/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/fw_hal/Drivers/CMSIS/Include/tz_context.h b/fw_hal/Drivers/CMSIS/Include/tz_context.h new file mode 100644 index 0000000..d4c1474 --- /dev/null +++ b/fw_hal/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/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h new file mode 100644 index 0000000..f0024c6 --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h @@ -0,0 +1,3840 @@ +/** + ****************************************************************************** + * @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) 2019 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* 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(STM32U5) +#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 +#define CRYP_CCF_CLEAR CRYP_CLEAR_CCF +#define CRYP_ERR_CLEAR CRYP_CLEAR_RWEIF +#endif /* STM32U5 */ +/** + * @} + */ + +/** @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 */ +/** + * @} + */ + +/** @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 +/** + * @} + */ + +/** @defgroup HAL_CORTEX_Aliased_Defines HAL CORTEX Aliased Defines maintained for legacy purpose + * @{ + */ +#define __HAL_CORTEX_SYSTICKCLK_CONFIG HAL_SYSTICK_CLKSourceConfig +/** + * @} + */ + +/** + * @} + */ + +/** @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(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 */ +/** + * @} + */ + +/** @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 +#define PAGESIZE FLASH_PAGE_SIZE +#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) +#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(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 +#endif /* STM32U5 */ + +/** + * @} + */ + +/** @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 */ + +/** + * @} + */ + + +/** @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 +/** + * @} + */ + +/** @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(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 + +#if defined(STM32U5) +#define LPTIM_ISR_CC1 LPTIM_ISR_CC1IF +#define LPTIM_ISR_CC2 LPTIM_ISR_CC2IF +#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) +#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(STM32H7) +#define RTC_TAMPCR_TAMPXE RTC_TAMPER_X +#define RTC_TAMPCR_TAMPXIE RTC_TAMPER_X_INTERRUPT + +#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_TAMPALL +#endif /* STM32H7 */ + +/** + * @} + */ + + +/** @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 + +/** + * @} + */ + +/** @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 */ + +/** + * @} + */ + +/** @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 + +/** + * @} + */ + +/** @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 +#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 +#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(STM32L4) || defined(STM32WB) || defined(STM32G0) || defined(STM32G4) || defined(STM32L5) || defined(STM32WL) +#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 +#define RCC_LPTIM1CLKSOURCE_PCLK RCC_LPTIM1CLKSOURCE_PCLK1 +#define RCC_LPTIM2CLKSOURCE_PCLK RCC_LPTIM2CLKSOURCE_PCLK1 + +#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 +#endif +/** + * @} + */ + +/** @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) +#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 */ + +#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 + +/** + * @} + */ + +/** @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(STM32F7) && !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 +/** + * @} + */ + +/** @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 +/** + * @} + */ + +/** @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_PPP_Aliased_Macros HAL PPP Aliased Macros maintained for legacy purpose + * @{ + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32_HAL_LEGACY */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h new file mode 100644 index 0000000..7d227fb --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h @@ -0,0 +1,487 @@ +/** + ****************************************************************************** + * @file stm32l0xx_hal.h + * @author MCD Application Team + * @brief This file contains all the functions prototypes for the HAL + * module driver. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L0xx_HAL_H +#define __STM32L0xx_HAL_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal_conf.h" + +/** @addtogroup STM32L0xx_HAL_Driver + * @{ + */ + +/** @defgroup HAL HAL + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup HAL_Exported_Constants HAL Exported Constants + * @{ + */ + +/** @defgroup HAL_TICK_FREQ Tick Frequency + * @{ + */ +typedef enum +{ + HAL_TICK_FREQ_10HZ = 100U, + HAL_TICK_FREQ_100HZ = 10U, + HAL_TICK_FREQ_1KHZ = 1U, + HAL_TICK_FREQ_DEFAULT = HAL_TICK_FREQ_1KHZ +} HAL_TickFreqTypeDef; +/** + * @} + */ + +/** @defgroup SYSCFG_BootMode Boot Mode + * @{ + */ +#define SYSCFG_BOOT_MAINFLASH (0x00000000U) +#define SYSCFG_BOOT_SYSTEMFLASH SYSCFG_CFGR1_BOOT_MODE_0 +#define SYSCFG_BOOT_SRAM SYSCFG_CFGR1_BOOT_MODE + +/** + * @} + */ + +/** @defgroup DBGMCU_Low_Power_Config DBGMCU Low Power Configuration + * @{ + */ +#define DBGMCU_SLEEP DBGMCU_CR_DBG_SLEEP +#define DBGMCU_STOP DBGMCU_CR_DBG_STOP +#define DBGMCU_STANDBY DBGMCU_CR_DBG_STANDBY +#define IS_DBGMCU_PERIPH(__PERIPH__) ((((__PERIPH__) & (~(DBGMCU_CR_DBG))) == 0x00U) && ((__PERIPH__) != 0x00U)) + + +/** + * @} + */ + +#if defined (LCD_BASE) /* STM32L0x3xx only */ +/** @defgroup SYSCFG_LCD_EXT_CAPA SYSCFG LCD External Capacitors + * @{ + */ +#define SYSCFG_LCD_EXT_CAPA SYSCFG_CFGR2_CAPA /*!< Connection of internal Vlcd rail to external capacitors */ +#define SYSCFG_VLCD_PB2_EXT_CAPA_ON SYSCFG_CFGR2_CAPA_0 /*!< Connection on PB2 */ +#define SYSCFG_VLCD_PB12_EXT_CAPA_ON SYSCFG_CFGR2_CAPA_1 /*!< Connection on PB12 */ +#define SYSCFG_VLCD_PB0_EXT_CAPA_ON SYSCFG_CFGR2_CAPA_2 /*!< Connection on PB0 */ +#if defined (SYSCFG_CFGR2_CAPA_3) +#define SYSCFG_VLCD_PE11_EXT_CAPA_ON SYSCFG_CFGR2_CAPA_3 /*!< Connection on PE11 */ +#endif +#if defined (SYSCFG_CFGR2_CAPA_4) +#define SYSCFG_VLCD_PE12_EXT_CAPA_ON SYSCFG_CFGR2_CAPA_4 /*!< Connection on PE12 */ +#endif + +/** + * @} + */ +#endif + +/** @defgroup SYSCFG_VREFINT_OUT_SELECT SYSCFG VREFINT Out Selection + * @{ + */ +#define SYSCFG_VREFINT_OUT_NONE (0x00000000U) /* no pad connected */ +#define SYSCFG_VREFINT_OUT_PB0 SYSCFG_CFGR3_VREF_OUT_0 /* Selects PBO as output for the Vrefint */ +#define SYSCFG_VREFINT_OUT_PB1 SYSCFG_CFGR3_VREF_OUT_1 /* Selects PB1 as output for the Vrefint */ +#define SYSCFG_VREFINT_OUT_PB0_PB1 SYSCFG_CFGR3_VREF_OUT /* Selects PBO and PB1 as output for the Vrefint */ + +#define IS_SYSCFG_VREFINT_OUT_SELECT(OUTPUT) (((OUTPUT) == SYSCFG_VREFINT_OUT_NONE) || \ + ((OUTPUT) == SYSCFG_VREFINT_OUT_PB0) || \ + ((OUTPUT) == SYSCFG_VREFINT_OUT_PB1) || \ + ((OUTPUT) == SYSCFG_VREFINT_OUT_PB0_PB1)) +/** + * @} + */ + +/** @defgroup SYSCFG_flags_definition SYSCFG Flags Definition + * @{ + */ +#define SYSCFG_FLAG_VREFINT_READY SYSCFG_CFGR3_VREFINT_RDYF + +#define IS_SYSCFG_FLAG(FLAG) ((FLAG) == SYSCFG_FLAG_VREFINT_READY)) + +/** + * @} + */ + +/** @defgroup SYSCFG_FastModePlus_GPIO Fast Mode Plus on GPIO + * @{ + */ +/** @brief Fast mode Plus driving capability on a specific GPIO + */ +#if defined (SYSCFG_CFGR2_I2C_PB6_FMP) +#define SYSCFG_FASTMODEPLUS_PB6 SYSCFG_CFGR2_I2C_PB6_FMP /* Enable Fast Mode Plus on PB6 */ +#endif +#if defined (SYSCFG_CFGR2_I2C_PB7_FMP) +#define SYSCFG_FASTMODEPLUS_PB7 SYSCFG_CFGR2_I2C_PB7_FMP /* Enable Fast Mode Plus on PB7 */ +#endif +#if defined (SYSCFG_CFGR2_I2C_PB8_FMP) +#define SYSCFG_FASTMODEPLUS_PB8 SYSCFG_CFGR2_I2C_PB8_FMP /* Enable Fast Mode Plus on PB8 */ +#endif +#if defined (SYSCFG_CFGR2_I2C_PB9_FMP) +#define SYSCFG_FASTMODEPLUS_PB9 SYSCFG_CFGR2_I2C_PB9_FMP /* Enable Fast Mode Plus on PB9 */ +#endif + +#define IS_SYSCFG_FASTMODEPLUS(PIN) ((((PIN) & (SYSCFG_FASTMODEPLUS_PB6)) == SYSCFG_FASTMODEPLUS_PB6) || \ + (((PIN) & (SYSCFG_FASTMODEPLUS_PB7)) == SYSCFG_FASTMODEPLUS_PB7) || \ + (((PIN) & (SYSCFG_FASTMODEPLUS_PB8)) == SYSCFG_FASTMODEPLUS_PB8) || \ + (((PIN) & (SYSCFG_FASTMODEPLUS_PB9)) == SYSCFG_FASTMODEPLUS_PB9) ) +/** + * @} + */ + /** + * @} + */ + +/* Exported macros -----------------------------------------------------------*/ +/** @defgroup HAL_Exported_Macros HAL Exported Macros + * @{ + */ + +/** @brief Freeze/Unfreeze Peripherals in Debug mode + */ +#if defined (DBGMCU_APB1_FZ_DBG_TIM2_STOP) +/** + * @brief TIM2 Peripherals Debug mode + */ +#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 + +#if defined (DBGMCU_APB1_FZ_DBG_TIM3_STOP) +/** + * @brief TIM3 Peripherals Debug mode + */ +#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 + +#if defined (DBGMCU_APB1_FZ_DBG_TIM6_STOP) +/** + * @brief TIM6 Peripherals Debug mode + */ +#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 + +#if defined (DBGMCU_APB1_FZ_DBG_TIM7_STOP) +/** + * @brief TIM7 Peripherals Debug mode + */ +#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 + +#if defined (DBGMCU_APB1_FZ_DBG_RTC_STOP) +/** + * @brief RTC Peripherals Debug mode + */ +#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 + +#if defined (DBGMCU_APB1_FZ_DBG_WWDG_STOP) +/** + * @brief WWDG Peripherals Debug mode + */ +#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 + +#if defined (DBGMCU_APB1_FZ_DBG_IWDG_STOP) +/** + * @brief IWDG Peripherals Debug mode + */ +#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 + +#if defined (DBGMCU_APB1_FZ_DBG_I2C1_STOP) +/** + * @brief I2C1 Peripherals Debug mode + */ +#define __HAL_DBGMCU_FREEZE_I2C1_TIMEOUT() SET_BIT(DBGMCU->APB1FZ, DBGMCU_APB1_FZ_DBG_I2C1_STOP) +#define __HAL_DBGMCU_UNFREEZE_I2C1_TIMEOUT_DBGMCU() CLEAR_BIT(DBGMCU->APB1FZ, DBGMCU_APB1_FZ_DBG_I2C1_STOP) +#endif + +#if defined (DBGMCU_APB1_FZ_DBG_I2C2_STOP) +/** + * @brief I2C2 Peripherals Debug mode + */ +#define __HAL_DBGMCU_FREEZE_I2C2_TIMEOUT_DBGMCU() SET_BIT(DBGMCU->APB1FZ, DBGMCU_APB1_FZ_DBG_I2C2_STOP) +#define __HAL_DBGMCU_UNFREEZE_I2C2_TIMEOUT_DBGMCU() CLEAR_BIT(DBGMCU->APB1FZ, DBGMCU_APB1_FZ_DBG_I2C2_STOP) +#endif + +#if defined (DBGMCU_APB1_FZ_DBG_I2C3_STOP) +/** + * @brief I2C3 Peripherals Debug mode + */ +#define __HAL_DBGMCU_FREEZE_I2C3_TIMEOUT() SET_BIT(DBGMCU->APB1FZ, DBGMCU_APB1_FZ_DBG_I2C3_STOP) +#define __HAL_DBGMCU_UNFREEZE_I2C3_TIMEOUT() CLEAR_BIT(DBGMCU->APB1FZ, DBGMCU_APB1_FZ_DBG_I2C3_STOP) +#endif + +#if defined (DBGMCU_APB1_FZ_DBG_LPTIMER_STOP) +/** + * @brief LPTIMER Peripherals Debug mode + */ +#define __HAL_DBGMCU_FREEZE_LPTIMER() SET_BIT(DBGMCU->APB1FZ ,DBGMCU_APB1_FZ_DBG_LPTIMER_STOP) +#define __HAL_DBGMCU_UNFREEZE_LPTIMER() CLEAR_BIT(DBGMCU->APB1FZ ,DBGMCU_APB1_FZ_DBG_LPTIMER_STOP) +#endif + +#if defined (DBGMCU_APB2_FZ_DBG_TIM22_STOP) +/** + * @brief TIM22 Peripherals Debug mode + */ +#define __HAL_DBGMCU_FREEZE_TIM22() SET_BIT(DBGMCU->APB2FZ, DBGMCU_APB2_FZ_DBG_TIM22_STOP) +#define __HAL_DBGMCU_UNFREEZE_TIM22() CLEAR_BIT(DBGMCU->APB2FZ, DBGMCU_APB2_FZ_DBG_TIM22_STOP) +#endif + +#if defined (DBGMCU_APB2_FZ_DBG_TIM21_STOP) +/** + * @brief TIM21 Peripherals Debug mode + */ +#define __HAL_DBGMCU_FREEZE_TIM21() SET_BIT(DBGMCU->APB2FZ, DBGMCU_APB2_FZ_DBG_TIM21_STOP) +#define __HAL_DBGMCU_UNFREEZE_TIM21() CLEAR_BIT(DBGMCU->APB2FZ, DBGMCU_APB2_FZ_DBG_TIM21_STOP) +#endif + +/** @brief Main Flash memory mapped at 0x00000000 + */ +#define __HAL_SYSCFG_REMAPMEMORY_FLASH() CLEAR_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_MEM_MODE) + +/** @brief System Flash memory mapped at 0x00000000 + */ +#define __HAL_SYSCFG_REMAPMEMORY_SYSTEMFLASH() MODIFY_REG(SYSCFG->CFGR1, SYSCFG_CFGR1_MEM_MODE, SYSCFG_CFGR1_MEM_MODE_0) + + +/** @brief Embedded SRAM mapped at 0x00000000 + */ +#define __HAL_SYSCFG_REMAPMEMORY_SRAM() MODIFY_REG(SYSCFG->CFGR1, SYSCFG_CFGR1_MEM_MODE, SYSCFG_CFGR1_MEM_MODE_0 | SYSCFG_CFGR1_MEM_MODE_1) + +/** @brief Configuration of the DBG Low Power mode. + * @param __DBGLPMODE__ bit field to indicate in wich Low Power mode DBG is still active. + * This parameter can be a value of + * - DBGMCU_SLEEP + * - DBGMCU_STOP + * - DBGMCU_STANDBY + */ +#define __HAL_SYSCFG_DBG_LP_CONFIG(__DBGLPMODE__) do {assert_param(IS_DBGMCU_PERIPH(__DBGLPMODE__)); \ + MODIFY_REG(DBGMCU->CR, DBGMCU_CR_DBG, (__DBGLPMODE__)); \ + } while (0) + +#if defined (LCD_BASE) /* STM32L0x3xx only */ + +/** @brief Macro to configure the VLCD Decoupling capacitance connection. + * + * @param __SYSCFG_VLCD_CAPA__ specifies the decoupling of LCD capacitance for rails connection on GPIO. + * This parameter can be a combination of following values (when available): + * @arg SYSCFG_VLCD_PB2_EXT_CAPA_ON: Connection on PB2 + * @arg SYSCFG_VLCD_PB12_EXT_CAPA_ON: Connection on PB12 + * @arg SYSCFG_VLCD_PB0_EXT_CAPA_ON: Connection on PB0 + * @arg SYSCFG_VLCD_PE11_EXT_CAPA_ON: Connection on PE11 + * @arg SYSCFG_VLCD_PE12_EXT_CAPA_ON: Connection on PE12 + * @retval None + */ +#define __HAL_SYSCFG_VLCD_CAPA_CONFIG(__SYSCFG_VLCD_CAPA__) \ + MODIFY_REG(SYSCFG->CFGR2, SYSCFG_LCD_EXT_CAPA, (uint32_t)(__SYSCFG_VLCD_CAPA__)) + +/** + * @brief Returns the decoupling of LCD capacitance configured by user. + * @retval The LCD capacitance connection as configured by user. The returned can be a combination of : + * SYSCFG_VLCD_PB2_EXT_CAPA_ON: Connection on PB2 + * SYSCFG_VLCD_PB12_EXT_CAPA_ON: Connection on PB12 + * SYSCFG_VLCD_PB0_EXT_CAPA_ON: Connection on PB0 + * SYSCFG_VLCD_PE11_EXT_CAPA_ON: Connection on PE11 + * SYSCFG_VLCD_PE12_EXT_CAPA_ON: Connection on PE12 + */ +#define __HAL_SYSCFG_GET_VLCD_CAPA_CONFIG() READ_BIT(SYSCFG->CFGR2, SYSCFG_LCD_EXT_CAPA) + +#endif + +/** + * @brief Returns the boot mode as configured by user. + * @retval The boot mode as configured by user. The returned can be a value of : + * - SYSCFG_BOOT_MAINFLASH + * - SYSCFG_BOOT_SYSTEMFLASH + * - SYSCFG_BOOT_SRAM + */ +#define __HAL_SYSCFG_GET_BOOT_MODE() READ_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_BOOT_MODE) + + +/** @brief Check whether the specified SYSCFG flag is set or not. + * @param __FLAG__ specifies the flag to check. + * The only parameter supported is SYSCFG_FLAG_VREFINT_READY + * @retval The new state of __FLAG__ (TRUE or FALSE). + */ +#define __HAL_SYSCFG_GET_FLAG(__FLAG__) (((SYSCFG->CFGR3) & (__FLAG__)) == (__FLAG__)) + +/** @brief Fast mode Plus driving capability enable macro + * @param __FASTMODEPLUS__ This parameter can be a value of : + * @arg SYSCFG_FASTMODEPLUS_PB6 + * @arg SYSCFG_FASTMODEPLUS_PB7 + * @arg SYSCFG_FASTMODEPLUS_PB8 + * @arg SYSCFG_FASTMODEPLUS_PB9 + */ +#define __HAL_SYSCFG_FASTMODEPLUS_ENABLE(__FASTMODEPLUS__) do {assert_param(IS_SYSCFG_FASTMODEPLUS((__FASTMODEPLUS__))); \ + SET_BIT(SYSCFG->CFGR2, (__FASTMODEPLUS__)); \ + }while(0) +/** @brief Fast mode Plus driving capability disable macro + * @param __FASTMODEPLUS__ This parameter can be a value of : + * @arg SYSCFG_FASTMODEPLUS_PB6 + * @arg SYSCFG_FASTMODEPLUS_PB7 + * @arg SYSCFG_FASTMODEPLUS_PB8 + * @arg SYSCFG_FASTMODEPLUS_PB9 + */ +#define __HAL_SYSCFG_FASTMODEPLUS_DISABLE(__FASTMODEPLUS__) do {assert_param(IS_SYSCFG_FASTMODEPLUS((__FASTMODEPLUS__))); \ + CLEAR_BIT(SYSCFG->CFGR2, (__FASTMODEPLUS__)); \ + }while(0) + + +/** + * @} + */ + +/** @defgroup HAL_Private_Macros HAL Private Macros + * @{ + */ +#define IS_TICKFREQ(FREQ) (((FREQ) == HAL_TICK_FREQ_10HZ) || \ + ((FREQ) == HAL_TICK_FREQ_100HZ) || \ + ((FREQ) == HAL_TICK_FREQ_1KHZ)) +/** + * @} + */ + +/* Exported variables --------------------------------------------------------*/ +/** @defgroup HAL_Exported_Variables HAL Exported Variables + * @{ + */ +extern __IO uint32_t uwTick; +extern uint32_t uwTickPrio; +extern HAL_TickFreqTypeDef uwTickFreq; + +/** + * @} + */ + +/* 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 + * @{ + */ +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); + +/** + * @} + */ + +/** @defgroup HAL_Exported_Functions_Group2 Peripheral Control functions + * @brief 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(HAL_TickFreqTypeDef Freq); +HAL_TickFreqTypeDef 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); +/** + * @} + */ + +/** @defgroup HAL_Exported_Functions_Group3 DBGMCU Peripheral Control functions + * @brief 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); +void HAL_DBGMCU_DBG_EnableLowPowerConfig(uint32_t Periph); +void HAL_DBGMCU_DBG_DisableLowPowerConfig(uint32_t Periph); +/** + * @} + */ + +/** @defgroup HAL_Exported_Functions_Group4 SYSCFG Peripheral Control functions + * @brief SYSCFG Peripheral Control functions + * @{ + */ +uint32_t HAL_SYSCFG_GetBootMode(void); +void HAL_SYSCFG_Enable_Lock_VREFINT(void); +void HAL_SYSCFG_Disable_Lock_VREFINT(void); +void HAL_SYSCFG_VREFINT_OutputSelect(uint32_t SYSCFG_Vrefint_OUTPUT); +/** + * @} + */ +/** + * @} + */ + +/* Define the private group ***********************************/ +/**************************************************************/ +/** @defgroup HAL_Private HAL Private + * @{ + */ +/** + * @} + */ +/**************************************************************/ + + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32L0xx_HAL_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h new file mode 100644 index 0000000..0fcba0c --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h @@ -0,0 +1,365 @@ +/** + ****************************************************************************** + * @file stm32l0xx_hal_cortex.h + * @author MCD Application Team + * @brief Header file of CORTEX HAL module. + ****************************************************************************** + * @attention + * + *

© Copyright(c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L0xx_HAL_CORTEX_H +#define __STM32L0xx_HAL_CORTEX_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal_def.h" + +/** @addtogroup STM32L0xx_HAL_Driver + * @{ + */ + +/** @defgroup CORTEX 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 + * @{ + */ +typedef struct +{ + uint32_t BaseAddress; /*!< Specifies the base address of the region to protect. */ + + 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 */ + + 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; /*!< This parameter is NOT used but is kept to keep API unified through all families*/ + + 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 + * @{ + */ + + +#define IS_NVIC_PREEMPTION_PRIORITY(__PRIORITY__) ((__PRIORITY__) < 0x10U) + +#define IS_NVIC_DEVICE_IRQ(IRQ) ((IRQ) >= 0x0) + +/** @defgroup CORTEX_SysTick_clock_source CORTEX SysTick Clock Source + * @{ + */ +#define SYSTICK_CLKSOURCE_HCLK_DIV8 (0x00000000U) +#define SYSTICK_CLKSOURCE_HCLK (0x00000004U) +#define IS_SYSTICK_CLK_SOURCE(__SOURCE__) (((__SOURCE__) == SYSTICK_CLKSOURCE_HCLK) || \ + ((__SOURCE__) == SYSTICK_CLKSOURCE_HCLK_DIV8)) +/** + * @} + */ + +#if (__MPU_PRESENT == 1) +/** @defgroup CORTEX_MPU_HFNMI_PRIVDEF_Control CORTEX MPU HFNMI and PRIVILEGED Access control + * @{ + */ +#define MPU_HFNMI_PRIVDEF_NONE (0x00000000U) +#define MPU_HARDFAULT_NMI (0x00000002U) +#define MPU_PRIVILEGED_DEFAULT (0x00000004U) +#define MPU_HFNMI_PRIVDEF (0x00000006U) +/** + * @} + */ + +/** @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_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 functions --------------------------------------------------------*/ +/** @defgroup CORTEX_Exported_Functions CORTEX Exported Functions + * @{ + */ + +/** @defgroup CORTEX_Exported_Functions_Group1 Initialization and Configuration functions + * @brief Initialization and Configuration functions + * @{ + */ +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); +/** + * @} + */ + +/** @defgroup CORTEX_Exported_Functions_Group2 Peripheral Control functions + * @brief Cortex control functions + * @{ + */ + +uint32_t HAL_NVIC_GetPriority(IRQn_Type IRQn); +uint32_t HAL_NVIC_GetPendingIRQ(IRQn_Type IRQn); +void HAL_NVIC_SetPendingIRQ(IRQn_Type IRQn); +void HAL_NVIC_ClearPendingIRQ(IRQn_Type IRQn); +void HAL_SYSTICK_CLKSourceConfig(uint32_t CLKSource); +void HAL_SYSTICK_IRQHandler(void); +void HAL_SYSTICK_Callback(void); +#if (__MPU_PRESENT == 1U) +void HAL_MPU_Enable(uint32_t MPU_Control); +void HAL_MPU_Disable(void); +void HAL_MPU_ConfigRegion(MPU_Region_InitTypeDef *MPU_Init); +#endif /* __MPU_PRESENT */ +/** + * @} + */ + + /** + * @} + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/** @defgroup CORTEX_Private_Macros CORTEX Private Macros + * @{ + */ + +#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_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_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)0x00FFU) +#endif /* __MPU_PRESENT */ + + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32L0xx_HAL_CORTEX_H */ + + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h new file mode 100644 index 0000000..0d8025f --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h @@ -0,0 +1,204 @@ +/** + ****************************************************************************** + * @file stm32l0xx_hal_def.h + * @author MCD Application Team + * @brief This file contains HAL common defines, enumeration, macros and + * structures definitions. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L0xx_HAL_DEF +#define __STM32L0xx_HAL_DEF + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx.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 ------------------------------------------------------------*/ + +#define UNUSED(X) (void)X /* To avoid gcc/g++ warnings */ + +#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 (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) /* ARM Compiler V6 */ + #ifndef __weak + #define __weak __attribute__((weak)) + #endif + #ifndef __packed + #define __packed __attribute__((packed)) + #endif +#elif defined ( __GNUC__ ) && !defined (__CC_ARM) /* GNU Compiler */ + #ifndef __weak + #define __weak __attribute__((weak)) + #endif /* __weak */ + #ifndef __packed + #define __packed __attribute__((__packed__)) + #endif /* __packed */ + + #define __NOINLINE __attribute__ ( (noinline) ) + +#endif /* __GNUC__ */ + + +/* Macro to get variable aligned on 4-bytes, for __ICCARM__ the directive "#pragma data_alignment=4" must be used instead */ +#if defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) /* ARM Compiler V6 */ + #ifndef __ALIGN_BEGIN + #define __ALIGN_BEGIN + #endif + #ifndef __ALIGN_END + #define __ALIGN_END __attribute__ ((aligned (4))) + #endif +#elif 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 V5*/ + #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 ) || (defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)) +/* ARM Compiler V4/V5 and V6 + -------------------------- + 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 + +#define __NOINLINE __attribute__ ( (noinline) ) + + +#elif defined ( __ICCARM__ ) +/* ICCARM Compiler + --------------- + RAM functions are defined using a specific toolchain keyword "__ramfunc". +*/ +#define __RAM_FUNC __ramfunc + +#define __NOINLINE _Pragma("optimize = no_inline") + +#elif defined ( __GNUC__ ) +/* GNU Compiler + ------------ + RAM functions are defined using a specific toolchain attribute + "__attribute__((section(".RamFunc")))". +*/ +#define __RAM_FUNC __attribute__((section(".RamFunc"))) + +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* ___STM32L0xx_HAL_DEF */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h new file mode 100644 index 0000000..e0a1560 --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h @@ -0,0 +1,675 @@ +/** + ****************************************************************************** + * @file stm32l0xx_hal_dma.h + * @author MCD Application Team + * @brief Header file of DMA HAL module. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32L0xx_HAL_DMA_H +#define STM32L0xx_HAL_DMA_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal_def.h" + +/** @addtogroup STM32L0xx_HAL_Driver + * @{ + */ + +/** @addtogroup DMA + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup DMA_Exported_Types DMA Exported Types + * @{ + */ + +/** + * @brief DMA Configuration Structure definition + */ +typedef struct +{ + uint32_t Request; /*!< Specifies the request selected for the specified channel. + This parameter can be a value of @ref DMA_request */ + + 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_request DMA request + * @{ + */ + +#if defined (STM32L010x4) || defined (STM32L010x6) || defined (STM32L010x8) || defined (STM32L010xC) + +#define DMA_REQUEST_0 0U +#define DMA_REQUEST_1 1U +#define DMA_REQUEST_4 4U +#define DMA_REQUEST_5 5U +#define DMA_REQUEST_6 6U +#define DMA_REQUEST_8 8U + +#define IS_DMA_ALL_REQUEST(REQUEST) (((REQUEST) == DMA_REQUEST_0) || \ + ((REQUEST) == DMA_REQUEST_1) || \ + ((REQUEST) == DMA_REQUEST_4) || \ + ((REQUEST) == DMA_REQUEST_5) || \ + ((REQUEST) == DMA_REQUEST_6) || \ + ((REQUEST) == DMA_REQUEST_8)) + +/* STM32L010x4 || STM32L010x6 || STM32L010x8 || STM32L010xC */ + +#elif defined (STM32L021xx) || defined (STM32L041xx) || defined (STM32L062xx) || defined (STM32L063xx) || defined (STM32L081xx) || defined (STM32L082xx) || defined (STM32L083xx) + +#define DMA_REQUEST_0 0U +#define DMA_REQUEST_1 1U +#define DMA_REQUEST_2 2U +#define DMA_REQUEST_3 3U +#define DMA_REQUEST_4 4U +#define DMA_REQUEST_5 5U +#define DMA_REQUEST_6 6U +#define DMA_REQUEST_7 7U +#define DMA_REQUEST_8 8U +#define DMA_REQUEST_9 9U +#define DMA_REQUEST_10 10U +#define DMA_REQUEST_11 11U /* AES product only */ +#define DMA_REQUEST_12 12U +#define DMA_REQUEST_13 13U +#define DMA_REQUEST_14 14U +#define DMA_REQUEST_15 15U + +#define IS_DMA_ALL_REQUEST(REQUEST) (((REQUEST) == DMA_REQUEST_0) || \ + ((REQUEST) == DMA_REQUEST_1) || \ + ((REQUEST) == DMA_REQUEST_2) || \ + ((REQUEST) == DMA_REQUEST_3) || \ + ((REQUEST) == DMA_REQUEST_4) || \ + ((REQUEST) == DMA_REQUEST_5) || \ + ((REQUEST) == DMA_REQUEST_6) || \ + ((REQUEST) == DMA_REQUEST_7) || \ + ((REQUEST) == DMA_REQUEST_8) || \ + ((REQUEST) == DMA_REQUEST_9) || \ + ((REQUEST) == DMA_REQUEST_10) || \ + ((REQUEST) == DMA_REQUEST_11) || \ + ((REQUEST) == DMA_REQUEST_12) || \ + ((REQUEST) == DMA_REQUEST_13) || \ + ((REQUEST) == DMA_REQUEST_14) || \ + ((REQUEST) == DMA_REQUEST_15)) + +/* (STM32L021xx) || (STM32L041xx) || (STM32L062xx) || (STM32L063xx) || (STM32L081xx) || (STM32L082xx) || (STM32L083xx) */ + +#else + +#define DMA_REQUEST_0 0U +#define DMA_REQUEST_1 1U +#define DMA_REQUEST_2 2U +#define DMA_REQUEST_3 3U +#define DMA_REQUEST_4 4U +#define DMA_REQUEST_5 5U +#define DMA_REQUEST_6 6U +#define DMA_REQUEST_7 7U +#define DMA_REQUEST_8 8U +#define DMA_REQUEST_9 9U +#define DMA_REQUEST_10 10U +#define DMA_REQUEST_12 12U +#define DMA_REQUEST_13 13U +#define DMA_REQUEST_14 14U +#define DMA_REQUEST_15 15U + +#define IS_DMA_ALL_REQUEST(REQUEST) (((REQUEST) == DMA_REQUEST_0) || \ + ((REQUEST) == DMA_REQUEST_1) || \ + ((REQUEST) == DMA_REQUEST_2) || \ + ((REQUEST) == DMA_REQUEST_3) || \ + ((REQUEST) == DMA_REQUEST_4) || \ + ((REQUEST) == DMA_REQUEST_5) || \ + ((REQUEST) == DMA_REQUEST_6) || \ + ((REQUEST) == DMA_REQUEST_7) || \ + ((REQUEST) == DMA_REQUEST_8) || \ + ((REQUEST) == DMA_REQUEST_9) || \ + ((REQUEST) == DMA_REQUEST_10) || \ + ((REQUEST) == DMA_REQUEST_12) || \ + ((REQUEST) == DMA_REQUEST_13) || \ + ((REQUEST) == DMA_REQUEST_14) || \ + ((REQUEST) == DMA_REQUEST_15)) + +#endif /* (STM32L031xx) || (STM32L051xx) || (STM32L052xx) || (STM32L053xx) || (STM32L071xx) || (STM32L072xx) || (STM32L073xx) */ + + + +/** + * @} + */ + +/** @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 */ + +/** + * @brief Return the current DMA Channel transfer complete flag. + * @param __HANDLE__: DMA handle + * @retval The specified transfer complete flag index. + */ + +#if defined (STM32L010x4) || defined (STM32L011xx) || defined (STM32L021xx) +#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 :\ + DMA_FLAG_TC5) +#else +#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) +#endif +/** + * @brief Return the current DMA Channel half transfer complete flag. + * @param __HANDLE__ DMA handle + * @retval The specified half transfer complete flag index. + */ +#if defined (STM32L010x4) || defined (STM32L011xx) || defined (STM32L021xx) +#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 :\ + DMA_FLAG_HT5) +#else +#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) +#endif +/** + * @brief Returns the current DMA Channel transfer error flag. + * @param __HANDLE__ DMA handle + * @retval The specified transfer error flag index. + */ +#if defined (STM32L010x4) || defined (STM32L011xx) || defined (STM32L021xx) +#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 :\ + DMA_FLAG_TE5) +#else +#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) +#endif +/** + * @brief Returns the current DMA Channel Global interrupt flag. + * @param __HANDLE__ DMA handle + * @retval The specified transfer error flag index. + */ +#if defined (STM32L010x4) || defined (STM32L011xx) || defined (STM32L021xx) +#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 :\ + DMA_ISR_GIF5) +#else +#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) +#endif +/** + * @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 0_4, 1_5, 2_6 or 3_7 to select the DMA Channel flag. + * @retval The state of FLAG (SET or RESET). + */ +#define __HAL_DMA_GET_FLAG(__HANDLE__, __FLAG__) (DMA1->ISR & (__FLAG__)) + +/** + * @brief Clears 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 0_4, 1_5, 2_6 or 3_7 to select the DMA Channel flag. + * @retval None + */ +#define __HAL_DMA_CLEAR_FLAG(__HANDLE__, __FLAG__) (DMA1->IFCR = (__FLAG__)) + +/** + * @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); +/** + * @} + */ + +/** + * @} + */ +/* Define the private group ***********************************/ +/**************************************************************/ +/** @defgroup DMA_Private DMA Private + * @{ + */ + +#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)) + +/** + * @} + */ +/**************************************************************/ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32L0xx_HAL_DMA_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h new file mode 100644 index 0000000..5a3fae3 --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h @@ -0,0 +1,342 @@ +/** + ****************************************************************************** + * @file stm32l0xx_ll_exti.h + * @author MCD Application Team + * @brief Header file of EXTI LL module. + ****************************************************************************** + * @attention + * + *

© Copyright(c) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L0xx_HAL_EXTI_H +#define __STM32L0xx_HAL_EXTI_H + +#ifdef __cplusplus +extern "C" { +#endif +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx.h" + +/** @addtogroup STM32L0xx_HAL_Driver + * @{ + */ + +/** @defgroup EXTI EXTI + * @brief EXTI HAL module driver + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ + +/** @defgroup EXTI_Exported_Types EXTI Exported Types + * @{ + */ +typedef enum +{ + HAL_EXTI_COMMON_CB_ID = 0x00U, + HAL_EXTI_RISING_CB_ID = 0x01U, + HAL_EXTI_FALLING_CB_ID = 0x02U, +} 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 */ +#if defined(EXTI_IMR_IM16) +#define EXTI_LINE_16 (EXTI_CONFIG | 0x10u) /*!< External interrupt line 16 Connected to the PVD Output */ +#else +#define EXTI_LINE_16 (EXTI_RESERVED | 0x10u) /*!< No interrupt supported in this line */ +#endif /* EXTI_IMR_IM16 */ +#define EXTI_LINE_17 (EXTI_CONFIG | 0x11u) /*!< External interrupt line 17 Connected to the RTC Alarm event */ +#if defined(EXTI_IMR_IM18) +#define EXTI_LINE_18 (EXTI_DIRECT | 0x12u) /*!< External interrupt line 18 Connected to the USB Wakeup from suspend event */ +#else +#define EXTI_LINE_18 (EXTI_RESERVED | 0x12u) /*!< No interrupt supported in this line */ +#endif /* EXTI_IMR_IM18 */ +#define EXTI_LINE_19 (EXTI_CONFIG | 0x13u) /*!< External interrupt line 19 Connected to the RTC Tamper and Time Stamp events or CSS_LSE */ +#define EXTI_LINE_20 (EXTI_CONFIG | 0x14u) /*!< External interrupt line 20 Connected to the RTC wakeup timer */ +#if defined(EXTI_IMR_IM21) +#define EXTI_LINE_21 (EXTI_CONFIG | 0x15u) /*!< External interrupt line 21 Connected to the Comparator 1 output */ +#else +#define EXTI_LINE_21 (EXTI_RESERVED | 0x15u) /*!< No interrupt supported in this line */ +#endif /* EXTI_IMR_IM21 */ +#if defined(EXTI_IMR_IM22) +#define EXTI_LINE_22 (EXTI_CONFIG | 0x16u) /*!< External interrupt line 22 Connected to the Comparator 2 output */ +#else +#define EXTI_LINE_22 (EXTI_RESERVED | 0x16u) /*!< No interrupt supported in this line */ +#endif /* EXTI_IMR_IM22 */ +#define EXTI_LINE_23 (EXTI_DIRECT | 0x17u) /*!< External interrupt line 23 Connected to the internal I2C1 wakeup event */ +#if defined(EXTI_IMR_IM24) +#define EXTI_LINE_24 (EXTI_DIRECT | 0x18u) /*!< External interrupt line 24 Connected to the internal I2C3 wakeup event */ +#else +#define EXTI_LINE_24 (EXTI_RESERVED | 0x18u) /*!< No interrupt supported in this line */ +#endif /* EXTI_IMR_IM24 */ +#if defined(EXTI_IMR_IM25) +#define EXTI_LINE_25 (EXTI_DIRECT | 0x19u) /*!< External interrupt line 25 Connected to the internal USART1 wakeup event */ +#else +#define EXTI_LINE_25 (EXTI_RESERVED | 0x19u) /*!< No interrupt supported in this line */ +#endif /* EXTI_IMR_IM25 */ +#define EXTI_LINE_26 (EXTI_DIRECT | 0x1Au) /*!< External interrupt line 26 Connected to the internal USART2 wakeup event */ +#define EXTI_LINE_27 (EXTI_RESERVED | 0x1Bu) /*!< No interrupt supported in this line */ +#define EXTI_LINE_28 (EXTI_DIRECT | 0x1Cu) /*!< External interrupt line 28 Connected to the LPUART1 Wakeup event */ +#define EXTI_LINE_29 (EXTI_DIRECT | 0x1Du) /*!< External interrupt line 29 Connected to the LPTIM1 Wakeup event */ + +/** + * @} + */ + +/** @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 +#if defined (GPIOD) +#define EXTI_GPIOD 0x00000003u +#endif /* GPIOD*/ +#if defined (GPIOE) +#define EXTI_GPIOE 0x00000004u +#endif /* GPIOE*/ +#if defined (GPIOH) +#define EXTI_GPIOH 0x00000007u +#endif /* GPIOH*/ +/** + * @} + */ + +/** + * @} + */ + +/* 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_DIRECT (0x01uL << EXTI_PROPERTY_SHIFT) +#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_DIRECT | 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 + */ +#define EXTI_LINE_NB 30u + +/** + * @} + */ + +/* 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 (GPIOH) +#define IS_EXTI_GPIO_PORT(__PORT__) (((__PORT__) == EXTI_GPIOA) || \ + ((__PORT__) == EXTI_GPIOB) || \ + ((__PORT__) == EXTI_GPIOC)) +#elif !defined (GPIOD) +#define IS_EXTI_GPIO_PORT(__PORT__) (((__PORT__) == EXTI_GPIOA) || \ + ((__PORT__) == EXTI_GPIOB) || \ + ((__PORT__) == EXTI_GPIOC) || \ + ((__PORT__) == EXTI_GPIOH)) +#elif !defined (GPIOE) +#define IS_EXTI_GPIO_PORT(__PORT__) (((__PORT__) == EXTI_GPIOA) || \ + ((__PORT__) == EXTI_GPIOB) || \ + ((__PORT__) == EXTI_GPIOC) || \ + ((__PORT__) == EXTI_GPIOD) || \ + ((__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_GPIOH)) +#endif /* GPIOH */ + +#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 /* STM32L0xx_HAL_EXTI_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h new file mode 100644 index 0000000..595e6b8 --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h @@ -0,0 +1,378 @@ +/** + ****************************************************************************** + * @file stm32l0xx_hal_flash.h + * @author MCD Application Team + * @brief Header file of Flash HAL module. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L0xx_HAL_FLASH_H +#define __STM32L0xx_HAL_FLASH_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal_def.h" + +/** @addtogroup STM32L0xx_HAL_Driver + * @{ + */ + +/** @addtogroup FLASH + * @{ + */ + +/** @addtogroup FLASH_Private_Constants + * @{ + */ +#define FLASH_TIMEOUT_VALUE (50000U) /* 50 s */ +#define FLASH_SIZE_DATA_REGISTER FLASHSIZE_BASE +/** + * @} + */ + +/** @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 = 0, + FLASH_PROC_PAGEERASE = 1, + FLASH_PROC_PROGRAM = 2, +} 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_FWWERR 0x20U /*!< FLASH Write or Erase operation aborted */ +#define HAL_FLASH_ERROR_NOTZERO 0x40U /*!< FLASH Write operation is done in a not-erased region */ + +/** + * @} + */ + +/** @defgroup FLASH_Page_Size FLASH size information + * @{ + */ + +#define FLASH_SIZE (uint32_t)((*((uint32_t *)FLASHSIZE_BASE)&0xFFFF) * 1024U) +#define FLASH_PAGE_SIZE (128U) /*!< FLASH Page Size in bytes */ + +#define FLASH_END (FLASH_BASE + FLASH_SIZE - 1) /*!< FLASH end address in the alias region */ + +#if defined (STM32L071xx) || defined (STM32L072xx) || defined (STM32L073xx) || defined (STM32L081xx) || defined (STM32L082xx) || defined (STM32L083xx) +#define FLASH_BANK2_BASE (FLASH_BASE + (FLASH_SIZE >> 1)) /*!< FLASH BANK2 base address in the alias region */ +#define FLASH_BANK1_END (FLASH_BANK2_BASE - 1) /*!< Program end FLASH BANK1 address */ +#define FLASH_BANK2_END (FLASH_END) /*!< Program end FLASH BANK2 address */ +#endif + +/** + * @} + */ + +/** @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 flag (not valid with STM32L031xx/STM32L041xx) + * @arg @ref FLASH_FLAG_RDERR FLASH Read protected error flag + * @arg @ref FLASH_FLAG_WRPERR FLASH Write protected error flag + * @arg @ref FLASH_FLAG_FWWERR FLASH Fetch While Write Error flag + * @arg @ref FLASH_FLAG_NOTZEROERR Not Zero area 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 flag (not valid with STM32L031xx/STM32L041xx) + * @arg @ref FLASH_FLAG_RDERR FLASH Read protected error flag + * @arg @ref FLASH_FLAG_WRPERR FLASH Write protected error flag + * @arg @ref FLASH_FLAG_FWWERR FLASH Fetch While Write Error flag + * @arg @ref FLASH_FLAG_NOTZEROERR Not Zero area error flag + * @retval none + */ +#define __HAL_FLASH_CLEAR_FLAG(__FLAG__) ((FLASH->SR) = (__FLAG__)) + +/** + * @} + */ + +/** + * @} + */ + +/* Include FLASH HAL Extended module */ +#include "stm32l0xx_hal_flash_ex.h" +#include "stm32l0xx_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 /* __STM32L0xx_HAL_FLASH_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h new file mode 100644 index 0000000..893e984 --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h @@ -0,0 +1,811 @@ +/** + ****************************************************************************** + * @file stm32l0xx_hal_flash_ex.h + * @author MCD Application Team + * @brief Header file of Flash HAL Extended module. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L0xx_HAL_FLASH_EX_H +#define __STM32L0xx_HAL_FLASH_EX_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal_def.h" + +/** @addtogroup STM32L0xx_HAL_Driver + * @{ + */ + +/** @addtogroup FLASHEx + * @{ + */ + +/** @addtogroup FLASHEx_Private_Constants + * @{ + */ +#define FLASH_SIZE_DATA_REGISTER FLASHSIZE_BASE + +#define FLASH_NBPAGES_MAX (FLASH_SIZE / FLASH_PAGE_SIZE) + +#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 | OPTIONBYTE_BOOT_BIT1))) + +#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_OPTR_WPRMOD) && defined(FLASH_OPTR_BFB2) + +#define IS_OBEX(__VALUE__) (((__VALUE__) <= (OPTIONBYTE_PCROP | OPTIONBYTE_BOOTCONFIG)) && ((__VALUE__) != 0U)) + +#elif defined(FLASH_OPTR_WPRMOD) && !defined(FLASH_OPTR_BFB2) + +#define IS_OBEX(__VALUE__) ((__VALUE__) == OPTIONBYTE_PCROP) + +#elif !defined(FLASH_OPTR_WPRMOD) && defined(FLASH_OPTR_BFB2) + +#define IS_OBEX(__VALUE__) ((__VALUE__) == OPTIONBYTE_BOOTCONFIG) + +#endif /* FLASH_OPTR_WPRMOD && FLASH_OPTR_BFB2 */ + +#if defined(FLASH_OPTR_WPRMOD) + +#define IS_PCROPSTATE(__VALUE__) (((__VALUE__) == OB_PCROP_STATE_DISABLE) || \ + ((__VALUE__) == OB_PCROP_STATE_ENABLE)) + +#define IS_OB_PCROP(__PAGE__) (((__PAGE__) != 0x0000000U)) +#endif /* FLASH_OPTR_WPRMOD */ + +#if defined(FLASH_OPTR_BFB2) + +#define IS_OB_BOOT_BANK(__BANK__) (((__BANK__) == OB_BOOT_BANK2) || ((__BANK__) == OB_BOOT_BANK1)) + +#endif /* FLASH_OPTR_BFB2 */ + +#define IS_OB_BOOT1(__BOOT_BIT1__) (((__BOOT_BIT1__) == OB_BOOT_BIT1_RESET) || ((__BOOT_BIT1__) == OB_BOOT_BIT1_SET)) +#define IS_TYPEPROGRAMDATA(__VALUE__) (((__VALUE__) == FLASH_TYPEPROGRAMDATA_BYTE) || \ + ((__VALUE__) == FLASH_TYPEPROGRAMDATA_HALFWORD) || \ + ((__VALUE__) == FLASH_TYPEPROGRAMDATA_WORD)) + + +/** @defgroup FLASHEx_Address FLASHEx Address + * @{ + */ + +#if defined (STM32L071xx) || defined (STM32L072xx) || defined (STM32L073xx) || defined (STM32L081xx) || defined (STM32L082xx) || defined (STM32L083xx) + +#define IS_FLASH_DATA_ADDRESS(__ADDRESS__) (((__ADDRESS__) >= DATA_EEPROM_BASE) && ((__ADDRESS__) <= DATA_EEPROM_BANK2_END)) +#define IS_FLASH_DATA_BANK1_ADDRESS(__ADDRESS__) (((__ADDRESS__) >= DATA_EEPROM_BASE) && ((__ADDRESS__) <= DATA_EEPROM_BANK1_END)) +#define IS_FLASH_DATA_BANK2_ADDRESS(__ADDRESS__) (((__ADDRESS__) >= DATA_EEPROM_BANK2_BASE) && ((__ADDRESS__) <= DATA_EEPROM_BANK2_END)) +#define IS_FLASH_PROGRAM_ADDRESS(__ADDRESS__) (((__ADDRESS__) >= FLASH_BASE) && ((__ADDRESS__) < (FLASH_BASE + FLASH_SIZE))) +#define IS_FLASH_PROGRAM_BANK1_ADDRESS(__ADDRESS__) (((__ADDRESS__) >= FLASH_BASE) && ((__ADDRESS__) < (FLASH_BASE + (FLASH_SIZE >> 1)))) +#define IS_FLASH_PROGRAM_BANK2_ADDRESS(__ADDRESS__) (((__ADDRESS__) >= FLASH_BANK2_BASE) && ((__ADDRESS__) < (FLASH_BASE + FLASH_SIZE))) +#else +#define IS_FLASH_DATA_ADDRESS(__ADDRESS__) (((__ADDRESS__) >= DATA_EEPROM_BASE) && ((__ADDRESS__) <= DATA_EEPROM_END)) +#define IS_FLASH_PROGRAM_ADDRESS(__ADDRESS__) (((__ADDRESS__) >= FLASH_BASE) && ((__ADDRESS__) < (FLASH_BASE + FLASH_SIZE))) +#endif + +#define IS_NBPAGES(__PAGES__) (((__PAGES__) >= 1) && ((__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 Programm 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 WRPSector; /*!< WRPSector: This bitfield specifies the sector (s) which are write protected. + This parameter can be a combination of @ref FLASHEx_Option_Bytes_Write_Protection */ + +#if defined(STM32L071xx) || defined(STM32L072xx) || defined(STM32L073xx) || defined(STM32L081xx) || defined(STM32L082xx) || defined(STM32L083xx) + uint32_t WRPSector2; /*!< WRPSector2 : This bitfield specifies the sector(s) upper Sector31 which are write protected. + This parameter can be a combination of @ref FLASHEx_Option_Bytes_Write_Protection2 */ +#endif + + 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*/ + + uint8_t BOOTBit1Config; /*!< BOOT1Config: Together with input pad Boot0, this bit selects the boot source, flash, ram or system memory + This parameter can be a value of @ref FLASHEx_Option_Bytes_BOOTBit1 */ +} FLASH_OBProgramInitTypeDef; + +#if defined(FLASH_OPTR_WPRMOD) || defined(FLASH_OPTR_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_OPTR_WPRMOD) + uint32_t PCROPState; /*!< PCROPState: PCROP activation or deactivation. + This parameter can be a value of @ref FLASHEx_PCROP_State */ + + uint32_t PCROPSector; /*!< PCROPSector : This bitfield specifies the sector(s) which are read/write protected. + This parameter can be a combination of @ref FLASHEx_Option_Bytes_PC_ReadWrite_Protection */ + +#if defined (STM32L071xx) || defined (STM32L072xx) || defined (STM32L073xx) || defined (STM32L081xx) || defined (STM32L082xx) || defined (STM32L083xx) + uint32_t PCROPSector2; /*!< PCROPSector : This bitfield specifies the sector(s) upper Sector31 which are read/write protected. + This parameter can be a combination of @ref FLASHEx_Option_Bytes_PC_ReadWrite_Protection2 */ +#endif /* STM32L071xx || STM32L072xx || STM32L073xx || STM32L081xx || STM32L082xx || STM32L083xx */ +#endif /* FLASH_OPTR_WPRMOD */ + +#if defined(FLASH_OPTR_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_OPTR_BFB2*/ +} FLASH_AdvOBProgramInitTypeDef; + +/** + * @} + */ +#endif /* FLASH_OPTR_WPRMOD || FLASH_OPTR_BFB2 */ + +/* Exported constants --------------------------------------------------------*/ + + +/** @defgroup FLASHEx_Exported_Constants FLASHEx Exported Constants + * @{ + */ + +/** @defgroup FLASHEx_Type_Erase FLASHEx_Type_Erase + * @{ + */ +#define FLASH_TYPEERASE_PAGES (0x00U) /*!> 16)) /*!< At startup, if boot pin 0 and BOOT1 bit are set in boot from user Flash position + and this parameter is selected the device will boot from Bank 2 */ + +/** + * @} + */ +#endif /* FLASH_OPTR_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__) \ + MODIFY_REG(FLASH->ACR, FLASH_ACR_LATENCY, (uint32_t)(__LATENCY__)) + +/** + * @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 prefetch buffer. + * @retval none + */ +#define __HAL_FLASH_PREFETCH_BUFFER_ENABLE() SET_BIT((FLASH->ACR), FLASH_ACR_PRFTEN) + +/** + * @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 Buffer cache. + * @retval none + */ +#define __HAL_FLASH_BUFFER_CACHE_ENABLE() CLEAR_BIT((FLASH->ACR), FLASH_ACR_DISAB_BUF) + +/** + * @brief Disable the FLASH Buffer cache. + * @retval none + */ +#define __HAL_FLASH_BUFFER_CACHE_DISABLE() SET_BIT((FLASH->ACR), FLASH_ACR_DISAB_BUF) + +/** + * @brief Enable the FLASH preread buffer. + * @retval none + */ +#define __HAL_FLASH_PREREAD_BUFFER_ENABLE() SET_BIT((FLASH->ACR), FLASH_ACR_PRE_READ) + +/** + * @brief Disable the FLASH preread buffer. + * @retval none + */ +#define __HAL_FLASH_PREREAD_BUFFER_DISABLE() CLEAR_BIT((FLASH->ACR), FLASH_ACR_PRE_READ) + +/** + * @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 (0) + +/** + * @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 (0) + +/** + * @} + */ + +/* 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_OPTR_WPRMOD) || defined(FLASH_OPTR_BFB2) + +HAL_StatusTypeDef HAL_FLASHEx_AdvOBProgram (FLASH_AdvOBProgramInitTypeDef *pAdvOBInit); +void HAL_FLASHEx_AdvOBGetConfig(FLASH_AdvOBProgramInitTypeDef *pAdvOBInit); + +#endif /* FLASH_OPTR_WPRMOD || FLASH_OPTR_BFB2 */ + +#if defined(FLASH_OPTR_WPRMOD) + +HAL_StatusTypeDef HAL_FLASHEx_OB_SelectPCROP(void); +HAL_StatusTypeDef HAL_FLASHEx_OB_DeSelectPCROP(void); + +#endif /* FLASH_OPTR_WPRMOD */ + +/** + * @} + */ + +/** @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 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 /* __STM32L0xx_HAL_FLASH_EX_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h new file mode 100644 index 0000000..32e2804 --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h @@ -0,0 +1,108 @@ +/** + ****************************************************************************** + * @file stm32l0xx_hal_flash_ramfunc.h + * @author MCD Application Team + * @brief Header file of FLASH RAMFUNC driver. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L0xx_FLASH_RAMFUNC_H +#define __STM32L0xx_FLASH_RAMFUNC_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal_def.h" + +/** @addtogroup STM32L0xx_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 "stm32l0xx_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); +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32L0xx_FLASH_RAMFUNC_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h new file mode 100644 index 0000000..4b993cb --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h @@ -0,0 +1,343 @@ +/** + ****************************************************************************** + * @file stm32l0xx_hal_gpio.h + * @author MCD Application Team + * @brief Header file of GPIO HAL module. + ****************************************************************************** + * @attention + * + *

© Copyright(c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L0xx_HAL_GPIO_H +#define __STM32L0xx_HAL_GPIO_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal_def.h" + +/** @addtogroup STM32L0xx_HAL_Driver + * @{ + */ + +/** @defgroup GPIO GPIO + * @{ + */ +/******************************************************************************/ +/* Exported types ------------------------------------------------------------*/ +/******************************************************************************/ + +/** @defgroup GPIO_Exported_Types GPIO Exported Types + * @{ + */ + +/** @defgroup GPIO_Init_Configuration GPIO init configuration structure + * @{ + */ +/** + * @brief GPIO Init structure definition + */ +typedef struct +{ + uint32_t Pin; /*!< Specifies the GPIO pins to be configured. + This parameter can be a combination of @ref GPIO_pins_define */ + + uint32_t Mode; /*!< Specifies the operating mode for the selected pins. + This parameter can be a value of @ref GPIO_mode_define */ + + 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_define */ + + uint32_t Speed; /*!< Specifies the speed for the selected pins. + This parameter can be a value of @ref GPIO_speed_define */ + + 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; +/** + * @} + */ + +/** @defgroup GPIO_SetReset_Definition GPIO set reset definition + * @{ + */ +/** + * @brief GPIO Bit SET and Bit RESET enumeration + */ +typedef enum +{ + GPIO_PIN_RESET = 0U, + GPIO_PIN_SET +} GPIO_PinState; +/** + * @} + */ + + +#define IS_GPIO_PIN_ACTION(__ACTION__) (((__ACTION__) == GPIO_PIN_RESET) || ((__ACTION__) == GPIO_PIN_SET)) + +/** + * @} + */ +/******************************************************************************/ +/* Exported constants --------------------------------------------------------*/ +/******************************************************************************/ + +/** @defgroup GPIO_Exported_Constants GPIO Exported Constants + * @{ + */ + +/** @defgroup GPIO_pins_define Pin definition + * @{ + */ +#define GPIO_PIN_0 (0x0001U) /* Pin 0 selected */ +#define GPIO_PIN_1 (0x0002U) /* Pin 1 selected */ +#define GPIO_PIN_2 (0x0004U) /* Pin 2 selected */ +#define GPIO_PIN_3 (0x0008U) /* Pin 3 selected */ +#define GPIO_PIN_4 (0x0010U) /* Pin 4 selected */ +#define GPIO_PIN_5 (0x0020U) /* Pin 5 selected */ +#define GPIO_PIN_6 (0x0040U) /* Pin 6 selected */ +#define GPIO_PIN_7 (0x0080U) /* Pin 7 selected */ +#define GPIO_PIN_8 (0x0100U) /* Pin 8 selected */ +#define GPIO_PIN_9 (0x0200U) /* Pin 9 selected */ +#define GPIO_PIN_10 (0x0400U) /* Pin 10 selected */ +#define GPIO_PIN_11 (0x0800U) /* Pin 11 selected */ +#define GPIO_PIN_12 (0x1000U) /* Pin 12 selected */ +#define GPIO_PIN_13 (0x2000U) /* Pin 13 selected */ +#define GPIO_PIN_14 (0x4000U) /* Pin 14 selected */ +#define GPIO_PIN_15 (0x8000U) /* Pin 15 selected */ +#define GPIO_PIN_All (0xFFFFU) /* All pins selected */ +/** + * @} + */ + +#define GPIO_PIN_MASK (0x0000FFFFU) /* PIN mask for assert test */ +#define IS_GPIO_PIN(__PIN__) ((((uint32_t)(__PIN__) & GPIO_PIN_MASK) != 0x00U) &&\ + (((uint32_t)(__PIN__) & ~GPIO_PIN_MASK) == 0x00U)) + +/** @defgroup GPIO_mode_define Mode definition + * @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 */ + +/** + * @} + */ + +#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)) + + +/** @defgroup GPIO_speed_define Speed definition + * @brief GPIO Output Maximum frequency + * @{ + */ +#define GPIO_SPEED_FREQ_LOW (0x00000000U) /*!< range up to 0.4 MHz, please refer to the product datasheet */ +#define GPIO_SPEED_FREQ_MEDIUM (0x00000001U) /*!< range 0.4 MHz to 2 MHz, please refer to the product datasheet */ +#define GPIO_SPEED_FREQ_HIGH (0x00000002U) /*!< range 2 MHz to 10 MHz, please refer to the product datasheet */ +#define GPIO_SPEED_FREQ_VERY_HIGH (0x00000003U) /*!< range 10 MHz to 35 MHz, please refer to the product datasheet */ + +/** + * @} + */ + +#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)) + + +/** @defgroup GPIO_pull_define Pull definition + * @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 */ + +/** + * @} + */ + +#define IS_GPIO_PULL(__PULL__) (((__PULL__) == GPIO_NOPULL) || ((__PULL__) == GPIO_PULLUP) || \ + ((__PULL__) == GPIO_PULLDOWN)) + + +/** + * @} + */ +/******************************************************************************/ +/* Exported macro ------------------------------------------------------------*/ +/******************************************************************************/ +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup GPIO_Exported_Macro 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 "stm32l0xx_hal_gpio_ex.h" + +/******************************************************************************/ +/* Exported functions --------------------------------------------------------*/ +/******************************************************************************/ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup GPIO_Exported_Functions GPIO Exported Functions + * @{ + */ + +/* Initialization and de-initialization functions *******************************/ +/** @defgroup GPIO_Exported_Functions_Group1 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); +/** + * @} + */ + +/* IO operation functions *******************************************************/ +/** @defgroup GPIO_Exported_Functions_Group2 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); +/** + * @} + */ + +/** + * @} + */ + +/* Define the private group ***********************************/ +/**************************************************************/ +/** @defgroup GPIO_Private GPIO Private + * @{ + */ +#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) +/** + * @} + */ +/**************************************************************/ + + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32L0xx_HAL_GPIO_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h new file mode 100644 index 0000000..7cdc122 --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h @@ -0,0 +1,2505 @@ +/** + ****************************************************************************** + * @file stm32l0xx_hal_gpio_ex.h + * @author MCD Application Team + * @brief Header file of GPIO HAL Extension module. + ****************************************************************************** + * @attention + * + *

© Copyright(c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L0xx_HAL_GPIO_EX_H +#define __STM32L0xx_HAL_GPIO_EX_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal_def.h" + +/** @addtogroup STM32L0xx_HAL_Driver + * @{ + */ + +/** @defgroup GPIOEx GPIOEx + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ + +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup GPIOEx_Exported_Constants GPIOEx Exported Constants + * @{ + */ + + +/*----------------------------------------------------------------------------*/ +/*------------------------- STM32L083xx/STM32L073xx---------------------------*/ +/*----------------------------------------------------------------------------*/ + +#if defined (STM32L083xx) || defined (STM32L073xx) + +/* The table below gives an overview of the different alternate functions per port. + * For more details refer yourself to the product data sheet. + * + */ + +/* | AF0 | AF1 | AF2 | AF3 | AF4 | AF5 | AF6 | AF7 | + *______________________________________________________________________________ + * PA0 | | |TIM2_C1 |TSC |USART2 |TIM2_TR |USART4 |COMP1 | + * PA1 |EVENTOUT|LCD |TIM2_C2 |TSC |USART2 |TIM21_TR|USART4 | | + * PA2 |TIM21_C1|LCD |TIM2_C3 |TSC |USART2 | |LPUART1 |COMP2 | + * PA3 |TIM21_C2|LCD |TIM2_C4 |TSC |USART2 | |LPUART1 | | + * PA4 |SPI1 | | |TSC |USART2 |TIM22_TR| | | + * PA5 |SPI1 | |TIM2_TR |TSC | |TIM2_C1 | | | + * PA6 |SPI1 |LCD |TIM3_C1 |TSC |LPUART1 |TIM22_C1|EVENTOUT|COMP1 | + * PA7 |SPI1 |LCD |TIM3_C2 |TSC | |TIM22_C2|EVENTOUT|COMP2 | + * PA8 |MCO |LCD |USB |EVENTOUT|USART1 | | |I2C3 | + * PA9 |MCO |LCD | |TSC |USART1 | |I2C1 |I2C3 | + * PA10| |LCD | |TSC |USART1 | |I2C1 | | + * PA11|SPI1 | |EVENTOUT|TSC |USART1 | |I2C2 |COMP1 | + * PA12|SPI1 | |EVENTOUT|TSC |USART1 | |I2C2 |COMP2 | + * PA13|SWDIO | |USB | | | |LPUART1 | | + * PA14|SWCLK | | | |USART2 | |LPUART1 | | + * PA15|SPI1 |LCD |TIM2_TR |EVENTOUT|USART2 |TIM2_C1 |USART4 | | + *______________________________________________________________________________ + * PB0 |EVENTOUT|LCD |TIM3_C3 |TSC | | | | | + * PB1 | |LCD |TIM3_C4 |TSC |LPUART1 | | | | + * PB2 | | |LPTIM1_O|TSC | | | |I2C3 | + * PB3 |SPI1 |LCD |TIM2_C2 |TSC |EVENTOUT|USART1 |USART5 | | + * PB4 |SPI1 |LCD |TIM3_C1 |TSC |TIM22_C1|USART1 |USART5 |I2C3 | + * PB5 |SPI1 |LCD |LPTIM1_I|I2C1 |TIM3_C2 |USART1 |USART5 | | + * | | | | |TIM22_C2| | | | + * PB6 |USART1 |I2C1 |LPTIM1_T|TSC | | | | | + * PB7 |USART1 |I2C1 |LPTIM1_I|TSC | | |USART4 | | + * PB8 | |LCD | |TSC |I2C1 | | | | + * PB9 | |LCD |EVENTOUT| |I2C1 |SPI2 | | | + * PB10| |LCD |TIM2_C3 |TSC |LPUART1 |SPI2 |I2C2 |LPUART1 | + * PB11|EVENTOUT|LCD |TIM2_C4 |TSC |LPUART1 | |I2C2 |LPUART1 | + * PB12|SPI2 |LCD |LPUART1 |TSC | |I2C2 |EVENTOUT| | + * PB13|SPI2 |LCD |MCO |TSC |LPUART1 |I2C2 |TIM21_C1| | + * PB14|SPI2 |LCD |RTC |TSC |LPUART1 |I2C2 |TIM21_C2| | + * PB15|SPI2 |LCD |RTC | | | | | | + *______________________________________________________________________________ + * PC0 |LPTIM1_I|LCD |EVENTOUT|TSC | | |LPUART1 |I2C3 | + * PC1 |LPTIM1_O|LCD |EVENTOUT|TSC | | |LPUART1 |I2C3 | + * PC2 |LPTIM1_I|LCD |SPI2 |TSC | | | | | + * PC3 |LPTIM1_T|LCD |SPI2 |TSC | | | | | + * PC4 |EVENTOUT|LCD |LPUART1 | | | | | | + * PC5 | |LCD |LPUART1 |TSC | | | | | + * PC6 |TIM22_C1|LCD |TIM3_C1 |TSC | | | | | + * PC7 |TIM22_C2|LCD |TIM3_C2 |TSC | | | | | + * PC8 |TIM22_TR|LCD |TIM3_C3 |TSC | | | | | + * PC9 |TIM21_TR|LCD |USB |TSC | | | |I2C3 | + * | | |TIM3_C4 | | | | | | + * PC10|LPUART1 |LCD | | | | |USART4 | | + * PC11|LPUART1 |LCD | | | | |USART4 | | + * PC12| |LCD |USART5 | | | |USART4 | | + * PC13| | | | | | | | | + * PC14| | | | | | | | | + * PC15| | | | | | | | | + *______________________________________________________________________________ + * PD0 |TIM21_C1|SPI2 | | | | | | | + * PD1 | |SPI2 | | | | | | | + * PD2 |LPUART1 |LCD |TIM3_TR | | | |USART5 | | + * PD3 |USART2 |LCD |SPI2 | | | | | | + * PD4 |USART2 |SPI2 | | | | | | | + * PD5 |USART2 | | | | | | | | + * PD6 |USART2 | | | | | | | | + * PD7 |USART2 |TIM21_C2| | | | | | | + * PD8 |LPUART1 |LCD | | | | | | | + * PD9 |LPUART1 |LCD | | | | | | | + * PD10| |LCD | | | | | | | + * PD11|LPUART1 |LCD | | | | | | | + * PD12|LPUART1 |LCD | | | | | | | + * PD13| |LCD | | | | | | | + * PD14| |LCD | | | | | | | + * PD15|USB |LCD | | | | | | | + *______________________________________________________________________________ + * PE0 | |LCD |EVENTOUT| | | | | | + * PE1 | |LCD |EVENTOUT| | | | | | + * PE2 | |LCD |TIM3_TR | | | | | | + * PE3 |TIM22_C1|LCD |TIM3_C1 | | | | | | + * PE4 |TIM22_C2| |TIM3_C2 | | | | | | + * PE5 |TIM21_C1| |TIM3_C3 | | | | | | + * PE6 |TIM21_C2| |TIM3_C4 | | | | | | + * PE7 | |LCD | | | | |USART5 | | + * PE8 | |LCD | | | | |USART4 | | + * PE9 |TIM2_C1 |LCD |TIM2_TR | | | |USART4 | | + * PE10|TIM2_C2 |LCD | | | | |USART5 | | + * PE11|TIM2_C3 | | | | | |USART5 | | + * PE12|TIM2_C4 | |SPI1 | | | | | | + * PE13| |LCD |SPI1 | | | | | | + * PE14| |LCD |SPI1 | | | | | | + * PE15| |LCD |SPI1 | | | | | | + *______________________________________________________________________________ + * PH0 |USB | | | | | | | | + * PH1 | | | | | | | | | + * PH9 | | | | | | | | | + * PH10| | | | | | | | | + * + */ + +/** @defgroup GPIOEx_Alternate_function_selection Alternate function selection + * @{ + */ + +/* + * Alternate function AF0 + */ +#define GPIO_AF0_EVENTOUT ((uint8_t)0x00U) /* EVENTOUT Alternate Function mapping */ +#define GPIO_AF0_TIM21 ((uint8_t)0x00U) /* TIM21 Alternate Function mapping */ +#define GPIO_AF0_SPI1 ((uint8_t)0x00U) /* SPI1 Alternate Function mapping */ +#define GPIO_AF0_MCO ((uint8_t)0x00U) /* MCO Alternate Function mapping */ +#define GPIO_AF0_SWDIO ((uint8_t)0x00U) /* SWDIO Alternate Function mapping */ +#define GPIO_AF0_SWCLK ((uint8_t)0x00U) /* SWCLK Alternate Function mapping */ +#define GPIO_AF0_USART1 ((uint8_t)0x00U) /* USART1 Alternate Function mapping */ +#define GPIO_AF0_SPI2 ((uint8_t)0x00U) /* SPI2 Alternate Function mapping */ +#define GPIO_AF0_LPTIM1 ((uint8_t)0x00U) /* LPTIM1 Alternate Function mapping */ +#define GPIO_AF0_TIM22 ((uint8_t)0x00U) /* TIM22 Alternate Function mapping */ +#define GPIO_AF0_LPUART1 ((uint8_t)0x00U) /* LPUART1 Alternate Function mapping */ +#define GPIO_AF0_USART2 ((uint8_t)0x00U) /* USART2 Alternate Function mapping */ +#define GPIO_AF0_TIM2 ((uint8_t)0x00U) /* TIM2 Alternate Function mapping */ +#define GPIO_AF0_USB ((uint8_t)0x00U) /* USB Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF1 + */ +#define GPIO_AF1_I2C1 ((uint8_t)0x01U) /* I2C1 Alternate Function mapping */ +#define GPIO_AF1_SPI2 ((uint8_t)0x01U) /* SPI2 Alternate Function mapping */ +#define GPIO_AF1_TIM21 ((uint8_t)0x01U) /* TIM21 Alternate Function mapping */ +#define GPIO_AF1_LCD ((uint8_t)0x01U) /* LCD Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF2 + */ +#define GPIO_AF2_TIM2 ((uint8_t)0x02U) /* TIM2 Alternate Function mapping */ +#define GPIO_AF2_TIM3 ((uint8_t)0x02U) /* TIM3 Alternate Function mapping */ +#define GPIO_AF2_EVENTOUT ((uint8_t)0x02U) /* EVENTOUT Alternate Function mapping */ +#define GPIO_AF2_LPTIM1 ((uint8_t)0x02U) /* LPTIM1 Alternate Function mapping */ +#define GPIO_AF2_LPUART1 ((uint8_t)0x02U) /* LPUART1 Alternate Function mapping */ +#define GPIO_AF2_MCO ((uint8_t)0x02U) /* MCO Alternate Function mapping */ +#define GPIO_AF2_RTC ((uint8_t)0x02U) /* RTC Alternate Function mapping */ +#define GPIO_AF2_SPI2 ((uint8_t)0x02U) /* SPI2 Alternate Function mapping */ +#define GPIO_AF2_USART5 ((uint8_t)0x02U) /* USART5 Alternate Function mapping */ +#define GPIO_AF2_SPI1 ((uint8_t)0x02U) /* SPI1 Alternate Function mapping */ +#define GPIO_AF2_USB ((uint8_t)0x00U) /* USB Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF3 + */ +#define GPIO_AF3_EVENTOUT ((uint8_t)0x03U) /* EVENTOUT Alternate Function mapping */ +#define GPIO_AF3_I2C1 ((uint8_t)0x03U) /* I2C1 Alternate Function mapping */ +#define GPIO_AF3_TSC ((uint8_t)0x03U) /* TSC Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF4 + */ +#define GPIO_AF4_USART2 ((uint8_t)0x04U) /* USART2 Alternate Function mapping */ +#define GPIO_AF4_LPUART1 ((uint8_t)0x04U) /* LPUART1 Alternate Function mapping */ +#define GPIO_AF4_USART1 ((uint8_t)0x04U) /* USART1 Alternate Function mapping */ +#define GPIO_AF4_EVENTOUT ((uint8_t)0x04U) /* EVENTOUT Alternate Function mapping*/ +#define GPIO_AF4_TIM22 ((uint8_t)0x04U) /* TIM22 Alternate Function mapping */ +#define GPIO_AF4_TIM3 ((uint8_t)0x04U) /* TIM3 Alternate Function mapping */ +#define GPIO_AF4_I2C1 ((uint8_t)0x04U) /* I2C1 Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF5 + */ +#define GPIO_AF5_TIM2 ((uint8_t)0x05U) /* TIM2 Alternate Function mapping */ +#define GPIO_AF5_TIM21 ((uint8_t)0x05U) /* TIM21 Alternate Function mapping */ +#define GPIO_AF5_TIM22 ((uint8_t)0x05U) /* TIM22 Alternate Function mapping */ +#define GPIO_AF5_USART1 ((uint8_t)0x05U) /* USART1 Alternate Function mapping */ +#define GPIO_AF5_SPI2 ((uint8_t)0x05U) /* SPI2 Alternate Function mapping */ +#define GPIO_AF5_I2C2 ((uint8_t)0x05U) /* I2C2 Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF6 + */ + +#define GPIO_AF6_USART4 ((uint8_t)0x06U) /* USART4 Alternate Function mapping */ +#define GPIO_AF6_LPUART1 ((uint8_t)0x06U) /* LPUART1 Alternate Function mapping */ +#define GPIO_AF6_EVENTOUT ((uint8_t)0x06U) /* EVENTOUT Alternate Function mapping */ +#define GPIO_AF6_I2C1 ((uint8_t)0x06U) /* I2C1 Alternate Function mapping */ +#define GPIO_AF6_I2C2 ((uint8_t)0x06U) /* I2C2 Alternate Function mapping */ +#define GPIO_AF6_USART5 ((uint8_t)0x06U) /* USART5 Alternate Function mapping */ +#define GPIO_AF6_TIM21 ((uint8_t)0x06U) /* TIM21 Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF7 + */ +#define GPIO_AF7_COMP1 ((uint8_t)0x07U) /* COMP1 Alternate Function mapping */ +#define GPIO_AF7_COMP2 ((uint8_t)0x07U) /* COMP2 Alternate Function mapping */ +#define GPIO_AF7_I2C3 ((uint8_t)0x07U) /* I2C3 Alternate Function mapping */ +#define GPIO_AF7_LPUART1 ((uint8_t)0x07U) /* LPUART1 Alternate Function mapping */ +/** + * + */ + +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup GPIOEx_Private GPIOEx Private + * @{ + */ +/** + * IS_GPIO_AF macro definition + */ +#define IS_GPIO_AF(AF) ((AF) <= (uint8_t)0x07) + +/** + * @} + */ +#endif /* (STM32L083xx) || (STM32L073xx) */ + +/*----------------------------------------------------------------------------*/ +/*------------------------- STM32L082xx and STM32L072xx-----------------------*/ +/*----------------------------------------------------------------------------*/ +#if defined (STM32L082xx) || defined (STM32L072xx) + +/* The table below gives an overview of the different alternate functions per port. + * For more details refer yourself to the product data sheet. + */ + + +/* | AF0 | AF1 | AF2 | AF3 | AF4 | AF5 | AF6 | AF7 | + *______________________________________________________________________________ + * PA0 | | |TIM2_C1 |TSC |USART2 |TIM2_TR |USART4 |COMP1 | + * PA1 |EVENTOUT| |TIM2_C2 |TSC |USART2 |TIM21_TR|USART4 | | + * PA2 |TIM21_C1| |TIM2_C3 |TSC |USART2 | |LPUART1 |COMP2 | + * PA3 |TIM21_C2| |TIM2_C4 |TSC |USART2 | |LPUART1 | | + * PA4 |SPI1 | | |TSC |USART2 |TIM22_TR| | | + * PA5 |SPI1 | |TIM2_TR |TSC | |TIM2_C1 | | | + * PA6 |SPI1 | |TIM3_C1 |TSC |LPUART1 |TIM22_C1|EVENTOUT|COMP1 | + * PA7 |SPI1 | |TIM3_C2 |TSC | |TIM22_C2|EVENTOUT|COMP2 | + * PA8 |MCO | |USB |EVENTOUT|USART1 | | |I2C3 | + * PA9 |MCO | | |TSC |USART1 | |I2C1 |I2C3 | + * PA10| | | |TSC |USART1 | |I2C1 | | + * PA11|SPI1 | |EVENTOUT|TSC |USART1 | |I2C2 |COMP1 | + * PA12|SPI1 | |EVENTOUT|TSC |USART1 | |I2C2 |COMP2 | + * PA13|SWDIO | |USB | | | |LPUART1 | | + * PA14|SWCLK | | | |USART2 | |LPUART1 | | + * PA15|SPI1 | |TIM2_TR |EVENTOUT|USART2 |TIM2_C1 |USART4 | | + *______________________________________________________________________________ + * PB0 |EVENTOUT| |TIM3_C3 |TSC | | | | | + * PB1 | | |TIM3_C4 |TSC |LPUART1 | | | | + * PB2 | | |LPTIM1_O|TSC | | | |I2C3 | + * PB3 |SPI1 | |TIM2_C2 |TSC |EVENTOUT|USART1 |USART5 | | + * PB4 |SPI1 | |TIM3_C1 |TSC |TIM22_C1|USART1 |USART5 |I2C3 | + * PB5 |SPI1 | |LPTIM1_I|I2C1 |TIM3_C2 |USART1 |USART5 | | + * | | | | |TIM22_C2| | | | + * PB6 |USART1 |I2C1 |LPTIM1_T|TSC | | | | | + * PB7 |USART1 |I2C1 |LPTIM1_I|TSC | | |USART4 | | + * PB8 | | | |TSC |I2C1 | | | | + * PB9 | | |EVENTOUT| |I2C1 |SPI2 | | | + * PB10| | |TIM2_C3 |TSC |LPUART1 |SPI2 |I2C2 |LPUART1 | + * PB11|EVENTOUT| |TIM2_C4 |TSC |LPUART1 | |I2C2 |LPUART1 | + * PB12|SPI2 | |LPUART1 |TSC | |I2C2 |EVENTOUT| | + * PB13|SPI2 | |MCO |TSC |LPUART1 |I2C2 |TIM21_C1| | + * PB14|SPI2 | |RTC |TSC |LPUART1 |I2C2 |TIM21_C2| | + * PB15|SPI2 | |RTC | | | | | | + *______________________________________________________________________________ + * PC0 |LPTIM1_I| |EVENTOUT|TSC | | |LPUART1 |I2C3 | + * PC1 |LPTIM1_O| |EVENTOUT|TSC | | |LPUART1 |I2C3 | + * PC2 |LPTIM1_I| |SPI2 |TSC | | | | | + * PC3 |LPTIM1_T| |SPI2 |TSC | | | | | + * PC4 |EVENTOUT| |LPUART1 | | | | | | + * PC5 | | |LPUART1 |TSC | | | | | + * PC6 |TIM22_C1| |TIM3_C1 |TSC | | | | | + * PC7 |TIM22_C2| |TIM3_C2 |TSC | | | | | + * PC8 |TIM22_TR| |TIM3_C3 |TSC | | | | | + * PC9 |TIM21_TR| |USB |TSC | | | |I2C3 | + * | | |TIM3_C4 | | | | | | + * PC10|LPUART1 | | | | | |USART4 | | + * PC11|LPUART1 | | | | | |USART4 | | + * PC12| | |USART5 | | | |USART4 | | + * PC13| | | | | | | | | + * PC14| | | | | | | | | + * PC15| | | | | | | | | + *______________________________________________________________________________ + * PD0 |TIM21_C1|SPI2 | | | | | | | + * PD1 | |SPI2 | | | | | | | + * PD2 |LPUART1 | |TIM3_TR | | | |USART5 | | + * PD3 |USART2 | |SPI2 | | | | | | + * PD4 |USART2 |SPI2 | | | | | | | + * PD5 |USART2 | | | | | | | | + * PD6 |USART2 | | | | | | | | + * PD7 |USART2 |TIM21_C2| | | | | | | + * PD8 |LPUART1 | | | | | | | | + * PD9 |LPUART1 | | | | | | | | + * PD10| | | | | | | | | + * PD11|LPUART1 | | | | | | | | + * PD12|LPUART1 | | | | | | | | + * PD13| | | | | | | | | + * PD14| | | | | | | | | + * PD15|USB | | | | | | | | + *______________________________________________________________________________ + * PE0 | | |EVENTOUT| | | | | | + * PE1 | | |EVENTOUT| | | | | | + * PE2 | | |TIM3_TR | | | | | | + * PE3 |TIM22_C1| |TIM3_C1 | | | | | | + * PE4 |TIM22_C2| |TIM3_C2 | | | | | | + * PE5 |TIM21_C1| |TIM3_C3 | | | | | | + * PE6 |TIM21_C2| |TIM3_C4 | | | | | | + * PE7 | | | | | | |USART5 | | + * PE8 | | | | | | |USART4 | | + * PE9 |TIM2_C1 | |TIM2_TR | | | |USART4 | | + * PE10|TIM2_C2 | | | | | |USART5 | | + * PE11|TIM2_C3 | | | | | |USART5 | | + * PE12|TIM2_C4 | |SPI1 | | | | | | + * PE13| | |SPI1 | | | | | | + * PE14| | |SPI1 | | | | | | + * PE15| | |SPI1 | | | | | | + *______________________________________________________________________________ + * PH0 |USB | | | | | | | | + * PH1 | | | | | | | | | + * PH9 | | | | | | | | | + * PH10| | | | | | | | | + * + */ + +/** @defgroup GPIOEx_Alternate_function_selection Alternate function selection + * @{ + */ + +/* + * Alternate function AF0 + */ +#define GPIO_AF0_EVENTOUT ((uint8_t)0x00U) /* EVENTOUT Alternate Function mapping */ +#define GPIO_AF0_TIM21 ((uint8_t)0x00U) /* TIM21 Alternate Function mapping */ +#define GPIO_AF0_SPI1 ((uint8_t)0x00U) /* SPI1 Alternate Function mapping */ +#define GPIO_AF0_MCO ((uint8_t)0x00U) /* MCO Alternate Function mapping */ +#define GPIO_AF0_SWDIO ((uint8_t)0x00U) /* SWDIO Alternate Function mapping */ +#define GPIO_AF0_SWCLK ((uint8_t)0x00U) /* SWCLK Alternate Function mapping */ +#define GPIO_AF0_USART1 ((uint8_t)0x00U) /* USART1 Alternate Function mapping */ +#define GPIO_AF0_SPI2 ((uint8_t)0x00U) /* SPI2 Alternate Function mapping */ +#define GPIO_AF0_LPTIM1 ((uint8_t)0x00U) /* LPTIM1 Alternate Function mapping */ +#define GPIO_AF0_TIM22 ((uint8_t)0x00U) /* TIM22 Alternate Function mapping */ +#define GPIO_AF0_LPUART1 ((uint8_t)0x00U) /* LPUART1 Alternate Function mapping */ +#define GPIO_AF0_USART2 ((uint8_t)0x00U) /* USART2 Alternate Function mapping */ +#define GPIO_AF0_TIM2 ((uint8_t)0x00U) /* TIM2 Alternate Function mapping */ +#define GPIO_AF0_USB ((uint8_t)0x00U) /* USB Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF1 + */ +#define GPIO_AF1_I2C1 ((uint8_t)0x01U) /* I2C1 Alternate Function mapping */ +#define GPIO_AF1_SPI2 ((uint8_t)0x01U) /* SPI2 Alternate Function mapping */ +#define GPIO_AF1_TIM21 ((uint8_t)0x01U) /* TIM21 Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF2 + */ +#define GPIO_AF2_TIM2 ((uint8_t)0x02U) /* TIM2 Alternate Function mapping */ +#define GPIO_AF2_TIM3 ((uint8_t)0x02U) /* TIM3 Alternate Function mapping */ +#define GPIO_AF2_EVENTOUT ((uint8_t)0x02U) /* EVENTOUT Alternate Function mapping */ +#define GPIO_AF2_LPTIM1 ((uint8_t)0x02U) /* LPTIM1 Alternate Function mapping */ +#define GPIO_AF2_LPUART1 ((uint8_t)0x02U) /* LPUART1 Alternate Function mapping */ +#define GPIO_AF2_MCO ((uint8_t)0x02U) /* MCO Alternate Function mapping */ +#define GPIO_AF2_RTC ((uint8_t)0x02U) /* RTC Alternate Function mapping */ +#define GPIO_AF2_SPI2 ((uint8_t)0x02U) /* SPI2 Alternate Function mapping */ +#define GPIO_AF2_USART5 ((uint8_t)0x02U) /* USART5 Alternate Function mapping */ +#define GPIO_AF2_SPI1 ((uint8_t)0x02U) /* SPI1 Alternate Function mapping */ +#define GPIO_AF2_USB ((uint8_t)0x00U) /* USB Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF3 + */ +#define GPIO_AF3_EVENTOUT ((uint8_t)0x03U) /* EVENTOUT Alternate Function mapping */ +#define GPIO_AF3_I2C1 ((uint8_t)0x03U) /* I2C1 Alternate Function mapping */ +#define GPIO_AF3_TSC ((uint8_t)0x03U) /* TSC Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF4 + */ +#define GPIO_AF4_USART2 ((uint8_t)0x04U) /* USART2 Alternate Function mapping */ +#define GPIO_AF4_LPUART1 ((uint8_t)0x04U) /* LPUART1 Alternate Function mapping */ +#define GPIO_AF4_USART1 ((uint8_t)0x04U) /* USART1 Alternate Function mapping */ +#define GPIO_AF4_EVENTOUT ((uint8_t)0x04U) /* EVENTOUT Alternate Function mapping */ +#define GPIO_AF4_TIM22 ((uint8_t)0x04U) /* TIM22 Alternate Function mapping */ +#define GPIO_AF4_TIM3 ((uint8_t)0x04U) /* TIM3 Alternate Function mapping */ +#define GPIO_AF4_I2C1 ((uint8_t)0x04U) /* I2C1 Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF5 + */ +#define GPIO_AF5_TIM2 ((uint8_t)0x05U) /* TIM2 Alternate Function mapping */ +#define GPIO_AF5_TIM21 ((uint8_t)0x05U) /* TIM21 Alternate Function mapping */ +#define GPIO_AF5_TIM22 ((uint8_t)0x05U) /* TIM22 Alternate Function mapping */ +#define GPIO_AF5_USART1 ((uint8_t)0x05U) /* USART1 Alternate Function mapping */ +#define GPIO_AF5_SPI2 ((uint8_t)0x05U) /* SPI2 Alternate Function mapping */ +#define GPIO_AF5_I2C2 ((uint8_t)0x05U) /* I2C2 Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF6 + */ +#define GPIO_AF6_USART4 ((uint8_t)0x06U) /* USART4 Alternate Function mapping */ +#define GPIO_AF6_LPUART1 ((uint8_t)0x06U) /* LPUART1 Alternate Function mapping */ +#define GPIO_AF6_EVENTOUT ((uint8_t)0x06U) /* EVENTOUT Alternate Function mapping */ +#define GPIO_AF6_I2C1 ((uint8_t)0x06U) /* I2C1 Alternate Function mapping */ +#define GPIO_AF6_I2C2 ((uint8_t)0x06U) /* I2C2 Alternate Function mapping */ +#define GPIO_AF6_USART5 ((uint8_t)0x06U) /* USART5 Alternate Function mapping */ +#define GPIO_AF6_TIM21 ((uint8_t)0x06U) /* TIM21 Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF7 + */ +#define GPIO_AF7_COMP1 ((uint8_t)0x07U) /* COMP1 Alternate Function mapping */ +#define GPIO_AF7_COMP2 ((uint8_t)0x07U) /* COMP2 Alternate Function mapping */ +#define GPIO_AF7_I2C3 ((uint8_t)0x07U) /* I2C3 Alternate Function mapping */ +#define GPIO_AF7_LPUART1 ((uint8_t)0x07U) /* LPUART1 Alternate Function mapping */ +/** + * + */ + +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup GPIOEx_Private GPIOEx Private + * @{ + */ +/** + * @brief IS_GPIO_AF macro definition + */ +#define IS_GPIO_AF(AF) ((AF) <= (uint8_t)0x07) + +/** + * @} + */ +#endif /* (STM32L082xx) || (STM32L072xx) */ + + +/*----------------------------------------------------------------------------*/ +/*------------------------- STM32L081xx and STM32L071xx-----------------------*/ +/*----------------------------------------------------------------------------*/ +#if defined (STM32L081xx) || defined (STM32L071xx) + +/* The table below gives an overview of the different alternate functions per port. + * For more details refer yourself to the product data sheet. + * + */ + + +/* | AF0 | AF1 | AF2 | AF3 | AF4 | AF5 | AF6 | AF7 | + *______________________________________________________________________________ + * PA0 | | |TIM2_C1 | |USART2 |TIM2_TR |USART4 |COMP1 | + * PA1 |EVENTOUT| |TIM2_C2 | |USART2 |TIM21_TR|USART4 | | + * PA2 |TIM21_C1| |TIM2_C3 | |USART2 | |LPUART1 |COMP2 | + * PA3 |TIM21_C2| |TIM2_C4 | |USART2 | |LPUART1 | | + * PA4 |SPI1 | | | |USART2 |TIM22_TR| | | + * PA5 |SPI1 | |TIM2_TR | | |TIM2_C1 | | | + * PA6 |SPI1 | |TIM3_C1 | |LPUART1 |TIM22_C1|EVENTOUT|COMP1 | + * PA7 |SPI1 | |TIM3_C2 | | |TIM22_C2|EVENTOUT|COMP2 | + * PA8 |MCO | | |EVENTOUT|USART1 | | |I2C3 | + * PA9 |MCO | | | |USART1 | |I2C1 |I2C3 | + * PA10| | | | |USART1 | |I2C1 | | + * PA11|SPI1 | |EVENTOUT| |USART1 | |I2C2 |COMP1 | + * PA12|SPI1 | |EVENTOUT| |USART1 | |I2C2 |COMP2 | + * PA13|SWDIO | | | | | |LPUART1 | | + * PA14|SWCLK | | | |USART2 | |LPUART1 | | + * PA15|SPI1 | |TIM2_TR |EVENTOUT|USART2 |TIM2_C1 |USART4 | | + *______________________________________________________________________________ + * PB0 |EVENTOUT| |TIM3_C3 | | | | | | + * PB1 | | |TIM3_C4 | |LPUART1 | | | | + * PB2 | | |LPTIM1_O| | | | |I2C3 | + * PB3 |SPI1 | |TIM2_C2 | |EVENTOUT|USART1 |USART5 | | + * PB4 |SPI1 | |TIM3_C1 | |TIM22_C1|USART1 |USART5 |I2C3 | + * PB5 |SPI1 | |LPTIM1_I|I2C1 |TIM3_C2 |USART1 |USART5 | | + * | | | | |TIM22_C2| | | | + * PB6 |USART1 |I2C1 |LPTIM1_T| | | | | | + * PB7 |USART1 |I2C1 |LPTIM1_I| | | |USART4 | | + * PB8 | | | | |I2C1 | | | | + * PB9 | | |EVENTOUT| |I2C1 |SPI2 | | | + * PB10| | |TIM2_C3 | |LPUART1 |SPI2 |I2C2 |LPUART1 | + * PB11|EVENTOUT| |TIM2_C4 | |LPUART1 | |I2C2 |LPUART1 | + * PB12|SPI2 | |LPUART1 | | |I2C2 |EVENTOUT| | + * PB13|SPI2 | |MCO | |LPUART1 |I2C2 |TIM21_C1| | + * PB14|SPI2 | |RTC | |LPUART1 |I2C2 |TIM21_C2| | + * PB15|SPI2 | |RTC | | | | | | + *______________________________________________________________________________ + * PC0 |LPTIM1_I| |EVENTOUT| | | |LPUART1 |I2C3 | + * PC1 |LPTIM1_O| |EVENTOUT| | | |LPUART1 |I2C3 | + * PC2 |LPTIM1_I| |SPI2 | | | | | | + * PC3 |LPTIM1_T| |SPI2 | | | | | | + * PC4 |EVENTOUT| |LPUART1 | | | | | | + * PC5 | | |LPUART1 | | | | | | + * PC6 |TIM22_C1| |TIM3_C1 | | | | | | + * PC7 |TIM22_C2| |TIM3_C2 | | | | | | + * PC8 |TIM22_TR| |TIM3_C3 | | | | | | + * PC9 |TIM21_TR| | | | | | |I2C3 | + * | | |TIM3_C4 | | | | | | + * PC10|LPUART1 | | | | | |USART4 | | + * PC11|LPUART1 | | | | | |USART4 | | + * PC12| | |USART5 | | | |USART4 | | + * PC13| | | | | | | | | + * PC14| | | | | | | | | + * PC15| | | | | | | | | + *______________________________________________________________________________ + * PD0 |TIM21_C1|SPI2 | | | | | | | + * PD1 | |SPI2 | | | | | | | + * PD2 |LPUART1 | |TIM3_TR | | | |USART5 | | + * PD3 |USART2 | |SPI2 | | | | | | + * PD4 |USART2 |SPI2 | | | | | | | + * PD5 |USART2 | | | | | | | | + * PD6 |USART2 | | | | | | | | + * PD7 |USART2 |TIM21_C2| | | | | | | + * PD8 |LPUART1 | | | | | | | | + * PD9 |LPUART1 | | | | | | | | + * PD10| | | | | | | | | + * PD11|LPUART1 | | | | | | | | + * PD12|LPUART1 | | | | | | | | + * PD13| | | | | | | | | + * PD14| | | | | | | | | + * PD15| | | | | | | | | + *______________________________________________________________________________ + * PE0 | | |EVENTOUT| | | | | | + * PE1 | | |EVENTOUT| | | | | | + * PE2 | | |TIM3_TR | | | | | | + * PE3 |TIM22_C1| |TIM3_C1 | | | | | | + * PE4 |TIM22_C2| |TIM3_C2 | | | | | | + * PE5 |TIM21_C1| |TIM3_C3 | | | | | | + * PE6 |TIM21_C2| |TIM3_C4 | | | | | | + * PE7 | | | | | | |USART5 | | + * PE8 | | | | | | |USART4 | | + * PE9 |TIM2_C1 | |TIM2_TR | | | |USART4 | | + * PE10|TIM2_C2 | | | | | |USART5 | | + * PE11|TIM2_C3 | | | | | |USART5 | | + * PE12|TIM2_C4 | |SPI1 | | | | | | + * PE13| | |SPI1 | | | | | | + * PE14| | |SPI1 | | | | | | + * PE15| | |SPI1 | | | | | | + *______________________________________________________________________________ + * PH0 | | | | | | | | | + * PH1 | | | | | | | | | + * PH9 | | | | | | | | | + * PH10| | | | | | | | | + * + */ + +/** @defgroup GPIOEx_Alternate_function_selection Alternate function selection + * @{ + */ + +/* + * Alternate function AF0 + * + */ +#define GPIO_AF0_EVENTOUT ((uint8_t)0x00U) /* EVENTOUT Alternate Function mapping */ +#define GPIO_AF0_TIM21 ((uint8_t)0x00U) /* TIM21 Alternate Function mapping */ +#define GPIO_AF0_SPI1 ((uint8_t)0x00U) /* SPI1 Alternate Function mapping */ +#define GPIO_AF0_MCO ((uint8_t)0x00U) /* MCO Alternate Function mapping */ +#define GPIO_AF0_SWDIO ((uint8_t)0x00U) /* SWDIO Alternate Function mapping */ +#define GPIO_AF0_SWCLK ((uint8_t)0x00U) /* SWCLK Alternate Function mapping */ +#define GPIO_AF0_USART1 ((uint8_t)0x00U) /* USART1 Alternate Function mapping */ +#define GPIO_AF0_SPI2 ((uint8_t)0x00U) /* SPI2 Alternate Function mapping */ +#define GPIO_AF0_LPTIM1 ((uint8_t)0x00U) /* LPTIM1 Alternate Function mapping */ +#define GPIO_AF0_TIM22 ((uint8_t)0x00U) /* TIM22 Alternate Function mapping */ +#define GPIO_AF0_LPUART1 ((uint8_t)0x00U) /* LPUART1 Alternate Function mapping */ +#define GPIO_AF0_USART2 ((uint8_t)0x00U) /* USART2 Alternate Function mapping */ +#define GPIO_AF0_TIM2 ((uint8_t)0x00U) /* TIM2 Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF1 + * + */ +#define GPIO_AF1_I2C1 ((uint8_t)0x01U) /* I2C1 Alternate Function mapping */ +#define GPIO_AF1_SPI2 ((uint8_t)0x01U) /* SPI2 Alternate Function mapping */ +#define GPIO_AF1_TIM21 ((uint8_t)0x01U) /* TIM21 Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF2 + * + */ +#define GPIO_AF2_TIM2 ((uint8_t)0x02U) /* TIM2 Alternate Function mapping */ +#define GPIO_AF2_TIM3 ((uint8_t)0x02U) /* TIM3 Alternate Function mapping */ +#define GPIO_AF2_EVENTOUT ((uint8_t)0x02U) /* EVENTOUT Alternate Function mapping */ +#define GPIO_AF2_LPTIM1 ((uint8_t)0x02U) /* LPTIM1 Alternate Function mapping */ +#define GPIO_AF2_LPUART1 ((uint8_t)0x02U) /* LPUART1 Alternate Function mapping */ +#define GPIO_AF2_MCO ((uint8_t)0x02U) /* MCO Alternate Function mapping */ +#define GPIO_AF2_RTC ((uint8_t)0x02U) /* RTC Alternate Function mapping */ +#define GPIO_AF2_SPI2 ((uint8_t)0x02U) /* SPI2 Alternate Function mapping */ +#define GPIO_AF2_USART5 ((uint8_t)0x02U) /* USART5 Alternate Function mapping */ +#define GPIO_AF2_SPI1 ((uint8_t)0x02U) /* SPI1 Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF3 + * @{ + */ +#define GPIO_AF3_EVENTOUT ((uint8_t)0x03U) /* EVENTOUT Alternate Function mapping */ +#define GPIO_AF3_I2C1 ((uint8_t)0x03U) /* I2C1 Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF4 + * + */ +#define GPIO_AF4_USART2 ((uint8_t)0x04U) /* USART2 Alternate Function mapping */ +#define GPIO_AF4_LPUART1 ((uint8_t)0x04U) /* LPUART1 Alternate Function mapping */ +#define GPIO_AF4_USART1 ((uint8_t)0x04U) /* USART1 Alternate Function mapping */ +#define GPIO_AF4_EVENTOUT ((uint8_t)0x04U) /* EVENTOUT Alternate Function mapping */ +#define GPIO_AF4_TIM22 ((uint8_t)0x04U) /* TIM22 Alternate Function mapping */ +#define GPIO_AF4_TIM3 ((uint8_t)0x04U) /* TIM3 Alternate Function mapping */ +#define GPIO_AF4_I2C1 ((uint8_t)0x04U) /* I2C1 Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF5 + * + */ +#define GPIO_AF5_TIM2 ((uint8_t)0x05U) /* TIM2 Alternate Function mapping */ +#define GPIO_AF5_TIM21 ((uint8_t)0x05U) /* TIM21 Alternate Function mapping */ +#define GPIO_AF5_TIM22 ((uint8_t)0x05U) /* TIM22 Alternate Function mapping */ +#define GPIO_AF5_USART1 ((uint8_t)0x05U) /* USART1 Alternate Function mapping */ +#define GPIO_AF5_SPI2 ((uint8_t)0x05U) /* SPI2 Alternate Function mapping */ +#define GPIO_AF5_I2C2 ((uint8_t)0x05U) /* I2C2 Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF6 + * + */ +#define GPIO_AF6_USART4 ((uint8_t)0x06U) /* USART4 Alternate Function mapping */ +#define GPIO_AF6_LPUART1 ((uint8_t)0x06U) /* LPUART1 Alternate Function mapping */ +#define GPIO_AF6_EVENTOUT ((uint8_t)0x06U) /* EVENTOUT Alternate Function mapping */ +#define GPIO_AF6_I2C1 ((uint8_t)0x06U) /* I2C1 Alternate Function mapping */ +#define GPIO_AF6_I2C2 ((uint8_t)0x06U) /* I2C2 Alternate Function mapping */ +#define GPIO_AF6_USART5 ((uint8_t)0x06U) /* USART5 Alternate Function mapping */ +#define GPIO_AF6_TIM21 ((uint8_t)0x06U) /* TIM21 Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF7 + * + */ +#define GPIO_AF7_COMP1 ((uint8_t)0x07U) /* COMP1 Alternate Function mapping */ +#define GPIO_AF7_COMP2 ((uint8_t)0x07U) /* COMP2 Alternate Function mapping */ +#define GPIO_AF7_I2C3 ((uint8_t)0x07U) /* I2C3 Alternate Function mapping */ +#define GPIO_AF7_LPUART1 ((uint8_t)0x07U) /* LPUART1 Alternate Function mapping */ +/** + * + */ + +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup GPIOEx_Private GPIOEx Private + * @{ + */ + +/** + * IS_GPIO_AF macro definition + */ +#define IS_GPIO_AF(AF) ((AF) <= (uint8_t)0x07) + +/** + * @} + */ +#endif /* (STM32L081xx) || (STM32L071xx) */ + +/*----------------------------------------------------------------------------*/ +/*------------------------- STM32L053xx/STM32L063xx---------------------------*/ +/*----------------------------------------------------------------------------*/ +#if defined (STM32L053xx) || defined (STM32L063xx) + +/* The table below gives an overview of the different alternate functions per port. + * For more details refer yourself to the product data sheet. + * + */ +/* | AF0 | AF1 | AF2 | AF3 | AF4 | AF5 | AF6 | AF7 | + *______________________________________________________________________________ + * PA0 | | |TIM2_C1 |TSC |USART2 |TIM2_TR | |COMP1 | + * PA1 |EVENTOUT|LCD |TIM2_C2 |TSC |USART2 |TIM21_TR| | | + * PA2 |TIM21_C1|LCD |TIM2_C3 |TSC |USART2 | | |COMP2 | + * PA3 |TIM21_C2|LCD |TIM2_C4 |TSC |USART2 | | | | + * PA4 |SPI1 | | |TSC |USART2 |TIM22_TR| | | + * PA5 |SPI1 | |TIM2_TR |TSC | |TIM2_C1 | | | + * PA6 |SPI1 |LCD | |TSC |LPUART |TIM22_C1|EVENTOUT|COMP1 | + * PA7 |SPI1 |LCD | |TSC | |TIM22_C2|EVENTOUT|COMP2 | + * PA8 |MCO |LCD |USB |EVENTOUT|USART1 | | | | + * PA9 |MCO |LCD | |TSC |USART1 | | | | + * PA10| |LCD | |TSC |USART1 | | | | + * PA11|SPI1 | |EVENTOUT|TSC |USART1 | | |COMP1 | + * PA12|SPI1 | |EVENTOUT|TSC |USART1 | | |COMP2 | + * PA13|SWDIO | |USB | | | | | | + * PA14|SWCLK | | | |USART2 | | | | + * PA15|SPI1 |LCD |TIM2_TR |EVENTOUT|USART2 |TIM2_C1 | | | + *______________________________________________________________________________ + * PB0 |EVENTOUT|LCD | |TSC | | | | | + * PB1 | |LCD | |TSC |LPUART1 | | | | + * PB2 | | |LPTIM1_O|TSC | | | | | + * PB3 |SPI1 |LCD |TIM2_C2 |TSC |EVENTOUT| | | | + * PB4 |SPI1 |LCD |EVENTOUT|TSC |TIM22_C1| | | | + * PB5 |SPI1 |LCD |LPTIM1_I|I2C1 |TIM22_C2| | | | + * PB6 |USART1 |I2C1 |LPTIM1_T|TSC | | | | | + * PB7 |USART1 |I2C1 |LPTIM1_I|TSC | | | | | + * PB8 | |LCD | |TSC |I2C1 | | | | + * PB9 | |LCD |EVENTOUT| |I2C1 |SPI2 | | | + * PB10| |LCD |TIM2_C3 |TSC |LPUART1 |SPI2 |I2C2 | | + * PB11|EVENTOUT|LCD |TIM2_C4 |TSC |LPUART1 | |I2C2 | | + * PB12|SPI2 |LCD |LPUART1 |TSC | |I2C2 |EVENTOUT| | + * PB13|SPI2 |LCD | |TSC |LPUART1 |I2C2 |TIM21_C1| | + * PB14|SPI2 |LCD |RTC |TSC |LPUART1 |I2C2 |TIM21_C2| | + * PB15|SPI2 |LCD |RTC | | | | | | + *______________________________________________________________________________ + * PC0 |LPTIM1_I|LCD |EVENTOUT|TSC | | | | | + * PC1 |LPTIM1_O|LCD |EVENTOUT|TSC | | | | | + * PC2 |LPTIM1_I|LCD |SPI2 |TSC | | | | | + * PC3 |LPTIM1_T|LCD |SPI2 |TSC | | | | | + * PC4 |EVENTOUT|LCD |LPUART | | | | | | + * PC5 | |LCD |LPUART |TSC | | | | | + * PC6 |TIM22_C1|LCD | |TSC | | | | | + * PC7 |TIM22_C2|LCD | |TSC | | | | | + * PC8 |TIM22_TR|LCD | |TSC | | | | | + * PC9 |TIM21_TR|LCD |USB |TSC | | | | | + * PC10|LPUART |LCD | | | | | | | + * PC11|LPUART |LCD | | | | | | | + * PC12| |LCD | | | | | | | + * PC13| | | | | | | | | + * PC14| | | | | | | | | + * PC15| | | | | | | | | + *______________________________________________________________________________ + * PD2 |LPUART |LCD | | | | | | | + *______________________________________________________________________________ + * PH0 |USB | | | | | | | | + * PH1 | | | | | | | | | + * * + */ + +/** @defgroup GPIOEx_Alternate_function_selection Alternate function selection + * @{ + */ + +/* + * Alternate function AF0 + */ +#define GPIO_AF0_SPI1 ((uint8_t)0x00U) /* SPI1 Alternate Function mapping */ +#define GPIO_AF0_SPI2 ((uint8_t)0x00U) /* SPI2 Alternate Function mapping */ +#define GPIO_AF0_USART1 ((uint8_t)0x00U) /* USART1 Alternate Function mapping */ +#define GPIO_AF0_USART2 ((uint8_t)0x00U) /* USART2 Alternate Function mapping */ +#define GPIO_AF0_LPUART1 ((uint8_t)0x00U) /* LPUART1 Alternate Function mapping */ +#define GPIO_AF0_USB ((uint8_t)0x00U) /* USB Alternate Function mapping */ +#define GPIO_AF0_LPTIM1 ((uint8_t)0x00U) /* LPTIM1 Alternate Function mapping */ +#define GPIO_AF0_TSC ((uint8_t)0x00U) /* TSC Alternate Function mapping */ +#define GPIO_AF0_TIM2 ((uint8_t)0x00U) /* TIM2 Alternate Function mapping */ +#define GPIO_AF0_TIM21 ((uint8_t)0x00U) /* TIM21 Alternate Function mapping */ +#define GPIO_AF0_TIM22 ((uint8_t)0x00U) /* TIM22 Alternate Function mapping */ +#define GPIO_AF0_EVENTOUT ((uint8_t)0x00U) /* EVENTOUT Alternate Function mapping */ +#define GPIO_AF0_MCO ((uint8_t)0x00U) /* MCO Alternate Function mapping */ +#define GPIO_AF0_SWDIO ((uint8_t)0x00U) /* SWDIO Alternate Function mapping */ +#define GPIO_AF0_SWCLK ((uint8_t)0x00U) /* SWCLK Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF1 + */ +#define GPIO_AF1_SPI1 ((uint8_t)0x01U) /* SPI1 Alternate Function mapping */ +#define GPIO_AF1_SPI2 ((uint8_t)0x01U) /* SPI2 Alternate Function mapping */ +#define GPIO_AF1_I2C1 ((uint8_t)0x01U) /* I2C1 Alternate Function mapping */ +#define GPIO_AF1_LCD ((uint8_t)0x01U) /* LCD Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF2 + */ +#define GPIO_AF2_SPI2 ((uint8_t)0x02U) /* SPI2 Alternate Function mapping */ +#define GPIO_AF2_LPUART1 ((uint8_t)0x02U) /* LPUART1 Alternate Function mapping */ +#define GPIO_AF2_USB ((uint8_t)0x02U) /* USB Alternate Function mapping */ +#define GPIO_AF2_LPTIM1 ((uint8_t)0x02U) /* LPTIM1 Alternate Function mapping */ +#define GPIO_AF2_TIM2 ((uint8_t)0x02U) /* TIM2 Alternate Function mapping */ +#define GPIO_AF2_EVENTOUT ((uint8_t)0x02U) /* EVENTOUT Alternate Function mapping */ +#define GPIO_AF2_RTC ((uint8_t)0x02U) /* RTC Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF3 + */ +#define GPIO_AF3_I2C1 ((uint8_t)0x03U) /* I2C1 Alternate Function mapping */ +#define GPIO_AF3_TSC ((uint8_t)0x03U) /* TSC Alternate Function mapping */ +#define GPIO_AF3_EVENTOUT ((uint8_t)0x03U) /* EVENTOUT Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF4 + */ +#define GPIO_AF4_I2C1 ((uint8_t)0x04U) /* I2C1 Alternate Function mapping */ +#define GPIO_AF4_USART1 ((uint8_t)0x04U) /* USART1 Alternate Function mapping */ +#define GPIO_AF4_USART2 ((uint8_t)0x04U) /* USART2 Alternate Function mapping */ +#define GPIO_AF4_LPUART1 ((uint8_t)0x04U) /* LPUART1 Alternate Function mapping */ +#define GPIO_AF4_TIM22 ((uint8_t)0x04U) /* TIM22 Alternate Function mapping */ +#define GPIO_AF4_EVENTOUT ((uint8_t)0x04U) /* EVENTOUT Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF5 + */ +#define GPIO_AF5_SPI2 ((uint8_t)0x05U) /* SPI2 Alternate Function mapping */ +#define GPIO_AF5_I2C2 ((uint8_t)0x05U) /* I2C2 Alternate Function mapping */ +#define GPIO_AF5_TIM2 ((uint8_t)0x05U) /* TIM2 Alternate Function mapping */ +#define GPIO_AF5_TIM21 ((uint8_t)0x05U) /* TIM21 Alternate Function mapping */ +#define GPIO_AF5_TIM22 ((uint8_t)0x05U) /* TIM22 Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF6 + */ +#define GPIO_AF6_I2C2 ((uint8_t)0x06U) /* I2C2 Alternate Function mapping */ +#define GPIO_AF6_TIM21 ((uint8_t)0x06U) /* TIM21 Alternate Function mapping */ +#define GPIO_AF6_EVENTOUT ((uint8_t)0x06U) /* EVENTOUT Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF7 + */ +#define GPIO_AF7_COMP1 ((uint8_t)0x07U) /* COMP1 Alternate Function mapping */ +#define GPIO_AF7_COMP2 ((uint8_t)0x07U) /* COMP2 Alternate Function mapping */ +/** + * + */ + +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup GPIOEx_Private GPIOEx Private + * @{ + */ +/** + * @brief IS_GPIO_AF macro definition + */ + +#define IS_GPIO_AF(AF) ((AF) <= (uint8_t)0x07) + +/** + * @} + */ + +#endif /* STM32L053xx || STM32L063xx */ +/*------------------------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------*/ +/*------------------------- STM32L052xx/STM32L062xx---------------------------*/ +/*----------------------------------------------------------------------------*/ +#if defined (STM32L052xx) || defined (STM32L062xx) + +/* The table below gives an overview of the different alternate functions per port. + * For more details refer yourself to the product data sheet. + * + */ +/* | AF0 | AF1 | AF2 | AF3 | AF4 | AF5 | AF6 | AF7 | + *______________________________________________________________________________ + * PA0 | | |TIM2_C1 |TSC |USART2 |TIM2_TR | |COMP1 | + * PA1 |EVENTOUT| |TIM2_C2 |TSC |USART2 |TIM21_TR| | | + * PA2 |TIM21_C1| |TIM2_C3 |TSC |USART2 | | |COMP2 | + * PA3 |TIM21_C2| |TIM2_C4 |TSC |USART2 | | | | + * PA4 |SPI1 | | |TSC |USART2 |TIM22_TR| | | + * PA5 |SPI1 | |TIM2_TR |TSC | |TIM2_C1 | | | + * PA6 |SPI1 | | |TSC |LPUART |TIM22_C1|EVENTOUT|COMP1 | + * PA7 |SPI1 | | |TSC | |TIM22_C2|EVENTOUT|COMP2 | + * PA8 |MCO | |USB |EVENTOUT|USART1 | | | | + * PA9 |MCO | | |TSC |USART1 | | | | + * PA10| | | |TSC |USART1 | | | | + * PA11|SPI1 | |EVENTOUT|TSC |USART1 | | |COMP1 | + * PA12|SPI1 | |EVENTOUT|TSC |USART1 | | |COMP2 | + * PA13|SWDIO | |USB | | | | | | + * PA14|SWCLK | | | |USART2 | | | | + * PA15|SPI1 | |TIM2_TR |EVENTOUT|USART2 |TIM2_C1 | | | + *______________________________________________________________________________ + * PB0 |EVENTOUT| | |TSC | | | | | + * PB1 | | | |TSC |LPUART1 | | | | + * PB2 | | |LPTIM1_O|TSC | | | | | + * PB3 |SPI1 | |TIM2_C2 |TSC |EVENTOUT| | | | + * PB4 |SPI1 | |EVENTOUT|TSC |TIM22_C1| | | | + * PB5 |SPI1 | |LPTIM1_I|I2C1 |TIM22_C2| | | | + * PB6 |USART1 |I2C1 |LPTIM1_T|TSC | | | | | + * PB7 |USART1 |I2C1 |LPTIM1_I|TSC | | | | | + * PB8 | | | |TSC |I2C1 | | | | + * PB9 | | |EVENTOUT| |I2C1 |SPI2 | | | + * PB10| | |TIM2_C3 |TSC |LPUART1 |SPI2 |I2C2 | | + * PB11|EVENTOUT| |TIM2_C4 |TSC |LPUART1 | |I2C2 | | + * PB12|SPI2 | |LPUART1 |TSC | |I2C2 |EVENTOUT| | + * PB13|SPI2 | | |TSC |LPUART1 |I2C2 |TIM21_C1| | + * PB14|SPI2 | |RTC |TSC |LPUART1 |I2C2 |TIM21_C2| | + * PB15|SPI2 | |RTC | | | | | | + *______________________________________________________________________________ + * PC0 |LPTIM1_I| |EVENTOUT|TSC | | | | | + * PC1 |LPTIM1_O| |EVENTOUT|TSC | | | | | + * PC2 |LPTIM1_I| |SPI2 |TSC | | | | | + * PC3 |LPTIM1_T| |SPI2 |TSC | | | | | + * PC4 |EVENTOUT| |LPUART | | | | | | + * PC5 | | |LPUART |TSC | | | | | + * PC6 |TIM22_C1| | |TSC | | | | | + * PC7 |TIM22_C2| | |TSC | | | | | + * PC8 |TIM22_TR| | |TSC | | | | | + * PC9 |TIM21_TR| |USB |TSC | | | | | + * PC10|LPUART | | | | | | | | + * PC11|LPUART | | | | | | | | + * PC12| | | | | | | | | + * PC13| | | | | | | | | + * PC14| | | | | | | | | + * PC15| | | | | | | | | + *______________________________________________________________________________ + * PD2 |LPUART | | | | | | | | + *______________________________________________________________________________ + * PH0 |USB | | | | | | | | + * PH1 | | | | | | | | | + * * + */ + +/** @defgroup GPIOEx_Alternate_function_selection Alternate function selection + * @{ + */ + +/* + * Alternate function AF0 + */ +#define GPIO_AF0_SPI1 ((uint8_t)0x00U) /* SPI1 Alternate Function mapping */ +#define GPIO_AF0_SPI2 ((uint8_t)0x00U) /* SPI2 Alternate Function mapping */ +#define GPIO_AF0_USART1 ((uint8_t)0x00U) /* USART1 Alternate Function mapping */ +#define GPIO_AF0_USART2 ((uint8_t)0x00U) /* USART2 Alternate Function mapping */ +#define GPIO_AF0_LPUART1 ((uint8_t)0x00U) /* LPUART1 Alternate Function mapping */ +#define GPIO_AF0_USB ((uint8_t)0x00U) /* USB Alternate Function mapping */ +#define GPIO_AF0_LPTIM1 ((uint8_t)0x00U) /* LPTIM1 Alternate Function mapping */ +#define GPIO_AF0_TSC ((uint8_t)0x00U) /* TSC Alternate Function mapping */ +#define GPIO_AF0_TIM2 ((uint8_t)0x00U) /* TIM2 Alternate Function mapping */ +#define GPIO_AF0_TIM21 ((uint8_t)0x00U) /* TIM21 Alternate Function mapping */ +#define GPIO_AF0_TIM22 ((uint8_t)0x00U) /* TIM22 Alternate Function mapping */ +#define GPIO_AF0_EVENTOUT ((uint8_t)0x00U) /* EVENTOUT Alternate Function mapping */ +#define GPIO_AF0_MCO ((uint8_t)0x00U) /* MCO Alternate Function mapping */ +#define GPIO_AF0_SWDIO ((uint8_t)0x00U) /* SWDIO Alternate Function mapping */ +#define GPIO_AF0_SWCLK ((uint8_t)0x00U) /* SWCLK Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF1 + */ +#define GPIO_AF1_SPI1 ((uint8_t)0x01U) /* SPI1 Alternate Function mapping */ +#define GPIO_AF1_SPI2 ((uint8_t)0x01U) /* SPI2 Alternate Function mapping */ +#define GPIO_AF1_I2C1 ((uint8_t)0x01U) /* I2C1 Alternate Function mapping */ +/** + * + */ + +/** + * Alternate function AF2 + */ +#define GPIO_AF2_SPI2 ((uint8_t)0x02U) /* SPI2 Alternate Function mapping */ +#define GPIO_AF2_LPUART1 ((uint8_t)0x02U) /* LPUART1 Alternate Function mapping */ +#define GPIO_AF2_USB ((uint8_t)0x02U) /* USB Alternate Function mapping */ +#define GPIO_AF2_LPTIM1 ((uint8_t)0x02U) /* LPTIM1 Alternate Function mapping */ +#define GPIO_AF2_TIM2 ((uint8_t)0x02U) /* TIM2 Alternate Function mapping */ +#define GPIO_AF2_EVENTOUT ((uint8_t)0x02U) /* EVENTOUT Alternate Function mapping */ +#define GPIO_AF2_RTC ((uint8_t)0x02U) /* RTC Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF3 + */ +#define GPIO_AF3_I2C1 ((uint8_t)0x03U) /* I2C1 Alternate Function mapping */ +#define GPIO_AF3_TSC ((uint8_t)0x03U) /* TSC Alternate Function mapping */ +#define GPIO_AF3_EVENTOUT ((uint8_t)0x03U) /* EVENTOUT Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF4 + */ +#define GPIO_AF4_I2C1 ((uint8_t)0x04U) /* I2C1 Alternate Function mapping */ +#define GPIO_AF4_USART1 ((uint8_t)0x04U) /* USART1 Alternate Function mapping */ +#define GPIO_AF4_USART2 ((uint8_t)0x04U) /* USART2 Alternate Function mapping */ +#define GPIO_AF4_LPUART1 ((uint8_t)0x04U) /* LPUART1 Alternate Function mapping */ +#define GPIO_AF4_TIM22 ((uint8_t)0x04U) /* TIM22 Alternate Function mapping */ +#define GPIO_AF4_EVENTOUT ((uint8_t)0x04U) /* EVENTOUT Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF5 + */ +#define GPIO_AF5_SPI2 ((uint8_t)0x05U) /* SPI2 Alternate Function mapping */ +#define GPIO_AF5_I2C2 ((uint8_t)0x05U) /* I2C2 Alternate Function mapping */ +#define GPIO_AF5_TIM2 ((uint8_t)0x05U) /* TIM2 Alternate Function mapping */ +#define GPIO_AF5_TIM21 ((uint8_t)0x05U) /* TIM21 Alternate Function mapping */ +#define GPIO_AF5_TIM22 ((uint8_t)0x05U) /* TIM22 Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF6 + */ +#define GPIO_AF6_I2C2 ((uint8_t)0x06U) /* I2C2 Alternate Function mapping */ +#define GPIO_AF6_TIM21 ((uint8_t)0x06U) /* TIM21 Alternate Function mapping */ +#define GPIO_AF6_EVENTOUT ((uint8_t)0x06U) /* EVENTOUT Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF7 + */ +#define GPIO_AF7_COMP1 ((uint8_t)0x07U) /* COMP1 Alternate Function mapping */ +#define GPIO_AF7_COMP2 ((uint8_t)0x07U) /* COMP2 Alternate Function mapping */ +/** + * + */ + +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup GPIOEx_Private GPIOEx Private + * @{ + */ +/** + * @brief IS_GPIO_AF macro definition + */ + +#define IS_GPIO_AF(AF) ((AF) <= (uint8_t)0x07) + +/** + * @} + */ +#endif /* STM32L052xx || STM32L062xx */ +/*------------------------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------*/ +/*------------------------------- STM32L051xx---------------------------------*/ +/*----------------------------------------------------------------------------*/ +#if defined (STM32L051xx) +/* The table below gives an overview of the different alternate functions per port. + * For more details refer yourself to the product data sheet. + * + */ +/* | AF0 | AF1 | AF2 | AF3 | AF4 | AF5 | AF6 | AF7 | + *______________________________________________________________________________ + * PA0 | | |TIM2_C1 | |USART2 |TIM2_TR | |COMP1 | + * PA1 |EVENTOUT| |TIM2_C2 | |USART2 |TIM21_TR| | | + * PA2 |TIM21_C1| |TIM2_C3 | |USART2 | | |COMP2 | + * PA3 |TIM21_C2| |TIM2_C4 | |USART2 | | | | + * PA4 |SPI1 | | | |USART2 |TIM22_TR| | | + * PA5 |SPI1 | |TIM2_TR | | |TIM2_C1 | | | + * PA6 |SPI1 | | | |LPUART |TIM22_C1|EVENTOUT|COMP1 | + * PA7 |SPI1 | | | | |TIM22_C2|EVENTOUT|COMP2 | + * PA8 |MCO | | |EVENTOUT|USART1 | | | | + * PA9 |MCO | | | |USART1 | | | | + * PA10| | | | |USART1 | | | | + * PA11|SPI1 | |EVENTOUT| |USART1 | | |COMP1 | + * PA12|SPI1 | |EVENTOUT| |USART1 | | |COMP2 | + * PA13|SWDIO | | | | | | | | + * PA14|SWCLK | | | |USART2 | | | | + * PA15|SPI1 | |TIM2_TR |EVENTOUT|USART2 |TIM2_C1 | | | + *______________________________________________________________________________ + * PB0 |EVENTOUT| | | | | | | | + * PB1 | | | | |LPUART1 | | | | + * PB2 | | |LPTIM1_O| | | | | | + * PB3 |SPI1 | |TIM2_C2 | |EVENTOUT| | | | + * PB4 |SPI1 | |EVENTOUT| |TIM22_C1| | | | + * PB5 |SPI1 | |LPTIM1_I|I2C1 |TIM22_C2| | | | + * PB6 |USART1 |I2C1 |LPTIM1_T| | | | | | + * PB7 |USART1 |I2C1 |LPTIM1_I| | | | | | + * PB8 | | | | |I2C1 | | | | + * PB9 | | |EVENTOUT| |I2C1 |SPI2 | | | + * PB10| | |TIM2_C3 | |LPUART1 |SPI2 |I2C2 | | + * PB11|EVENTOUT| |TIM2_C4 | |LPUART1 | |I2C2 | | + * PB12|SPI2 | |LPUART1 | | |I2C2 |EVENTOUT| | + * PB13|SPI2 | | | |LPUART1 |I2C2 |TIM21_C1| | + * PB14|SPI2 | |RTC | |LPUART1 |I2C2 |TIM21_C2| | + * PB15|SPI2 | |RTC | | | | | | + *______________________________________________________________________________ + * PC0 |LPTIM1_I| |EVENTOUT| | | | | | + * PC1 |LPTIM1_O| |EVENTOUT| | | | | | + * PC2 |LPTIM1_I| |SPI2 | | | | | | + * PC3 |LPTIM1_T| |SPI2 | | | | | | + * PC4 |EVENTOUT| |LPUART | | | | | | + * PC5 | | |LPUART | | | | | | + * PC6 |TIM22_C1| | | | | | | | + * PC7 |TIM22_C2| | | | | | | | + * PC8 |TIM22_TR| | | | | | | | + * PC9 |TIM21_TR| | | | | | | | + * PC10|LPUART | | | | | | | | + * PC11|LPUART | | | | | | | | + * PC12| | | | | | | | | + * PC13| | | | | | | | | + * PC14| | | | | | | | | + * PC15| | | | | | | | | + *______________________________________________________________________________ + * PD2 |LPUART | | | | | | | | + *______________________________________________________________________________ + * PH0 | | | | | | | | | + * PH1 | | | | | | | | | + * * + */ + +/** @defgroup GPIOEx_Alternate_function_selection Alternate function selection + * @{ + */ + +/* + * Alternate function AF0 + */ +#define GPIO_AF0_SPI1 ((uint8_t)0x00U) /* SPI1 Alternate Function mapping */ +#define GPIO_AF0_SPI2 ((uint8_t)0x00U) /* SPI2 Alternate Function mapping */ +#define GPIO_AF0_USART1 ((uint8_t)0x00U) /* USART1 Alternate Function mapping */ +#define GPIO_AF0_USART2 ((uint8_t)0x00U) /* USART2 Alternate Function mapping */ +#define GPIO_AF0_LPUART1 ((uint8_t)0x00U) /* LPUART1 Alternate Function mapping */ +#define GPIO_AF0_LPTIM1 ((uint8_t)0x00U) /* LPTIM1 Alternate Function mapping */ +#define GPIO_AF0_TIM2 ((uint8_t)0x00U) /* TIM2 Alternate Function mapping */ +#define GPIO_AF0_TIM21 ((uint8_t)0x00U) /* TIM21 Alternate Function mapping */ +#define GPIO_AF0_TIM22 ((uint8_t)0x00U) /* TIM22 Alternate Function mapping */ +#define GPIO_AF0_EVENTOUT ((uint8_t)0x00U) /* EVENTOUT Alternate Function mapping */ +#define GPIO_AF0_MCO ((uint8_t)0x00U) /* MCO Alternate Function mapping */ +#define GPIO_AF0_SWDIO ((uint8_t)0x00U) /* SWDIO Alternate Function mapping */ +#define GPIO_AF0_SWCLK ((uint8_t)0x00U) /* SWCLK Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF1 + */ +#define GPIO_AF1_SPI1 ((uint8_t)0x01U) /* SPI1 Alternate Function mapping */ +#define GPIO_AF1_SPI2 ((uint8_t)0x01U) /* SPI2 Alternate Function mapping */ +#define GPIO_AF1_I2C1 ((uint8_t)0x01U) /* I2C1 Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF2 + */ +#define GPIO_AF2_SPI2 ((uint8_t)0x02U) /* SPI2 Alternate Function mapping */ +#define GPIO_AF2_LPUART1 ((uint8_t)0x02U) /* LPUART1 Alternate Function mapping */ +#define GPIO_AF2_USB ((uint8_t)0x02U) /* USB Alternate Function mapping */ +#define GPIO_AF2_LPTIM1 ((uint8_t)0x02U) /* LPTIM1 Alternate Function mapping */ +#define GPIO_AF2_TIM2 ((uint8_t)0x02U) /* TIM2 Alternate Function mapping */ +#define GPIO_AF2_EVENTOUT ((uint8_t)0x02U) /* EVENTOUT Alternate Function mapping */ +#define GPIO_AF2_RTC ((uint8_t)0x02U) /* RTC Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF3 + */ +#define GPIO_AF3_I2C1 ((uint8_t)0x03U) /* I2C1 Alternate Function mapping */ +#define GPIO_AF3_EVENTOUT ((uint8_t)0x03U) /* EVENTOUT Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF4 + */ +#define GPIO_AF4_I2C1 ((uint8_t)0x04U) /* I2C1 Alternate Function mapping */ +#define GPIO_AF4_USART1 ((uint8_t)0x04U) /* USART1 Alternate Function mapping */ +#define GPIO_AF4_USART2 ((uint8_t)0x04U) /* USART2 Alternate Function mapping */ +#define GPIO_AF4_LPUART1 ((uint8_t)0x04U) /* LPUART1 Alternate Function mapping */ +#define GPIO_AF4_TIM22 ((uint8_t)0x04U) /* TIM22 Alternate Function mapping */ +#define GPIO_AF4_EVENTOUT ((uint8_t)0x04U) /* EVENTOUT Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF5 + */ +#define GPIO_AF5_SPI2 ((uint8_t)0x05U) /* SPI2 Alternate Function mapping */ +#define GPIO_AF5_I2C2 ((uint8_t)0x05U) /* I2C2 Alternate Function mapping */ +#define GPIO_AF5_TIM2 ((uint8_t)0x05U) /* TIM2 Alternate Function mapping */ +#define GPIO_AF5_TIM21 ((uint8_t)0x05U) /* TIM21 Alternate Function mapping */ +#define GPIO_AF5_TIM22 ((uint8_t)0x05U) /* TIM22 Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF6 + */ +#define GPIO_AF6_I2C2 ((uint8_t)0x06U) /* I2C2 Alternate Function mapping */ +#define GPIO_AF6_TIM21 ((uint8_t)0x06U) /* TIM21 Alternate Function mapping */ +#define GPIO_AF6_EVENTOUT ((uint8_t)0x06U) /* EVENTOUT Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF7 + */ +#define GPIO_AF7_COMP1 ((uint8_t)0x07U) /* COMP1 Alternate Function mapping */ +#define GPIO_AF7_COMP2 ((uint8_t)0x07U) /* COMP2 Alternate Function mapping */ +/** + * + */ + +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup GPIOEx_Private GPIOEx Private + * @{ + */ + +/** + * @brief IS_GPIO_AF macro definition + */ +#define IS_GPIO_AF(AF) ((AF) <= (uint8_t)0x07) + +/** + * @} + */ +#endif /* STM32L051xx */ +/*------------------------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------*/ +/*------------------------- STM32L031xx/STM32L041xx---------------------------*/ +/*----------------------------------------------------------------------------*/ +#if defined (STM32L031xx)|| defined (STM32L041xx) +/* The table below gives an overview of the different alternate functions per port. + * For more details refer yourself to the product data sheet. + * + */ +/* | AF0 | AF1 | AF2 | AF3 | AF4 | AF5 | AF6 | AF7 | + *______________________________________________________________________________ + * PA0 | |LPTIM1 |TIM2_C1 | |USART2 |TIM2_TR | |COMP1 | + * PA1 |EVENTOUT|LPTIM1 |TIM2_C2 |I2C1 |USART2 |TIM21_TR| | | + * PA2 |TIM21_C1| |TIM2_C3 | |USART2 | |LPUART1 |COMP2 | + * PA3 |TIM21_C2| |TIM2_C4 | |USART2 | |LPUART1 | | + * PA4 |SPI1 |LPTIM1 | | |USART2 |TIM22_TR| | | + * PA5 |SPI1 |LPTIM1 |TIM2_TR | | |TIM2_C1 | | | + * PA6 |SPI1 |LPTIM1 | | |LPUART |TIM22_C1|EVENTOUT|COMP1 | + * PA7 |SPI1 |LPTIM1 | | |USART2 |TIM22_C2|EVENTOUT|COMP2 | + * PA8 |MCO | |LPTIM1 |EVENTOUT|USART2 |TIM2_C1 | | | + * PA9 |MCO |I2C1 | | |USART2 |TIM22_C1| | | + * PA10| |I2C1 | | |USART2 |TIM22_C2| | | + * PA11|SPI1 | |EVENTOUT| |USART2 |TIM21_C2| |COMP1 | + * PA12|SPI1 | |EVENTOUT| |USART2 | | |COMP2 | + * PA13|SWDIO |LPTIM1 | | | | |LPUART1 | | + * PA14|SWCLK |LPTIM1 | |I2C1 |USART2 | |LPUART1 | | + * PA15|SPI1 | |TIM2_TR |EVENTOUT|USART2 |TIM2_C1 | | | + *_____________________________________________________________________________| + * PB0 |EVENTOUT|SPI1 | | |USART2 |TIM2_C3 | | | + * PB1 |USART2 |SPI1 | | |LPUART1 |TIM2_C4 | | | + * PB2 | | |LPTIM1_O| | | | | | + * PB3 |SPI1 | |TIM2_C2 | |EVENTOUT| | | | + * PB4 |SPI1 | |EVENTOUT| |TIM22_C1| | | | + * PB5 |SPI1 | |LPTIM1_I|I2C1 |TIM22_C2| | | | + * PB6 |USART2 |I2C1 |LPTIM1_T| | |TIM21_C1| | | + * PB7 |USART2 |I2C1 |LPTIM1_I| | | | | | + * PB8 | | | | |I2C1 | | | | + * PB9 | | |EVENTOUT| |I2C1 | | | | + * PB10| | |TIM2_C3 | | | |LPUART1 | | + * PB11|EVENTOUT| |TIM2_C4 | | | |LPUART1 | | + * PB12|SPI2 | | | | | |EVENTOUT| | + * PB13|SPI2 | |MCO | | |TIM21_C1|LPUART1 | | + * PB14|SPI2 | |RTC | | |TIM21_C2|LPUART1 | | + * PB15|SPI2 | |RTC | | | | | | + *_____________________________________________________________________________| + * PC0 |LPTIM1_I| |EVENTOUT| | | |LPUART1 | | + * PC13| | | | | | | | | + * PC14| | | | | | | | | + * PC15| | | | | | | | | + *_____________________________________________________________________________| + * PH0 | | | | | | | | | + * PH1 | | | | | | | | | + *_____________________________________________________________________________| + */ + +/** @defgroup GPIOEx_Alternate_function_selection Alternate function selection + * @{ + */ + +/* + * Alternate function AF0 + */ +#define GPIO_AF0_EVENTOUT ((uint8_t)0x00U) /* EVENTOUT Alternate Function mapping */ +#define GPIO_AF0_TIM21 ((uint8_t)0x00U) /* TIM21 Alternate Function mapping */ +#define GPIO_AF0_SPI1 ((uint8_t)0x00U) /* SPI1 Alternate Function mapping */ +#define GPIO_AF0_USART2 ((uint8_t)0x00U) /* USART2 Alternate Function mapping */ +#define GPIO_AF0_LPTIM1 ((uint8_t)0x00U) /* LPTIM1 Alternate Function mapping */ +#define GPIO_AF0_MCO ((uint8_t)0x00U) /* MCO Alternate Function mapping */ +#define GPIO_AF0_SWDIO ((uint8_t)0x00U) /* SWDIO Alternate Function mapping */ +#define GPIO_AF0_SWCLK ((uint8_t)0x00U) /* SWCLK Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF1 + */ +#define GPIO_AF1_SPI1 ((uint8_t)0x01U) /* SPI1 Alternate Function mapping */ +#define GPIO_AF1_I2C1 ((uint8_t)0x01U) /* I2C1 Alternate Function mapping */ +#define GPIO_AF1_LPTIM1 ((uint8_t)0x01U) /* LPTIM1 Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF2 + */ +#define GPIO_AF2_LPTIM1 ((uint8_t)0x02U) /* LPTIM1 Alternate Function mapping */ +#define GPIO_AF2_TIM2 ((uint8_t)0x02U) /* TIM2 Alternate Function mapping */ +#define GPIO_AF2_MCO ((uint8_t)0x02U) /* MCO Alternate Function mapping */ +#define GPIO_AF2_EVENTOUT ((uint8_t)0x02U) /* EVENTOUT Alternate Function mapping */ +#define GPIO_AF2_RTC ((uint8_t)0x02U) /* RTC Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF3 + */ +#define GPIO_AF3_I2C1 ((uint8_t)0x03U) /* I2C1 Alternate Function mapping */ +#define GPIO_AF3_EVENTOUT ((uint8_t)0x03U) /* EVENTOUT Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF4 + */ +#define GPIO_AF4_I2C1 ((uint8_t)0x04U) /* I2C1 Alternate Function mapping */ +#define GPIO_AF4_USART2 ((uint8_t)0x04U) /* USART2 Alternate Function mapping */ +#define GPIO_AF4_LPUART1 ((uint8_t)0x04U) /* LPUART1 Alternate Function mapping */ +#define GPIO_AF4_TIM22 ((uint8_t)0x04U) /* TIM22 Alternate Function mapping */ +#define GPIO_AF4_EVENTOUT ((uint8_t)0x04U) /* EVENTOUT Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF5 + */ +#define GPIO_AF5_TIM2 ((uint8_t)0x05U) /* TIM2 Alternate Function mapping */ +#define GPIO_AF5_TIM21 ((uint8_t)0x05U) /* TIM21 Alternate Function mapping */ +#define GPIO_AF5_TIM22 ((uint8_t)0x05U) /* TIM22 Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF6 + */ +#define GPIO_AF6_LPUART1 ((uint8_t)0x06U) /* LPUART1 Alternate Function mapping */ +#define GPIO_AF6_EVENTOUT ((uint8_t)0x06U) /* EVENTOUT Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF7 + */ +#define GPIO_AF7_COMP1 ((uint8_t)0x07U) /* COMP1 Alternate Function mapping */ +#define GPIO_AF7_COMP2 ((uint8_t)0x07U) /* COMP2 Alternate Function mapping */ +/** + * + */ + +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup GPIOEx_Private GPIOEx Private + * @{ + */ +/** + * @brief IS_GPIO_AF macro definition + */ + +#define IS_GPIO_AF(AF) ((AF) <= (uint8_t)0x07) + +/** + * @} + */ + +#endif /* STM32L031xx/STM32L041xx*/ +/*------------------------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------*/ +/*------------------------- STM32L011xx/STM32L021xx---------------------------*/ +/*----------------------------------------------------------------------------*/ +#if defined (STM32L011xx)|| defined (STM32L021xx) +/* The table below gives an overview of the different alternate functions per port. + * For more details refer yourself to the product data sheet. + * + */ +/* | AF0 | AF1 | AF2 | AF3 | AF4 | AF5 | AF6 | AF7 | + *______________________________________________________________________________________ + * PA0 |USART2_RX|LPTIM1_IN1|TIM2_C1 | |USART2_CTS|TIM2_ETR|LPUART1_RX |COMP1_OUT| + * PA1 |EVENTOUT |LPTIM1_IN2|TIM2_C2 |I2C1 |USART2_RTS|TIM21_TR|LPUART1_TX | | + * PA2 |TIM21_C1 | |TIM2_C3 | |USART2_TX | |LPUART1_TX |COMP2_OUT| + * PA3 |TIM21_C2 | |TIM2_C4 | |USART2_RX | |LPUART1_RX | | + * PA4 |SPI1 |LPTIM1_IN1|LPTIM1_TR|I2C1_SCL|USART2_CK |TIM2_TR |LPUART1_TX |COMP2_OUT| + * PA5 |SPI1 |LPTIM1_IN2|TIM2_TR | | |TIM2_C1 | | | + * PA6 |SPI1 |LPTIM1_ETR| | |LPUART1_CT| |EVENTOUT |COMP1_OUT| + * PA7 |SPI1 |LPTIM1_OUT| | |USART2_CTS|TIM21_T |EVENTOUT |COMP2_OUT| + * PA8 |MCO | |LPTIM1_I1|EVENTOUT|USART2_CK |TIM2_C1 | | | + * PA9 |MCO |I2C1_SCL |LPTIM1_O | |USART2_TX |TIM21_C2| |COMP1_OUT| + * PA10|TIM21_C1 |I2C1_SDA |RTC_REFIN| |USART2_RX |TIM2_C3 | |COMP1_OUT| + * PA11|SPI1 |LPTIM1_OUT|EVENTOUT | |USART2_CTS|TIM21_C2| |COMP1_OUT| + * PA12|SPI1 | |EVENTOUT | |USART2_RTS| | |COMP2_OUT| + * PA13|SWDIO |LPTIM1_T | |I2C1_SDA| |SPI1 |LPUART1_RX |COMP1_OUT| + * PA14|SWCLK |LPTIM1_O | |I2C1_SMB|USART2_TX |SPI1 |LPUART1_TX |COMP2_OUT| + * PA15|SPI1 | |TIM2_TR |EVENTOUT|USART2_RX |TIM2_C1 | | | + *______________________________________________________________________________________ | + * PB0 |EVENTOUT |SPI1 |TIM2_C2 | |USART2_RTS|TIM2_C3 | | | + * PB1 |USART2_CK|SPI1 |LPTIM1_I1| |LPUART1_RT|TIM2_C4 | | | + * PB2 | | |LPTIM1_O | | | | | | + * PB3 |SPI1 | |TIM2_C2 | |EVENTOUT | | | | + * PB4 |SPI1 | |EVENTOUT | | | | | | + * PB5 |SPI1 | |LPTIM1_I1|I2C1 | |TIM21_C1| | | + * PB6 |USART2_TX|I2C1_SCL |LPTIM1_T | | |TIM2_C3 |LPUART1_TX | | + * PB7 |USART2_RX|I2C1 |LPTIM1_I2| | |TIM2_C4 |LPUART1_RX | | + * PB8 |USART2_TX| |EVENTOUT | |I2C1 |SPI1 | | | + * PB9 | | | | | | | | | + *______________________________________________________________________________________ | + * PC14| | | | | | | | | + * PC15| | | | | | | | | + *______________________________________________________________________________________ | + */ + +/** @defgroup GPIOEx_Alternate_function_selection Alternate function selection + * @{ + */ + +/* + * Alternate function AF0 + */ +#define GPIO_AF0_EVENTOUT ((uint8_t)0x00U) /* EVENTOUT Alternate Function mapping */ +#define GPIO_AF0_TIM21 ((uint8_t)0x00U) /* TIM21 Alternate Function mapping */ +#define GPIO_AF0_SPI1 ((uint8_t)0x00U) /* SPI1 Alternate Function mapping */ +#define GPIO_AF0_USART2 ((uint8_t)0x00U) /* USART2 Alternate Function mapping */ +#define GPIO_AF0_MCO ((uint8_t)0x00U) /* MCO Alternate Function mapping */ +#define GPIO_AF0_SWDIO ((uint8_t)0x00U) /* SWDIO Alternate Function mapping */ +#define GPIO_AF0_SWCLK ((uint8_t)0x00U) /* SWCLK Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF1 + */ +#define GPIO_AF1_SPI1 ((uint8_t)0x01U) /* SPI1 Alternate Function mapping */ +#define GPIO_AF1_I2C1 ((uint8_t)0x01U) /* I2C1 Alternate Function mapping */ +#define GPIO_AF1_LPTIM1 ((uint8_t)0x01U) /* LPTIM1 Alternate Function mapping */ +/** + * + */ + +/* Alternate function AF2 + * + */ +#define GPIO_AF2_LPTIM1 ((uint8_t)0x02U) /* LPTIM1 Alternate Function mapping */ +#define GPIO_AF2_TIM2 ((uint8_t)0x02U) /* TIM2 Alternate Function mapping */ +#define GPIO_AF2_RTC ((uint8_t)0x02U) /* RTC Alternate Function mapping */ +#define GPIO_AF2_EVENTOUT ((uint8_t)0x02U) /* EVENTOUT Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF3 + */ +#define GPIO_AF3_I2C1 ((uint8_t)0x03U) /* I2C1 Alternate Function mapping */ +#define GPIO_AF3_EVENTOUT ((uint8_t)0x03U) /* EVENTOUT Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF4 + */ +#define GPIO_AF4_I2C1 ((uint8_t)0x04U) /* I2C1 Alternate Function mapping */ +#define GPIO_AF4_USART2 ((uint8_t)0x04U) /* USART2 Alternate Function mapping */ +#define GPIO_AF4_LPUART1 ((uint8_t)0x04U) /* LPUART1 Alternate Function mapping */ +#define GPIO_AF4_EVENTOUT ((uint8_t)0x04U) /* EVENTOUT Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF5 + */ +#define GPIO_AF5_TIM2 ((uint8_t)0x05U) /* TIM2 Alternate Function mapping */ +#define GPIO_AF5_TIM21 ((uint8_t)0x05U) /* TIM21 Alternate Function mapping */ +#define GPIO_AF5_SPI1 ((uint8_t)0x05U) /* SPI1 Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF6 + */ +#define GPIO_AF6_LPUART1 ((uint8_t)0x06U) /* LPUART1 Alternate Function mapping */ +#define GPIO_AF6_EVENTOUT ((uint8_t)0x06U) /* EVENTOUT Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF7 + */ +#define GPIO_AF7_COMP1 ((uint8_t)0x07U) /* COMP1 Alternate Function mapping */ +#define GPIO_AF7_COMP2 ((uint8_t)0x07U) /* COMP2 Alternate Function mapping */ +/** + * + */ + +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup GPIOEx_Private GPIOEx Private + * @{ + */ +/** + * IS_GPIO_AF macro definition + */ + +#define IS_GPIO_AF(AF) ((AF) <= (uint8_t)0x07) + +/** + * @} + */ + +#endif /* STM32L011xx/STM32L021xx*/ + +/*----------------------------------------------------------------------------*/ +/*----------------------------- STM32L010xB ----------------------------------*/ +/*----------------------------------------------------------------------------*/ +#if defined (STM32L010xB) +/* The table below gives an overview of the different alternate functions per port. + * For more details refer yourself to the product data sheet. + * + */ +/* | AF0 | AF1 | AF2 | AF3 | AF4 | AF5 | AF6 | AF7 | + *_______________________________________________________________________________________________| + * PA0 | | |TIM2_CH1 | |USART2_CTS |TIM2_ETR | | | + * PA1 |EVENTOUT | |TIM2_CH2 | |USART2_RTS |TIM21_ETR| | | + * PA2 |TIM21_CH1 | |TIM2_CH3 | |USART2_TX | |LPUART1_TX | | + * PA3 |TIM21_CH2 | |TIM2_CH4 | |USART2_RX | |LPUART1_RX | | + * PA4 |SPI1_NSS | | | |USART2_CK |TIM22_ETR| | | + * PA5 |SPI1_SCK | |TIM2_ETR | | |TIM2_CH1 | | | + * PA6 |SPI1_MISO | | | |LPUART1_CTS|TIM22_CH1|EVENTOUT | | + * PA7 |SPI1_MOSI | | | | |TIM22_CH2|EVENTOUT | | + * PA8 |MCO | | |EVENTOUT | | | | | + * PA9 |MCO | | | | | |I2C1_SCL | | + * PA10| | | | | | |I2C1_SDA | | + * PA11|SPI1_MISO | |EVENTOUT | | | | | | + * PA12|SPI1_MOSI | |EVENTOUT | | | | | | + * PA13|SWDIO | | | | | |LPUART1_RX | | + * PA14|SWCLK | | | |USART2_TX | |LPUART1_TX | | + * PA15|SPI1_NSS | |TIM2_ETR |EVENTOUT |USART2_RX |TIM2_CH1 | | | + *_______________________________________________________________________________________________| + * PB0 |EVENTOUT | | | | | | | | + * PB1 | | | | |LPUART1_RTS| | | | + * PB2 | | |LPTIM1_OUT | | | | | | + * PB3 |SPI1_SCK | |TIM2_CH2 | |EVENTOUT | | | | + * PB4 |SPI1_MISO | | | |TIM22_CH1 | | | | + * PB5 |SPI1_MOSI | |LPTIM1_IN1 |I2C1_SMBA|TIM22_CH2 | | | | + * PB6 | |I2C1_SCL |LPTIM1_ETR | | | | | | + * PB7 | |I2C1_SDA |LPTIM1_IN2 | | | | | | + * PB8 | | | | |I2C1_SCL | | | | + * PB9 | | |EVENTOUT | |I2C1_SDA | | | | + * PB10| | |TIM2_CH3 | |LPUART1_TX | | |LPUART1_RX| + * PB11|EVENTOUT | |TIM2_CH4 | |LPUART1_RX | | |LPUART1_TX| + * PB12| | |LPUART1_RTS| | | |EVENTOUT | | + * PB13| | |MCO | |LPUART1_CTS| |TIM21_CH1 | | + * PB14| | |RTC_OUT | |LPUART1_RTS| |TIM21_CH2 | | + * PB15| | |RTC_REFIN | | | | | | + *_______________________________________________________________________________________________| + * PC0 |LPTIM1_IN1 | |EVENTOUT | | | |LPUART1_RX | | + * PC1 |LPTIM1_OUT | |EVENTOUT | | | |LPUART1_TX | | + * PC2 |LPTIM1_IN2 | | | | | | | | + * PC3 |LPTIM1_ETR | | | | | | | | + * PC4 |EVENTOUT | |LPUART1_TX | | | | | | + * PC5 | | |LPUART1_RX | | | | | | + * PC6 |TIM22_CH1 | | | | | | | | + * PC7 |TIM22_CH2 | | | | | | | | + * PC8 |TIM22_ETR | | | | | | | | + * PC9 |TIM21_ETR | | | | | | | | + * PC10|LPUART1_TX | | | | | | | | + * PC11|LPUART1_RX | | | | | | | | + *_______________________________________________________________________________________________| + * PD2 |LPUART1_RTS| | | | | | | | + *_______________________________________________________________________________________________| + */ + +/** @defgroup GPIOEx_Alternate_function_selection Alternate function selection + * @{ + */ + +/* + * Alternate function AF0 + * + */ +#define GPIO_AF0_EVENTOUT ((uint8_t)0x00U) /* EVENTOUT Alternate Function mapping */ +#define GPIO_AF0_TIM21 ((uint8_t)0x00U) /* TIM21 Alternate Function mapping */ +#define GPIO_AF0_SPI1 ((uint8_t)0x00U) /* SPI1 Alternate Function mapping */ +#define GPIO_AF0_MCO ((uint8_t)0x00U) /* MCO Alternate Function mapping */ +#define GPIO_AF0_SWDIO ((uint8_t)0x00U) /* SWDIO Alternate Function mapping */ +#define GPIO_AF0_SWCLK ((uint8_t)0x00U) /* SWCLK Alternate Function mapping */ +#define GPIO_AF0_LPTIM1 ((uint8_t)0x00U) /* LPTIM1 Alternate Function mapping */ +#define GPIO_AF0_TIM22 ((uint8_t)0x00U) /* TIM22 Alternate Function mapping */ +#define GPIO_AF0_LPUART1 ((uint8_t)0x00U) /* LPUART1 Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF1 + * + */ +#define GPIO_AF1_I2C1 ((uint8_t)0x01U) /* I2C1 Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF2 + * + */ +#define GPIO_AF2_TIM2 ((uint8_t)0x02U) /* TIM2 Alternate Function mapping */ +#define GPIO_AF2_EVENTOUT ((uint8_t)0x02U) /* EVENTOUT Alternate Function mapping */ +#define GPIO_AF2_LPTIM1 ((uint8_t)0x02U) /* LPTIM1 Alternate Function mapping */ +#define GPIO_AF2_LPUART1 ((uint8_t)0x02U) /* LPUART1 Alternate Function mapping */ +#define GPIO_AF2_MCO ((uint8_t)0x02U) /* MCO Alternate Function mapping */ +#define GPIO_AF2_RTC ((uint8_t)0x02U) /* RTC Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF3 + * @{ + */ +#define GPIO_AF3_EVENTOUT ((uint8_t)0x03U) /* EVENTOUT Alternate Function mapping */ +#define GPIO_AF3_I2C1 ((uint8_t)0x03U) /* I2C1 Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF4 + * + */ +#define GPIO_AF4_USART2 ((uint8_t)0x04U) /* USART2 Alternate Function mapping */ +#define GPIO_AF4_LPUART1 ((uint8_t)0x04U) /* LPUART1 Alternate Function mapping */ +#define GPIO_AF4_EVENTOUT ((uint8_t)0x04U) /* EVENTOUT Alternate Function mapping */ +#define GPIO_AF4_TIM22 ((uint8_t)0x04U) /* TIM22 Alternate Function mapping */ +#define GPIO_AF4_I2C1 ((uint8_t)0x04U) /* I2C1 Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF5 + * + */ +#define GPIO_AF5_TIM2 ((uint8_t)0x05U) /* TIM2 Alternate Function mapping */ +#define GPIO_AF5_TIM21 ((uint8_t)0x05U) /* TIM21 Alternate Function mapping */ +#define GPIO_AF5_TIM22 ((uint8_t)0x05U) /* TIM22 Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF6 + * + */ +#define GPIO_AF6_LPUART1 ((uint8_t)0x06U) /* LPUART1 Alternate Function mapping */ +#define GPIO_AF6_EVENTOUT ((uint8_t)0x06U) /* EVENTOUT Alternate Function mapping */ +#define GPIO_AF6_I2C1 ((uint8_t)0x06U) /* I2C1 Alternate Function mapping */ +#define GPIO_AF6_TIM21 ((uint8_t)0x06U) /* TIM21 Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF7 + * + */ +#define GPIO_AF7_LPUART1 ((uint8_t)0x07U) /* LPUART1 Alternate Function mapping */ +/** + * + */ + +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup GPIOEx_Private GPIOEx Private + * @{ + */ + +/** + * IS_GPIO_AF macro definition + */ +#define IS_GPIO_AF(AF) ((AF) <= (uint8_t)0x07) + +/** + * @} + */ + +#endif /* STM32L010xB */ + +/*----------------------------------------------------------------------------*/ +/*------------------------- STM32L010x8 --------------------------------------*/ +/*----------------------------------------------------------------------------*/ +#if defined (STM32L010x8) +/* The table below gives an overview of the different alternate functions per port. + * For more details refer yourself to the product data sheet. + * + */ +/* | AF0 | AF1 | AF2 | AF3 | AF4 | AF5 | AF6 | + *________________________________________________________________________________________________| + * PA0 | | | TIM2_CH1 | | USART2_CTS | TIM2_ETR | | + * PA1 | EVENTOUT | | TIM2_CH2 | | USART2_RTS | TIM21_ETR | | + * PA2 | TIM21_CH1 | | TIM2_CH3 | | USART2_TX | | | + * PA3 | TIM21_CH2 | | TIM2_CH4 | | USART2_RX | | | + * PA4 | SPI1_NSS | | | | USART2_CK | | | + * PA5 | SPI1_SCK | | TIM2_ETR | | | TIM2_CH1 | | + * PA6 | SPI1_MISO | | | | LPUART1_CTS | | EVENTOUT | + * PA7 | SPI1_MOSI | | | | | | EVENTOUT | + * PA8 | MCO | | | EVENTOUT | | | | + * PA9 | MCO | | | | | | | + * PA10 | | | | | | | | + * PA11 | SPI1_MISO | | EVENTOUT | | | | | + * PA12 | SPI1_MOSI | | EVENTOUT | | | | | + * PA13 | SWDIO | | | | | | | + * PA14 | SWCLK | | | | USART2_TX | | | + * PA15 | SPI1_NSS | | TIM2_ETR | EVENTOUT | USART2_RX | TIM2_CH1 | | + *________________________________________________________________________________________________| + * PB0 | EVENTOUT | | | | | | | + * PB1 | | | | | LPUART1_RTS | | | + * PB2 | | | LPTIM1_OUT | | | | | + * PB3 | SPI1_SCK | | TIM2_CH2 | | EVENTOUT | | | + * PB4 | SPI1_MISO | EVENTOUT | | | | | | + * PB5 | SPI1_MOSI | LPTIM1_IN1 | I2C1_SMBA | | | | | + * PB6 | | I2C1_SCL | LPTIM1_ETR | | | | | + * PB7 | | I2C1_SDA | LPTIM1_IN2 | | | | | + * PB8 | | | | | I2C1_SCL | | | + * PB9 | | | EVENTOUT | | I2C1_SDA | | | + * PB10 | | | TIM2_CH3 | | LPUART1_TX | | | + * PB11 | EVENTOUT | | TIM2_CH4 | | LPUART1_RX | | | + * PB12 | | | LPUART1_RTS | | | EVENTOUT | | + * PB13 | | | | | LPUART1_CTS | | TIM21_CH1 | + * PB14 | | | RTC_OUT | | LPUART1_RTS | | TIM21_CH2 | + * PB15 | | | RTC_REFIN | | | | | + *________________________________________________________________________________________________| + * PC0 | LPTIM1_IN1 | | EVENTOUT | | | | | + * PC1 | LPTIM1_OUT | | EVENTOUT | | | | | + * PC2 | LPTIM1_IN2 | | | | | | | + * PC3 | LPTIM1_ETR | | | | | | | + * PC4 | EVENTOUT | | LPUART1_TX | | | | | + * PC5 | | | LPUART1_RX | | | | | + * PC9 | TIM21_ETR | | | | | | | + * PC10 | LPUART1_TX | | | | | | | + * PC11 | LPUART1_RX | | | | | | | + * PD2 | LPUART1_RTS | | | | | | | + *________________________________________________________________________________________________| + */ + +/** @defgroup GPIOEx_Alternate_function_selection Alternate function selection + * @{ + */ + +/* + * Alternate function AF0 + */ +#define GPIO_AF0_EVENTOUT ((uint8_t)0x00U) /* EVENTOUT Alternate Function mapping */ +#define GPIO_AF0_TIM21 ((uint8_t)0x00U) /* TIM21 Alternate Function mapping */ +#define GPIO_AF0_SPI1 ((uint8_t)0x00U) /* SPI1 Alternate Function mapping */ +#define GPIO_AF0_MCO ((uint8_t)0x00U) /* MCO Alternate Function mapping */ +#define GPIO_AF0_SWDIO ((uint8_t)0x00U) /* SWDIO Alternate Function mapping */ +#define GPIO_AF0_SWCLK ((uint8_t)0x00U) /* SWCLK Alternate Function mapping */ +#define GPIO_AF0_LPTIM1 ((uint8_t)0x00U) /* LPTIM1 Alternate Function mapping */ +#define GPIO_AF0_LPUART1 ((uint8_t)0x00U) /* LPUART1 Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF1 + */ +#define GPIO_AF1_I2C1 ((uint8_t)0x01U) /* I2C1 Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF2 + */ +#define GPIO_AF2_TIM2 ((uint8_t)0x02U) /* TIM2 Alternate Function mapping */ +#define GPIO_AF2_EVENTOUT ((uint8_t)0x02U) /* EVENTOUT Alternate Function mapping */ +#define GPIO_AF2_LPTIM1 ((uint8_t)0x02U) /* LPTIM1 Alternate Function mapping */ +#define GPIO_AF2_LPUART1 ((uint8_t)0x02U) /* LPUART1 Alternate Function mapping */ +#define GPIO_AF2_RTC ((uint8_t)0x02U) /* RTC Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF3 + */ +#define GPIO_AF3_I2C1 ((uint8_t)0x03U) /* I2C1 Alternate Function mapping */ +#define GPIO_AF3_EVENTOUT ((uint8_t)0x03U) /* EVENTOUT Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF4 + */ +#define GPIO_AF4_USART2 ((uint8_t)0x04U) /* USART2 Alternate Function mapping */ +#define GPIO_AF4_LPUART1 ((uint8_t)0x04U) /* LPUART1 Alternate Function mapping */ +#define GPIO_AF4_I2C1 ((uint8_t)0x04U) /* I2C1 Alternate Function mapping */ +#define GPIO_AF4_EVENTOUT ((uint8_t)0x04U) /* EVENTOUT Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF5 + */ +#define GPIO_AF5_TIM2 ((uint8_t)0x05U) /* TIM2 Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF6 + */ +#define GPIO_AF6_TIM21 ((uint8_t)0x06U) /* TIM21 Alternate Function mapping */ +#define GPIO_AF6_EVENTOUT ((uint8_t)0x06U) /* EVENTOUT Alternate Function mapping */ +/** + * + */ + + +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup GPIOEx_Private GPIOEx Private + * @{ + */ + +/** + * @brief IS_GPIO_AF macro definition + */ +#define IS_GPIO_AF(AF) ((AF) <= (uint8_t)0x06) + +/** + * @} + */ +#endif /* STM32L010x8 */ + + +/*----------------------------------------------------------------------------*/ +/*------------------------- STM32L010x6 --------------------------------------*/ +/*----------------------------------------------------------------------------*/ +#if defined (STM32L010x6) +/* The table below gives an overview of the different alternate functions per port. + * For more details refer yourself to the product data sheet. + * + */ +/* | AF0 | AF1 | AF2 | AF3 | AF4 | AF5 | AF6 | + *__________________________________________________________________________________________________| + * PA1 | EVENTOUT | LPTIM1_IN2 | TIM2_CH2 | I2C1_SMBA | USART2_RTS | TIM21_ETR | | + * PA2 | TIM21_CH1 | | TIM2_CH3 | | USART2_TX | | LPUART1_TX | + * PA3 | TIM21_CH2 | | TIM2_CH4 | | USART2_RX | | LPUART1_RX | + * PA4 | SPI1_NSS | LPTIM1_IN1 | | | USART2_CK | | | + * PA5 | SPI1_SCK | LPTIM1_IN2 | TIM2_ETR | | | TIM2_CH1 | | + * PA6 | SPI1_MISO | LPTIM1_ETR | | | LPUART1_CTS | | EVENTOUT | + * PA7 | SPI1_MOSI | LPTIM1_OUT | | | USART2_CTS | | EVENTOUT | + * PA8 | MCO | | LPTIM1_IN1 | EVENTOUT | USART2_CK | TIM2_CH1 | | + * PA9 | MCO | I2C1_SCL | | | USART2_TX | | | + * PA10 | | I2C1_SDA | | | USART2_RX | | | + * PA11 | SPI1_MISO | | EVENTOUT | | USART2_CTS | TIM21_CH2 | | + * PA12 | SPI1_MOSI | | EVENTOUT | | USART2_RTS | | | + * PA13 | SWDIO | LPTIM1_ETR | | | | | LPUART1_RX | + * PA14 | SWCLK | LPTIM1_OUT | | I2C1_SMBA | USART2_TX | | LPUART1_TX | + * PA15 | SPI1_NSS | | TIM2_ETR | EVENTOUT | USART2_RX | TIM2_CH1 | | + *__________________________________________________________________________________________________| + * PB0 | EVENTOUT | SPI1_MISO | | | USART2_RTS | TIM2_CH3 | | + * PB1 | USART2_CK | SPI1_MOSI | | | LPUART1_RTS | TIM2_CH4 | | + * PB2 | | | LPTIM1_OUT | | | | | + * PB3 | SPI1_SCK | | TIM2_CH2 | | EVENTOUT | | | + * PB4 | SPI1_MISO | | EVENTOUT | | | | | + * PB5 | SPI1_MOSI | LPTIM1_IN1 | I2C1_SMBA | | | | | + * PB6 | USART2_TX | I2C1_SCL | LPTIM1_ETR | | | TIM21_CH1 | | + * PB7 | USART2_RX | I2C1_SDA | LPTIM1_IN2 | | | | | + * PB8 | | | | | I2C1_SCL | | | + * PB9 | | | EVENTOUT | | I2C1_SDA | | | + * PB10 | | | TIM2_CH3 | | | | LPUART1_TX | + * PB11 | EVENTOUT | | TIM2_CH4 | | | | LPUART1_RX | + * PB12 | SPI1_NSS | | | | | | EVENTOUT | + * PB13 | SPI1_SCK | | MCO | | | TIM21_CH1 | LPUART1_CTS| + * PB14 | SPI1_MISO | | RTC_OUT | | | TIM21_CH2 | LPUART1_RTS| + * PB15 | SPI1_MOSI | | RTC_REFIN | | | | | + *__________________________________________________________________________________________________| + * PC0 | LPTIM1_IN1 | | EVENTOUT | | | | LPUART1_RX | + *__________________________________________________________________________________________________| +*/ +/** @defgroup GPIOEx_Alternate_function_selection Alternate function selection + * @{ + */ + +/* + * Alternate function AF0 + */ +#define GPIO_AF0_EVENTOUT ((uint8_t)0x00U) /* EVENTOUT Alternate Function mapping */ +#define GPIO_AF0_TIM21 ((uint8_t)0x00U) /* TIM21 Alternate Function mapping */ +#define GPIO_AF0_SPI1 ((uint8_t)0x00U) /* SPI1 Alternate Function mapping */ +#define GPIO_AF0_MCO ((uint8_t)0x00U) /* MCO Alternate Function mapping */ +#define GPIO_AF0_SWDIO ((uint8_t)0x00U) /* SWDIO Alternate Function mapping */ +#define GPIO_AF0_SWCLK ((uint8_t)0x00U) /* SWCLK Alternate Function mapping */ +#define GPIO_AF0_USART2 ((uint8_t)0x00U) /* USART2 Alternate Function mapping */ +#define GPIO_AF0_LPTIM1 ((uint8_t)0x00U) /* LPTIM1 Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF1 + */ +#define GPIO_AF1_I2C1 ((uint8_t)0x01U) /* I2C1 Alternate Function mapping */ +#define GPIO_AF1_LPTIM1 ((uint8_t)0x01U) /* LPTIM1 Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF2 + */ +#define GPIO_AF2_LPTIM1 ((uint8_t)0x02U) /* LPTIM1 Alternate Function mapping */ +#define GPIO_AF2_TIM2 ((uint8_t)0x02U) /* TIM2 Alternate Function mapping */ +#define GPIO_AF2_MCO ((uint8_t)0x02U) /* MCO Alternate Function mapping */ +#define GPIO_AF2_I2C1 ((uint8_t)0x02U) /* I2C1 Alternate Function mapping */ +#define GPIO_AF2_EVENTOUT ((uint8_t)0x02U) /* EVENTOUT Alternate Function mapping */ +#define GPIO_AF2_RTC ((uint8_t)0x02U) /* RTC Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF3 + */ +#define GPIO_AF3_I2C1 ((uint8_t)0x03U) /* I2C1 Alternate Function mapping */ +#define GPIO_AF3_EVENTOUT ((uint8_t)0x03U) /* EVENTOUT Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF4 + */ +#define GPIO_AF4_USART2 ((uint8_t)0x04U) /* USART2 Alternate Function mapping */ +#define GPIO_AF4_LPUART1 ((uint8_t)0x04U) /* LPUART1 Alternate Function mapping */ +#define GPIO_AF4_I2C1 ((uint8_t)0x04U) /* I2C1 Alternate Function mapping */ +#define GPIO_AF4_EVENTOUT ((uint8_t)0x04U) /* EVENTOUT Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF5 + */ +#define GPIO_AF5_TIM2 ((uint8_t)0x05U) /* TIM2 Alternate Function mapping */ +#define GPIO_AF5_TIM21 ((uint8_t)0x05U) /* TIM21 Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF6 + */ +#define GPIO_AF6_LPUART1 ((uint8_t)0x06U) /* LPUART1 Alternate Function mapping */ +#define GPIO_AF6_EVENTOUT ((uint8_t)0x06U) /* EVENTOUT Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF7 + */ +#define GPIO_AF7_COMP1 ((uint8_t)0x07U) /* COMP1 Alternate Function mapping */ +#define GPIO_AF7_COMP2 ((uint8_t)0x07U) /* COMP2 Alternate Function mapping */ +/** + * + */ + +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup GPIOEx_Private GPIOEx Private + * @{ + */ +/** + * @brief IS_GPIO_AF macro definition + */ + +#define IS_GPIO_AF(AF) ((AF) <= (uint8_t)0x06) + +/** + * @} + */ + +#endif /* STM32L010x6 */ + +/*----------------------------------------------------------------------------*/ +/*------------------------- STM32L010x4 --------------------------------------*/ +/*----------------------------------------------------------------------------*/ +#if defined (STM32L010x4) +/* The table below gives an overview of the different alternate functions per port. + * For more details refer yourself to the product data sheet. + * + */ +/* | AF0 | AF1 | AF2 | AF3 | AF4 | AF5 | AF6 | + *_______________________________________________________________________ _________________________| + * PA0 | USART2_RX | LPTIM1_IN1 | TIM2_CH1 | | USART2_CTS | TIM2_ETR | LPUART1_RX | + * PA1 | EVENTOUT | LPTIM1_IN2 | TIM2_CH2 | I2C1_SMBA | USART2_RTS | TIM21_ETR | LPUART1_TX | + * PA2 | TIM21_CH1 | | TIM2_CH3 | | USART2_TX | | LPUART1_TX | + * PA3 | TIM21_CH2 | | TIM2_CH4 | | USART2_RX | | LPUART1_RX | + * PA4 | SPI1_NSS | LPTIM1_IN1 | LPTIM1_ETR | I2C1_SCL | USART2_CK | TIM2_ETR | LPUART1_TX | + * PA5 | SPI1_SCK | LPTIM1_IN2 | TIM2_ETR | | | TIM2_CH1 | | + * PA6 | SPI1_MISO | LPTIM1_ETR | | LPUART1_CTS | | EVENTOUT | | + * PA7 | SPI1_MOSI | LPTIM1_OUT | | USART2_CTS | TIM21_ETR | EVENTOUT | | + * PA8 | MCO | | LPTIM1_IN1 | EVENTOUT | USART2_CK | TIM2_CH1 | | + * PA9 | MCO | I2C1_SCL | LPTIM1_OUT | | USART2_TX | TIM21_CH2 | | + * PA10 | TIM21_CH1 | I2C1_SDA | RTC_REFIN | | USART2_RX | TIM2_CH3 | | + * PA11 | SPI1_MISO | LPTIM1_OUT | EVENTOUT | | USART2_CTS | TIM21_CH2 | | + * PA12 | SPI1_MOSI | | EVENTOUT | | USART2_RTS | | | + * PA13 | SWDIO | LPTIM1_ETR | | I2C1_SDA | | SPI1_SCK | LPUART1_RX | + * PA14 | SWCLK | LPTIM1_OUT | | I2C1_SMBA | USART2_TX | SPI1_MISO | LPUART1_TX | + * PA15 | SPI1_NSS | | TIM2_ETR | EVENTOUT | USART2_RX | TIM2_CH1 | | + *_________________________________________________________________________________________________| + * PB0 | EVENTOUT | SPI1_MISO | TIM2_CH2 | | USART2_RTS | TIM2_CH3 | | + * PB1 | USART2_CK | SPI1_MOSI | LPTIM1_IN1 | | LPUART1_RTS | TIM2_CH4 | | + * PB3 | SPI1_SCK | | TIM2_CH2 | | EVENTOUT | | | + * PB4 | SPI1_MISO | | EVENTOUT | | | | | + * PB5 | SPI1_MOSI | | LPTIM1_IN1 | I2C1_SMBA | | TIM21_CH1 | | + * PB6 | USART2_TX | I2C1_SCL | LPTIM1_ETR | | | TIM2_CH3 | LPUART1_TX | + * PB7 | USART2_RX | I2C1_SDA | LPTIM1_IN2 | | | TIM2_CH4 | LPUART1_RX | + *_________________________________________________________________________________________________| +*/ + +/** @defgroup GPIOEx_Alternate_function_selection Alternate function selection + * @{ + */ + +/* + * Alternate function AF0 + */ +#define GPIO_AF0_USART2 ((uint8_t)0x00U) /* USART2 Alternate Function mapping */ +#define GPIO_AF0_EVENTOUT ((uint8_t)0x00U) /* EVENTOUT Alternate Function mapping */ +#define GPIO_AF0_TIM21 ((uint8_t)0x00U) /* TIM21 Alternate Function mapping */ +#define GPIO_AF0_SPI1 ((uint8_t)0x00U) /* SPI1 Alternate Function mapping */ +#define GPIO_AF0_MCO ((uint8_t)0x00U) /* MCO Alternate Function mapping */ +#define GPIO_AF0_SWDIO ((uint8_t)0x00U) /* SWDIO Alternate Function mapping */ +#define GPIO_AF0_SWCLK ((uint8_t)0x00U) /* SWCLK Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF1 + */ +#define GPIO_AF1_SPI1 ((uint8_t)0x01U) /* SPI1 Alternate Function mapping */ +#define GPIO_AF1_I2C1 ((uint8_t)0x01U) /* I2C1 Alternate Function mapping */ +#define GPIO_AF1_LPTIM1 ((uint8_t)0x01U) /* LPTIM1 Alternate Function mapping */ +/** + * + */ + +/* Alternate function AF2 + * + */ +#define GPIO_AF2_LPTIM1 ((uint8_t)0x02U) /* LPTIM1 Alternate Function mapping */ +#define GPIO_AF2_TIM2 ((uint8_t)0x02U) /* TIM2 Alternate Function mapping */ +#define GPIO_AF2_RTC ((uint8_t)0x02U) /* RTC Alternate Function mapping */ +#define GPIO_AF2_EVENTOUT ((uint8_t)0x02U) /* EVENTOUT Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF3 + */ +#define GPIO_AF3_I2C1 ((uint8_t)0x03U) /* I2C1 Alternate Function mapping */ +#define GPIO_AF3_EVENTOUT ((uint8_t)0x03U) /* EVENTOUT Alternate Function mapping */ +#define GPIO_AF3_LPUART1 ((uint8_t)0x03U) /* LPUART1 Alternate Function mapping */ +#define GPIO_AF3_USART2 ((uint8_t)0x03U) /* USART2 Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF4 + */ +#define GPIO_AF4_USART2 ((uint8_t)0x04U) /* USART2 Alternate Function mapping */ +#define GPIO_AF4_TIM21 ((uint8_t)0x04U) /* TIM21 Alternate Function mapping */ +#define GPIO_AF4_LPUART1 ((uint8_t)0x04U) /* LPUART1 Alternate Function mapping */ +#define GPIO_AF4_EVENTOUT ((uint8_t)0x04U) /* EVENTOUT Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF5 + */ +#define GPIO_AF5_TIM2 ((uint8_t)0x05U) /* TIM2 Alternate Function mapping */ +#define GPIO_AF5_TIM21 ((uint8_t)0x05U) /* TIM21 Alternate Function mapping */ +#define GPIO_AF5_SPI1 ((uint8_t)0x05U) /* SPI1 Alternate Function mapping */ +#define GPIO_AF5_EVENTOUT ((uint8_t)0x05U) /* EVENTOUT Alternate Function mapping */ +/** + * + */ + +/* + * Alternate function AF6 + */ +#define GPIO_AF6_LPUART1 ((uint8_t)0x06U) /* LPUART1 Alternate Function mapping */ +/** + * + */ + +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup GPIOEx_Private GPIOEx Private + * @{ + */ +/** + * IS_GPIO_AF macro definition + */ + +#define IS_GPIO_AF(AF) ((AF) <= (uint8_t)0x06) + +/** + * @} + */ + +#endif /* STM32L010x4*/ + +#if defined (STM32L083xx) || defined (STM32L082xx) || defined (STM32L081xx) || \ + defined (STM32L073xx) || defined (STM32L072xx) || defined (STM32L071xx) || \ + defined (STM32L010xB) + +/** @addtogroup GPIOEx_Exported_Constants + * @{ + */ +/** @defgroup GPIOEx_Pin_Available Pin available + * @{ + */ +#define GPIOA_PIN_AVAILABLE GPIO_PIN_All +#define GPIOB_PIN_AVAILABLE GPIO_PIN_All +#define GPIOC_PIN_AVAILABLE GPIO_PIN_All +#define GPIOD_PIN_AVAILABLE GPIO_PIN_All +#define GPIOE_PIN_AVAILABLE GPIO_PIN_All +#define GPIOH_PIN_AVAILABLE (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_9 | GPIO_PIN_10) +/** + * @} + */ +/** + * @} + */ + +/** @addtogroup GPIOEx_Private + * @{ + */ +#define GPIO_GET_INDEX(__GPIOx__) (((__GPIOx__) == (GPIOA))? 0U :\ + ((__GPIOx__) == (GPIOB))? 1U :\ + ((__GPIOx__) == (GPIOC))? 2U :\ + ((__GPIOx__) == (GPIOD))? 3U :\ + ((__GPIOx__) == (GPIOE))? 4U :\ + ((__GPIOx__) == (GPIOH))? 5U : 6U) + +#define IS_GPIO_PIN_AVAILABLE(__INSTANCE__,__PIN__) \ + ((((__INSTANCE__) == GPIOA) && (((__PIN__) & (GPIOA_PIN_AVAILABLE)) != 0U) && (((__PIN__) | (GPIOA_PIN_AVAILABLE)) == (GPIOA_PIN_AVAILABLE))) || \ + (((__INSTANCE__) == GPIOB) && (((__PIN__) & (GPIOB_PIN_AVAILABLE)) != 0U) && (((__PIN__) | (GPIOB_PIN_AVAILABLE)) == (GPIOB_PIN_AVAILABLE))) || \ + (((__INSTANCE__) == GPIOC) && (((__PIN__) & (GPIOC_PIN_AVAILABLE)) != 0U) && (((__PIN__) | (GPIOC_PIN_AVAILABLE)) == (GPIOC_PIN_AVAILABLE))) || \ + (((__INSTANCE__) == GPIOD) && (((__PIN__) & (GPIOD_PIN_AVAILABLE)) != 0U) && (((__PIN__) | (GPIOD_PIN_AVAILABLE)) == (GPIOD_PIN_AVAILABLE))) || \ + (((__INSTANCE__) == GPIOE) && (((__PIN__) & (GPIOE_PIN_AVAILABLE)) != 0U) && (((__PIN__) | (GPIOE_PIN_AVAILABLE)) == (GPIOE_PIN_AVAILABLE))) || \ + (((__INSTANCE__) == GPIOH) && (((__PIN__) & (GPIOH_PIN_AVAILABLE)) != 0U) && (((__PIN__) | (GPIOH_PIN_AVAILABLE)) == (GPIOH_PIN_AVAILABLE)))) +/** + * @} + */ +#elif defined (STM32L031xx) || defined (STM32L041xx) || defined (STM32L010x6) + +/** @addtogroup GPIOEx_Exported_Constants + * @{ + */ +/** @defgroup GPIOEx_Pin_Available Pin available + * @{ + */ + +#define GPIOA_PIN_AVAILABLE GPIO_PIN_All +#define GPIOB_PIN_AVAILABLE GPIO_PIN_All +#define GPIOC_PIN_AVAILABLE (GPIO_PIN_0 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15) +#define GPIOH_PIN_AVAILABLE (GPIO_PIN_0 | GPIO_PIN_1) +/** + * @} + */ +/** + * @} + */ + +/** @addtogroup GPIOEx_Private + * @{ + */ +#define GPIO_GET_INDEX(__GPIOx__) (((__GPIOx__) == (GPIOA))? 0U :\ + ((__GPIOx__) == (GPIOB))? 1U :\ + ((__GPIOx__) == (GPIOC))? 2U :\ + ((__GPIOx__) == (GPIOH))? 5U : 6U) + + +#define IS_GPIO_PIN_AVAILABLE(__INSTANCE__,__PIN__) \ + ((((__INSTANCE__) == GPIOA) && (((__PIN__) & (GPIOA_PIN_AVAILABLE)) != 0U) && (((__PIN__) | (GPIOA_PIN_AVAILABLE)) == (GPIOA_PIN_AVAILABLE))) || \ + (((__INSTANCE__) == GPIOB) && (((__PIN__) & (GPIOB_PIN_AVAILABLE)) != 0U) && (((__PIN__) | (GPIOB_PIN_AVAILABLE)) == (GPIOB_PIN_AVAILABLE))) || \ + (((__INSTANCE__) == GPIOC) && (((__PIN__) & (GPIOC_PIN_AVAILABLE)) != 0U) && (((__PIN__) | (GPIOC_PIN_AVAILABLE)) == (GPIOC_PIN_AVAILABLE))) || \ + (((__INSTANCE__) == GPIOH) && (((__PIN__) & (GPIOH_PIN_AVAILABLE)) != 0U) && (((__PIN__) | (GPIOH_PIN_AVAILABLE)) == (GPIOH_PIN_AVAILABLE)))) + +/** + * @} + */ + +#elif defined (STM32L011xx) || defined (STM32L021xx) || defined (STM32L010x4) + +/** @addtogroup GPIOEx_Exported_Constants + * @{ + */ +/** @defgroup GPIOEx_Pin_Available Pin available + * @{ + */ + +#define GPIOA_PIN_AVAILABLE GPIO_PIN_All +#define GPIOB_PIN_AVAILABLE (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | \ + GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9 ) +#define GPIOC_PIN_AVAILABLE (GPIO_PIN_14 | GPIO_PIN_15) + +/** + * @} + */ +/** + * @} + */ + +/** @addtogroup GPIOEx_Private + * @{ + */ +#define GPIO_GET_INDEX(__GPIOx__) (((__GPIOx__) == (GPIOA))? 0U :\ + ((__GPIOx__) == (GPIOB))? 1U :\ + ((__GPIOx__) == (GPIOC))? 2U : 6U) + + +#define IS_GPIO_PIN_AVAILABLE(__INSTANCE__,__PIN__) \ + ((((__INSTANCE__) == GPIOA) && (((__PIN__) & (GPIOA_PIN_AVAILABLE)) != 0U) && (((__PIN__) | (GPIOA_PIN_AVAILABLE)) == (GPIOA_PIN_AVAILABLE))) || \ + (((__INSTANCE__) == GPIOB) && (((__PIN__) & (GPIOB_PIN_AVAILABLE)) != 0U) && (((__PIN__) | (GPIOB_PIN_AVAILABLE)) == (GPIOB_PIN_AVAILABLE))) || \ + (((__INSTANCE__) == GPIOC) && (((__PIN__) & (GPIOC_PIN_AVAILABLE)) != 0U) && (((__PIN__) | (GPIOC_PIN_AVAILABLE)) == (GPIOC_PIN_AVAILABLE)))) +/** + * @} + */ + +#elif defined (STM32L063xx) || defined (STM32L062xx) || defined (STM32L053xx) || \ + defined (STM32L052xx) || defined (STM32L051xx) || defined (STM32L010x8) + +/** @addtogroup GPIOEx_Exported_Constants + * @{ + */ +/** @defgroup GPIOEx_Pin_Available Pin available + * @{ + */ +#define GPIOA_PIN_AVAILABLE GPIO_PIN_All +#define GPIOB_PIN_AVAILABLE GPIO_PIN_All +#define GPIOC_PIN_AVAILABLE GPIO_PIN_All +#define GPIOD_PIN_AVAILABLE GPIO_PIN_2 +#define GPIOH_PIN_AVAILABLE GPIO_PIN_0 | GPIO_PIN_1 +/** + * @} + */ +/** + * @} + */ + +/** @addtogroup GPIOEx_Private + * @{ + */ +#define GPIO_GET_INDEX(__GPIOx__) (((__GPIOx__) == (GPIOA))? 0U :\ + ((__GPIOx__) == (GPIOB))? 1U :\ + ((__GPIOx__) == (GPIOC))? 2U :\ + ((__GPIOx__) == (GPIOD))? 3U :\ + ((__GPIOx__) == (GPIOH))? 5U : 6U) + +#define IS_GPIO_PIN_AVAILABLE(__INSTANCE__,__PIN__) \ + ((((__INSTANCE__) == GPIOA) && (((__PIN__) & (GPIOA_PIN_AVAILABLE)) != 0U) && (((__PIN__) | (GPIOA_PIN_AVAILABLE)) == (GPIOA_PIN_AVAILABLE))) || \ + (((__INSTANCE__) == GPIOB) && (((__PIN__) & (GPIOB_PIN_AVAILABLE)) != 0U) && (((__PIN__) | (GPIOB_PIN_AVAILABLE)) == (GPIOB_PIN_AVAILABLE))) || \ + (((__INSTANCE__) == GPIOC) && (((__PIN__) & (GPIOC_PIN_AVAILABLE)) != 0U) && (((__PIN__) | (GPIOC_PIN_AVAILABLE)) == (GPIOC_PIN_AVAILABLE))) || \ + (((__INSTANCE__) == GPIOD) && (((__PIN__) & (GPIOD_PIN_AVAILABLE)) != 0U) && (((__PIN__) | (GPIOD_PIN_AVAILABLE)) == (GPIOD_PIN_AVAILABLE))) || \ + (((__INSTANCE__) == GPIOH) && (((__PIN__) & (GPIOH_PIN_AVAILABLE)) != 0U) && (((__PIN__) | (GPIOH_PIN_AVAILABLE)) == (GPIOH_PIN_AVAILABLE)))) +/** + * @} + */ + +#endif /* STM32L083xx || STM32L082xx || STM32L081xx || STM32L073xx || STM32L072xx || STM32L071xx*/ + + +/** + * @} + */ + +/** + * @} + */ +#ifdef __cplusplus +} +#endif + +#endif /* __STM32L0xx_HAL_GPIO_EX_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h new file mode 100644 index 0000000..c2fdd6f --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h @@ -0,0 +1,838 @@ +/** + ****************************************************************************** + * @file stm32l0xx_hal_i2c.h + * @author MCD Application Team + * @brief Header file of I2C HAL module. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32L0xx_HAL_I2C_H +#define STM32L0xx_HAL_I2C_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal_def.h" + +/** @addtogroup STM32L0xx_HAL_Driver + * @{ + */ + +/** @addtogroup I2C + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup I2C_Exported_Types I2C Exported Types + * @{ + */ + +/** @defgroup I2C_Configuration_Structure_definition I2C Configuration Structure definition + * @brief I2C Configuration Structure definition + * @{ + */ +typedef struct +{ + uint32_t Timing; /*!< Specifies the I2C_TIMINGR_register value. + This parameter calculated by referring to I2C initialization section + in Reference manual */ + + uint32_t OwnAddress1; /*!< Specifies the first device own address. + This parameter can be a 7-bit or 10-bit address. */ + + uint32_t AddressingMode; /*!< Specifies if 7-bit or 10-bit addressing mode is selected. + This parameter can be a value of @ref I2C_ADDRESSING_MODE */ + + uint32_t DualAddressMode; /*!< Specifies if dual addressing mode is selected. + This parameter can be a value of @ref I2C_DUAL_ADDRESSING_MODE */ + + uint32_t OwnAddress2; /*!< Specifies the second device own address if dual addressing mode is selected + This parameter can be a 7-bit address. */ + + uint32_t OwnAddress2Masks; /*!< Specifies the acknowledge mask address second device own address if dual addressing + mode is selected. + This parameter can be a value of @ref I2C_OWN_ADDRESS2_MASKS */ + + uint32_t GeneralCallMode; /*!< Specifies if general call mode is selected. + This parameter can be a value of @ref I2C_GENERAL_CALL_ADDRESSING_MODE */ + + uint32_t NoStretchMode; /*!< Specifies if nostretch mode is selected. + This parameter can be a value of @ref I2C_NOSTRETCH_MODE */ + +} I2C_InitTypeDef; + +/** + * @} + */ + +/** @defgroup HAL_state_structure_definition HAL state structure definition + * @brief HAL State structure definition + * @note HAL I2C State value coding follow below described bitmap :\n + * b7-b6 Error information\n + * 00 : No Error\n + * 01 : Abort (Abort user request on going)\n + * 10 : Timeout\n + * 11 : Error\n + * b5 Peripheral initialization status\n + * 0 : Reset (peripheral not initialized)\n + * 1 : Init done (peripheral initialized and ready to use. HAL I2C Init function called)\n + * b4 (not used)\n + * x : Should be set to 0\n + * b3\n + * 0 : Ready or Busy (No Listen mode ongoing)\n + * 1 : Listen (peripheral in Address Listen Mode)\n + * b2 Intrinsic process state\n + * 0 : Ready\n + * 1 : Busy (peripheral busy with some configuration or internal operations)\n + * b1 Rx state\n + * 0 : Ready (no Rx operation ongoing)\n + * 1 : Busy (Rx operation ongoing)\n + * b0 Tx state\n + * 0 : Ready (no Tx operation ongoing)\n + * 1 : Busy (Tx operation ongoing) + * @{ + */ +typedef enum +{ + HAL_I2C_STATE_RESET = 0x00U, /*!< Peripheral is not yet Initialized */ + HAL_I2C_STATE_READY = 0x20U, /*!< Peripheral Initialized and ready for use */ + HAL_I2C_STATE_BUSY = 0x24U, /*!< An internal process is ongoing */ + HAL_I2C_STATE_BUSY_TX = 0x21U, /*!< Data Transmission process is ongoing */ + HAL_I2C_STATE_BUSY_RX = 0x22U, /*!< Data Reception process is ongoing */ + HAL_I2C_STATE_LISTEN = 0x28U, /*!< Address Listen Mode is ongoing */ + HAL_I2C_STATE_BUSY_TX_LISTEN = 0x29U, /*!< Address Listen Mode and Data Transmission + process is ongoing */ + HAL_I2C_STATE_BUSY_RX_LISTEN = 0x2AU, /*!< Address Listen Mode and Data Reception + process is ongoing */ + HAL_I2C_STATE_ABORT = 0x60U, /*!< Abort user request ongoing */ + HAL_I2C_STATE_TIMEOUT = 0xA0U, /*!< Timeout state */ + HAL_I2C_STATE_ERROR = 0xE0U /*!< Error */ + +} HAL_I2C_StateTypeDef; + +/** + * @} + */ + +/** @defgroup HAL_mode_structure_definition HAL mode structure definition + * @brief HAL Mode structure definition + * @note HAL I2C Mode value coding follow below described bitmap :\n + * b7 (not used)\n + * x : Should be set to 0\n + * b6\n + * 0 : None\n + * 1 : Memory (HAL I2C communication is in Memory Mode)\n + * b5\n + * 0 : None\n + * 1 : Slave (HAL I2C communication is in Slave Mode)\n + * b4\n + * 0 : None\n + * 1 : Master (HAL I2C communication is in Master Mode)\n + * b3-b2-b1-b0 (not used)\n + * xxxx : Should be set to 0000 + * @{ + */ +typedef enum +{ + HAL_I2C_MODE_NONE = 0x00U, /*!< No I2C communication on going */ + HAL_I2C_MODE_MASTER = 0x10U, /*!< I2C communication is in Master Mode */ + HAL_I2C_MODE_SLAVE = 0x20U, /*!< I2C communication is in Slave Mode */ + HAL_I2C_MODE_MEM = 0x40U /*!< I2C communication is in Memory Mode */ + +} HAL_I2C_ModeTypeDef; + +/** + * @} + */ + +/** @defgroup I2C_Error_Code_definition I2C Error Code definition + * @brief I2C Error Code definition + * @{ + */ +#define HAL_I2C_ERROR_NONE (0x00000000U) /*!< No error */ +#define HAL_I2C_ERROR_BERR (0x00000001U) /*!< BERR error */ +#define HAL_I2C_ERROR_ARLO (0x00000002U) /*!< ARLO error */ +#define HAL_I2C_ERROR_AF (0x00000004U) /*!< ACKF error */ +#define HAL_I2C_ERROR_OVR (0x00000008U) /*!< OVR error */ +#define HAL_I2C_ERROR_DMA (0x00000010U) /*!< DMA transfer error */ +#define HAL_I2C_ERROR_TIMEOUT (0x00000020U) /*!< Timeout error */ +#define HAL_I2C_ERROR_SIZE (0x00000040U) /*!< Size Management error */ +#define HAL_I2C_ERROR_DMA_PARAM (0x00000080U) /*!< DMA Parameter Error */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) +#define HAL_I2C_ERROR_INVALID_CALLBACK (0x00000100U) /*!< Invalid Callback error */ +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ +#define HAL_I2C_ERROR_INVALID_PARAM (0x00000200U) /*!< Invalid Parameters error */ +/** + * @} + */ + +/** @defgroup I2C_handle_Structure_definition I2C handle Structure definition + * @brief I2C handle Structure definition + * @{ + */ +typedef struct __I2C_HandleTypeDef +{ + I2C_TypeDef *Instance; /*!< I2C registers base address */ + + I2C_InitTypeDef Init; /*!< I2C communication parameters */ + + uint8_t *pBuffPtr; /*!< Pointer to I2C transfer buffer */ + + uint16_t XferSize; /*!< I2C transfer size */ + + __IO uint16_t XferCount; /*!< I2C transfer counter */ + + __IO uint32_t XferOptions; /*!< I2C sequantial transfer options, this parameter can + be a value of @ref I2C_XFEROPTIONS */ + + __IO uint32_t PreviousState; /*!< I2C communication Previous state */ + + HAL_StatusTypeDef(*XferISR)(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, uint32_t ITSources); + /*!< I2C transfer IRQ handler function pointer */ + + DMA_HandleTypeDef *hdmatx; /*!< I2C Tx DMA handle parameters */ + + DMA_HandleTypeDef *hdmarx; /*!< I2C Rx DMA handle parameters */ + + HAL_LockTypeDef Lock; /*!< I2C locking object */ + + __IO HAL_I2C_StateTypeDef State; /*!< I2C communication state */ + + __IO HAL_I2C_ModeTypeDef Mode; /*!< I2C communication mode */ + + __IO uint32_t ErrorCode; /*!< I2C Error code */ + + __IO uint32_t AddrEventCount; /*!< I2C Address Event counter */ + +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + void (* MasterTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c); + /*!< I2C Master Tx Transfer completed callback */ + void (* MasterRxCpltCallback)(struct __I2C_HandleTypeDef *hi2c); + /*!< I2C Master Rx Transfer completed callback */ + void (* SlaveTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c); + /*!< I2C Slave Tx Transfer completed callback */ + void (* SlaveRxCpltCallback)(struct __I2C_HandleTypeDef *hi2c); + /*!< I2C Slave Rx Transfer completed callback */ + void (* ListenCpltCallback)(struct __I2C_HandleTypeDef *hi2c); + /*!< I2C Listen Complete callback */ + void (* MemTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c); + /*!< I2C Memory Tx Transfer completed callback */ + void (* MemRxCpltCallback)(struct __I2C_HandleTypeDef *hi2c); + /*!< I2C Memory Rx Transfer completed callback */ + void (* ErrorCallback)(struct __I2C_HandleTypeDef *hi2c); + /*!< I2C Error callback */ + void (* AbortCpltCallback)(struct __I2C_HandleTypeDef *hi2c); + /*!< I2C Abort callback */ + + void (* AddrCallback)(struct __I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrMatchCode); + /*!< I2C Slave Address Match callback */ + + void (* MspInitCallback)(struct __I2C_HandleTypeDef *hi2c); + /*!< I2C Msp Init callback */ + void (* MspDeInitCallback)(struct __I2C_HandleTypeDef *hi2c); + /*!< I2C Msp DeInit callback */ + +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ +} I2C_HandleTypeDef; + +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) +/** + * @brief HAL I2C Callback ID enumeration definition + */ +typedef enum +{ + HAL_I2C_MASTER_TX_COMPLETE_CB_ID = 0x00U, /*!< I2C Master Tx Transfer completed callback ID */ + HAL_I2C_MASTER_RX_COMPLETE_CB_ID = 0x01U, /*!< I2C Master Rx Transfer completed callback ID */ + HAL_I2C_SLAVE_TX_COMPLETE_CB_ID = 0x02U, /*!< I2C Slave Tx Transfer completed callback ID */ + HAL_I2C_SLAVE_RX_COMPLETE_CB_ID = 0x03U, /*!< I2C Slave Rx Transfer completed callback ID */ + HAL_I2C_LISTEN_COMPLETE_CB_ID = 0x04U, /*!< I2C Listen Complete callback ID */ + HAL_I2C_MEM_TX_COMPLETE_CB_ID = 0x05U, /*!< I2C Memory Tx Transfer callback ID */ + HAL_I2C_MEM_RX_COMPLETE_CB_ID = 0x06U, /*!< I2C Memory Rx Transfer completed callback ID */ + HAL_I2C_ERROR_CB_ID = 0x07U, /*!< I2C Error callback ID */ + HAL_I2C_ABORT_CB_ID = 0x08U, /*!< I2C Abort callback ID */ + + HAL_I2C_MSPINIT_CB_ID = 0x09U, /*!< I2C Msp Init callback ID */ + HAL_I2C_MSPDEINIT_CB_ID = 0x0AU /*!< I2C Msp DeInit callback ID */ + +} HAL_I2C_CallbackIDTypeDef; + +/** + * @brief HAL I2C Callback pointer definition + */ +typedef void (*pI2C_CallbackTypeDef)(I2C_HandleTypeDef *hi2c); +/*!< pointer to an I2C callback function */ +typedef void (*pI2C_AddrCallbackTypeDef)(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, + uint16_t AddrMatchCode); +/*!< pointer to an I2C Address Match callback function */ + +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ +/** + * @} + */ + +/** + * @} + */ +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup I2C_Exported_Constants I2C Exported Constants + * @{ + */ + +/** @defgroup I2C_XFEROPTIONS I2C Sequential Transfer Options + * @{ + */ +#define I2C_FIRST_FRAME ((uint32_t)I2C_SOFTEND_MODE) +#define I2C_FIRST_AND_NEXT_FRAME ((uint32_t)(I2C_RELOAD_MODE | I2C_SOFTEND_MODE)) +#define I2C_NEXT_FRAME ((uint32_t)(I2C_RELOAD_MODE | I2C_SOFTEND_MODE)) +#define I2C_FIRST_AND_LAST_FRAME ((uint32_t)I2C_AUTOEND_MODE) +#define I2C_LAST_FRAME ((uint32_t)I2C_AUTOEND_MODE) +#define I2C_LAST_FRAME_NO_STOP ((uint32_t)I2C_SOFTEND_MODE) + +/* List of XferOptions in usage of : + * 1- Restart condition in all use cases (direction change or not) + */ +#define I2C_OTHER_FRAME (0x000000AAU) +#define I2C_OTHER_AND_LAST_FRAME (0x0000AA00U) +/** + * @} + */ + +/** @defgroup I2C_ADDRESSING_MODE I2C Addressing Mode + * @{ + */ +#define I2C_ADDRESSINGMODE_7BIT (0x00000001U) +#define I2C_ADDRESSINGMODE_10BIT (0x00000002U) +/** + * @} + */ + +/** @defgroup I2C_DUAL_ADDRESSING_MODE I2C Dual Addressing Mode + * @{ + */ +#define I2C_DUALADDRESS_DISABLE (0x00000000U) +#define I2C_DUALADDRESS_ENABLE I2C_OAR2_OA2EN +/** + * @} + */ + +/** @defgroup I2C_OWN_ADDRESS2_MASKS I2C Own Address2 Masks + * @{ + */ +#define I2C_OA2_NOMASK ((uint8_t)0x00U) +#define I2C_OA2_MASK01 ((uint8_t)0x01U) +#define I2C_OA2_MASK02 ((uint8_t)0x02U) +#define I2C_OA2_MASK03 ((uint8_t)0x03U) +#define I2C_OA2_MASK04 ((uint8_t)0x04U) +#define I2C_OA2_MASK05 ((uint8_t)0x05U) +#define I2C_OA2_MASK06 ((uint8_t)0x06U) +#define I2C_OA2_MASK07 ((uint8_t)0x07U) +/** + * @} + */ + +/** @defgroup I2C_GENERAL_CALL_ADDRESSING_MODE I2C General Call Addressing Mode + * @{ + */ +#define I2C_GENERALCALL_DISABLE (0x00000000U) +#define I2C_GENERALCALL_ENABLE I2C_CR1_GCEN +/** + * @} + */ + +/** @defgroup I2C_NOSTRETCH_MODE I2C No-Stretch Mode + * @{ + */ +#define I2C_NOSTRETCH_DISABLE (0x00000000U) +#define I2C_NOSTRETCH_ENABLE I2C_CR1_NOSTRETCH +/** + * @} + */ + +/** @defgroup I2C_MEMORY_ADDRESS_SIZE I2C Memory Address Size + * @{ + */ +#define I2C_MEMADD_SIZE_8BIT (0x00000001U) +#define I2C_MEMADD_SIZE_16BIT (0x00000002U) +/** + * @} + */ + +/** @defgroup I2C_XFERDIRECTION I2C Transfer Direction Master Point of View + * @{ + */ +#define I2C_DIRECTION_TRANSMIT (0x00000000U) +#define I2C_DIRECTION_RECEIVE (0x00000001U) +/** + * @} + */ + +/** @defgroup I2C_RELOAD_END_MODE I2C Reload End Mode + * @{ + */ +#define I2C_RELOAD_MODE I2C_CR2_RELOAD +#define I2C_AUTOEND_MODE I2C_CR2_AUTOEND +#define I2C_SOFTEND_MODE (0x00000000U) +/** + * @} + */ + +/** @defgroup I2C_START_STOP_MODE I2C Start or Stop Mode + * @{ + */ +#define I2C_NO_STARTSTOP (0x00000000U) +#define I2C_GENERATE_STOP (uint32_t)(0x80000000U | I2C_CR2_STOP) +#define I2C_GENERATE_START_READ (uint32_t)(0x80000000U | I2C_CR2_START | I2C_CR2_RD_WRN) +#define I2C_GENERATE_START_WRITE (uint32_t)(0x80000000U | I2C_CR2_START) +/** + * @} + */ + +/** @defgroup I2C_Interrupt_configuration_definition I2C Interrupt configuration definition + * @brief I2C Interrupt definition + * Elements values convention: 0xXXXXXXXX + * - XXXXXXXX : Interrupt control mask + * @{ + */ +#define I2C_IT_ERRI I2C_CR1_ERRIE +#define I2C_IT_TCI I2C_CR1_TCIE +#define I2C_IT_STOPI I2C_CR1_STOPIE +#define I2C_IT_NACKI I2C_CR1_NACKIE +#define I2C_IT_ADDRI I2C_CR1_ADDRIE +#define I2C_IT_RXI I2C_CR1_RXIE +#define I2C_IT_TXI I2C_CR1_TXIE +/** + * @} + */ + +/** @defgroup I2C_Flag_definition I2C Flag definition + * @{ + */ +#define I2C_FLAG_TXE I2C_ISR_TXE +#define I2C_FLAG_TXIS I2C_ISR_TXIS +#define I2C_FLAG_RXNE I2C_ISR_RXNE +#define I2C_FLAG_ADDR I2C_ISR_ADDR +#define I2C_FLAG_AF I2C_ISR_NACKF +#define I2C_FLAG_STOPF I2C_ISR_STOPF +#define I2C_FLAG_TC I2C_ISR_TC +#define I2C_FLAG_TCR I2C_ISR_TCR +#define I2C_FLAG_BERR I2C_ISR_BERR +#define I2C_FLAG_ARLO I2C_ISR_ARLO +#define I2C_FLAG_OVR I2C_ISR_OVR +#define I2C_FLAG_PECERR I2C_ISR_PECERR +#define I2C_FLAG_TIMEOUT I2C_ISR_TIMEOUT +#define I2C_FLAG_ALERT I2C_ISR_ALERT +#define I2C_FLAG_BUSY I2C_ISR_BUSY +#define I2C_FLAG_DIR I2C_ISR_DIR +/** + * @} + */ + +/** + * @} + */ + +/* Exported macros -----------------------------------------------------------*/ + +/** @defgroup I2C_Exported_Macros I2C Exported Macros + * @{ + */ + +/** @brief Reset I2C handle state. + * @param __HANDLE__ specifies the I2C Handle. + * @retval None + */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) +#define __HAL_I2C_RESET_HANDLE_STATE(__HANDLE__) do{ \ + (__HANDLE__)->State = HAL_I2C_STATE_RESET; \ + (__HANDLE__)->MspInitCallback = NULL; \ + (__HANDLE__)->MspDeInitCallback = NULL; \ + } while(0) +#else +#define __HAL_I2C_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_I2C_STATE_RESET) +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + +/** @brief Enable the specified I2C interrupt. + * @param __HANDLE__ specifies the I2C Handle. + * @param __INTERRUPT__ specifies the interrupt source to enable. + * This parameter can be one of the following values: + * @arg @ref I2C_IT_ERRI Errors interrupt enable + * @arg @ref I2C_IT_TCI Transfer complete interrupt enable + * @arg @ref I2C_IT_STOPI STOP detection interrupt enable + * @arg @ref I2C_IT_NACKI NACK received interrupt enable + * @arg @ref I2C_IT_ADDRI Address match interrupt enable + * @arg @ref I2C_IT_RXI RX interrupt enable + * @arg @ref I2C_IT_TXI TX interrupt enable + * + * @retval None + */ +#define __HAL_I2C_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR1 |= (__INTERRUPT__)) + +/** @brief Disable the specified I2C interrupt. + * @param __HANDLE__ specifies the I2C Handle. + * @param __INTERRUPT__ specifies the interrupt source to disable. + * This parameter can be one of the following values: + * @arg @ref I2C_IT_ERRI Errors interrupt enable + * @arg @ref I2C_IT_TCI Transfer complete interrupt enable + * @arg @ref I2C_IT_STOPI STOP detection interrupt enable + * @arg @ref I2C_IT_NACKI NACK received interrupt enable + * @arg @ref I2C_IT_ADDRI Address match interrupt enable + * @arg @ref I2C_IT_RXI RX interrupt enable + * @arg @ref I2C_IT_TXI TX interrupt enable + * + * @retval None + */ +#define __HAL_I2C_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR1 &= (~(__INTERRUPT__))) + +/** @brief Check whether the specified I2C interrupt source is enabled or not. + * @param __HANDLE__ specifies the I2C Handle. + * @param __INTERRUPT__ specifies the I2C interrupt source to check. + * This parameter can be one of the following values: + * @arg @ref I2C_IT_ERRI Errors interrupt enable + * @arg @ref I2C_IT_TCI Transfer complete interrupt enable + * @arg @ref I2C_IT_STOPI STOP detection interrupt enable + * @arg @ref I2C_IT_NACKI NACK received interrupt enable + * @arg @ref I2C_IT_ADDRI Address match interrupt enable + * @arg @ref I2C_IT_RXI RX interrupt enable + * @arg @ref I2C_IT_TXI TX interrupt enable + * + * @retval The new state of __INTERRUPT__ (SET or RESET). + */ +#define __HAL_I2C_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->CR1 & \ + (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET) + +/** @brief Check whether the specified I2C flag is set or not. + * @param __HANDLE__ specifies the I2C Handle. + * @param __FLAG__ specifies the flag to check. + * This parameter can be one of the following values: + * @arg @ref I2C_FLAG_TXE Transmit data register empty + * @arg @ref I2C_FLAG_TXIS Transmit interrupt status + * @arg @ref I2C_FLAG_RXNE Receive data register not empty + * @arg @ref I2C_FLAG_ADDR Address matched (slave mode) + * @arg @ref I2C_FLAG_AF Acknowledge failure received flag + * @arg @ref I2C_FLAG_STOPF STOP detection flag + * @arg @ref I2C_FLAG_TC Transfer complete (master mode) + * @arg @ref I2C_FLAG_TCR Transfer complete reload + * @arg @ref I2C_FLAG_BERR Bus error + * @arg @ref I2C_FLAG_ARLO Arbitration lost + * @arg @ref I2C_FLAG_OVR Overrun/Underrun + * @arg @ref I2C_FLAG_PECERR PEC error in reception + * @arg @ref I2C_FLAG_TIMEOUT Timeout or Tlow detection flag + * @arg @ref I2C_FLAG_ALERT SMBus alert + * @arg @ref I2C_FLAG_BUSY Bus busy + * @arg @ref I2C_FLAG_DIR Transfer direction (slave mode) + * + * @retval The new state of __FLAG__ (SET or RESET). + */ +#define I2C_FLAG_MASK (0x0001FFFFU) +#define __HAL_I2C_GET_FLAG(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->ISR) & \ + (__FLAG__)) == (__FLAG__)) ? SET : RESET) + +/** @brief Clear the I2C pending flags which are cleared by writing 1 in a specific bit. + * @param __HANDLE__ specifies the I2C Handle. + * @param __FLAG__ specifies the flag to clear. + * This parameter can be any combination of the following values: + * @arg @ref I2C_FLAG_TXE Transmit data register empty + * @arg @ref I2C_FLAG_ADDR Address matched (slave mode) + * @arg @ref I2C_FLAG_AF Acknowledge failure received flag + * @arg @ref I2C_FLAG_STOPF STOP detection flag + * @arg @ref I2C_FLAG_BERR Bus error + * @arg @ref I2C_FLAG_ARLO Arbitration lost + * @arg @ref I2C_FLAG_OVR Overrun/Underrun + * @arg @ref I2C_FLAG_PECERR PEC error in reception + * @arg @ref I2C_FLAG_TIMEOUT Timeout or Tlow detection flag + * @arg @ref I2C_FLAG_ALERT SMBus alert + * + * @retval None + */ +#define __HAL_I2C_CLEAR_FLAG(__HANDLE__, __FLAG__) (((__FLAG__) == I2C_FLAG_TXE) ? \ + ((__HANDLE__)->Instance->ISR |= (__FLAG__)) : \ + ((__HANDLE__)->Instance->ICR = (__FLAG__))) + +/** @brief Enable the specified I2C peripheral. + * @param __HANDLE__ specifies the I2C Handle. + * @retval None + */ +#define __HAL_I2C_ENABLE(__HANDLE__) (SET_BIT((__HANDLE__)->Instance->CR1, I2C_CR1_PE)) + +/** @brief Disable the specified I2C peripheral. + * @param __HANDLE__ specifies the I2C Handle. + * @retval None + */ +#define __HAL_I2C_DISABLE(__HANDLE__) (CLEAR_BIT((__HANDLE__)->Instance->CR1, I2C_CR1_PE)) + +/** @brief Generate a Non-Acknowledge I2C peripheral in Slave mode. + * @param __HANDLE__ specifies the I2C Handle. + * @retval None + */ +#define __HAL_I2C_GENERATE_NACK(__HANDLE__) (SET_BIT((__HANDLE__)->Instance->CR2, I2C_CR2_NACK)) +/** + * @} + */ + +/* Include I2C HAL Extended module */ +#include "stm32l0xx_hal_i2c_ex.h" + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup I2C_Exported_Functions + * @{ + */ + +/** @addtogroup I2C_Exported_Functions_Group1 Initialization and de-initialization functions + * @{ + */ +/* Initialization and de-initialization functions******************************/ +HAL_StatusTypeDef HAL_I2C_Init(I2C_HandleTypeDef *hi2c); +HAL_StatusTypeDef HAL_I2C_DeInit(I2C_HandleTypeDef *hi2c); +void HAL_I2C_MspInit(I2C_HandleTypeDef *hi2c); +void HAL_I2C_MspDeInit(I2C_HandleTypeDef *hi2c); + +/* Callbacks Register/UnRegister functions ***********************************/ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) +HAL_StatusTypeDef HAL_I2C_RegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef CallbackID, + pI2C_CallbackTypeDef pCallback); +HAL_StatusTypeDef HAL_I2C_UnRegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef CallbackID); + +HAL_StatusTypeDef HAL_I2C_RegisterAddrCallback(I2C_HandleTypeDef *hi2c, pI2C_AddrCallbackTypeDef pCallback); +HAL_StatusTypeDef HAL_I2C_UnRegisterAddrCallback(I2C_HandleTypeDef *hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ +/** + * @} + */ + +/** @addtogroup I2C_Exported_Functions_Group2 Input and Output operation functions + * @{ + */ +/* IO operation functions ****************************************************/ +/******* Blocking mode: Polling */ +HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t Timeout); +HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t Timeout); +HAL_StatusTypeDef HAL_I2C_Slave_Transmit(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, + uint32_t Timeout); +HAL_StatusTypeDef HAL_I2C_Slave_Receive(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, + uint32_t Timeout); +HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout); +HAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout); +HAL_StatusTypeDef HAL_I2C_IsDeviceReady(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Trials, + uint32_t Timeout); + +/******* Non-Blocking mode: Interrupt */ +HAL_StatusTypeDef HAL_I2C_Master_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size); +HAL_StatusTypeDef HAL_I2C_Master_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size); +HAL_StatusTypeDef HAL_I2C_Slave_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size); +HAL_StatusTypeDef HAL_I2C_Slave_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size); +HAL_StatusTypeDef HAL_I2C_Mem_Write_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size); +HAL_StatusTypeDef HAL_I2C_Mem_Read_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size); + +HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t XferOptions); +HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t XferOptions); +HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, + uint32_t XferOptions); +HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, + uint32_t XferOptions); +HAL_StatusTypeDef HAL_I2C_EnableListen_IT(I2C_HandleTypeDef *hi2c); +HAL_StatusTypeDef HAL_I2C_DisableListen_IT(I2C_HandleTypeDef *hi2c); +HAL_StatusTypeDef HAL_I2C_Master_Abort_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress); + +/******* Non-Blocking mode: DMA */ +HAL_StatusTypeDef HAL_I2C_Master_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size); +HAL_StatusTypeDef HAL_I2C_Master_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size); +HAL_StatusTypeDef HAL_I2C_Slave_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size); +HAL_StatusTypeDef HAL_I2C_Slave_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size); +HAL_StatusTypeDef HAL_I2C_Mem_Write_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size); +HAL_StatusTypeDef HAL_I2C_Mem_Read_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size); + +HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t XferOptions); +HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t XferOptions); +HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, + uint32_t XferOptions); +HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, + uint32_t XferOptions); +/** + * @} + */ + +/** @addtogroup I2C_IRQ_Handler_and_Callbacks IRQ Handler and Callbacks + * @{ + */ +/******* I2C IRQHandler and Callbacks used in non blocking modes (Interrupt and DMA) */ +void HAL_I2C_EV_IRQHandler(I2C_HandleTypeDef *hi2c); +void HAL_I2C_ER_IRQHandler(I2C_HandleTypeDef *hi2c); +void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c); +void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c); +void HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c); +void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c); +void HAL_I2C_AddrCallback(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrMatchCode); +void HAL_I2C_ListenCpltCallback(I2C_HandleTypeDef *hi2c); +void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c); +void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c); +void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c); +void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c); +/** + * @} + */ + +/** @addtogroup I2C_Exported_Functions_Group3 Peripheral State, Mode and Error functions + * @{ + */ +/* Peripheral State, Mode and Error functions *********************************/ +HAL_I2C_StateTypeDef HAL_I2C_GetState(I2C_HandleTypeDef *hi2c); +HAL_I2C_ModeTypeDef HAL_I2C_GetMode(I2C_HandleTypeDef *hi2c); +uint32_t HAL_I2C_GetError(I2C_HandleTypeDef *hi2c); + +/** + * @} + */ + +/** + * @} + */ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup I2C_Private_Constants I2C Private Constants + * @{ + */ + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup I2C_Private_Macro I2C Private Macros + * @{ + */ + +#define IS_I2C_ADDRESSING_MODE(MODE) (((MODE) == I2C_ADDRESSINGMODE_7BIT) || \ + ((MODE) == I2C_ADDRESSINGMODE_10BIT)) + +#define IS_I2C_DUAL_ADDRESS(ADDRESS) (((ADDRESS) == I2C_DUALADDRESS_DISABLE) || \ + ((ADDRESS) == I2C_DUALADDRESS_ENABLE)) + +#define IS_I2C_OWN_ADDRESS2_MASK(MASK) (((MASK) == I2C_OA2_NOMASK) || \ + ((MASK) == I2C_OA2_MASK01) || \ + ((MASK) == I2C_OA2_MASK02) || \ + ((MASK) == I2C_OA2_MASK03) || \ + ((MASK) == I2C_OA2_MASK04) || \ + ((MASK) == I2C_OA2_MASK05) || \ + ((MASK) == I2C_OA2_MASK06) || \ + ((MASK) == I2C_OA2_MASK07)) + +#define IS_I2C_GENERAL_CALL(CALL) (((CALL) == I2C_GENERALCALL_DISABLE) || \ + ((CALL) == I2C_GENERALCALL_ENABLE)) + +#define IS_I2C_NO_STRETCH(STRETCH) (((STRETCH) == I2C_NOSTRETCH_DISABLE) || \ + ((STRETCH) == I2C_NOSTRETCH_ENABLE)) + +#define IS_I2C_MEMADD_SIZE(SIZE) (((SIZE) == I2C_MEMADD_SIZE_8BIT) || \ + ((SIZE) == I2C_MEMADD_SIZE_16BIT)) + +#define IS_TRANSFER_MODE(MODE) (((MODE) == I2C_RELOAD_MODE) || \ + ((MODE) == I2C_AUTOEND_MODE) || \ + ((MODE) == I2C_SOFTEND_MODE)) + +#define IS_TRANSFER_REQUEST(REQUEST) (((REQUEST) == I2C_GENERATE_STOP) || \ + ((REQUEST) == I2C_GENERATE_START_READ) || \ + ((REQUEST) == I2C_GENERATE_START_WRITE) || \ + ((REQUEST) == I2C_NO_STARTSTOP)) + +#define IS_I2C_TRANSFER_OPTIONS_REQUEST(REQUEST) (((REQUEST) == I2C_FIRST_FRAME) || \ + ((REQUEST) == I2C_FIRST_AND_NEXT_FRAME) || \ + ((REQUEST) == I2C_NEXT_FRAME) || \ + ((REQUEST) == I2C_FIRST_AND_LAST_FRAME) || \ + ((REQUEST) == I2C_LAST_FRAME) || \ + ((REQUEST) == I2C_LAST_FRAME_NO_STOP) || \ + IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(REQUEST)) + +#define IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(REQUEST) (((REQUEST) == I2C_OTHER_FRAME) || \ + ((REQUEST) == I2C_OTHER_AND_LAST_FRAME)) + +#define I2C_RESET_CR2(__HANDLE__) ((__HANDLE__)->Instance->CR2 &= \ + (uint32_t)~((uint32_t)(I2C_CR2_SADD | I2C_CR2_HEAD10R | \ + I2C_CR2_NBYTES | I2C_CR2_RELOAD | \ + I2C_CR2_RD_WRN))) + +#define I2C_GET_ADDR_MATCH(__HANDLE__) ((uint16_t)(((__HANDLE__)->Instance->ISR & I2C_ISR_ADDCODE) \ + >> 16U)) +#define I2C_GET_DIR(__HANDLE__) ((uint8_t)(((__HANDLE__)->Instance->ISR & I2C_ISR_DIR) \ + >> 16U)) +#define I2C_GET_STOP_MODE(__HANDLE__) ((__HANDLE__)->Instance->CR2 & I2C_CR2_AUTOEND) +#define I2C_GET_OWN_ADDRESS1(__HANDLE__) ((uint16_t)((__HANDLE__)->Instance->OAR1 & I2C_OAR1_OA1)) +#define I2C_GET_OWN_ADDRESS2(__HANDLE__) ((uint16_t)((__HANDLE__)->Instance->OAR2 & I2C_OAR2_OA2)) + +#define IS_I2C_OWN_ADDRESS1(ADDRESS1) ((ADDRESS1) <= 0x000003FFU) +#define IS_I2C_OWN_ADDRESS2(ADDRESS2) ((ADDRESS2) <= (uint16_t)0x00FFU) + +#define I2C_MEM_ADD_MSB(__ADDRESS__) ((uint8_t)((uint16_t)(((uint16_t)((__ADDRESS__) & \ + (uint16_t)(0xFF00U))) >> 8U))) +#define I2C_MEM_ADD_LSB(__ADDRESS__) ((uint8_t)((uint16_t)((__ADDRESS__) & (uint16_t)(0x00FFU)))) + +#define I2C_GENERATE_START(__ADDMODE__,__ADDRESS__) (((__ADDMODE__) == I2C_ADDRESSINGMODE_7BIT) ? \ + (uint32_t)((((uint32_t)(__ADDRESS__) & (I2C_CR2_SADD)) | \ + (I2C_CR2_START) | (I2C_CR2_AUTOEND)) & \ + (~I2C_CR2_RD_WRN)) : \ + (uint32_t)((((uint32_t)(__ADDRESS__) & (I2C_CR2_SADD)) | \ + (I2C_CR2_ADD10) | (I2C_CR2_START)) & \ + (~I2C_CR2_RD_WRN))) + +#define I2C_CHECK_FLAG(__ISR__, __FLAG__) ((((__ISR__) & ((__FLAG__) & I2C_FLAG_MASK)) == \ + ((__FLAG__) & I2C_FLAG_MASK)) ? SET : RESET) +#define I2C_CHECK_IT_SOURCE(__CR1__, __IT__) ((((__CR1__) & (__IT__)) == (__IT__)) ? SET : RESET) +/** + * @} + */ + +/* Private Functions ---------------------------------------------------------*/ +/** @defgroup I2C_Private_Functions I2C Private Functions + * @{ + */ +/* Private functions are defined in stm32l0xx_hal_i2c.c file */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + + +#endif /* STM32L0xx_HAL_I2C_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h new file mode 100644 index 0000000..83de596 --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h @@ -0,0 +1,196 @@ +/** + ****************************************************************************** + * @file stm32l0xx_hal_i2c_ex.h + * @author MCD Application Team + * @brief Header file of I2C HAL Extended module. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32L0xx_HAL_I2C_EX_H +#define STM32L0xx_HAL_I2C_EX_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal_def.h" + +/** @addtogroup STM32L0xx_HAL_Driver + * @{ + */ + +/** @addtogroup I2CEx + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup I2CEx_Exported_Constants I2C Extended Exported Constants + * @{ + */ + +/** @defgroup I2CEx_Analog_Filter I2C Extended Analog Filter + * @{ + */ +#define I2C_ANALOGFILTER_ENABLE 0x00000000U +#define I2C_ANALOGFILTER_DISABLE I2C_CR1_ANFOFF +/** + * @} + */ + +/** @defgroup I2CEx_FastModePlus I2C Extended Fast Mode Plus + * @{ + */ +#define I2C_FMP_NOT_SUPPORTED 0xAAAA0000U /*!< Fast Mode Plus not supported */ +#if defined(SYSCFG_CFGR2_I2C_PB6_FMP) +#define I2C_FASTMODEPLUS_PB6 SYSCFG_CFGR2_I2C_PB6_FMP /*!< Enable Fast Mode Plus on PB6 */ +#define I2C_FASTMODEPLUS_PB7 SYSCFG_CFGR2_I2C_PB7_FMP /*!< Enable Fast Mode Plus on PB7 */ +#else +#define I2C_FASTMODEPLUS_PB6 (uint32_t)(0x00000004U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PB6 not supported */ +#define I2C_FASTMODEPLUS_PB7 (uint32_t)(0x00000008U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PB7 not supported */ +#endif /* SYSCFG_CFGR2_I2C_PB6_FMP */ +#if defined(SYSCFG_CFGR2_I2C_PB8_FMP) +#define I2C_FASTMODEPLUS_PB8 SYSCFG_CFGR2_I2C_PB8_FMP /*!< Enable Fast Mode Plus on PB8 */ +#define I2C_FASTMODEPLUS_PB9 SYSCFG_CFGR2_I2C_PB9_FMP /*!< Enable Fast Mode Plus on PB9 */ +#else +#define I2C_FASTMODEPLUS_PB8 (uint32_t)(0x00000010U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PB8 not supported */ +#define I2C_FASTMODEPLUS_PB9 (uint32_t)(0x00000012U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PB9 not supported */ +#endif /* SYSCFG_CFGR2_I2C_PB8_FMP */ +#if defined(SYSCFG_CFGR2_I2C1_FMP) +#define I2C_FASTMODEPLUS_I2C1 SYSCFG_CFGR2_I2C1_FMP /*!< Enable Fast Mode Plus on I2C1 pins */ +#else +#define I2C_FASTMODEPLUS_I2C1 (uint32_t)(0x00000100U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C1 not supported */ +#endif /* SYSCFG_CFGR2_I2C1_FMP */ +#if defined(SYSCFG_CFGR2_I2C2_FMP) +#define I2C_FASTMODEPLUS_I2C2 SYSCFG_CFGR2_I2C2_FMP /*!< Enable Fast Mode Plus on I2C2 pins */ +#else +#define I2C_FASTMODEPLUS_I2C2 (uint32_t)(0x00000200U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C2 not supported */ +#endif /* SYSCFG_CFGR2_I2C2_FMP */ +#if defined(SYSCFG_CFGR2_I2C3_FMP) +#define I2C_FASTMODEPLUS_I2C3 SYSCFG_CFGR2_I2C3_FMP /*!< Enable Fast Mode Plus on I2C3 pins */ +#else +#define I2C_FASTMODEPLUS_I2C3 (uint32_t)(0x00000400U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C3 not supported */ +#endif /* SYSCFG_CFGR2_I2C3_FMP */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup I2CEx_Exported_Macros I2C Extended Exported Macros + * @{ + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup I2CEx_Exported_Functions I2C Extended Exported Functions + * @{ + */ + +/** @addtogroup I2CEx_Exported_Functions_Group1 Filter Mode Functions + * @{ + */ +/* Peripheral Control functions ************************************************/ +HAL_StatusTypeDef HAL_I2CEx_ConfigAnalogFilter(I2C_HandleTypeDef *hi2c, uint32_t AnalogFilter); +HAL_StatusTypeDef HAL_I2CEx_ConfigDigitalFilter(I2C_HandleTypeDef *hi2c, uint32_t DigitalFilter); +/** + * @} + */ + +/** @addtogroup I2CEx_Exported_Functions_Group2 WakeUp Mode Functions + * @{ + */ +HAL_StatusTypeDef HAL_I2CEx_EnableWakeUp(I2C_HandleTypeDef *hi2c); +HAL_StatusTypeDef HAL_I2CEx_DisableWakeUp(I2C_HandleTypeDef *hi2c); +/** + * @} + */ +#if (defined(SYSCFG_CFGR2_I2C_PB6_FMP) || defined(SYSCFG_CFGR2_I2C_PB7_FMP)) || (defined(SYSCFG_CFGR2_I2C_PB8_FMP) || defined(SYSCFG_CFGR2_I2C_PB9_FMP)) || (defined(SYSCFG_CFGR2_I2C1_FMP)) || defined(SYSCFG_CFGR2_I2C2_FMP) || defined(SYSCFG_CFGR2_I2C3_FMP) + +/** @addtogroup I2CEx_Exported_Functions_Group3 Fast Mode Plus Functions + * @{ + */ +void HAL_I2CEx_EnableFastModePlus(uint32_t ConfigFastModePlus); +void HAL_I2CEx_DisableFastModePlus(uint32_t ConfigFastModePlus); +/** + * @} + */ +#endif /* Fast Mode Plus Availability */ + +/** + * @} + */ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup I2CEx_Private_Constants I2C Extended Private Constants + * @{ + */ + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup I2CEx_Private_Macro I2C Extended Private Macros + * @{ + */ +#define IS_I2C_ANALOG_FILTER(FILTER) (((FILTER) == I2C_ANALOGFILTER_ENABLE) || \ + ((FILTER) == I2C_ANALOGFILTER_DISABLE)) + +#define IS_I2C_DIGITAL_FILTER(FILTER) ((FILTER) <= 0x0000000FU) + +#define IS_I2C_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & I2C_FMP_NOT_SUPPORTED) != I2C_FMP_NOT_SUPPORTED) && \ + ((((__CONFIG__) & (I2C_FASTMODEPLUS_PB6)) == I2C_FASTMODEPLUS_PB6) || \ + (((__CONFIG__) & (I2C_FASTMODEPLUS_PB7)) == I2C_FASTMODEPLUS_PB7) || \ + (((__CONFIG__) & (I2C_FASTMODEPLUS_PB8)) == I2C_FASTMODEPLUS_PB8) || \ + (((__CONFIG__) & (I2C_FASTMODEPLUS_PB9)) == I2C_FASTMODEPLUS_PB9) || \ + (((__CONFIG__) & (I2C_FASTMODEPLUS_I2C1)) == I2C_FASTMODEPLUS_I2C1) || \ + (((__CONFIG__) & (I2C_FASTMODEPLUS_I2C2)) == I2C_FASTMODEPLUS_I2C2) || \ + (((__CONFIG__) & (I2C_FASTMODEPLUS_I2C3)) == I2C_FASTMODEPLUS_I2C3))) +/** + * @} + */ + +/* Private Functions ---------------------------------------------------------*/ +/** @defgroup I2CEx_Private_Functions I2C Extended Private Functions + * @{ + */ +/* Private functions are defined in stm32l0xx_hal_i2c_ex.c file */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32L0xx_HAL_I2C_EX_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h new file mode 100644 index 0000000..eb37fe0 --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h @@ -0,0 +1,460 @@ +/** + ****************************************************************************** + * @file stm32l0xx_hal_pwr.h + * @author MCD Application Team + * @brief Header file of PWR HAL module. + ****************************************************************************** + * @attention + * + *

© Copyright(c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L0xx_HAL_PWR_H +#define __STM32L0xx_HAL_PWR_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal_def.h" + +/** @addtogroup STM32L0xx_HAL_Driver + * @{ + */ + +/** @defgroup PWR PWR + * @{ + */ + +/** @defgroup PWR_Exported_Types PWR Exported Types + * @{ + */ + +#if defined(PWR_PVD_SUPPORT) +/** + * @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; +#endif + +/** + * @} + */ + +/** @addtogroup PWR_Private + * @{ + */ + +#if defined(PWR_PVD_SUPPORT) +#define PWR_EXTI_LINE_PVD EXTI_FTSR_TR16 /*!< External interrupt line 16 Connected to the PVD EXTI Line */ +#endif + +/** + * @} + */ + +/** @defgroup PWR_Exported_Constants PWR Exported Constants + * @{ + */ + +/** @defgroup PWR_register_alias_address PWR Register alias address + * @{ + */ +#define PWR_WAKEUP_PIN1 PWR_CSR_EWUP1 +#if defined (STM32L010x4) || defined (STM32L011xx) || defined (STM32L021xx) +#else +#define PWR_WAKEUP_PIN2 PWR_CSR_EWUP2 +#endif +#if defined (STM32L010x4) || defined (STM32L010x6) || defined (STM32L011xx) || defined (STM32L021xx) || \ + defined (STM32L031xx) || defined (STM32L041xx) || defined (STM32L071xx) || defined (STM32L072xx) || \ + defined (STM32L073xx) || defined (STM32L081xx) || defined (STM32L082xx) || defined (STM32L083xx) +#define PWR_WAKEUP_PIN3 PWR_CSR_EWUP3 +#endif +/** + * @} + */ + +#if defined(PWR_PVD_SUPPORT) +/** @defgroup PWR_PVD_detection_level 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 */ +/** + * @} + */ +#endif /* PWR_PVD_SUPPORT */ + +/** @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 (0x01U) +#define PWR_SLEEPENTRY_WFE (0x02U) +/** + * @} + */ + +/** @defgroup PWR_STOP_mode_entry PWR STOP mode entry + * @{ + */ +#define PWR_STOPENTRY_WFI (0x01U) +#define PWR_STOPENTRY_WFE (0x02U) +/** + * @} + */ + +/** @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 + +#define IS_PWR_VOLTAGE_SCALING_RANGE(RANGE) (((RANGE) == PWR_REGULATOR_VOLTAGE_SCALE1) || \ + ((RANGE) == PWR_REGULATOR_VOLTAGE_SCALE2) || \ + ((RANGE) == PWR_REGULATOR_VOLTAGE_SCALE3)) +/** + * @} + */ + +/** @defgroup PWR_Flag PWR Flag + * @{ + */ +#define PWR_FLAG_WU PWR_CSR_WUF +#define PWR_FLAG_SB PWR_CSR_SBF +#if defined(PWR_PVD_SUPPORT) +#define PWR_FLAG_PVDO PWR_CSR_PVDO +#endif +#define PWR_FLAG_VREFINTRDY PWR_CSR_VREFINTRDYF +#define PWR_FLAG_VOS PWR_CSR_VOSF +#define PWR_FLAG_REGLP PWR_CSR_REGLPF + + +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup PWR_Exported_Macro PWR Exported Macros + * @{ + */ +/** @brief macros configure the main internal regulator output voltage. + * When exiting Low Power Run Mode or during dynamic voltage scaling configuration, + * the reference manual recommends to poll PWR_FLAG_REGLP bit to wait for the regulator + * to reach main mode (resp. to get stabilized) for a transition from 0 to 1. + * Only then the clock can be increased. + * + * @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. Not available on L0 Value line. + * @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 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__) << 2U) + +#if defined(PWR_PVD_SUPPORT) +/** + * @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. + * This parameter can be: + * @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. + * This parameter can be: + * @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) + +/** + * @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) + +#endif /* PWR_PVD_SUPPORT */ + +/** + * @} + */ + +/** @addtogroup PWR_Private + * @{ + */ +#if defined(PWR_PVD_SUPPORT) +#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)) +#endif /* PWR_PVD_SUPPORT */ + +#if defined (STM32L010x6) || defined (STM32L071xx) || defined (STM32L072xx) || defined (STM32L073xx) || defined (STM32L081xx) || defined (STM32L082xx) || defined (STM32L083xx) +#define IS_PWR_WAKEUP_PIN(PIN) (((PIN) == PWR_WAKEUP_PIN1) || \ + ((PIN) == PWR_WAKEUP_PIN2) || \ + ((PIN) == PWR_WAKEUP_PIN3)) +#elif defined (STM32L010xB) || defined (STM32L051xx) || defined (STM32L052xx) || defined (STM32L053xx) || defined (STM32L062xx) || defined (STM32L063xx) +#define IS_PWR_WAKEUP_PIN(PIN) (((PIN) == PWR_WAKEUP_PIN1) || \ + ((PIN) == PWR_WAKEUP_PIN2)) +#elif defined (STM32L010x8) || defined (STM32L031xx) || defined (STM32L041xx) +#define IS_PWR_WAKEUP_PIN(PIN) (((PIN) == PWR_WAKEUP_PIN1) || \ + ((PIN) == PWR_WAKEUP_PIN2)) +#elif defined (STM32L010x4) || defined (STM32L011xx) || defined (STM32L021xx) +#define IS_PWR_WAKEUP_PIN(PIN) (((PIN) == PWR_WAKEUP_PIN1) || \ + ((PIN) == PWR_WAKEUP_PIN3)) +#endif + +#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)) + +/** + * @} + */ + +/* Include PWR HAL Extension module */ +#include "stm32l0xx_hal_pwr_ex.h" + +/** @defgroup PWR_Exported_Functions PWR Exported Functions + * @{ + */ + +/** @defgroup PWR_Exported_Functions_Group1 Initialization and de-initialization functions + * @{ + */ +void HAL_PWR_DeInit(void); +void HAL_PWR_EnableBkUpAccess(void); +void HAL_PWR_DisableBkUpAccess(void); +/** + * @} + */ + +/** @defgroup PWR_Exported_Functions_Group2 Low Power modes configuration functions + * @{ + */ + +#if defined(PWR_PVD_SUPPORT) +/* PVD control functions ************************************************/ +void HAL_PWR_ConfigPVD(PWR_PVDTypeDef *sConfigPVD); +void HAL_PWR_EnablePVD(void); +void HAL_PWR_DisablePVD(void); +void HAL_PWR_PVD_IRQHandler(void); +void HAL_PWR_PVDCallback(void); +#endif + +/* 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); + +/** + * @} + */ + +/** + * @} + */ + +/* Define the private group ***********************************/ +/**************************************************************/ +/** @defgroup PWR_Private PWR Private + * @{ + */ +/** + * @} + */ +/**************************************************************/ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + + +#endif /* __STM32L0xx_HAL_PWR_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h new file mode 100644 index 0000000..52078a4 --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h @@ -0,0 +1,99 @@ +/** + ****************************************************************************** + * @file stm32l0xx_hal_pwr_ex.h + * @author MCD Application Team + * @brief Header file of PWR HAL Extension module. + ****************************************************************************** + * @attention + * + *

© Copyright(c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L0xx_HAL_PWR_EX_H +#define __STM32L0xx_HAL_PWR_EX_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal_def.h" + +/** @addtogroup STM32L0xx_HAL_Driver + * @{ + */ + +/** @defgroup PWREx PWREx + * @{ + */ + +/** @defgroup PWREx_Exported_Macros PWREx Exported Macros + * @{ + */ + +/** @brief Macros to enable the Deep-sleep mode with Flash memory kept off. + * @note When entering low power mode (stop or standby only), if DS_EE_KOFF and RUN_PD of + * FLASH_ACR register are both set , the Flash memory will not be woken up + * when exiting from deep-sleep mode. + */ +#define __HAL_PWR_FLASHWAKEUP_ENABLE() CLEAR_BIT(PWR->CR, PWR_CR_DSEEKOFF) + +/** @brief Macros to disable the Deep-sleep mode with Flash memory kept off. + * @note When entering low power mode (stop or standby only), if DS_EE_KOFF and RUN_PD of + * FLASH_ACR register are both set , the Flash memory will not be woken up + * when exiting from deep-sleep mode. + */ +#define __HAL_PWR_FLASHWAKEUP_DISABLE() SET_BIT(PWR->CR, PWR_CR_DSEEKOFF) +/** + * @} + */ + +/** @defgroup PWREx_Exported_Functions PWREx Exported Functions + * @{ + */ +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); +/** + * @} + */ + +/* Define the private group ***********************************/ +/**************************************************************/ +/** @defgroup PWREx_Private PWREx Private + * @{ + */ +/** + * @} + */ +/**************************************************************/ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32L0xx_HAL_PWR_EX_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h new file mode 100644 index 0000000..e866cbd --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h @@ -0,0 +1,1741 @@ +/** + ****************************************************************************** + * @file stm32l0xx_hal_rcc.h + * @author MCD Application Team + * @brief Header file of RCC HAL module. + ****************************************************************************** + * @attention + * + *

© Copyright(c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L0xx_HAL_RCC_H +#define __STM32L0xx_HAL_RCC_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal_def.h" + +/** @addtogroup STM32L0xx_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 + 1) */ +#define HSI_TIMEOUT_VALUE (2U) /* 2 ms (minimum Tick + 1) */ +#define LSI_TIMEOUT_VALUE (2U) /* 2 ms (minimum Tick + 1) */ +#define PLL_TIMEOUT_VALUE (2U) /* 2 ms (minimum Tick + 1) */ +#if defined(RCC_HSI48_SUPPORT) +#define HSI48_TIMEOUT_VALUE (2U) /* 2 ms (minimum Tick + 1) */ +#endif /* RCC_HSI48_SUPPORT */ +/** + * @} + */ + + +/** @defgroup RCC_BitAddress_AliasRegion BitAddress AliasRegion + * @brief RCC registers bit address in the alias region + * @{ + */ +#define RCC_OFFSET (RCC_BASE - PERIPH_BASE) +/* --- CR Register ---*/ +/* Alias word address of HSION bit */ +#define RCC_CR_OFFSET (RCC_OFFSET + 0x00U) +/* --- CFGR Register ---*/ +/* Alias word address of I2SSRC bit */ +#define RCC_CFGR_OFFSET (RCC_OFFSET + 0x08U) +/* --- CSR Register ---*/ +#define RCC_CSR_OFFSET (RCC_OFFSET + 0x74U) + +/* CR register byte 3 (Bits[23:16]) base address */ +#define RCC_CR_BYTE2_ADDRESS (0x40023802U) + +/* CIER register byte 0 (Bits[0:8]) base address */ +#define CIER_BYTE0_ADDRESS ((uint32_t)(RCC_BASE + 0x10U + 0x00U)) +/** + * @} + */ + + +/* Defines used for Flags */ +#define CR_REG_INDEX ((uint8_t)1) +#define CSR_REG_INDEX ((uint8_t)2) +#define CRRCR_REG_INDEX ((uint8_t)3) + +#define RCC_FLAG_MASK ((uint8_t)0x1F) + +/** + * @} + */ + +/** @addtogroup RCC_Private_Macros + * @{ + */ +#if defined(RCC_HSI48_SUPPORT) +#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_HSI48) == RCC_OSCILLATORTYPE_HSI48) || \ + (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) || \ + (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) || \ + (((__OSCILLATOR__) & RCC_OSCILLATORTYPE_MSI) == RCC_OSCILLATORTYPE_MSI)) + +#define IS_RCC_HSI48(__HSI48__) (((__HSI48__) == RCC_HSI48_OFF) || ((__HSI48__) == RCC_HSI48_ON)) +#else +#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)) +#endif /* RCC_HSI48_SUPPORT */ +#define IS_RCC_PLLSOURCE(__SOURCE__) (((__SOURCE__) == RCC_PLLSOURCE_HSI) || \ + ((__SOURCE__) == RCC_PLLSOURCE_HSE)) +#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)) +#if defined(RCC_CR_HSIOUTEN) +#define IS_RCC_HSI(__HSI__) (((__HSI__) == RCC_HSI_OFF) || ((__HSI__) == RCC_HSI_ON) || \ + ((__HSI__) == RCC_HSI_DIV4) || ((__HSI__) == RCC_HSI_OUTEN) || \ + ((__HSI__) == (RCC_HSI_OUTEN|RCC_HSI_ON)) || ((__HSI__) == (RCC_HSI_OUTEN|RCC_HSI_DIV4))) +#else +#define IS_RCC_HSI(__HSI__) (((__HSI__) == RCC_HSI_OFF) || ((__HSI__) == RCC_HSI_ON) || \ + ((__HSI__) == RCC_HSI_DIV4)) +#endif /* RCC_CR_HSIOUTEN */ +#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)) +#if defined(RCC_MCO3_SUPPORT) +#define IS_RCC_MCO(__MCO__) (((__MCO__) == RCC_MCO1) || ((__MCO__) == RCC_MCO2) || ((__MCO__) == RCC_MCO3)) +#else +#define IS_RCC_MCO(__MCO__) (((__MCO__) == RCC_MCO1) || ((__MCO__) == RCC_MCO2)) + +#endif /* RCC_MCO3_SUPPORT */ +#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)) +#if defined(RCC_CFGR_MCOSEL_HSI48) +#define IS_RCC_MCO1SOURCE(__SOURCE__) (((__SOURCE__) == RCC_MCO1SOURCE_NOCLOCK) || ((__SOURCE__) == RCC_MCO1SOURCE_SYSCLK) || \ + ((__SOURCE__) == RCC_MCO1SOURCE_HSI) || ((__SOURCE__) == RCC_MCO1SOURCE_MSI) || \ + ((__SOURCE__) == RCC_MCO1SOURCE_HSE) || ((__SOURCE__) == RCC_MCO1SOURCE_PLLCLK) || \ + ((__SOURCE__) == RCC_MCO1SOURCE_LSI) || ((__SOURCE__) == RCC_MCO1SOURCE_LSE) || \ + ((__SOURCE__) == RCC_MCO1SOURCE_HSI48)) +#else +#define IS_RCC_MCO1SOURCE(__SOURCE__) (((__SOURCE__) == RCC_MCO1SOURCE_NOCLOCK) || ((__SOURCE__) == RCC_MCO1SOURCE_SYSCLK) || \ + ((__SOURCE__) == RCC_MCO1SOURCE_HSI) || ((__SOURCE__) == RCC_MCO1SOURCE_MSI) || \ + ((__SOURCE__) == RCC_MCO1SOURCE_HSE) || ((__SOURCE__) == RCC_MCO1SOURCE_PLLCLK) || \ + ((__SOURCE__) == RCC_MCO1SOURCE_LSI) || ((__SOURCE__) == RCC_MCO1SOURCE_LSE)) +#endif /* RCC_CFGR_MCOSEL_HSI48 */ +#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 = 0x1F */ + + uint32_t LSIState; /*!< The new state of the LSI. + This parameter can be a value of @ref RCC_LSI_Config */ + +#if defined(RCC_HSI48_SUPPORT) + uint32_t HSI48State; /*!< The new state of the HSI48. + This parameter can be a value of @ref RCC_HSI48_Config */ + +#endif /* RCC_HSI48_SUPPORT */ + 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 = 0xFF */ + + 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) +#if defined(RCC_HSI48_SUPPORT) +#define RCC_OSCILLATORTYPE_HSI48 (0x00000020U) +#endif /* RCC_HSI48_SUPPORT */ +/** + * @} + */ + +/** @defgroup RCC_HSE_Config HSE Config + * @{ + */ +#define RCC_HSE_OFF (0x00000000U) /*!< HSE clock deactivation */ +#define RCC_HSE_ON RCC_CR_HSEON /*!< HSE clock activation */ +#define RCC_HSE_BYPASS ((uint32_t)(RCC_CR_HSEBYP | RCC_CR_HSEON)) /*!< External clock source for HSE clock */ +/** + * @} + */ + +/** @defgroup RCC_LSE_Config LSE Config + * @{ + */ +#define RCC_LSE_OFF (0x00000000U) /*!< LSE clock deactivation */ +#define RCC_LSE_ON RCC_CSR_LSEON /*!< LSE clock activation */ +#define RCC_LSE_BYPASS ((uint32_t)(RCC_CSR_LSEBYP | RCC_CSR_LSEON)) /*!< 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_HSI_DIV4 (RCC_CR_HSIDIVEN | RCC_CR_HSION) /*!< HSI_DIV4 clock activation */ +#if defined(RCC_CR_HSIOUTEN) +#define RCC_HSI_OUTEN RCC_CR_HSIOUTEN /*!< HSI_OUTEN clock activation */ + /* This value is to be used in combination with RCC_HSI_ON/RCC_HSI_DIV4 */ +#endif /* RCC_CR_HSIOUTEN */ + +#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 */ + +/** + * @} + */ + +#if defined(RCC_HSI48_SUPPORT) +/** @defgroup RCC_HSI48_Config HSI48 Config + * @{ + */ +#define RCC_HSI48_OFF ((uint8_t)0x00) +#define RCC_HSI48_ON ((uint8_t)0x01) + +/** + * @} + */ +#endif /* RCC_HSI48_SUPPORT */ + +/** @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_MCO2 (0x00000001U) +#if defined(RCC_MCO3_SUPPORT) +#define RCC_MCO3 (0x00000002U) +#if defined(RCC_MCO3_AF0_SUPPORT) +#define MCO3_GPIO_AF GPIO_AF0_MCO +#else +#define MCO3_GPIO_AF GPIO_AF2_MCO +#endif /* RCC_MCO3_AF0_SUPPORT */ +#endif /* RCC_MCO3_SUPPORT */ + +/** + * @} + */ + +/** @defgroup RCC_MCOx_Clock_Prescaler MCO Clock Prescaler + * @{ + */ +#define RCC_MCODIV_1 RCC_CFGR_MCO_PRE_1 +#define RCC_MCODIV_2 RCC_CFGR_MCO_PRE_2 +#define RCC_MCODIV_4 RCC_CFGR_MCO_PRE_4 +#define RCC_MCODIV_8 RCC_CFGR_MCO_PRE_8 +#define RCC_MCODIV_16 RCC_CFGR_MCO_PRE_16 + +/** + * @} + */ + +/** @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 +#if defined(RCC_CFGR_MCOSEL_HSI48) +#define RCC_MCO1SOURCE_HSI48 RCC_CFGR_MCO_HSI48 +#endif /* RCC_CFGR_MCOSEL_HSI48 */ + +/** + * @} + */ +/** @defgroup RCC_Interrupt Interrupts + * @{ + */ +#define RCC_IT_LSIRDY RCC_CIFR_LSIRDYF /*!< LSI Ready Interrupt flag */ +#define RCC_IT_LSERDY RCC_CIFR_LSERDYF /*!< LSE Ready Interrupt flag */ +#define RCC_IT_HSIRDY RCC_CIFR_HSIRDYF /*!< HSI Ready Interrupt flag */ +#define RCC_IT_HSERDY RCC_CIFR_HSERDYF /*!< HSE Ready Interrupt flag */ +#define RCC_IT_PLLRDY RCC_CIFR_PLLRDYF /*!< PLL Ready Interrupt flag */ +#define RCC_IT_MSIRDY RCC_CIFR_MSIRDYF /*!< MSI Ready Interrupt flag */ +#define RCC_IT_LSECSS RCC_CIFR_CSSLSEF /*!< LSE Clock Security System Interrupt flag */ +#if defined(RCC_HSECSS_SUPPORT) +#define RCC_IT_CSS RCC_CIFR_CSSHSEF /*!< Clock Security System Interrupt flag */ +#endif /* RCC_HSECSS_SUPPORT */ +#if defined(RCC_HSI48_SUPPORT) +#define RCC_IT_HSI48RDY RCC_CIFR_HSI48RDYF /*!< HSI48 Ready Interrupt flag */ +#endif /* RCC_HSI48_SUPPORT */ +/** + * @} + */ + +/** @defgroup RCC_Flag Flags + * Elements values convention: XXXYYYYYb + * - YYYYY : Flag position in the register + * - XXX : Register index + * - 001: CR register + * - 010: CSR register + * - 011: CRRCR register (*) + * (*) Applicable only for STM32L052xx, STM32L053xx, (...), STM32L073xx & STM32L082xx + * @{ + */ +/* Flags in the CR register */ +#define RCC_FLAG_HSIRDY ((uint8_t)((CR_REG_INDEX << 5) | RCC_CR_HSIRDY_Pos)) /*!< Internal High Speed clock ready flag */ +#define RCC_FLAG_HSIDIV ((uint8_t)((CR_REG_INDEX << 5) | RCC_CR_HSIDIVF_Pos)) /*!< HSI16 divider flag */ +#define RCC_FLAG_MSIRDY ((uint8_t)((CR_REG_INDEX << 5) | RCC_CR_MSIRDY_Pos)) /*!< MSI clock ready flag */ +#define RCC_FLAG_HSERDY ((uint8_t)((CR_REG_INDEX << 5) | RCC_CR_HSERDY_Pos)) /*!< External High Speed clock ready flag */ +#define RCC_FLAG_PLLRDY ((uint8_t)((CR_REG_INDEX << 5) | RCC_CR_PLLRDY_Pos)) /*!< PLL clock ready flag */ +/* Flags in the CSR register */ +#define RCC_FLAG_LSIRDY ((uint8_t)((CSR_REG_INDEX << 5) | RCC_CSR_LSIRDY_Pos)) /*!< Internal Low Speed oscillator Ready */ +#define RCC_FLAG_LSERDY ((uint8_t)((CSR_REG_INDEX << 5) | RCC_CSR_LSERDY_Pos)) /*!< External Low Speed oscillator Ready */ +#define RCC_FLAG_LSECSS ((uint8_t)((CSR_REG_INDEX << 5) | RCC_CSR_LSECSSD_Pos)) /*!< CSS on LSE failure Detection */ +#define RCC_FLAG_OBLRST ((uint8_t)((CSR_REG_INDEX << 5) | RCC_CSR_OBLRSTF_Pos)) /*!< Options bytes loading reset flag */ +#define RCC_FLAG_PINRST ((uint8_t)((CSR_REG_INDEX << 5) | RCC_CSR_PINRSTF_Pos)) /*!< PIN reset flag */ +#define RCC_FLAG_PORRST ((uint8_t)((CSR_REG_INDEX << 5) | RCC_CSR_PORRSTF_Pos)) /*!< POR/PDR reset flag */ +#define RCC_FLAG_SFTRST ((uint8_t)((CSR_REG_INDEX << 5) | RCC_CSR_SFTRSTF_Pos)) /*!< Software Reset flag */ +#define RCC_FLAG_IWDGRST ((uint8_t)((CSR_REG_INDEX << 5) | RCC_CSR_IWDGRSTF_Pos)) /*!< Independent Watchdog reset flag */ +#define RCC_FLAG_WWDGRST ((uint8_t)((CSR_REG_INDEX << 5) | RCC_CSR_WWDGRSTF_Pos)) /*!< Window watchdog reset flag */ +#define RCC_FLAG_LPWRRST ((uint8_t)((CSR_REG_INDEX << 5) | RCC_CSR_LPWRRSTF_Pos)) /*!< Low-Power reset flag */ +#if defined(RCC_CSR_FWRSTF) +#define RCC_FLAG_FWRST ((uint8_t)((CSR_REG_INDEX << 5) | RCC_CSR_FWRSTF_Pos)) /*!< RCC flag FW reset */ +#endif /* RCC_CSR_FWRSTF */ +/* Flags in the CRRCR register */ +#if defined(RCC_HSI48_SUPPORT) +#define RCC_FLAG_HSI48RDY ((uint8_t)((CRRCR_REG_INDEX << 5) | RCC_CRRCR_HSI48RDY_Pos)) /*!< HSI48 clock ready flag */ +#endif /* RCC_HSI48_SUPPORT */ + +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ + +/** @defgroup RCC_Exported_Macros RCC Exported Macros + * @{ + */ + +/** @defgroup RCC_AHB_Peripheral_Clock_Enable_Disable AHB Peripheral Clock Enable Disable + * @brief Enable or disable 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_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(0) + +#define __HAL_RCC_MIF_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHBENR, RCC_AHBENR_MIFEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_MIFEN);\ + UNUSED(tmpreg); \ + } while(0) + +#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(0) + + +#define __HAL_RCC_DMA1_CLK_DISABLE() CLEAR_BIT(RCC->AHBENR, RCC_AHBENR_DMA1EN) +#define __HAL_RCC_MIF_CLK_DISABLE() CLEAR_BIT(RCC->AHBENR, RCC_AHBENR_MIFEN) +#define __HAL_RCC_CRC_CLK_DISABLE() CLEAR_BIT(RCC->AHBENR, RCC_AHBENR_CRCEN) + +/** + * @} + */ + +/** @defgroup RCC_IOPORT_Clock_Enable_Disable IOPORT Peripheral Clock Enable Disable + * @brief Enable or disable the IOPORT 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->IOPENR, RCC_IOPENR_GPIOAEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOAEN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_GPIOB_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->IOPENR, RCC_IOPENR_GPIOBEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOBEN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_GPIOC_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->IOPENR, RCC_IOPENR_GPIOCEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOCEN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_GPIOH_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->IOPENR, RCC_IOPENR_GPIOHEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOHEN);\ + UNUSED(tmpreg); \ + } while(0) + + +#define __HAL_RCC_GPIOA_CLK_DISABLE() CLEAR_BIT(RCC->IOPENR, RCC_IOPENR_GPIOAEN) +#define __HAL_RCC_GPIOB_CLK_DISABLE() CLEAR_BIT(RCC->IOPENR, RCC_IOPENR_GPIOBEN) +#define __HAL_RCC_GPIOC_CLK_DISABLE() CLEAR_BIT(RCC->IOPENR, RCC_IOPENR_GPIOCEN) +#define __HAL_RCC_GPIOH_CLK_DISABLE() CLEAR_BIT(RCC->IOPENR, RCC_IOPENR_GPIOHEN) + +/** + * @} + */ + +/** @defgroup RCC_APB1_Clock_Enable_Disable APB1 Peripheral 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_WWDG_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_WWDGEN)) +#define __HAL_RCC_PWR_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_PWREN)) + +#define __HAL_RCC_WWDG_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_WWDGEN)) +#define __HAL_RCC_PWR_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_PWREN)) +/** + * @} + */ + +/** @defgroup RCC_APB2_Clock_Enable_Disable APB2 Peripheral 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() SET_BIT(RCC->APB2ENR, (RCC_APB2ENR_SYSCFGEN)) +#define __HAL_RCC_DBGMCU_CLK_ENABLE() SET_BIT(RCC->APB2ENR, (RCC_APB2ENR_DBGMCUEN)) + +#define __HAL_RCC_SYSCFG_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, (RCC_APB2ENR_SYSCFGEN)) +#define __HAL_RCC_DBGMCU_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, (RCC_APB2ENR_DBGMCUEN)) +/** + * @} + */ + +/** @defgroup RCC_AHB_Peripheral_Clock_Enable_Disable_Status AHB Peripheral Clock Enabled or Disabled Status + * @brief Check whether the AHB peripheral clock is enabled or not. + * @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_DMA1_IS_CLK_ENABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_DMA1EN) != 0U) +#define __HAL_RCC_MIF_IS_CLK_ENABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_MIFEN) != 0U) +#define __HAL_RCC_CRC_IS_CLK_ENABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_CRCEN) != 0U) +#define __HAL_RCC_DMA1_IS_CLK_DISABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_DMA1EN) == 0U) +#define __HAL_RCC_MIF_IS_CLK_DISABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_MIFEN) == 0U) +#define __HAL_RCC_CRC_IS_CLK_DISABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_CRCEN) == 0U) + +/** + * @} + */ + +/** @defgroup RCC_IOPORT_Peripheral_Clock_Enable_Disable_Status IOPORT Peripheral Clock Enabled or Disabled Status + * @brief Check whether the IOPORT peripheral clock is enabled or not. + * @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() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOAEN) != 0U) +#define __HAL_RCC_GPIOB_IS_CLK_ENABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOBEN) != 0U) +#define __HAL_RCC_GPIOC_IS_CLK_ENABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOCEN) != 0U) +#define __HAL_RCC_GPIOH_IS_CLK_ENABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOHEN) != 0U) +#define __HAL_RCC_GPIOA_IS_CLK_DISABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOAEN) == 0U) +#define __HAL_RCC_GPIOB_IS_CLK_DISABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOBEN) == 0U) +#define __HAL_RCC_GPIOC_IS_CLK_DISABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOCEN) == 0U) +#define __HAL_RCC_GPIOH_IS_CLK_DISABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOHEN) == 0U) + +/** + * @} + */ + +/** @defgroup RCC_APB1_Clock_Enable_Disable_Status APB1 Peripheral Clock Enabled or Disabled Status + * @brief Check whether the APB1 peripheral clock is enabled or not. + * @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_WWDG_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_WWDGEN) != 0U) +#define __HAL_RCC_PWR_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_PWREN) != 0U) +#define __HAL_RCC_WWDG_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_WWDGEN) == 0U) +#define __HAL_RCC_PWR_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_PWREN) == 0U) + +/** + * @} + */ + +/** @defgroup RCC_APB2_Clock_Enable_Disable_Status APB2 Peripheral Clock Enabled or Disabled Status + * @brief Check whether the APB2 peripheral clock is enabled or not. + * @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() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SYSCFGEN) != 0U) +#define __HAL_RCC_DBGMCU_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_DBGMCUEN) != 0U) +#define __HAL_RCC_SYSCFG_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SYSCFGEN) == 0U) +#define __HAL_RCC_DBGMCU_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_DBGMCUEN) == 0U) + +/** + * @} + */ + + /** @defgroup RCC_AHB_Force_Release_Reset AHB Peripheral Force Release Reset + * @brief Force or release AHB peripheral reset. + * @{ + */ +#define __HAL_RCC_AHB_FORCE_RESET() (RCC->AHBRSTR = 0xFFFFFFFFU) +#define __HAL_RCC_DMA1_FORCE_RESET() SET_BIT(RCC->AHBRSTR, (RCC_AHBRSTR_DMA1RST)) +#define __HAL_RCC_MIF_FORCE_RESET() SET_BIT(RCC->AHBRSTR, (RCC_AHBRSTR_MIFRST)) +#define __HAL_RCC_CRC_FORCE_RESET() SET_BIT(RCC->AHBRSTR, (RCC_AHBRSTR_CRCRST)) + +#define __HAL_RCC_AHB_RELEASE_RESET() (RCC->AHBRSTR = 0x00000000U) +#define __HAL_RCC_CRC_RELEASE_RESET() CLEAR_BIT(RCC->AHBRSTR, (RCC_AHBRSTR_CRCRST)) +#define __HAL_RCC_DMA1_RELEASE_RESET() CLEAR_BIT(RCC->AHBRSTR, (RCC_AHBRSTR_DMA1RST)) +#define __HAL_RCC_MIF_RELEASE_RESET() CLEAR_BIT(RCC->AHBRSTR, (RCC_AHBRSTR_MIFRST)) +/** + * @} + */ + +/** @defgroup RCC_IOPORT_Force_Release_Reset IOPORT Peripheral Force Release Reset + * @brief Force or release IOPORT peripheral reset. + * @{ + */ +#define __HAL_RCC_IOP_FORCE_RESET() (RCC->IOPRSTR = 0xFFFFFFFFU) +#define __HAL_RCC_GPIOA_FORCE_RESET() SET_BIT(RCC->IOPRSTR, (RCC_IOPRSTR_GPIOARST)) +#define __HAL_RCC_GPIOB_FORCE_RESET() SET_BIT(RCC->IOPRSTR, (RCC_IOPRSTR_GPIOBRST)) +#define __HAL_RCC_GPIOC_FORCE_RESET() SET_BIT(RCC->IOPRSTR, (RCC_IOPRSTR_GPIOCRST)) +#define __HAL_RCC_GPIOH_FORCE_RESET() SET_BIT(RCC->IOPRSTR, (RCC_IOPRSTR_GPIOHRST)) + +#define __HAL_RCC_IOP_RELEASE_RESET() (RCC->IOPRSTR = 0x00000000U) +#define __HAL_RCC_GPIOA_RELEASE_RESET() CLEAR_BIT(RCC->IOPRSTR, (RCC_IOPRSTR_GPIOARST)) +#define __HAL_RCC_GPIOB_RELEASE_RESET() CLEAR_BIT(RCC->IOPRSTR, (RCC_IOPRSTR_GPIOBRST)) +#define __HAL_RCC_GPIOC_RELEASE_RESET() CLEAR_BIT(RCC->IOPRSTR, (RCC_IOPRSTR_GPIOCRST)) +#define __HAL_RCC_GPIOH_RELEASE_RESET() CLEAR_BIT(RCC->IOPRSTR, (RCC_IOPRSTR_GPIOHRST)) + +/** + * @} + */ + +/** @defgroup RCC_APB1_Force_Release_Reset APB1 Peripheral Force Release Reset + * @brief Force or release APB1 peripheral reset. + * @{ + */ +#define __HAL_RCC_APB1_FORCE_RESET() (RCC->APB1RSTR = 0xFFFFFFFFU) +#define __HAL_RCC_WWDG_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_WWDGRST)) +#define __HAL_RCC_PWR_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_PWRRST)) + +#define __HAL_RCC_APB1_RELEASE_RESET() (RCC->APB1RSTR = 0x00000000U) +#define __HAL_RCC_WWDG_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_WWDGRST)) +#define __HAL_RCC_PWR_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_PWRRST)) + +/** + * @} + */ + +/** @defgroup RCC_APB2_Force_Release_Reset APB2 Peripheral Force Release Reset + * @brief Force or release APB2 peripheral reset. + * @{ + */ +#define __HAL_RCC_APB2_FORCE_RESET() (RCC->APB2RSTR = 0xFFFFFFFFU) +#define __HAL_RCC_DBGMCU_FORCE_RESET() SET_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_DBGMCURST)) +#define __HAL_RCC_SYSCFG_FORCE_RESET() SET_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_SYSCFGRST)) + +#define __HAL_RCC_APB2_RELEASE_RESET() (RCC->APB2RSTR = 0x00000000U) +#define __HAL_RCC_DBGMCU_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_DBGMCURST)) +#define __HAL_RCC_SYSCFG_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_SYSCFGRST)) +/** + * @} + */ + + +/** @defgroup RCC_AHB_Clock_Sleep_Enable_Disable AHB Peripheral Clock Sleep Enable Disable + * @brief Enable or disable 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 activated clocks remain enabled during SLEEP mode. + * @{ + */ +#define __HAL_RCC_CRC_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHBSMENR, (RCC_AHBSMENR_CRCSMEN)) +#define __HAL_RCC_MIF_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHBSMENR, (RCC_AHBSMENR_MIFSMEN)) +#define __HAL_RCC_SRAM_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHBSMENR, (RCC_AHBSMENR_SRAMSMEN)) +#define __HAL_RCC_DMA1_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHBSMENR, (RCC_AHBSMENR_DMA1SMEN)) + +#define __HAL_RCC_CRC_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHBSMENR, (RCC_AHBSMENR_CRCSMEN)) +#define __HAL_RCC_MIF_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHBSMENR, (RCC_AHBSMENR_MIFSMEN)) +#define __HAL_RCC_SRAM_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHBSMENR, (RCC_AHBSMENR_SRAMSMEN)) +#define __HAL_RCC_DMA1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHBSMENR, (RCC_AHBSMENR_DMA1SMEN)) +/** + * @} + */ + +/** @defgroup RCC_IOPORT_Clock_Sleep_Enable_Disable IOPORT Peripheral Clock Sleep Enable Disable + * @brief Enable or disable the IOPORT 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 activated clocks remain enabled during SLEEP mode. + * @{ + */ + +#define __HAL_RCC_GPIOA_CLK_SLEEP_ENABLE() SET_BIT(RCC->IOPSMENR, (RCC_IOPSMENR_GPIOASMEN)) +#define __HAL_RCC_GPIOB_CLK_SLEEP_ENABLE() SET_BIT(RCC->IOPSMENR, (RCC_IOPSMENR_GPIOBSMEN)) +#define __HAL_RCC_GPIOC_CLK_SLEEP_ENABLE() SET_BIT(RCC->IOPSMENR, (RCC_IOPSMENR_GPIOCSMEN)) +#define __HAL_RCC_GPIOH_CLK_SLEEP_ENABLE() SET_BIT(RCC->IOPSMENR, (RCC_IOPSMENR_GPIOHSMEN)) + +#define __HAL_RCC_GPIOA_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->IOPSMENR, (RCC_IOPSMENR_GPIOASMEN)) +#define __HAL_RCC_GPIOB_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->IOPSMENR, (RCC_IOPSMENR_GPIOBSMEN)) +#define __HAL_RCC_GPIOC_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->IOPSMENR, (RCC_IOPSMENR_GPIOCSMEN)) +#define __HAL_RCC_GPIOH_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->IOPSMENR, (RCC_IOPSMENR_GPIOHSMEN)) +/** + * @} + */ + +/** @defgroup RCC_APB1_Clock_Sleep_Enable_Disable APB1 Peripheral Clock Sleep Enable Disable + * @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 activated clocks remain enabled during SLEEP mode. + * @{ + */ +#define __HAL_RCC_WWDG_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_WWDGSMEN)) +#define __HAL_RCC_PWR_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_PWRSMEN)) + +#define __HAL_RCC_WWDG_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_WWDGSMEN)) +#define __HAL_RCC_PWR_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_PWRSMEN)) + +/** + * @} + */ + +/** @defgroup RCC_APB2_Clock_Sleep_Enable_Disable APB2 Peripheral Clock Sleep Enable Disable + * @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 activated clocks remain enabled during SLEEP mode. + * @{ + */ +#define __HAL_RCC_SYSCFG_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB2SMENR, (RCC_APB2SMENR_SYSCFGSMEN)) +#define __HAL_RCC_DBGMCU_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB2SMENR, (RCC_APB2SMENR_DBGMCUSMEN)) + +#define __HAL_RCC_SYSCFG_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB2SMENR, (RCC_APB2SMENR_SYSCFGSMEN)) +#define __HAL_RCC_DBGMCU_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB2SMENR, (RCC_APB2SMENR_DBGMCUSMEN)) + +/** + * @} + */ + +/** @defgroup RCC_AHB_Clock_Sleep_Enable_Disable_Status AHB Peripheral Clock Sleep Enabled or Disabled Status + * @brief Check whether the AHB peripheral clock during Low Power (Sleep) mode is enabled or not. + * @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_CRC_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_CRCSMEN) != 0U) +#define __HAL_RCC_MIF_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_MIFSMEN) != 0U) +#define __HAL_RCC_SRAM_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_SRAMSMEN) != 0U) +#define __HAL_RCC_DMA1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_DMA1SMEN) != 0U) +#define __HAL_RCC_CRC_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_CRCSMEN) == 0U) +#define __HAL_RCC_MIF_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_MIFSMEN) == 0U) +#define __HAL_RCC_SRAM_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_SRAMSMEN) == 0U) +#define __HAL_RCC_DMA1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_DMA1SMEN) == 0U) + +/** + * @} + */ + +/** @defgroup RCC_IOPORT_Clock_Sleep_Enable_Disable_Status IOPORT Peripheral Clock Sleep Enabled or Disabled Status + * @brief Check whether the IOPORT peripheral clock during Low Power (Sleep) mode is enabled or not. + * @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() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOASMEN) != 0U) +#define __HAL_RCC_GPIOB_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOBSMEN) != 0U) +#define __HAL_RCC_GPIOC_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOCSMEN) != 0U) +#define __HAL_RCC_GPIOH_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOHSMEN) != 0U) +#define __HAL_RCC_GPIOA_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOASMEN) == 0U) +#define __HAL_RCC_GPIOB_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOBSMEN) == 0U) +#define __HAL_RCC_GPIOC_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOCSMEN) == 0U) +#define __HAL_RCC_GPIOH_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOHSMEN) == 0U) + +/** + * @} + */ + +/** @defgroup RCC_APB1_Clock_Sleep_Enable_Disable_Status APB1 Peripheral Clock Sleep Enabled or Disabled Status + * @brief Check whether the APB1 peripheral clock during Low Power (Sleep) mode is enabled or not. + * @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_WWDG_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_WWDGSMEN) != 0U) +#define __HAL_RCC_PWR_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_PWRSMEN) != 0U) +#define __HAL_RCC_WWDG_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_WWDGSMEN) == 0U) +#define __HAL_RCC_PWR_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_PWRSMEN) == 0U) + +/** + * @} + */ + +/** @defgroup RCC_APB2_Clock_Sleep_Enable_Disable_Status APB2 Peripheral Clock Sleep Enabled or Disabled Status + * @brief Check whether the APB2 peripheral clock during Low Power (Sleep) mode is enabled or not. + * @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() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SYSCFGSMEN) != 0U) +#define __HAL_RCC_DBGMCU_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_DBGMCUSMEN) != 0U) +#define __HAL_RCC_SYSCFG_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SYSCFGSMEN) == 0U) +#define __HAL_RCC_DBGMCU_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_DBGMCUSMEN) == 0U) + +/** + * @} + */ +/** @defgroup RCC_HSI_Configuration HSI Configuration + * @{ + */ + +/** @brief Macro to enable or disable the Internal High Speed oscillator (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 to clock the PLL and/or system clock. + * @note HSI can not be stopped 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 stop the HSI. + * @note The HSI is stopped by hardware when entering STOP and STANDBY modes. + * @param __STATE__ specifies the new state of the HSI. + * This parameter can be one of the following values: + * @arg @ref RCC_HSI_OFF turn OFF the HSI oscillator + * @arg @ref RCC_HSI_ON turn ON the HSI oscillator + * @arg @ref RCC_HSI_DIV4 turn ON the HSI oscillator and divide it by 4 + * @note When the HSI is stopped, HSIRDY flag goes low after 6 HSI oscillator + * clock cycles. + */ +#define __HAL_RCC_HSI_CONFIG(__STATE__) \ + MODIFY_REG(RCC->CR, RCC_CR_HSION | RCC_CR_HSIDIVEN , (uint32_t)(__STATE__)) + +/** @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. + * 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 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() SET_BIT(RCC->CR, RCC_CR_HSION) +#define __HAL_RCC_HSI_DISABLE() CLEAR_BIT(RCC->CR, RCC_CR_HSION) + +/** @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() SET_BIT(RCC->CSR, RCC_CSR_LSION) + +/** @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() CLEAR_BIT(RCC->CSR, RCC_CSR_LSION) + +/** + * @} + */ + +/** @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{ \ + __IO uint32_t tmpreg; \ + if ((__STATE__) == RCC_HSE_ON) \ + { \ + SET_BIT(RCC->CR, RCC_CR_HSEON); \ + } \ + 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); \ + /* Delay after an RCC peripheral clock */ \ + tmpreg = READ_BIT(RCC->CR, RCC_CR_HSEON); \ + UNUSED(tmpreg); \ + CLEAR_BIT(RCC->CR, RCC_CR_HSEBYP); \ + } \ + }while(0) + +/** + * @} + */ + +/** @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(0) + +/** + * @} + */ + +/** @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() SET_BIT(RCC->CR, RCC_CR_MSION) + +/** @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() CLEAR_BIT(RCC->CR, RCC_CR_MSION) + +/** @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. + * Refer to the Application Note AN3300 for more details on how to + * calibrate the MSI. + * @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() SET_BIT(RCC->CR, RCC_CR_PLLON) + +/** @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() CLEAR_BIT(RCC->CR, RCC_CR_PLLON) + +/** @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 2and 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 + @if STM32L052xx + * @arg @ref RCC_MCO1SOURCE_HSI48 HSI48 clock selected as MCO clock + @elseif STM32L053xx + * @arg @ref RCC_MCO1SOURCE_HSI48 HSI48 clock selected as MCO clock + @elseif STM32L062xx + * @arg @ref RCC_MCO1SOURCE_HSI48 HSI48 clock selected as MCO clock + @elseif STM32L063xx + * @arg @ref RCC_MCO1SOURCE_HSI48 HSI48 clock selected as MCO clock + @elseif STM32L072xx + * @arg @ref RCC_MCO1SOURCE_HSI48 HSI48 clock selected as MCO clock + @elseif STM32L073xx + * @arg @ref RCC_MCO1SOURCE_HSI48 HSI48 clock selected as MCO clock + @elseif STM32L082xx + * @arg @ref RCC_MCO1SOURCE_HSI48 HSI48 clock selected as MCO clock + @elseif STM32L083xx + * @arg @ref RCC_MCO1SOURCE_HSI48 HSI48 clock selected as MCO clock + @endif + * @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_MCO_PRE), ((__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 (0) + +#define __HAL_RCC_RTC_CONFIG(__RTC_CLKSOURCE__) do { \ + __HAL_RCC_RTC_CLKPRESCALER(__RTC_CLKSOURCE__); \ + RCC->CSR |= ((__RTC_CLKSOURCE__) & RCC_CSR_RTCSEL); \ + } while (0) + +/** @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() SET_BIT(RCC->CSR, RCC_CSR_RTCEN) + +/** @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() CLEAR_BIT(RCC->CSR, RCC_CSR_RTCEN) + +/** @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() SET_BIT(RCC->CSR, RCC_CSR_RTCRST) + +/** @brief Macros to release the Backup domain reset. + */ +#define __HAL_RCC_BACKUPRESET_RELEASE() CLEAR_BIT(RCC->CSR, RCC_CSR_RTCRST) + +/** + * @} + */ + +/** @defgroup RCC_Flags_Interrupts_Management Flags Interrupts Management + * @brief macros to manage the specified RCC Flags and interrupts. + * @{ + */ + +/** @brief Enable RCC interrupt. + * @note The CSS interrupt doesn't have an enable bit; once the CSS is enabled + * and if the HSE clock fails, the CSS interrupt occurs and an NMI is + * automatically generated. The NMI will be executed indefinitely, and + * since NMI has higher priority than any other IRQ (and main program) + * the application will be stacked in the NMI ISR unless the CSS interrupt + * pending bit is cleared. + * @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 + * @arg @ref RCC_IT_HSI48RDY HSI48 ready interrupt (not available on all devices) + */ +#define __HAL_RCC_ENABLE_IT(__INTERRUPT__) SET_BIT(RCC->CIER, (__INTERRUPT__)) + +/** @brief Disable RCC interrupt. + * @note The CSS interrupt doesn't have an enable bit; once the CSS is enabled + * and if the HSE clock fails, the CSS interrupt occurs and an NMI is + * automatically generated. The NMI will be executed indefinitely, and + * since NMI has higher priority than any other IRQ (and main program) + * the application will be stacked in the NMI ISR unless the CSS interrupt + * pending bit is cleared. + * @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 + * @arg @ref RCC_IT_HSI48RDY HSI48 ready interrupt (not available on all devices) + */ +#define __HAL_RCC_DISABLE_IT(__INTERRUPT__) CLEAR_BIT(RCC->CIER, (__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 + * @arg @ref RCC_IT_HSI48RDY HSI48 ready interrupt (not available on all devices) + * @arg @ref RCC_IT_CSS Clock Security System interrupt + */ +#define __HAL_RCC_CLEAR_IT(__INTERRUPT__) (RCC->CICR = (__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 PLL ready interrupt + * @arg @ref RCC_IT_MSIRDY MSI ready interrupt + * @arg @ref RCC_IT_LSECSS LSE CSS interrupt + * @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->CIFR & (__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_OBLRST, 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_HSI48RDY HSI48 oscillator clock ready (not available on all devices) + * @arg @ref RCC_FLAG_HSIDIV HSI16 divider flag + * @arg @ref RCC_FLAG_MSIRDY MSI oscillator clock ready + * @arg @ref RCC_FLAG_HSERDY HSE oscillator clock ready + * @arg @ref RCC_FLAG_PLLRDY PLL clock ready + * @arg @ref RCC_FLAG_LSECSS LSE oscillator clock CSS detected + * @arg @ref RCC_FLAG_LSERDY LSE oscillator clock ready + * @arg @ref RCC_FLAG_FWRST Firewall reset + * @arg @ref RCC_FLAG_LSIRDY LSI oscillator clock ready + * @arg @ref RCC_FLAG_OBLRST Option Byte Loader (OBL) 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 + * @retval The new state of __FLAG__ (TRUE or FALSE). + */ +#if defined(RCC_HSI48_SUPPORT) +#define __HAL_RCC_GET_FLAG(__FLAG__) (((((((((__FLAG__) >> 5) == CR_REG_INDEX)? RCC->CR :((((__FLAG__) >> 5) == CSR_REG_INDEX) ? RCC->CSR :RCC->CRRCR)))) & ((uint32_t)1 << ((__FLAG__) & RCC_FLAG_MASK))) != 0U ) ? 1U : 0U ) +#else +#define __HAL_RCC_GET_FLAG(__FLAG__) (((((((((__FLAG__) >> 5) == CR_REG_INDEX)? RCC->CR : RCC->CSR))) & ((uint32_t)1 << ((__FLAG__) & RCC_FLAG_MASK))) != 0U ) ? 1U : 0U ) +#endif /* RCC_HSI48_SUPPORT */ + +/** + * @} + */ + +/** + * @} + */ + +/* Include RCC HAL Extension module */ +#include "stm32l0xx_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(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); +#if defined(RCC_HSECSS_SUPPORT) +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); +#endif /* RCC_HSECSS_SUPPORT */ +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 /* __STM32L0xx_HAL_RCC_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h new file mode 100644 index 0000000..b3d9c7f --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h @@ -0,0 +1,2021 @@ +/** + ****************************************************************************** + * @file stm32l0xx_hal_rcc_ex.h + * @author MCD Application Team + * @brief Header file of RCC HAL Extension module. + ****************************************************************************** + * @attention + * + *

© Copyright(c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L0xx_HAL_RCC_EX_H +#define __STM32L0xx_HAL_RCC_EX_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal_def.h" + +/** @addtogroup STM32L0xx_HAL_Driver + * @{ + */ + +/** @addtogroup RCCEx + * @{ + */ + +/** @addtogroup RCCEx_Private_Constants + * @{ + */ + + +#if defined(CRS) +/* CRS IT Error Mask */ +#define RCC_CRS_IT_ERROR_MASK ((uint32_t)(RCC_CRS_IT_TRIMOVF | RCC_CRS_IT_SYNCERR | RCC_CRS_IT_SYNCMISS)) + +/* CRS Flag Error Mask */ +#define RCC_CRS_FLAG_ERROR_MASK ((uint32_t)(RCC_CRS_FLAG_TRIMOVF | RCC_CRS_FLAG_SYNCERR | RCC_CRS_FLAG_SYNCMISS)) + +#endif /* CRS */ +/** + * @} + */ + +/** @addtogroup RCCEx_Private_Macros + * @{ + */ +#if defined (STM32L052xx) || defined(STM32L062xx) +#define IS_RCC_PERIPHCLOCK(__CLK__) ((__CLK__) <= (RCC_PERIPHCLK_USART1 | RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_LPUART1 | \ + RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_I2C2 | RCC_PERIPHCLK_RTC | \ + RCC_PERIPHCLK_USB | RCC_PERIPHCLK_LPTIM1)) +#elif defined (STM32L053xx) || defined(STM32L063xx) +#define IS_RCC_PERIPHCLOCK(__CLK__) ((__CLK__) <= (RCC_PERIPHCLK_USART1 | RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_LPUART1 | \ + RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_I2C2 | RCC_PERIPHCLK_RTC | \ + RCC_PERIPHCLK_USB | RCC_PERIPHCLK_LPTIM1 | RCC_PERIPHCLK_LCD)) +#elif defined (STM32L072xx) || defined(STM32L082xx) +#define IS_RCC_PERIPHCLOCK(__CLK__) ((__CLK__) <= (RCC_PERIPHCLK_USART1 | RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_LPUART1 | \ + RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_I2C2 | RCC_PERIPHCLK_RTC | \ + RCC_PERIPHCLK_USB | RCC_PERIPHCLK_LPTIM1 | RCC_PERIPHCLK_I2C3 )) +#elif defined (STM32L073xx) || defined(STM32L083xx) +#define IS_RCC_PERIPHCLOCK(__CLK__) ((__CLK__) <= (RCC_PERIPHCLK_USART1 | RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_LPUART1 | \ + RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_I2C2 | RCC_PERIPHCLK_RTC | \ + RCC_PERIPHCLK_USB | RCC_PERIPHCLK_LPTIM1 | RCC_PERIPHCLK_I2C3 | \ + RCC_PERIPHCLK_LCD)) +#endif + +#if defined(STM32L011xx) || defined(STM32L021xx) || defined(STM32L031xx) || defined(STM32L041xx) || \ + defined(STM32L010xB) || defined(STM32L010x8) || defined(STM32L010x6) || defined(STM32L010x4) +#define IS_RCC_PERIPHCLOCK(__CLK__) ((__CLK__) <= ( RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_LPUART1 | \ + RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_RTC | \ + RCC_PERIPHCLK_LPTIM1)) +#elif defined(STM32L051xx) +#define IS_RCC_PERIPHCLOCK(__CLK__) ((__CLK__) <= (RCC_PERIPHCLK_USART1 | RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_LPUART1 | \ + RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_I2C2 | RCC_PERIPHCLK_RTC | \ + RCC_PERIPHCLK_LPTIM1)) +#elif defined(STM32L071xx) || defined(STM32L081xx) +#define IS_RCC_PERIPHCLOCK(__CLK__) ((__CLK__) <= (RCC_PERIPHCLK_USART1 | RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_LPUART1 | \ + RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_I2C2 | RCC_PERIPHCLK_RTC | \ + RCC_PERIPHCLK_LPTIM1 | RCC_PERIPHCLK_I2C3)) +#endif + +#if defined (RCC_CCIPR_USART1SEL) +#define IS_RCC_USART1CLKSOURCE(__SOURCE__) (((__SOURCE__) == RCC_USART1CLKSOURCE_PCLK2) || \ + ((__SOURCE__) == RCC_USART1CLKSOURCE_SYSCLK) || \ + ((__SOURCE__) == RCC_USART1CLKSOURCE_LSE) || \ + ((__SOURCE__) == RCC_USART1CLKSOURCE_HSI)) +#endif /* RCC_CCIPR_USART1SEL */ + +#define IS_RCC_USART2CLKSOURCE(__SOURCE__) (((__SOURCE__) == RCC_USART2CLKSOURCE_PCLK1) || \ + ((__SOURCE__) == RCC_USART2CLKSOURCE_SYSCLK) || \ + ((__SOURCE__) == RCC_USART2CLKSOURCE_LSE) || \ + ((__SOURCE__) == RCC_USART2CLKSOURCE_HSI)) + +#define IS_RCC_LPUART1CLKSOURCE(__SOURCE__) (((__SOURCE__) == RCC_LPUART1CLKSOURCE_PCLK1) || \ + ((__SOURCE__) == RCC_LPUART1CLKSOURCE_SYSCLK) || \ + ((__SOURCE__) == RCC_LPUART1CLKSOURCE_LSE) || \ + ((__SOURCE__) == RCC_LPUART1CLKSOURCE_HSI)) + +#define IS_RCC_I2C1CLKSOURCE(__SOURCE__) (((__SOURCE__) == RCC_I2C1CLKSOURCE_PCLK1) || \ + ((__SOURCE__) == RCC_I2C1CLKSOURCE_SYSCLK)|| \ + ((__SOURCE__) == RCC_I2C1CLKSOURCE_HSI)) + +#if defined(RCC_CCIPR_I2C3SEL) +#define IS_RCC_I2C3CLKSOURCE(__SOURCE__) (((__SOURCE__) == RCC_I2C3CLKSOURCE_PCLK1) || \ + ((__SOURCE__) == RCC_I2C3CLKSOURCE_SYSCLK)|| \ + ((__SOURCE__) == RCC_I2C3CLKSOURCE_HSI)) +#endif /* RCC_CCIPR_I2C3SEL */ + +#if defined(USB) +#define IS_RCC_USBCLKSOURCE(__SOURCE__) (((__SOURCE__) == RCC_USBCLKSOURCE_HSI48) || \ + ((__SOURCE__) == RCC_USBCLKSOURCE_PLL)) +#endif /* USB */ + +#if defined(RNG) +#define IS_RCC_RNGCLKSOURCE(_SOURCE_) (((_SOURCE_) == RCC_RNGCLKSOURCE_HSI48) || \ + ((_SOURCE_) == RCC_RNGCLKSOURCE_PLLCLK)) +#endif /* RNG */ + +#if defined(RCC_CCIPR_HSI48SEL) +#define IS_RCC_HSI48MCLKSOURCE(__HSI48MCLK__) (((__HSI48MCLK__) == RCC_HSI48M_PLL) || ((__HSI48MCLK__) == RCC_HSI48M_HSI48)) +#endif /* RCC_CCIPR_HSI48SEL */ + +#define IS_RCC_LPTIMCLK(__LPTIMCLK_) (((__LPTIMCLK_) == RCC_LPTIM1CLKSOURCE_PCLK1) || \ + ((__LPTIMCLK_) == RCC_LPTIM1CLKSOURCE_LSI) || \ + ((__LPTIMCLK_) == RCC_LPTIM1CLKSOURCE_HSI) || \ + ((__LPTIMCLK_) == RCC_LPTIM1CLKSOURCE_LSE)) + +#define IS_RCC_STOPWAKEUP_CLOCK(__SOURCE__) (((__SOURCE__) == RCC_STOP_WAKEUPCLOCK_MSI) || \ + ((__SOURCE__) == RCC_STOP_WAKEUPCLOCK_HSI)) + +#define IS_RCC_LSE_DRIVE(__DRIVE__) (((__DRIVE__) == RCC_LSEDRIVE_LOW) || ((__SOURCE__) == RCC_LSEDRIVE_MEDIUMLOW) || \ + ((__DRIVE__) == RCC_LSEDRIVE_MEDIUMHIGH) || ((__SOURCE__) == RCC_LSEDRIVE_HIGH)) + +#if defined(CRS) + +#define IS_RCC_CRS_SYNC_SOURCE(_SOURCE_) (((_SOURCE_) == RCC_CRS_SYNC_SOURCE_GPIO) || \ + ((_SOURCE_) == RCC_CRS_SYNC_SOURCE_LSE) || \ + ((_SOURCE_) == RCC_CRS_SYNC_SOURCE_USB)) +#define IS_RCC_CRS_SYNC_DIV(_DIV_) (((_DIV_) == RCC_CRS_SYNC_DIV1) || ((_DIV_) == RCC_CRS_SYNC_DIV2) || \ + ((_DIV_) == RCC_CRS_SYNC_DIV4) || ((_DIV_) == RCC_CRS_SYNC_DIV8) || \ + ((_DIV_) == RCC_CRS_SYNC_DIV16) || ((_DIV_) == RCC_CRS_SYNC_DIV32) || \ + ((_DIV_) == RCC_CRS_SYNC_DIV64) || ((_DIV_) == RCC_CRS_SYNC_DIV128)) +#define IS_RCC_CRS_SYNC_POLARITY(_POLARITY_) (((_POLARITY_) == RCC_CRS_SYNC_POLARITY_RISING) || \ + ((_POLARITY_) == RCC_CRS_SYNC_POLARITY_FALLING)) +#define IS_RCC_CRS_RELOADVALUE(_VALUE_) (((_VALUE_) <= 0xFFFFU)) +#define IS_RCC_CRS_ERRORLIMIT(_VALUE_) (((_VALUE_) <= 0xFFU)) +#define IS_RCC_CRS_HSI48CALIBRATION(_VALUE_) (((_VALUE_) <= 0x3FU)) +#define IS_RCC_CRS_FREQERRORDIR(_DIR_) (((_DIR_) == RCC_CRS_FREQERRORDIR_UP) || \ + ((_DIR_) == RCC_CRS_FREQERRORDIR_DOWN)) +#endif /* CRS */ +/** + * @} + */ + +/* 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 */ +#if defined(RCC_CCIPR_USART1SEL) + uint32_t Usart1ClockSelection; /*!< USART1 clock source + This parameter can be a value of @ref RCCEx_USART1_Clock_Source */ +#endif /* RCC_CCIPR_USART1SEL */ + uint32_t Usart2ClockSelection; /*!< USART2 clock source + This parameter can be a value of @ref RCCEx_USART2_Clock_Source */ + + uint32_t Lpuart1ClockSelection; /*!< LPUART1 clock source + This parameter can be a value of @ref RCCEx_LPUART1_Clock_Source */ + + uint32_t I2c1ClockSelection; /*!< I2C1 clock source + This parameter can be a value of @ref RCCEx_I2C1_Clock_Source */ + +#if defined(RCC_CCIPR_I2C3SEL) + uint32_t I2c3ClockSelection; /*!< I2C3 clock source + This parameter can be a value of @ref RCCEx_I2C3_Clock_Source */ +#endif /* RCC_CCIPR_I2C3SEL */ + uint32_t LptimClockSelection; /*!< LPTIM1 clock source + This parameter can be a value of @ref RCCEx_LPTIM1_Clock_Source */ +#if defined(USB) + uint32_t UsbClockSelection; /*!< Specifies USB and RNG Clock Selection + This parameter can be a value of @ref RCCEx_USB_Clock_Source */ +#endif /* USB */ +} RCC_PeriphCLKInitTypeDef; + +#if defined (CRS) +/** + * @brief RCC_CRS Init structure definition + */ +typedef struct +{ + uint32_t Prescaler; /*!< Specifies the division factor of the SYNC signal. + This parameter can be a value of @ref RCCEx_CRS_SynchroDivider */ + + uint32_t Source; /*!< Specifies the SYNC signal source. + This parameter can be a value of @ref RCCEx_CRS_SynchroSource */ + + uint32_t Polarity; /*!< Specifies the input polarity for the SYNC signal source. + This parameter can be a value of @ref RCCEx_CRS_SynchroPolarity */ + + uint32_t ReloadValue; /*!< Specifies the value to be loaded in the frequency error counter with each SYNC event. + It can be calculated in using macro @ref __HAL_RCC_CRS_RELOADVALUE_CALCULATE(__FTARGET__, __FSYNC__) + This parameter must be a number between 0 and 0xFFFF or a value of @ref RCCEx_CRS_ReloadValueDefault .*/ + + uint32_t ErrorLimitValue; /*!< Specifies the value to be used to evaluate the captured frequency error value. + This parameter must be a number between 0 and 0xFF or a value of @ref RCCEx_CRS_ErrorLimitDefault */ + + uint32_t HSI48CalibrationValue; /*!< Specifies a user-programmable trimming value to the HSI48 oscillator. + This parameter must be a number between 0 and 0x3F or a value of @ref RCCEx_CRS_HSI48CalibrationDefault */ + +}RCC_CRSInitTypeDef; + +/** + * @brief RCC_CRS Synchronization structure definition + */ +typedef struct +{ + uint32_t ReloadValue; /*!< Specifies the value loaded in the Counter reload value. + This parameter must be a number between 0 and 0xFFFF */ + + uint32_t HSI48CalibrationValue; /*!< Specifies value loaded in HSI48 oscillator smooth trimming. + This parameter must be a number between 0 and 0x3F */ + + uint32_t FreqErrorCapture; /*!< Specifies the value loaded in the .FECAP, the frequency error counter + value latched in the time of the last SYNC event. + This parameter must be a number between 0 and 0xFFFF */ + + uint32_t FreqErrorDirection; /*!< Specifies the value loaded in the .FEDIR, the counting direction of the + frequency error counter latched in the time of the last SYNC event. + It shows whether the actual frequency is below or above the target. + This parameter must be a value of @ref RCCEx_CRS_FreqErrorDirection*/ + +}RCC_CRSSynchroInfoTypeDef; + +#endif /* CRS */ + +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup RCCEx_Exported_Constants RCCEx Exported Constants + * @{ + */ + + +/** @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 */ +/** + * @} + */ + +/** @defgroup RCCEx_Periph_Clock_Selection RCCEx Periph Clock Selection + * @{ + */ +#if defined(RCC_CCIPR_USART1SEL) +#define RCC_PERIPHCLK_USART1 (0x00000001U) +#endif /* RCC_CCIPR_USART1SEL */ +#define RCC_PERIPHCLK_USART2 (0x00000002U) +#define RCC_PERIPHCLK_LPUART1 (0x00000004U) +#define RCC_PERIPHCLK_I2C1 (0x00000008U) +#define RCC_PERIPHCLK_I2C2 (0x00000010U) +#define RCC_PERIPHCLK_RTC (0x00000020U) +#if defined(USB) +#define RCC_PERIPHCLK_USB (0x00000040U) +#endif /* USB */ +#define RCC_PERIPHCLK_LPTIM1 (0x00000080U) +#if defined(LCD) +#define RCC_PERIPHCLK_LCD (0x00000800U) +#endif /* LCD */ +#if defined(RCC_CCIPR_I2C3SEL) +#define RCC_PERIPHCLK_I2C3 (0x00000100U) +#endif /* RCC_CCIPR_I2C3SEL */ + +/** + * @} + */ + +#if defined (RCC_CCIPR_USART1SEL) +/** @defgroup RCCEx_USART1_Clock_Source RCCEx USART1 Clock Source + * @{ + */ +#define RCC_USART1CLKSOURCE_PCLK2 (0x00000000U) +#define RCC_USART1CLKSOURCE_SYSCLK RCC_CCIPR_USART1SEL_0 +#define RCC_USART1CLKSOURCE_HSI RCC_CCIPR_USART1SEL_1 +#define RCC_USART1CLKSOURCE_LSE (RCC_CCIPR_USART1SEL_0 | RCC_CCIPR_USART1SEL_1) +/** + * @} + */ +#endif /* RCC_CCIPR_USART1SEL */ + +/** @defgroup RCCEx_USART2_Clock_Source RCCEx USART2 Clock Source + * @{ + */ +#define RCC_USART2CLKSOURCE_PCLK1 (0x00000000U) +#define RCC_USART2CLKSOURCE_SYSCLK RCC_CCIPR_USART2SEL_0 +#define RCC_USART2CLKSOURCE_HSI RCC_CCIPR_USART2SEL_1 +#define RCC_USART2CLKSOURCE_LSE (RCC_CCIPR_USART2SEL_0 | RCC_CCIPR_USART2SEL_1) +/** + * @} + */ + +/** @defgroup RCCEx_LPUART1_Clock_Source RCCEx LPUART1 Clock Source + * @{ + */ +#define RCC_LPUART1CLKSOURCE_PCLK1 (0x00000000U) +#define RCC_LPUART1CLKSOURCE_SYSCLK RCC_CCIPR_LPUART1SEL_0 +#define RCC_LPUART1CLKSOURCE_HSI RCC_CCIPR_LPUART1SEL_1 +#define RCC_LPUART1CLKSOURCE_LSE (RCC_CCIPR_LPUART1SEL_0 | RCC_CCIPR_LPUART1SEL_1) +/** + * @} + */ + +/** @defgroup RCCEx_I2C1_Clock_Source RCCEx I2C1 Clock Source + * @{ + */ +#define RCC_I2C1CLKSOURCE_PCLK1 (0x00000000U) +#define RCC_I2C1CLKSOURCE_SYSCLK RCC_CCIPR_I2C1SEL_0 +#define RCC_I2C1CLKSOURCE_HSI RCC_CCIPR_I2C1SEL_1 +/** + * @} + */ + +#if defined(RCC_CCIPR_I2C3SEL) + +/** @defgroup RCCEx_I2C3_Clock_Source RCCEx I2C3 Clock Source + * @{ + */ +#define RCC_I2C3CLKSOURCE_PCLK1 (0x00000000U) +#define RCC_I2C3CLKSOURCE_SYSCLK RCC_CCIPR_I2C3SEL_0 +#define RCC_I2C3CLKSOURCE_HSI RCC_CCIPR_I2C3SEL_1 +/** + * @} + */ +#endif /* RCC_CCIPR_I2C3SEL */ + +/** @defgroup RCCEx_TIM_PRescaler_Selection RCCEx TIM Prescaler Selection + * @{ + */ +#define RCC_TIMPRES_DESACTIVATED ((uint8_t)0x00) +#define RCC_TIMPRES_ACTIVATED ((uint8_t)0x01) +/** + * @} + */ + +#if defined(USB) +/** @defgroup RCCEx_USB_Clock_Source RCCEx USB Clock Source + * @{ + */ +#define RCC_USBCLKSOURCE_HSI48 RCC_CCIPR_HSI48SEL +#define RCC_USBCLKSOURCE_PLL (0x00000000U) +/** + * @} + */ +#endif /* USB */ + +#if defined(RNG) +/** @defgroup RCCEx_RNG_Clock_Source RCCEx RNG Clock Source + * @{ + */ +#define RCC_RNGCLKSOURCE_HSI48 RCC_CCIPR_HSI48SEL +#define RCC_RNGCLKSOURCE_PLLCLK (0x00000000U) +/** + * @} + */ +#endif /* RNG */ + +#if defined(RCC_CCIPR_HSI48SEL) +/** @defgroup RCCEx_HSI48M_Clock_Source RCCEx HSI48M Clock Source + * @{ + */ +#define RCC_FLAG_HSI48 SYSCFG_CFGR3_VREFINT_RDYF + +#define RCC_HSI48M_PLL (0x00000000U) +#define RCC_HSI48M_HSI48 RCC_CCIPR_HSI48SEL + +/** + * @} + */ +#endif /* RCC_CCIPR_HSI48SEL */ + +/** @defgroup RCCEx_LPTIM1_Clock_Source RCCEx LPTIM1 Clock Source + * @{ + */ +#define RCC_LPTIM1CLKSOURCE_PCLK1 (0x00000000U) +#define RCC_LPTIM1CLKSOURCE_LSI RCC_CCIPR_LPTIM1SEL_0 +#define RCC_LPTIM1CLKSOURCE_HSI RCC_CCIPR_LPTIM1SEL_1 +#define RCC_LPTIM1CLKSOURCE_LSE RCC_CCIPR_LPTIM1SEL +/** + * @} + */ + +/** @defgroup RCCEx_StopWakeUp_Clock RCCEx StopWakeUp Clock + * @{ + */ + +#define RCC_STOP_WAKEUPCLOCK_MSI (0x00000000U) +#define RCC_STOP_WAKEUPCLOCK_HSI RCC_CFGR_STOPWUCK +/** + * @} + */ + +/** @defgroup RCCEx_LSEDrive_Configuration RCCEx LSE Drive Configuration + * @{ + */ + +#define RCC_LSEDRIVE_LOW (0x00000000U) +#define RCC_LSEDRIVE_MEDIUMLOW RCC_CSR_LSEDRV_0 +#define RCC_LSEDRIVE_MEDIUMHIGH RCC_CSR_LSEDRV_1 +#define RCC_LSEDRIVE_HIGH RCC_CSR_LSEDRV +/** + * @} + */ + +#if defined(CRS) + +/** @defgroup RCCEx_CRS_Status RCCEx CRS Status + * @{ + */ +#define RCC_CRS_NONE (0x00000000U) +#define RCC_CRS_TIMEOUT (0x00000001U) +#define RCC_CRS_SYNCOK (0x00000002U) +#define RCC_CRS_SYNCWARN (0x00000004U) +#define RCC_CRS_SYNCERR (0x00000008U) +#define RCC_CRS_SYNCMISS (0x00000010U) +#define RCC_CRS_TRIMOVF (0x00000020U) + +/** + * @} + */ + +/** @defgroup RCCEx_CRS_SynchroSource RCCEx CRS Synchronization Source + * @{ + */ +#define RCC_CRS_SYNC_SOURCE_GPIO (0x00000000U) /*!< Synchro Signal source GPIO */ +#define RCC_CRS_SYNC_SOURCE_LSE CRS_CFGR_SYNCSRC_0 /*!< Synchro Signal source LSE */ +#define RCC_CRS_SYNC_SOURCE_USB CRS_CFGR_SYNCSRC_1 /*!< Synchro Signal source USB SOF (default)*/ +/** + * @} + */ + +/** @defgroup RCCEx_CRS_SynchroDivider RCCEx CRS Synchronization Divider + * @{ + */ +#define RCC_CRS_SYNC_DIV1 (0x00000000U) /*!< Synchro Signal not divided (default) */ +#define RCC_CRS_SYNC_DIV2 CRS_CFGR_SYNCDIV_0 /*!< Synchro Signal divided by 2 */ +#define RCC_CRS_SYNC_DIV4 CRS_CFGR_SYNCDIV_1 /*!< Synchro Signal divided by 4 */ +#define RCC_CRS_SYNC_DIV8 (CRS_CFGR_SYNCDIV_1 | CRS_CFGR_SYNCDIV_0) /*!< Synchro Signal divided by 8 */ +#define RCC_CRS_SYNC_DIV16 CRS_CFGR_SYNCDIV_2 /*!< Synchro Signal divided by 16 */ +#define RCC_CRS_SYNC_DIV32 (CRS_CFGR_SYNCDIV_2 | CRS_CFGR_SYNCDIV_0) /*!< Synchro Signal divided by 32 */ +#define RCC_CRS_SYNC_DIV64 (CRS_CFGR_SYNCDIV_2 | CRS_CFGR_SYNCDIV_1) /*!< Synchro Signal divided by 64 */ +#define RCC_CRS_SYNC_DIV128 CRS_CFGR_SYNCDIV /*!< Synchro Signal divided by 128 */ +/** + * @} + */ + +/** @defgroup RCCEx_CRS_SynchroPolarity RCCEx CRS Synchronization Polarity + * @{ + */ +#define RCC_CRS_SYNC_POLARITY_RISING (0x00000000U) /*!< Synchro Active on rising edge (default) */ +#define RCC_CRS_SYNC_POLARITY_FALLING CRS_CFGR_SYNCPOL /*!< Synchro Active on falling edge */ +/** + * @} + */ + +/** @defgroup RCCEx_CRS_ReloadValueDefault RCCEx CRS Default Reload Value + * @{ + */ +#define RCC_CRS_RELOADVALUE_DEFAULT (0x0000BB7FU) /*!< The reset value of the RELOAD field corresponds + to a target frequency of 48 MHz and a synchronization signal frequency of 1 kHz (SOF signal from USB). */ +/** + * @} + */ + +/** @defgroup RCCEx_CRS_ErrorLimitDefault RCCEx CRS Default Error Limit Value + * @{ + */ +#define RCC_CRS_ERRORLIMIT_DEFAULT (0x00000022U) /*!< Default Frequency error limit */ +/** + * @} + */ + +/** @defgroup RCCEx_CRS_HSI48CalibrationDefault RCCEx CRS Default HSI48 Calibration vakye + * @{ + */ +#define RCC_CRS_HSI48CALIBRATION_DEFAULT (0x00000020U) /*!< The default value is 32, which corresponds to the middle of the trimming interval. + The trimming step is around 67 kHz between two consecutive TRIM steps. A higher TRIM value + corresponds to a higher output frequency */ +/** + * @} + */ + +/** @defgroup RCCEx_CRS_FreqErrorDirection RCCEx CRS Frequency Error Direction + * @{ + */ +#define RCC_CRS_FREQERRORDIR_UP (0x00000000U) /*!< Upcounting direction, the actual frequency is above the target */ +#define RCC_CRS_FREQERRORDIR_DOWN CRS_ISR_FEDIR /*!< Downcounting direction, the actual frequency is below the target */ +/** + * @} + */ + +/** @defgroup RCCEx_CRS_Interrupt_Sources RCCEx CRS Interrupt Sources + * @{ + */ +#define RCC_CRS_IT_SYNCOK CRS_CR_SYNCOKIE /*!< SYNC event OK */ +#define RCC_CRS_IT_SYNCWARN CRS_CR_SYNCWARNIE /*!< SYNC warning */ +#define RCC_CRS_IT_ERR CRS_CR_ERRIE /*!< Error */ +#define RCC_CRS_IT_ESYNC CRS_CR_ESYNCIE /*!< Expected SYNC */ +#define RCC_CRS_IT_SYNCERR CRS_CR_ERRIE /*!< SYNC error */ +#define RCC_CRS_IT_SYNCMISS CRS_CR_ERRIE /*!< SYNC missed */ +#define RCC_CRS_IT_TRIMOVF CRS_CR_ERRIE /*!< Trimming overflow or underflow */ + +/** + * @} + */ + +/** @defgroup RCCEx_CRS_Flags RCCEx CRS Flags + * @{ + */ +#define RCC_CRS_FLAG_SYNCOK CRS_ISR_SYNCOKF /*!< SYNC event OK flag */ +#define RCC_CRS_FLAG_SYNCWARN CRS_ISR_SYNCWARNF /*!< SYNC warning flag */ +#define RCC_CRS_FLAG_ERR CRS_ISR_ERRF /*!< Error flag */ +#define RCC_CRS_FLAG_ESYNC CRS_ISR_ESYNCF /*!< Expected SYNC flag */ +#define RCC_CRS_FLAG_SYNCERR CRS_ISR_SYNCERR /*!< SYNC error */ +#define RCC_CRS_FLAG_SYNCMISS CRS_ISR_SYNCMISS /*!< SYNC missed*/ +#define RCC_CRS_FLAG_TRIMOVF CRS_ISR_TRIMOVF /*!< Trimming overflow or underflow */ + +/** + * @} + */ + +#endif /* CRS */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup RCCEx_Exported_Macros RCCEx Exported Macros + * @{ + */ + +/** @defgroup RCCEx_Peripheral_Clock_Enable_Disable AHB Peripheral Clock Enable Disable + * @brief Enable or disable 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. + * @{ + */ + +#if defined(STM32L062xx) || defined(STM32L063xx) || defined(STM32L081xx) || defined(STM32L082xx) || defined(STM32L083xx) || defined(STM32L041xx) || defined(STM32L021xx) +#define __HAL_RCC_AES_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHBENR, RCC_AHBENR_CRYPEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_CRYPEN);\ + UNUSED(tmpreg); \ + } while(0) +#define __HAL_RCC_AES_CLK_DISABLE() CLEAR_BIT(RCC->AHBENR, (RCC_AHBENR_CRYPEN)) + +#define __HAL_RCC_AES_IS_CLK_ENABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_CRYPEN) != 0U) +#define __HAL_RCC_AES_IS_CLK_DISABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_CRYPEN) == 0U) + +#endif /* STM32L062xx || STM32L063xx || STM32L072xx || STM32L073xx || STM32L081xx || STM32L082xx || STM32L083xx || STM32L041xx || STM32L021xx */ + +#if !defined(STM32L010xB) && !defined(STM32L010x8) && !defined(STM32L010x6) && !defined(STM32L010x4) && !defined(STM32L011xx) && !defined(STM32L021xx) && !defined(STM32L031xx) && !defined(STM32L041xx) && !defined(STM32L051xx) && !defined(STM32L071xx) && !defined(STM32L081xx) +#define __HAL_RCC_TSC_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHBENR, RCC_AHBENR_TSCEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_TSCEN);\ + UNUSED(tmpreg); \ + } while(0) +#define __HAL_RCC_TSC_CLK_DISABLE() CLEAR_BIT(RCC->AHBENR, (RCC_AHBENR_TSCEN)) + +#define __HAL_RCC_TSC_IS_CLK_ENABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_TSCEN) != 0U) +#define __HAL_RCC_TSC_IS_CLK_DISABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_TSCEN) == 0U) + +#define __HAL_RCC_RNG_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHBENR, RCC_AHBENR_RNGEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_RNGEN);\ + UNUSED(tmpreg); \ + } while(0) +#define __HAL_RCC_RNG_CLK_DISABLE() CLEAR_BIT(RCC->AHBENR, (RCC_AHBENR_RNGEN)) + +#define __HAL_RCC_RNG_IS_CLK_ENABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_RNGEN) != 0U) +#define __HAL_RCC_RNG_IS_CLK_DISABLED() (READ_BIT(RCC->AHBENR, RCC_AHBENR_RNGEN) == 0U) +#endif /* !(STM32L010xB) && !(STM32L010x8) && !(STM32L010x6) && !(STM32L010x4) && !(STM32L011xx) && !(STM32L021xx) && !(STM32L031xx ) && !(STM32L041xx ) && !(STM32L051xx ) && !(STM32L071xx ) && !(STM32L081xx ) */ + +/** + * @} + */ + +/** @defgroup RCCEx_IOPORT_Clock_Enable_Disable IOPORT Peripheral Clock Enable Disable + * @brief Enable or disable the IOPORT 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(GPIOE) +#define __HAL_RCC_GPIOE_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->IOPENR, RCC_IOPENR_GPIOEEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOEEN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_GPIOE_CLK_DISABLE() CLEAR_BIT(RCC->IOPENR,(RCC_IOPENR_GPIOEEN)) + +#define __HAL_RCC_GPIOE_IS_CLK_ENABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOEEN) != 0U) +#define __HAL_RCC_GPIOE_IS_CLK_DISABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIOEEN) == 0U) + +#endif /* GPIOE */ +#if defined(GPIOD) +#define __HAL_RCC_GPIOD_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->IOPENR, RCC_IOPENR_GPIODEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIODEN);\ + UNUSED(tmpreg); \ + } while(0) +#define __HAL_RCC_GPIOD_CLK_DISABLE() CLEAR_BIT(RCC->IOPENR,(RCC_IOPENR_GPIODEN)) + +#define __HAL_RCC_GPIOD_IS_CLK_ENABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIODEN) != 0U) +#define __HAL_RCC_GPIOD_IS_CLK_DISABLED() (READ_BIT(RCC->IOPENR, RCC_IOPENR_GPIODEN) == 0U) + +#endif /* GPIOD */ +/** + * @} + */ + +/** @defgroup RCCEx_APB1_Clock_Enable_Disable APB1 Peripheral Clock Enable Disable + * @brief Enable or disable 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. + * @{ + */ + +#if !defined(STM32L010xB) && !defined(STM32L010x8) && !defined(STM32L010x6) && !defined(STM32L010x4) && !defined(STM32L011xx) && !defined(STM32L021xx) && !defined(STM32L031xx) && !defined(STM32L041xx) && !defined(STM32L051xx) && !defined(STM32L071xx) && !defined(STM32L081xx) +#define __HAL_RCC_USB_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_USBEN)) +#define __HAL_RCC_USB_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_USBEN)) + +#define __HAL_RCC_USB_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_USBEN) != 0U) +#define __HAL_RCC_USB_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_USBEN) == 0U) + +#define __HAL_RCC_CRS_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_CRSEN)) +#define __HAL_RCC_CRS_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR,(RCC_APB1ENR_CRSEN)) + +#define __HAL_RCC_CRS_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_CRSEN) != 0U) +#define __HAL_RCC_CRS_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_CRSEN) == 0U) + +#endif /* !(STM32L010xB) && !(STM32L010x8) && !(STM32L010x6) && !(STM32L010x4) && !(STM32L011xx) && !(STM32L021xx) && !(STM32L031xx ) && !(STM32L041xx ) && !(STM32L051xx ) && !(STM32L071xx ) && !(STM32L081xx ) */ + + +#if defined(STM32L053xx) || defined(STM32L063xx) || defined(STM32L073xx) || defined(STM32L083xx) +#define __HAL_RCC_LCD_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_LCDEN)) +#define __HAL_RCC_LCD_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_LCDEN)) + +#define __HAL_RCC_LCD_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_LCDEN) != 0U) +#define __HAL_RCC_LCD_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_LCDEN) == 0U) + +#endif /* STM32L053xx || STM32L063xx || STM32L073xx || STM32L083xx */ + +#if defined(STM32L053xx) || defined(STM32L063xx) \ + || defined(STM32L052xx) || defined(STM32L062xx) \ + || defined(STM32L051xx) +#define __HAL_RCC_TIM2_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_TIM2EN)) +#define __HAL_RCC_TIM6_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_TIM6EN)) +#define __HAL_RCC_SPI2_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_SPI2EN)) +#define __HAL_RCC_USART2_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_USART2EN)) +#define __HAL_RCC_LPUART1_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_LPUART1EN)) +#define __HAL_RCC_I2C1_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_I2C1EN)) +#define __HAL_RCC_I2C2_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_I2C2EN)) +#define __HAL_RCC_DAC_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_DACEN)) +#define __HAL_RCC_LPTIM1_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_LPTIM1EN)) + +#define __HAL_RCC_TIM2_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_TIM2EN)) +#define __HAL_RCC_TIM6_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_TIM6EN)) +#define __HAL_RCC_SPI2_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_SPI2EN)) +#define __HAL_RCC_USART2_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_USART2EN)) +#define __HAL_RCC_LPUART1_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_LPUART1EN)) +#define __HAL_RCC_I2C1_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_I2C1EN)) +#define __HAL_RCC_I2C2_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_I2C2EN)) +#define __HAL_RCC_DAC_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_DACEN)) +#define __HAL_RCC_LPTIM1_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_LPTIM1EN)) + +#define __HAL_RCC_TIM2_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM2EN) != 0U) +#define __HAL_RCC_TIM6_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM6EN) != 0U) +#define __HAL_RCC_SPI2_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_SPI2EN) != 0U) +#define __HAL_RCC_USART2_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_USART2EN) != 0U) +#define __HAL_RCC_LPUART1_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_LPUART1EN) != 0U) +#define __HAL_RCC_I2C1_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C1EN) != 0U) +#define __HAL_RCC_I2C2_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C2EN) != 0U) +#define __HAL_RCC_DAC_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_DACEN) != 0U) +#define __HAL_RCC_LPTIM1_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_LPTIM1EN) != 0U) +#define __HAL_RCC_TIM2_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM2EN) == 0U) +#define __HAL_RCC_TIM6_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM6EN) == 0U) +#define __HAL_RCC_SPI2_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_SPI2EN) == 0U) +#define __HAL_RCC_USART2_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_USART2EN) == 0U) +#define __HAL_RCC_LPUART1_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_LPUART1EN) == 0U) +#define __HAL_RCC_I2C1_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C1EN) == 0U) +#define __HAL_RCC_I2C2_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C2EN) == 0U) +#define __HAL_RCC_DAC_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_DACEN) == 0U) +#define __HAL_RCC_LPTIM1_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_LPTIM1EN) == 0U) + +#endif /* STM32L053xx || STM32L063xx || */ + /* STM32L052xx || STM32L062xx || */ + /* STM32L051xx */ + +#if defined(STM32L010xB) || defined(STM32L010x8) || defined(STM32L010x6) || defined(STM32L010x4) || \ + defined(STM32L011xx) || defined(STM32L021xx) || defined(STM32L031xx) || defined(STM32L041xx) +#define __HAL_RCC_TIM2_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_TIM2EN)) +#define __HAL_RCC_USART2_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_USART2EN)) +#define __HAL_RCC_LPUART1_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_LPUART1EN)) +#define __HAL_RCC_I2C1_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_I2C1EN)) +#define __HAL_RCC_LPTIM1_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_LPTIM1EN)) + +#define __HAL_RCC_TIM2_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_TIM2EN)) +#define __HAL_RCC_USART2_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_USART2EN)) +#define __HAL_RCC_LPUART1_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_LPUART1EN)) +#define __HAL_RCC_I2C1_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_I2C1EN)) +#define __HAL_RCC_LPTIM1_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_LPTIM1EN)) + +#define __HAL_RCC_TIM2_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM2EN) != 0U) +#define __HAL_RCC_USART2_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_USART2EN) != 0U) +#define __HAL_RCC_LPUART1_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_LPUART1EN) != 0U) +#define __HAL_RCC_I2C1_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C1EN) != 0U) +#define __HAL_RCC_LPTIM1_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_LPTIM1EN) != 0U) +#define __HAL_RCC_TIM2_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM2EN) == 0U) +#define __HAL_RCC_USART2_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_USART2EN) == 0U) +#define __HAL_RCC_LPUART1_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_LPUART1EN) == 0U) +#define __HAL_RCC_I2C1_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C1EN) == 0U) +#define __HAL_RCC_LPTIM1_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_LPTIM1EN) == 0U) + +#endif /* STM32L010xB || STM32L010x8 || STM32L010x6 || STM32L010x4 || */ + /* STM32L011xx || STM32L021xx || STM32L031xx || STM32L041xx */ + + +#if defined(STM32L073xx) || defined(STM32L083xx) \ + || defined(STM32L072xx) || defined(STM32L082xx) \ + || defined(STM32L071xx) || defined(STM32L081xx) +#define __HAL_RCC_TIM2_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_TIM2EN)) +#define __HAL_RCC_TIM3_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_TIM3EN)) +#define __HAL_RCC_TIM6_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_TIM6EN)) +#define __HAL_RCC_TIM7_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_TIM7EN)) +#define __HAL_RCC_SPI2_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_SPI2EN)) +#define __HAL_RCC_USART2_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_USART2EN)) +#define __HAL_RCC_USART4_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_USART4EN)) +#define __HAL_RCC_USART5_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_USART5EN)) +#define __HAL_RCC_LPUART1_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_LPUART1EN)) +#define __HAL_RCC_I2C1_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_I2C1EN)) +#define __HAL_RCC_I2C2_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_I2C2EN)) +#define __HAL_RCC_I2C3_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_I2C3EN)) +#define __HAL_RCC_DAC_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_DACEN)) +#define __HAL_RCC_LPTIM1_CLK_ENABLE() SET_BIT(RCC->APB1ENR, (RCC_APB1ENR_LPTIM1EN)) + +#define __HAL_RCC_TIM2_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_TIM2EN)) +#define __HAL_RCC_TIM3_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_TIM3EN)) +#define __HAL_RCC_TIM6_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_TIM6EN)) +#define __HAL_RCC_TIM7_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_TIM7EN)) +#define __HAL_RCC_SPI2_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_SPI2EN)) +#define __HAL_RCC_USART2_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_USART2EN)) +#define __HAL_RCC_USART4_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_USART4EN)) +#define __HAL_RCC_USART5_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_USART5EN)) +#define __HAL_RCC_LPUART1_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_LPUART1EN)) +#define __HAL_RCC_I2C1_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_I2C1EN)) +#define __HAL_RCC_I2C2_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_I2C2EN)) +#define __HAL_RCC_I2C3_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_I2C3EN)) +#define __HAL_RCC_DAC_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_DACEN)) +#define __HAL_RCC_LPTIM1_CLK_DISABLE() CLEAR_BIT(RCC->APB1ENR, (RCC_APB1ENR_LPTIM1EN)) + +#define __HAL_RCC_TIM2_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM2EN) != 0U) +#define __HAL_RCC_TIM3_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM3EN) != 0U) +#define __HAL_RCC_TIM6_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM6EN) != 0U) +#define __HAL_RCC_TIM7_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM7EN) != 0U) +#define __HAL_RCC_SPI2_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_SPI2EN) != 0U) +#define __HAL_RCC_USART2_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_USART2EN) != 0U) +#define __HAL_RCC_USART4_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_USART4EN) != 0U) +#define __HAL_RCC_USART5_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_USART5EN) != 0U) +#define __HAL_RCC_LPUART1_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_LPUART1EN) != 0U) +#define __HAL_RCC_I2C1_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C1EN) != 0U) +#define __HAL_RCC_I2C2_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C2EN) != 0U) +#define __HAL_RCC_I2C3_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C3EN) != 0U) +#define __HAL_RCC_DAC_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_DACEN) != 0U) +#define __HAL_RCC_LPTIM1_IS_CLK_ENABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_LPTIM1EN) != 0U) +#define __HAL_RCC_TIM2_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM2EN) == 0U) +#define __HAL_RCC_TIM3_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM3EN) == 0U) +#define __HAL_RCC_TIM6_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM6EN) == 0U) +#define __HAL_RCC_TIM7_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM7EN) == 0U) +#define __HAL_RCC_SPI2_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_SPI2EN) == 0U) +#define __HAL_RCC_USART2_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_USART2EN) == 0U) +#define __HAL_RCC_USART4_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_USART4EN) == 0U) +#define __HAL_RCC_USART5_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_USART5EN) == 0U) +#define __HAL_RCC_LPUART1_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_LPUART1EN) == 0U) +#define __HAL_RCC_I2C1_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C1EN) == 0U) +#define __HAL_RCC_I2C2_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C2EN) == 0U) +#define __HAL_RCC_I2C3_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C3EN) == 0U) +#define __HAL_RCC_DAC_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_DACEN) == 0U) +#define __HAL_RCC_LPTIM1_IS_CLK_DISABLED() (READ_BIT(RCC->APB1ENR, RCC_APB1ENR_LPTIM1EN) == 0U) + +#endif /* STM32L071xx || STM32L081xx || */ + /* STM32L072xx || STM32L082xx || */ + /* STM32L073xx || STM32L083xx */ + + /** + * @} + */ + +#if defined(STM32L053xx) || defined(STM32L063xx) || defined(STM32L073xx) || defined(STM32L083xx) \ + || defined(STM32L052xx) || defined(STM32L062xx) || defined(STM32L072xx) || defined(STM32L082xx) \ + || defined(STM32L051xx) || defined(STM32L071xx) || defined(STM32L081xx) || defined(STM32L031xx) \ + || defined(STM32L041xx) || defined(STM32L011xx) || defined(STM32L021xx) || defined(STM32L010xB) \ + || defined(STM32L010x8) || defined(STM32L010x6) || defined(STM32L010x4) +/** @defgroup RCCEx_APB2_Clock_Enable_Disable APB2 Peripheral Clock Enable Disable + * @brief Enable or disable 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_TIM21_CLK_ENABLE() SET_BIT(RCC->APB2ENR, (RCC_APB2ENR_TIM21EN)) +#if !defined (STM32L010x4) && !defined (STM32L010x6) && !defined (STM32L010x8) && !defined (STM32L011xx) && !defined (STM32L021xx) +#define __HAL_RCC_TIM22_CLK_ENABLE() SET_BIT(RCC->APB2ENR, (RCC_APB2ENR_TIM22EN)) +#endif +#define __HAL_RCC_ADC1_CLK_ENABLE() SET_BIT(RCC->APB2ENR, (RCC_APB2ENR_ADC1EN)) +#define __HAL_RCC_SPI1_CLK_ENABLE() SET_BIT(RCC->APB2ENR, (RCC_APB2ENR_SPI1EN)) +#define __HAL_RCC_USART1_CLK_ENABLE() SET_BIT(RCC->APB2ENR, (RCC_APB2ENR_USART1EN)) + +#define __HAL_RCC_TIM21_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, (RCC_APB2ENR_TIM21EN)) +#if !defined (STM32L010x4) && !defined (STM32L010x6) && !defined (STM32L010x8) && !defined (STM32L011xx) && !defined (STM32L021xx) +#define __HAL_RCC_TIM22_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, (RCC_APB2ENR_TIM22EN)) +#endif +#define __HAL_RCC_ADC1_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, (RCC_APB2ENR_ADC1EN)) +#define __HAL_RCC_SPI1_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, (RCC_APB2ENR_SPI1EN)) +#define __HAL_RCC_USART1_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, (RCC_APB2ENR_USART1EN)) +#if !defined (STM32L010x4) && !defined (STM32L010x6) && !defined (STM32L010x8) && !defined (STM32L010xB) && !defined(STM32L011xx) && !defined(STM32L021xx) && !defined(STM32L031xx) && !defined(STM32L041xx) +#define __HAL_RCC_FIREWALL_CLK_ENABLE() SET_BIT(RCC->APB2ENR, (RCC_APB2ENR_MIFIEN)) +#define __HAL_RCC_FIREWALL_CLK_DISABLE() CLEAR_BIT(RCC->APB2ENR, (RCC_APB2ENR_MIFIEN)) +#endif /* !(STM32L010x4) && !(STM32L010x6) && !(STM32L010x8) && !(STM32L010xB) && !(STM32L011xx) && !(STM32L021xx) && !STM32L031xx && !STM32L041xx */ + +#define __HAL_RCC_TIM21_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM21EN) != 0U) +#if !defined (STM32L010x4) && !defined (STM32L010x6) && !defined (STM32L010x8) && !defined (STM32L011xx) && !defined (STM32L021xx) +#define __HAL_RCC_TIM22_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM22EN) != 0U) +#endif +#define __HAL_RCC_ADC1_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_ADC1EN) != 0U) +#define __HAL_RCC_SPI1_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI1EN) != 0U) +#define __HAL_RCC_USART1_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_USART1EN) != 0U) + +#define __HAL_RCC_TIM21_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, (RCC_APB2ENR_TIM21EN) == 0U) +#if !defined (STM32L010x4) && !defined (STM32L010x6) && !defined (STM32L010x8) && !defined (STM32L011xx) && !defined (STM32L021xx) +#define __HAL_RCC_TIM22_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, (RCC_APB2ENR_TIM22EN) == 0U) +#endif +#define __HAL_RCC_ADC1_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, (RCC_APB2ENR_ADC1EN) == 0U) +#define __HAL_RCC_SPI1_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, (RCC_APB2ENR_SPI1EN) == 0U) +#define __HAL_RCC_USART1_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, (RCC_APB2ENR_USART1EN) == 0U) +#if !defined (STM32L010x4) && !defined (STM32L010x6) && !defined (STM32L010x8) && !defined (STM32L010xB) && !defined(STM32L011xx) && !defined(STM32L021xx) && !defined(STM32L031xx) && !defined(STM32L041xx) +#define __HAL_RCC_FIREWALL_IS_CLK_ENABLED() (READ_BIT(RCC->APB2ENR, RCC_APB2ENR_MIFIEN) != 0U) +#define __HAL_RCC_FIREWALL_IS_CLK_DISABLED() (READ_BIT(RCC->APB2ENR, (RCC_APB2ENR_MIFIEN) == 0U) +#endif /* !(STM32L010x4) && !(STM32L010x6) && !(STM32L010x8) && !(STM32L010xB) && !(STM32L011xx) && !(STM32L021xx) && !STM32L031xx && !STM32L041xx */ + +#endif /* STM32L053xx || STM32L063xx || STM32L073xx || STM32L083xx || */ + /* STM32L052xx || STM32L062xx || STM32L072xx || STM32L082xx || */ + /* STM32L051xx || STM32L071xx || STM32L081xx || STM32L031xx || */ + /* STM32L041xx || STM32L011xx || STM32L021xx || STM32L010xB || */ + /* STM32L010x8 || STM32L010x6 || STM32L010x4 */ +/** + * @} + */ + +/** @defgroup RCCEx_AHB_Force_Release_Reset AHB Peripheral Force Release Reset + * @brief Force or release AHB peripheral reset. + * @{ + */ +#if defined(STM32L062xx) || defined(STM32L063xx) || defined(STM32L081xx) || defined(STM32L082xx) || defined(STM32L083xx) || defined(STM32L041xx) || defined(STM32L021xx) +#define __HAL_RCC_AES_FORCE_RESET() SET_BIT(RCC->AHBRSTR, (RCC_AHBRSTR_CRYPRST)) +#define __HAL_RCC_AES_RELEASE_RESET() CLEAR_BIT(RCC->AHBRSTR, (RCC_AHBRSTR_CRYPRST)) +#endif /* STM32L062xx || STM32L063xx || STM32L072xx || STM32L073xx || STM32L081xx || STM32L082xx || STM32L083xx || STM32L041xx || STM32L021xx*/ + +#if !defined (STM32L010x4) && !defined (STM32L010x6) && !defined (STM32L010x8) && !defined (STM32L010xB) && !defined(STM32L011xx) && !defined(STM32L021xx) && !defined(STM32L031xx) && !defined(STM32L041xx) && !defined(STM32L051xx) && !defined(STM32L071xx) && !defined(STM32L081xx) +#define __HAL_RCC_TSC_FORCE_RESET() SET_BIT(RCC->AHBRSTR, (RCC_AHBRSTR_TSCRST)) +#define __HAL_RCC_TSC_RELEASE_RESET() CLEAR_BIT(RCC->AHBRSTR, (RCC_AHBRSTR_TSCRST)) +#define __HAL_RCC_RNG_FORCE_RESET() SET_BIT(RCC->AHBRSTR, (RCC_AHBRSTR_RNGRST)) +#define __HAL_RCC_RNG_RELEASE_RESET() CLEAR_BIT(RCC->AHBRSTR, (RCC_AHBRSTR_RNGRST)) +#endif /* !(STM32L010x4) && !(STM32L010x6) && !(STM32L010x8) && !(STM32L010xB) && !(STM32L011xx) && !(STM32L021xx) && !(STM32L031xx ) && !(STM32L041xx ) && !(STM32L051xx ) && !(STM32L071xx ) && !(STM32L081xx ) */ + +/** + * @} + */ + +/** @defgroup RCCEx_IOPORT_Force_Release_Reset IOPORT Peripheral Force Release Reset + * @brief Force or release IOPORT peripheral reset. + * @{ + */ +#if defined(STM32L073xx) || defined(STM32L083xx) \ + || defined(STM32L072xx) || defined(STM32L082xx) \ + || defined(STM32L071xx) || defined(STM32L081xx) \ + || defined(STM32L010xB) +#define __HAL_RCC_GPIOE_FORCE_RESET() SET_BIT(RCC->IOPRSTR, (RCC_IOPRSTR_GPIOERST)) + +#define __HAL_RCC_GPIOE_RELEASE_RESET() CLEAR_BIT(RCC->IOPRSTR,(RCC_IOPRSTR_GPIOERST)) + +#endif /* STM32L071xx || STM32L081xx || */ + /* STM32L072xx || STM32L082xx || */ + /* STM32L073xx || STM32L083xx || */ + /* STM32L010xB */ +#if !defined(STM32L010x4) && !defined(STM32L010x6) && !defined(STM32L011xx) && !defined(STM32L021xx) && !defined(STM32L031xx) && !defined(STM32L041xx) +#define __HAL_RCC_GPIOD_FORCE_RESET() SET_BIT(RCC->IOPRSTR, (RCC_IOPRSTR_GPIODRST)) +#define __HAL_RCC_GPIOD_RELEASE_RESET() CLEAR_BIT(RCC->IOPRSTR,(RCC_IOPRSTR_GPIODRST)) +#endif /* !(STM32L010x4) && !(STM32L010x6) && !(STM32L011xx) && !(STM32L021xx) && !(STM32L031xx ) && !(STM32L041xx ) */ +/** + * @} + */ + +/** @defgroup RCCEx_APB1_Force_Release_Reset APB1 Peripheral Force Release Reset + * @brief Force or release APB1 peripheral reset. + * @{ + */ + +#if defined(STM32L053xx) || defined(STM32L063xx) \ + || defined(STM32L052xx) || defined(STM32L062xx) \ + || defined(STM32L051xx) +#define __HAL_RCC_TIM2_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_TIM2RST)) +#define __HAL_RCC_TIM6_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_TIM6RST)) +#define __HAL_RCC_LPTIM1_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_LPTIM1RST)) +#define __HAL_RCC_I2C1_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_I2C1RST)) +#define __HAL_RCC_I2C2_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_I2C2RST)) +#define __HAL_RCC_USART2_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_USART2RST)) +#define __HAL_RCC_LPUART1_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_LPUART1RST)) +#define __HAL_RCC_SPI2_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_SPI2RST)) +#define __HAL_RCC_DAC_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_DACRST)) + +#define __HAL_RCC_TIM2_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_TIM2RST)) +#define __HAL_RCC_TIM6_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_TIM6RST)) +#define __HAL_RCC_LPTIM1_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_LPTIM1RST)) +#define __HAL_RCC_I2C1_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_I2C1RST)) +#define __HAL_RCC_I2C2_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_I2C2RST)) +#define __HAL_RCC_USART2_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_USART2RST)) +#define __HAL_RCC_LPUART1_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_LPUART1RST)) +#define __HAL_RCC_SPI2_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_SPI2RST)) +#define __HAL_RCC_DAC_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_DACRST)) +#endif /* STM32L053xx || STM32L063xx || */ + /* STM32L052xx || STM32L062xx || */ + /* STM32L051xx */ +#if defined(STM32L011xx) || defined(STM32L021xx) || defined(STM32L031xx) || defined(STM32L041xx) || \ + defined(STM32L010xB) || defined(STM32L010x8) || defined(STM32L010x6) || defined(STM32L010x4) +#define __HAL_RCC_TIM2_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_TIM2RST)) +#define __HAL_RCC_LPTIM1_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_LPTIM1RST)) +#define __HAL_RCC_I2C1_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_I2C1RST)) +#define __HAL_RCC_USART2_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_USART2RST)) +#define __HAL_RCC_LPUART1_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_LPUART1RST)) + +#define __HAL_RCC_TIM2_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_TIM2RST)) +#define __HAL_RCC_LPTIM1_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_LPTIM1RST)) +#define __HAL_RCC_I2C1_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_I2C1RST)) +#define __HAL_RCC_USART2_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_USART2RST)) +#define __HAL_RCC_LPUART1_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_LPUART1RST)) +#endif /* STM32L031xx || STM32L041xx || STM32L011xx || STM32L021xx || */ + /* STM32L010xB || STM32L010x8 || STM32L010x6 || STM32L010x4 */ + +#if defined(STM32L073xx) || defined(STM32L083xx) \ + || defined(STM32L072xx) || defined(STM32L082xx) \ + || defined(STM32L071xx) || defined(STM32L081xx) +#define __HAL_RCC_TIM2_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_TIM2RST)) +#define __HAL_RCC_TIM3_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_TIM3RST)) +#define __HAL_RCC_TIM6_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_TIM6RST)) +#define __HAL_RCC_TIM7_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_TIM7RST)) +#define __HAL_RCC_LPTIM1_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_LPTIM1RST)) +#define __HAL_RCC_I2C1_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_I2C1RST)) +#define __HAL_RCC_I2C2_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_I2C2RST)) +#define __HAL_RCC_I2C3_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_I2C3RST)) +#define __HAL_RCC_USART2_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_USART2RST)) +#define __HAL_RCC_USART4_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_USART4RST)) +#define __HAL_RCC_USART5_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_USART5RST)) +#define __HAL_RCC_LPUART1_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_LPUART1RST)) +#define __HAL_RCC_SPI2_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_SPI2RST)) +#define __HAL_RCC_DAC_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_DACRST)) + +#define __HAL_RCC_TIM2_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_TIM2RST)) +#define __HAL_RCC_TIM3_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_TIM3RST)) +#define __HAL_RCC_TIM6_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_TIM6RST)) +#define __HAL_RCC_TIM7_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_TIM7RST)) +#define __HAL_RCC_LPTIM1_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_LPTIM1RST)) +#define __HAL_RCC_I2C1_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_I2C1RST)) +#define __HAL_RCC_I2C2_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_I2C2RST)) +#define __HAL_RCC_I2C3_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_I2C3RST)) +#define __HAL_RCC_USART2_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_USART2RST)) +#define __HAL_RCC_USART4_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_USART4RST)) +#define __HAL_RCC_USART5_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_USART5RST)) +#define __HAL_RCC_LPUART1_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_LPUART1RST)) +#define __HAL_RCC_SPI2_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_SPI2RST)) +#define __HAL_RCC_DAC_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_DACRST)) +#endif /* STM32L071xx || STM32L081xx || */ + /* STM32L072xx || STM32L082xx || */ + /* STM32L073xx || STM32L083xx || */ + +#if !defined(STM32L011xx) && !defined(STM32L021xx) && !defined(STM32L031xx) && !defined(STM32L041xx) && \ + !defined(STM32L051xx) && !defined(STM32L071xx) && !defined(STM32L081xx) && \ + !defined(STM32L010xB) && !defined(STM32L010x8) && !defined(STM32L010x6) && !defined(STM32L010x4) +#define __HAL_RCC_USB_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_USBRST)) +#define __HAL_RCC_USB_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_USBRST)) +#define __HAL_RCC_CRS_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_CRSRST)) +#define __HAL_RCC_CRS_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR,(RCC_APB1RSTR_CRSRST)) +#endif /* !(STM32L011xx) && !(STM32L021xx) && !(STM32L031xx) && !(STM32L041xx) && */ + /* !(STM32L051xx) && !(STM32L071xx) && !(STM32L081xx) && !(STM32L010xB) && */ + /* !(STM32L010x8) && !(STM32L010x6) && !(STM32L010x4) && */ + +#if defined(STM32L053xx) || defined(STM32L063xx) || defined(STM32L073xx) || defined(STM32L083xx) +#define __HAL_RCC_LCD_FORCE_RESET() SET_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_LCDRST)) +#define __HAL_RCC_LCD_RELEASE_RESET() CLEAR_BIT(RCC->APB1RSTR, (RCC_APB1RSTR_LCDRST)) +#endif /* STM32L053xx || STM32L063xx || STM32L073xx || STM32L083xx */ + +/** + * @} + */ + +#if defined(STM32L053xx) || defined(STM32L063xx) || defined(STM32L073xx) || defined(STM32L083xx) \ + || defined(STM32L052xx) || defined(STM32L062xx) || defined(STM32L072xx) || defined(STM32L082xx) \ + || defined(STM32L051xx) || defined(STM32L071xx) || defined(STM32L081xx) + +/** @defgroup RCCEx_APB2_Force_Release_Reset APB2 Peripheral Force Release Reset + * @brief Force or release APB2 peripheral reset. + * @{ + */ +#define __HAL_RCC_USART1_FORCE_RESET() SET_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_USART1RST)) +#define __HAL_RCC_ADC1_FORCE_RESET() SET_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_ADC1RST)) +#define __HAL_RCC_SPI1_FORCE_RESET() SET_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_SPI1RST)) +#define __HAL_RCC_TIM21_FORCE_RESET() SET_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_TIM21RST)) +#define __HAL_RCC_TIM22_FORCE_RESET() SET_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_TIM22RST)) + +#define __HAL_RCC_USART1_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_USART1RST)) +#define __HAL_RCC_ADC1_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_ADC1RST)) +#define __HAL_RCC_SPI1_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_SPI1RST)) +#define __HAL_RCC_TIM21_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_TIM21RST)) +#define __HAL_RCC_TIM22_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_TIM22RST)) + +#endif /* STM32L051xx || STM32L071xx || STM32L081xx || STM32L052xx || */ + /* STM32L062xx || STM32L072xx || STM32L082xx || STM32L053xx || */ + /* STM32L063xx || STM32L073xx || STM32L083xx */ + +#if defined(STM32L011xx) || defined(STM32L021xx) || defined(STM32L031xx) || defined(STM32L041xx) || \ + defined(STM32L010xB) || defined(STM32L010x8) || defined(STM32L010x6) || defined(STM32L010x4) +#define __HAL_RCC_ADC1_FORCE_RESET() SET_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_ADC1RST)) +#define __HAL_RCC_SPI1_FORCE_RESET() SET_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_SPI1RST)) +#define __HAL_RCC_TIM21_FORCE_RESET() SET_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_TIM21RST)) +#if !defined (STM32L010x4) && !defined (STM32L010x6) && !defined (STM32L010x8) && !defined (STM32L011xx) && !defined (STM32L021xx) +#define __HAL_RCC_TIM22_FORCE_RESET() SET_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_TIM22RST)) +#endif +#define __HAL_RCC_ADC1_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_ADC1RST)) +#define __HAL_RCC_SPI1_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_SPI1RST)) +#define __HAL_RCC_TIM21_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_TIM21RST)) +#if !defined (STM32L010x4) && !defined (STM32L010x6) && !defined (STM32L010x8) && !defined (STM32L011xx) && !defined (STM32L021xx) +#define __HAL_RCC_TIM22_RELEASE_RESET() CLEAR_BIT(RCC->APB2RSTR, (RCC_APB2RSTR_TIM22RST)) +#endif +#endif /* STM32L031xx || STM32L041xx || STM32L011xx || STM32L021xx || */ + /* STM32L010xB || STM32L010x8 || STM32L010x6 || STM32L010x4 */ + +/** + * @} + */ + +/** @defgroup RCCEx_AHB_Clock_Sleep_Enable_Disable AHB Peripheral Clock Sleep Enable Disable + * @brief Enable or disable 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. + * @{ + */ + +#if !defined(STM32L011xx) && !defined(STM32L021xx) && !defined(STM32L031xx) && !defined(STM32L041xx) && \ + !defined(STM32L051xx) && !defined(STM32L071xx) && !defined(STM32L081xx) && !defined(STM32L010xB) && \ + !defined(STM32L010x8) && !defined(STM32L010x6) && !defined(STM32L010x4) +#define __HAL_RCC_TSC_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHBSMENR, (RCC_AHBSMENR_TSCSMEN)) +#define __HAL_RCC_RNG_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHBSMENR, (RCC_AHBSMENR_RNGSMEN)) +#define __HAL_RCC_TSC_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHBSMENR, (RCC_AHBSMENR_TSCSMEN)) +#define __HAL_RCC_RNG_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHBSMENR, (RCC_AHBSMENR_RNGSMEN)) + +#define __HAL_RCC_TSC_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_TSCSMEN) != 0U) +#define __HAL_RCC_RNG_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_RNGSMEN) != 0U) +#define __HAL_RCC_TSC_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_TSCSMEN) == 0U) +#define __HAL_RCC_RNG_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHBSMENR, RCC_AHBSMENR_RNGSMEN) == 0U) +#endif /* !(STM32L011xx) && !(STM32L021xx) && !(STM32L031xx) && !(STM32L041xx) && */ + /* !(STM32L051xx) && !(STM32L071xx) && !(STM32L081xx) &&!(STM32L010xB) && */ + /* !(STM32L010x8) && !(STM32L010x6) && !(STM32L010x4) && */ + +#if defined(STM32L062xx) || defined(STM32L063xx) || defined(STM32L081xx) || defined(STM32L082xx) || defined(STM32L083xx) || defined(STM32L041xx) +#define __HAL_RCC_AES_CLK_SLEEP_ENABLE() SET_BIT(RCC->AHBLPENR, (RCC_AHBSMENR_CRYPSMEN)) +#define __HAL_RCC_AES_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->AHBLPENR, (RCC_AHBSMENR_CRYPSMEN)) + +#define __HAL_RCC_AES_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->AHBLPENR, RCC_AHBSMENR_CRYPSMEN) != 0U) +#define __HAL_RCC_AES_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->AHBLPENR, RCC_AHBSMENR_CRYPSMEN) == 0U) +#endif /* STM32L062xx || STM32L063xx || STM32L072xx || STM32L073xx || STM32L081xx || STM32L082xx || STM32L083xx || STM32L041xx */ + +/** + * @} + */ + +/** @defgroup RCCEx_IOPORT_Clock_Sleep_Enable_Disable IOPORT Peripheral Clock Sleep Enable Disable + * @brief Enable or disable the IOPORT 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(STM32L073xx) || defined(STM32L083xx) \ + || defined(STM32L072xx) || defined(STM32L082xx) \ + || defined(STM32L071xx) || defined(STM32L081xx) \ + || defined(STM32L010xB) +#define __HAL_RCC_GPIOE_CLK_SLEEP_ENABLE() SET_BIT(RCC->IOPSMENR, (RCC_IOPSMENR_GPIOESMEN)) +#define __HAL_RCC_GPIOE_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->IOPSMENR,(RCC_IOPSMENR_GPIOESMEN)) + +#define __HAL_RCC_GPIOE_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOESMEN) != 0U) +#define __HAL_RCC_GPIOE_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIOESMEN) == 0U) +#endif /* STM32L071xx || STM32L081xx || */ + /* STM32L072xx || STM32L082xx || */ + /* STM32L073xx || STM32L083xx || */ + /* STM32L010xB */ +#if !defined(STM32L010x4) && !defined(STM32L010x6) && !defined(STM32L011xx) && !defined(STM32L021xx) && !defined(STM32L031xx) && !defined(STM32L041xx) +#define __HAL_RCC_GPIOD_CLK_SLEEP_ENABLE() SET_BIT(RCC->IOPSMENR, (RCC_IOPSMENR_GPIODSMEN)) +#define __HAL_RCC_GPIOD_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->IOPSMENR,(RCC_IOPSMENR_GPIODSMEN)) + +#define __HAL_RCC_GPIOD_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIODSMEN) != 0U) +#define __HAL_RCC_GPIOD_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->IOPSMENR, RCC_IOPSMENR_GPIODSMEN) == 0U) +#endif /* !(STM32L010x4) && !(STM32L010x6) && !(STM32L011xx) && !(STM32L021xx) && !(STM32L031xx ) && !(STM32L041xx ) */ +/** + * @} + */ + + +/** @defgroup RCCEx_APB1_Clock_Sleep_Enable_Disable APB1 Peripheral Clock Sleep Enable Disable + * @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. + * @{ + */ + +#if defined(STM32L053xx) || defined(STM32L063xx) \ + || defined(STM32L052xx) || defined(STM32L062xx) \ + || defined(STM32L051xx) +#define __HAL_RCC_TIM2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_TIM2SMEN)) +#define __HAL_RCC_TIM6_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_TIM6SMEN)) +#define __HAL_RCC_SPI2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_SPI2SMEN)) +#define __HAL_RCC_USART2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_USART2SMEN)) +#define __HAL_RCC_LPUART1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_LPUART1SMEN)) +#define __HAL_RCC_I2C1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_I2C1SMEN)) +#define __HAL_RCC_I2C2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_I2C2SMEN)) +#define __HAL_RCC_DAC_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_DACSMEN)) +#define __HAL_RCC_LPTIM1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_LPTIM1SMEN)) + +#define __HAL_RCC_TIM2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_TIM2SMEN)) +#define __HAL_RCC_TIM6_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_TIM6SMEN)) +#define __HAL_RCC_SPI2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_SPI2SMEN)) +#define __HAL_RCC_USART2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_USART2SMEN)) +#define __HAL_RCC_LPUART1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_LPUART1SMEN)) +#define __HAL_RCC_I2C1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_I2C1SMEN)) +#define __HAL_RCC_I2C2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_I2C2SMEN)) +#define __HAL_RCC_DAC_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_DACSMEN)) +#define __HAL_RCC_LPTIM1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_LPTIM1SMEN)) + +#define __HAL_RCC_TIM2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_TIM2SMEN) != 0U) +#define __HAL_RCC_TIM6_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_TIM6SMEN) != 0U) +#define __HAL_RCC_SPI2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_SPI2SMEN) != 0U) +#define __HAL_RCC_USART2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_USART2SMEN) != 0U) +#define __HAL_RCC_LPUART1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_LPUART1SMEN) != 0U) +#define __HAL_RCC_I2C1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_I2C1SMEN) != 0U) +#define __HAL_RCC_I2C2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_I2C2SMEN) != 0U) +#define __HAL_RCC_DAC_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_DACSMEN) != 0U) +#define __HAL_RCC_LPTIM1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_LPTIM1SMEN) != 0U) +#define __HAL_RCC_TIM2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_TIM2SMEN) == 0U) +#define __HAL_RCC_TIM6_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_TIM6SMEN) == 0U) +#define __HAL_RCC_SPI2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_SPI2SMEN) == 0U) +#define __HAL_RCC_USART2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_USART2SMEN) == 0U) +#define __HAL_RCC_LPUART1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_LPUART1SMEN) == 0U) +#define __HAL_RCC_I2C1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_I2C1SMEN) == 0U) +#define __HAL_RCC_I2C2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_I2C2SMEN) == 0U) +#define __HAL_RCC_DAC_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_DACSMEN) == 0U) +#define __HAL_RCC_LPTIM1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_LPTIM1SMEN) == 0U) +#endif /* STM32L053xx || STM32L063xx || */ + /* STM32L052xx || STM32L062xx || */ + /* STM32L051xx */ + +#if defined(STM32L073xx) || defined(STM32L083xx) \ + || defined(STM32L072xx) || defined(STM32L082xx) \ + || defined(STM32L071xx) || defined(STM32L081xx) +#define __HAL_RCC_TIM2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_TIM2SMEN)) +#define __HAL_RCC_TIM3_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_TIM3SMEN)) +#define __HAL_RCC_TIM6_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_TIM6SMEN)) +#define __HAL_RCC_TIM7_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_TIM7SMEN)) +#define __HAL_RCC_SPI2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_SPI2SMEN)) +#define __HAL_RCC_USART2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_USART2SMEN)) +#define __HAL_RCC_USART4_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_USART4SMEN)) +#define __HAL_RCC_USART5_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_USART5SMEN)) +#define __HAL_RCC_LPUART1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_LPUART1SMEN)) +#define __HAL_RCC_I2C1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_I2C1SMEN)) +#define __HAL_RCC_I2C2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_I2C2SMEN)) +#define __HAL_RCC_I2C3_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_I2C3SMEN)) +#define __HAL_RCC_DAC_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_DACSMEN)) +#define __HAL_RCC_LPTIM1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_LPTIM1SMEN)) + +#define __HAL_RCC_TIM2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_TIM2SMEN)) +#define __HAL_RCC_TIM3_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_TIM3SMEN)) +#define __HAL_RCC_TIM6_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_TIM6SMEN)) +#define __HAL_RCC_TIM7_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_TIM7SMEN)) +#define __HAL_RCC_SPI2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_SPI2SMEN)) +#define __HAL_RCC_USART2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_USART2SMEN)) +#define __HAL_RCC_USART4_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_USART4SMEN)) +#define __HAL_RCC_USART5_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_USART5SMEN)) +#define __HAL_RCC_LPUART1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_LPUART1SMEN)) +#define __HAL_RCC_I2C1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_I2C1SMEN)) +#define __HAL_RCC_I2C2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_I2C2SMEN)) +#define __HAL_RCC_I2C3_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_I2C3SMEN)) +#define __HAL_RCC_DAC_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_DACSMEN)) +#define __HAL_RCC_LPTIM1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_LPTIM1SMEN)) + +#define __HAL_RCC_TIM2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_TIM2SMEN) != 0U) +#define __HAL_RCC_TIM3_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_TIM3SMEN) != 0U) +#define __HAL_RCC_TIM6_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_TIM6SMEN) != 0U) +#define __HAL_RCC_TIM7_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_TIM7SMEN) != 0U) +#define __HAL_RCC_SPI2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_SPI2SMEN) != 0U) +#define __HAL_RCC_USART2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_USART2SMEN) != 0U) +#define __HAL_RCC_USART4_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_USART4SMEN) != 0U) +#define __HAL_RCC_USART5_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_USART5SMEN) != 0U) +#define __HAL_RCC_LPUART1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_LPUART1SMEN) != 0U) +#define __HAL_RCC_I2C1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_I2C1SMEN) != 0U) +#define __HAL_RCC_I2C2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_I2C2SMEN) != 0U) +#define __HAL_RCC_I2C3_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_I2C3SMEN) != 0U) +#define __HAL_RCC_DAC_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_DACSMEN) != 0U) +#define __HAL_RCC_LPTIM1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_LPTIM1SMEN) != 0U) +#define __HAL_RCC_TIM2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_TIM2SMEN) == 0U) +#define __HAL_RCC_TIM3_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_TIM3SMEN) == 0U) +#define __HAL_RCC_TIM6_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_TIM6SMEN) == 0U) +#define __HAL_RCC_TIM7_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_TIM7SMEN) == 0U) +#define __HAL_RCC_SPI2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_SPI2SMEN) == 0U) +#define __HAL_RCC_USART2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_USART2SMEN) == 0U) +#define __HAL_RCC_USART4_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_USART4SMEN) == 0U) +#define __HAL_RCC_USART5_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_USART5SMEN) == 0U) +#define __HAL_RCC_LPUART1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_LPUART1SMEN) == 0U) +#define __HAL_RCC_I2C1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_I2C1SMEN) == 0U) +#define __HAL_RCC_I2C2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_I2C2SMEN) == 0U) +#define __HAL_RCC_I2C3_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_I2C3SMEN) == 0U) +#define __HAL_RCC_DAC_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_DACSMEN) == 0U) +#define __HAL_RCC_LPTIM1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_LPTIM1SMEN) == 0U) +#endif /* STM32L071xx || STM32L081xx || */ + /* STM32L072xx || STM32L082xx || */ + /* STM32L073xx || STM32L083xx */ + +#if defined(STM32L011xx) || defined(STM32L021xx) || defined(STM32L031xx) || defined(STM32L041xx) || \ + defined(STM32L010xB) || defined(STM32L010x8) || defined(STM32L010x6) || defined(STM32L010x4) +#define __HAL_RCC_TIM2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_TIM2SMEN)) +#define __HAL_RCC_USART2_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_USART2SMEN)) +#define __HAL_RCC_LPUART1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_LPUART1SMEN)) +#define __HAL_RCC_I2C1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_I2C1SMEN)) +#define __HAL_RCC_LPTIM1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_LPTIM1SMEN)) + +#define __HAL_RCC_TIM2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_TIM2SMEN)) +#define __HAL_RCC_USART2_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_USART2SMEN)) +#define __HAL_RCC_LPUART1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_LPUART1SMEN)) +#define __HAL_RCC_I2C1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_I2C1SMEN)) +#define __HAL_RCC_LPTIM1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_LPTIM1SMEN)) + +#define __HAL_RCC_TIM2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_TIM2SMEN) != 0U) +#define __HAL_RCC_USART2_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_USART2SMEN) != 0U) +#define __HAL_RCC_LPUART1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_LPUART1SMEN) != 0U) +#define __HAL_RCC_I2C1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_I2C1SMEN) != 0U) +#define __HAL_RCC_LPTIM1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_LPTIM1SMEN) != 0U) +#define __HAL_RCC_TIM2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_TIM2SMEN) == 0U) +#define __HAL_RCC_USART2_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_USART2SMEN) == 0U) +#define __HAL_RCC_LPUART1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_LPUART1SMEN) == 0U) +#define __HAL_RCC_I2C1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_I2C1SMEN) == 0U) +#define __HAL_RCC_LPTIM1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_LPTIM1SMEN) == 0U) + +#endif /* STM32L031xx || STM32L041xx || STM32L011xx || STM32L021xx */ + /* STM32L010xB || STM32L010x8 || STM32L010x6 || STM32L010x4 */ + +#if !defined(STM32L011xx) && !defined(STM32L021xx) && !defined(STM32L031xx) && !defined(STM32L041xx) && \ + !defined(STM32L051xx) && !defined(STM32L071xx) && !defined(STM32L081xx) && \ + !defined(STM32L010xB) && !defined(STM32L010x8) && !defined(STM32L010x6) && !defined(STM32L010x4) +#define __HAL_RCC_USB_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_USBSMEN)) +#define __HAL_RCC_USB_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_USBSMEN)) +#define __HAL_RCC_CRS_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_CRSSMEN)) +#define __HAL_RCC_CRS_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_CRSSMEN)) + +#define __HAL_RCC_USB_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_USBSMEN) != 0U) +#define __HAL_RCC_USB_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_USBSMEN) == 0U) +#define __HAL_RCC_CRS_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_CRSSMEN) != 0U) +#define __HAL_RCC_CRS_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_CRSSMEN) == 0U) +#endif /* !(STM32L011xx) && !(STM32L021xx) && !(STM32L031xx) && !(STM32L041xx) && */ + /* !(STM32L051xx) && !(STM32L071xx) && !(STM32L081xx) && !(STM32L010xB) && */ + /* !(STM32L010x8) && !(STM32L010x6) && !(STM32L010x4) */ + +#if defined(STM32L053xx) || defined(STM32L063xx) || defined(STM32L073xx) || defined(STM32L083xx) +#define __HAL_RCC_LCD_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_LCDSMEN)) +#define __HAL_RCC_LCD_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB1SMENR, (RCC_APB1SMENR_LCDSMEN)) + +#define __HAL_RCC_LCD_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_LCDSMEN) != 0U) +#define __HAL_RCC_LCD_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB1SMENR, RCC_APB1SMENR_LCDSMEN) == 0U) +#endif /* STM32L053xx || STM32L063xx || STM32L073xx || STM32L083xx */ + +/** + * @} + */ + +#if defined(STM32L053xx) || defined(STM32L063xx) || defined(STM32L073xx) || defined(STM32L083xx) \ + || defined(STM32L052xx) || defined(STM32L062xx) || defined(STM32L072xx) || defined(STM32L082xx) \ + || defined(STM32L051xx) || defined(STM32L071xx) || defined(STM32L081xx) || defined(STM32L031xx) \ + || defined(STM32L041xx) || defined(STM32L011xx) || defined(STM32L021xx) || defined(STM32L010xB) \ + || defined(STM32L010x8) || defined(STM32L010x6) || defined(STM32L010x4) + +/** @defgroup RCCEx_APB2_Clock_Sleep_Enable_Disable APB2 Peripheral Clock Sleep Enable Disable + * @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_TIM21_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB2SMENR, (RCC_APB2SMENR_TIM21SMEN)) +#if !defined (STM32L010x4) && !defined (STM32L010x6) && !defined (STM32L010x8) && !defined (STM32L011xx) && !defined (STM32L021xx) +#define __HAL_RCC_TIM22_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB2SMENR, (RCC_APB2SMENR_TIM22SMEN)) +#endif +#define __HAL_RCC_ADC1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB2SMENR, (RCC_APB2SMENR_ADC1SMEN)) +#define __HAL_RCC_SPI1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB2SMENR, (RCC_APB2SMENR_SPI1SMEN)) +#define __HAL_RCC_USART1_CLK_SLEEP_ENABLE() SET_BIT(RCC->APB2SMENR, (RCC_APB2SMENR_USART1SMEN)) + +#define __HAL_RCC_TIM21_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB2SMENR, (RCC_APB2SMENR_TIM21SMEN)) +#if !defined (STM32L010x4) && !defined (STM32L010x6) && !defined (STM32L010x8) && !defined (STM32L011xx) && !defined (STM32L021xx) +#define __HAL_RCC_TIM22_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB2SMENR, (RCC_APB2SMENR_TIM22SMEN)) +#endif +#define __HAL_RCC_ADC1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB2SMENR, (RCC_APB2SMENR_ADC1SMEN)) +#define __HAL_RCC_SPI1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB2SMENR, (RCC_APB2SMENR_SPI1SMEN)) +#define __HAL_RCC_USART1_CLK_SLEEP_DISABLE() CLEAR_BIT(RCC->APB2SMENR, (RCC_APB2SMENR_USART1SMEN)) + +#define __HAL_RCC_TIM21_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM21SMEN) != 0U) +#if !defined (STM32L010x4) && !defined (STM32L010x6) && !defined (STM32L010x8) && !defined (STM32L011xx) && !defined (STM32L021xx) +#define __HAL_RCC_TIM22_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_TIM22SMEN) != 0U) +#endif +#define __HAL_RCC_ADC1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_ADC1SMEN) != 0U) +#define __HAL_RCC_SPI1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_SPI1SMEN) != 0U) +#define __HAL_RCC_USART1_IS_CLK_SLEEP_ENABLED() (READ_BIT(RCC->APB2SMENR, RCC_APB2SMENR_USART1SMEN) != 0U) + +#define __HAL_RCC_TIM21_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB2SMENR, (RCC_APB2SMENR_TIM21SMEN) == 0U) +#if !defined (STM32L010x4) && !defined (STM32L010x6) && !defined (STM32L010x8) && !defined (STM32L011xx) && !defined (STM32L021xx) +#define __HAL_RCC_TIM22_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB2SMENR, (RCC_APB2SMENR_TIM22SMEN) == 0U) +#endif +#define __HAL_RCC_ADC1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB2SMENR, (RCC_APB2SMENR_ADC1SMEN) == 0U) +#define __HAL_RCC_SPI1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB2SMENR, (RCC_APB2SMENR_SPI1SMEN) == 0U) +#define __HAL_RCC_USART1_IS_CLK_SLEEP_DISABLED() (READ_BIT(RCC->APB2SMENR, (RCC_APB2SMENR_USART1SMEN) == 0U) + +/** + * @} + */ + +#endif /* STM32L053xx || STM32L063xx || STM32L073xx || STM32L083xx || */ + /* STM32L052xx || STM32L062xx || STM32L072xx || STM32L082xx || */ + /* STM32L051xx || STM32L071xx || STM32L081xx || STM32L031xx || */ + /* STM32L041xx || STM32L011xx || STM32L021xx || STM32L010xB || */ + /* STM32L010x8 || STM32L010x6 || STM32L010x4 */ + + +/** + * @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(0) + +/** + * @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(0) + +/** + * @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) + + +#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 */ + +/** @brief Macro to configure the I2C1 clock (I2C1CLK). + * + * @param __I2C1_CLKSOURCE__ specifies the I2C1 clock source. + * This parameter can be one of the following values: + * @arg @ref RCC_I2C1CLKSOURCE_PCLK1 PCLK1 selected as I2C1 clock + * @arg @ref RCC_I2C1CLKSOURCE_HSI HSI selected as I2C1 clock + * @arg @ref RCC_I2C1CLKSOURCE_SYSCLK System Clock selected as I2C1 clock + */ +#define __HAL_RCC_I2C1_CONFIG(__I2C1_CLKSOURCE__) \ + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_I2C1SEL, (uint32_t)(__I2C1_CLKSOURCE__)) + +/** @brief Macro to get the I2C1 clock source. + * @retval The clock source can be one of the following values: + * @arg @ref RCC_I2C1CLKSOURCE_PCLK1 PCLK1 selected as I2C1 clock + * @arg @ref RCC_I2C1CLKSOURCE_HSI HSI selected as I2C1 clock + * @arg @ref RCC_I2C1CLKSOURCE_SYSCLK System Clock selected as I2C1 clock + */ +#define __HAL_RCC_GET_I2C1_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR, RCC_CCIPR_I2C1SEL))) + +#if defined(RCC_CCIPR_I2C3SEL) +/** @brief Macro to configure the I2C3 clock (I2C3CLK). + * + * @param __I2C3_CLKSOURCE__ specifies the I2C3 clock source. + * This parameter can be one of the following values: + * @arg @ref RCC_I2C3CLKSOURCE_PCLK1 PCLK1 selected as I2C3 clock + * @arg @ref RCC_I2C3CLKSOURCE_HSI HSI selected as I2C3 clock + * @arg @ref RCC_I2C3CLKSOURCE_SYSCLK System Clock selected as I2C3 clock + */ +#define __HAL_RCC_I2C3_CONFIG(__I2C3_CLKSOURCE__) \ + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_I2C3SEL, (uint32_t)(__I2C3_CLKSOURCE__)) + +/** @brief Macro to get the I2C3 clock source. + * @retval The clock source can be one of the following values: + * @arg @ref RCC_I2C3CLKSOURCE_PCLK1 PCLK1 selected as I2C3 clock + * @arg @ref RCC_I2C3CLKSOURCE_HSI HSI selected as I2C3 clock + * @arg @ref RCC_I2C3CLKSOURCE_SYSCLK System Clock selected as I2C3 clock + */ +#define __HAL_RCC_GET_I2C3_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR, RCC_CCIPR_I2C3SEL))) + +#endif /* RCC_CCIPR_I2C3SEL */ + +#if defined (RCC_CCIPR_USART1SEL) +/** @brief Macro to configure the USART1 clock (USART1CLK). + * + * @param __USART1_CLKSOURCE__ specifies the USART1 clock source. + * This parameter can be one of the following values: + * @arg @ref RCC_USART1CLKSOURCE_PCLK2 PCLK2 selected as USART1 clock + * @arg @ref RCC_USART1CLKSOURCE_HSI HSI selected as USART1 clock + * @arg @ref RCC_USART1CLKSOURCE_SYSCLK System Clock selected as USART1 clock + * @arg @ref RCC_USART1CLKSOURCE_LSE LSE selected as USART1 clock + */ +#define __HAL_RCC_USART1_CONFIG(__USART1_CLKSOURCE__) \ + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_USART1SEL, (uint32_t)(__USART1_CLKSOURCE__)) + +/** @brief Macro to get the USART1 clock source. + * @retval The clock source can be one of the following values: + * @arg @ref RCC_USART1CLKSOURCE_PCLK2 PCLK2 selected as USART1 clock + * @arg @ref RCC_USART1CLKSOURCE_HSI HSI selected as USART1 clock + * @arg @ref RCC_USART1CLKSOURCE_SYSCLK System Clock selected as USART1 clock + * @arg @ref RCC_USART1CLKSOURCE_LSE LSE selected as USART1 clock + */ +#define __HAL_RCC_GET_USART1_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR, RCC_CCIPR_USART1SEL))) +#endif /* RCC_CCIPR_USART1SEL */ + +/** @brief Macro to configure the USART2 clock (USART2CLK). + * + * @param __USART2_CLKSOURCE__ specifies the USART2 clock source. + * This parameter can be one of the following values: + * @arg @ref RCC_USART2CLKSOURCE_PCLK1 PCLK1 selected as USART2 clock + * @arg @ref RCC_USART2CLKSOURCE_HSI HSI selected as USART2 clock + * @arg @ref RCC_USART2CLKSOURCE_SYSCLK System Clock selected as USART2 clock + * @arg @ref RCC_USART2CLKSOURCE_LSE LSE selected as USART2 clock + */ +#define __HAL_RCC_USART2_CONFIG(__USART2_CLKSOURCE__) \ + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_USART2SEL, (uint32_t)(__USART2_CLKSOURCE__)) + +/** @brief Macro to get the USART2 clock source. + * @retval The clock source can be one of the following values: + * @arg @ref RCC_USART2CLKSOURCE_PCLK1 PCLK1 selected as USART2 clock + * @arg @ref RCC_USART2CLKSOURCE_HSI HSI selected as USART2 clock + * @arg @ref RCC_USART2CLKSOURCE_SYSCLK System Clock selected as USART2 clock + * @arg @ref RCC_USART2CLKSOURCE_LSE LSE selected as USART2 clock + */ +#define __HAL_RCC_GET_USART2_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR, RCC_CCIPR_USART2SEL))) + +/** @brief Macro to configure the LPUART1 clock (LPUART1CLK). + * + * @param __LPUART1_CLKSOURCE__ specifies the LPUART1 clock source. + * This parameter can be one of the following values: + * @arg @ref RCC_LPUART1CLKSOURCE_PCLK1 PCLK1 selected as LPUART1 clock + * @arg @ref RCC_LPUART1CLKSOURCE_HSI HSI selected as LPUART1 clock + * @arg @ref RCC_LPUART1CLKSOURCE_SYSCLK System Clock selected as LPUART1 clock + * @arg @ref RCC_LPUART1CLKSOURCE_LSE LSE selected as LPUART1 clock + */ +#define __HAL_RCC_LPUART1_CONFIG(__LPUART1_CLKSOURCE__) \ + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_LPUART1SEL, (uint32_t)(__LPUART1_CLKSOURCE__)) + +/** @brief Macro to get the LPUART1 clock source. + * @retval The clock source can be one of the following values: + * @arg @ref RCC_LPUART1CLKSOURCE_PCLK1 PCLK1 selected as LPUART1 clock + * @arg @ref RCC_LPUART1CLKSOURCE_HSI HSI selected as LPUART1 clock + * @arg @ref RCC_LPUART1CLKSOURCE_SYSCLK System Clock selected as LPUART1 clock + * @arg @ref RCC_LPUART1CLKSOURCE_LSE LSE selected as LPUART1 clock + */ +#define __HAL_RCC_GET_LPUART1_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR, RCC_CCIPR_LPUART1SEL))) + +/** @brief Macro to configure the LPTIM1 clock (LPTIM1CLK). + * + * @param __LPTIM1_CLKSOURCE__ specifies the LPTIM1 clock source. + * This parameter can be one of the following values: + * @arg @ref RCC_LPTIM1CLKSOURCE_PCLK1 PCLK1 selected as LPTIM1 clock + * @arg @ref RCC_LPTIM1CLKSOURCE_LSI HSI selected as LPTIM1 clock + * @arg @ref RCC_LPTIM1CLKSOURCE_HSI LSI selected as LPTIM1 clock + * @arg @ref RCC_LPTIM1CLKSOURCE_LSE LSE selected as LPTIM1 clock + */ +#define __HAL_RCC_LPTIM1_CONFIG(__LPTIM1_CLKSOURCE__) \ + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_LPTIM1SEL, (uint32_t)(__LPTIM1_CLKSOURCE__)) + +/** @brief Macro to get the LPTIM1 clock source. + * @retval The clock source can be one of the following values: + * @arg @ref RCC_LPTIM1CLKSOURCE_PCLK1 PCLK1 selected as LPUART1 clock + * @arg @ref RCC_LPTIM1CLKSOURCE_LSI HSI selected as LPUART1 clock + * @arg @ref RCC_LPTIM1CLKSOURCE_HSI System Clock selected as LPUART1 clock + * @arg @ref RCC_LPTIM1CLKSOURCE_LSE LSE selected as LPUART1 clock + */ +#define __HAL_RCC_GET_LPTIM1_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR, RCC_CCIPR_LPTIM1SEL))) + +#if defined(USB) +/** @brief Macro to configure the USB clock (USBCLK). + * @param __USB_CLKSOURCE__ specifies the USB clock source. + * This parameter can be one of the following values: + * @arg @ref RCC_USBCLKSOURCE_HSI48 HSI48 selected as USB clock + * @arg @ref RCC_USBCLKSOURCE_PLL PLL Clock selected as USB clock + */ +#define __HAL_RCC_USB_CONFIG(__USB_CLKSOURCE__) \ + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_HSI48SEL, (uint32_t)(__USB_CLKSOURCE__)) + +/** @brief Macro to get the USB clock source. + * @retval The clock source can be one of the following values: + * @arg @ref RCC_USBCLKSOURCE_HSI48 HSI48 selected as USB clock + * @arg @ref RCC_USBCLKSOURCE_PLL PLL Clock selected as USB clock + */ +#define __HAL_RCC_GET_USB_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR, RCC_CCIPR_HSI48SEL))) +#endif /* USB */ + +#if defined(RNG) +/** @brief Macro to configure the RNG clock (RNGCLK). + * @param __RNG_CLKSOURCE__ specifies the USB clock source. + * This parameter can be one of the following values: + * @arg @ref RCC_RNGCLKSOURCE_HSI48 HSI48 selected as RNG clock + * @arg @ref RCC_RNGCLKSOURCE_PLLCLK PLL Clock selected as RNG clock + */ +#define __HAL_RCC_RNG_CONFIG(__RNG_CLKSOURCE__) \ + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_HSI48SEL, (uint32_t)(__RNG_CLKSOURCE__)) + +/** @brief Macro to get the RNG clock source. + * @retval The clock source can be one of the following values: + * @arg @ref RCC_RNGCLKSOURCE_HSI48 HSI48 selected as RNG clock + * @arg @ref RCC_RNGCLKSOURCE_PLLCLK PLL Clock selected as RNG clock + */ +#define __HAL_RCC_GET_RNG_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR, RCC_CCIPR_HSI48SEL))) +#endif /* RNG */ + +#if defined(RCC_CCIPR_HSI48SEL) +/** @brief Macro to select the HSI48M clock source + * @note This macro can be replaced by either __HAL_RCC_RNG_CONFIG or + * __HAL_RCC_USB_CONFIG to configure respectively RNG or UBS clock sources. + * + * @param __HSI48M_CLKSOURCE__ specifies the HSI48M clock source dedicated for + * USB an RNG peripherals. + * This parameter can be one of the following values: + * @arg @ref RCC_HSI48M_PLL A dedicated 48MHZ PLL output. + * @arg @ref RCC_HSI48M_HSI48 48MHZ issued from internal HSI48 oscillator. + */ +#define __HAL_RCC_HSI48M_CONFIG(__HSI48M_CLKSOURCE__) \ + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_HSI48SEL, (uint32_t)(__HSI48M_CLKSOURCE__)) + +/** @brief Macro to get the HSI48M clock source. + * @note This macro can be replaced by either __HAL_RCC_GET_RNG_SOURCE or + * __HAL_RCC_GET_USB_SOURCE to get respectively RNG or UBS clock sources. + * @retval The clock source can be one of the following values: + * @arg @ref RCC_HSI48M_PLL A dedicated 48MHZ PLL output. + * @arg @ref RCC_HSI48M_HSI48 48MHZ issued from internal HSI48 oscillator. + */ +#define __HAL_RCC_GET_HSI48M_SOURCE() ((uint32_t)(READ_BIT(RCC->CCIPR, RCC_CCIPR_HSI48SEL))) +#endif /* RCC_CCIPR_HSI48SEL */ + +/** + * @brief Macro to enable the force of the Internal High Speed oscillator (HSI) + * in STOP mode to be quickly available as kernel clock for USART and I2C. + * @note The Enable of this function has not effect on the HSION bit. + */ +#define __HAL_RCC_HSISTOP_ENABLE() SET_BIT(RCC->CR, RCC_CR_HSIKERON) + +/** + * @brief Macro to disable the force of the Internal High Speed oscillator (HSI) + * in STOP mode to be quickly available as kernel clock for USART and I2C. + * @retval None + */ +#define __HAL_RCC_HSISTOP_DISABLE() CLEAR_BIT(RCC->CR, RCC_CR_HSIKERON) + +/** + * @brief Macro to configures the External Low Speed oscillator (LSE) drive capability. + * @param __RCC_LSEDRIVE__ specifies the new state of the LSE drive capability. + * This parameter can be one of the following values: + * @arg @ref RCC_LSEDRIVE_LOW LSE oscillator low drive capability. + * @arg @ref RCC_LSEDRIVE_MEDIUMLOW LSE oscillator medium low drive capability. + * @arg @ref RCC_LSEDRIVE_MEDIUMHIGH LSE oscillator medium high drive capability. + * @arg @ref RCC_LSEDRIVE_HIGH LSE oscillator high drive capability. + * @retval None + */ +#define __HAL_RCC_LSEDRIVE_CONFIG(__RCC_LSEDRIVE__) (MODIFY_REG(RCC->CSR,\ + RCC_CSR_LSEDRV, (uint32_t)(__RCC_LSEDRIVE__) )) + +/** + * @brief Macro to configures the wake up from stop clock. + * @param __RCC_STOPWUCLK__ specifies the clock source used after wake up from stop + * This parameter can be one of the following values: + * @arg @ref RCC_STOP_WAKEUPCLOCK_MSI MSI selected as system clock source + * @arg @ref RCC_STOP_WAKEUPCLOCK_HSI HSI selected as system clock source + * @retval None + */ +#define __HAL_RCC_WAKEUPSTOP_CLK_CONFIG(__RCC_STOPWUCLK__) (MODIFY_REG(RCC->CFGR,\ + RCC_CFGR_STOPWUCK, (uint32_t)(__RCC_STOPWUCLK__) )) + +#if defined(CRS) +/** + * @brief Enables the specified CRS interrupts. + * @param __INTERRUPT__ specifies the CRS interrupt sources to be enabled. + * This parameter can be any combination of the following values: + * @arg @ref RCC_CRS_IT_SYNCOK + * @arg @ref RCC_CRS_IT_SYNCWARN + * @arg @ref RCC_CRS_IT_ERR + * @arg @ref RCC_CRS_IT_ESYNC + * @retval None + */ +#define __HAL_RCC_CRS_ENABLE_IT(__INTERRUPT__) SET_BIT(CRS->CR, (__INTERRUPT__)) + +/** + * @brief Disables the specified CRS interrupts. + * @param __INTERRUPT__ specifies the CRS interrupt sources to be disabled. + * This parameter can be any combination of the following values: + * @arg @ref RCC_CRS_IT_SYNCOK + * @arg @ref RCC_CRS_IT_SYNCWARN + * @arg @ref RCC_CRS_IT_ERR + * @arg @ref RCC_CRS_IT_ESYNC + * @retval None + */ +#define __HAL_RCC_CRS_DISABLE_IT(__INTERRUPT__) CLEAR_BIT(CRS->CR,(__INTERRUPT__)) + +/** @brief Check the CRS interrupt has occurred or not. + * @param __INTERRUPT__ specifies the CRS interrupt source to check. + * This parameter can be one of the following values: + * @arg @ref RCC_CRS_IT_SYNCOK + * @arg @ref RCC_CRS_IT_SYNCWARN + * @arg @ref RCC_CRS_IT_ERR + * @arg @ref RCC_CRS_IT_ESYNC + * @retval The new state of __INTERRUPT__ (SET or RESET). + */ +#define __HAL_RCC_CRS_GET_IT_SOURCE(__INTERRUPT__) ((CRS->CR & (__INTERRUPT__))? SET : RESET) + +/** @brief Clear the CRS interrupt pending bits + * bits to clear the selected 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_CRS_IT_SYNCOK + * @arg @ref RCC_CRS_IT_SYNCWARN + * @arg @ref RCC_CRS_IT_ERR + * @arg @ref RCC_CRS_IT_ESYNC + * @arg @ref RCC_CRS_IT_TRIMOVF + * @arg @ref RCC_CRS_IT_SYNCERR + * @arg @ref RCC_CRS_IT_SYNCMISS + */ +#define __HAL_RCC_CRS_CLEAR_IT(__INTERRUPT__) do { \ + if(((__INTERRUPT__) & RCC_CRS_IT_ERROR_MASK) != 0U) \ + { \ + WRITE_REG(CRS->ICR, CRS_ICR_ERRC | ((__INTERRUPT__) & ~RCC_CRS_IT_ERROR_MASK)); \ + } \ + else \ + { \ + WRITE_REG(CRS->ICR, (__INTERRUPT__)); \ + } \ + } while(0) + +/** + * @brief Checks whether the specified CRS flag is set or not. + * @param __FLAG__ specifies the flag to check. + * This parameter can be one of the following values: + * @arg @ref RCC_CRS_FLAG_SYNCOK + * @arg @ref RCC_CRS_FLAG_SYNCWARN + * @arg @ref RCC_CRS_FLAG_ERR + * @arg @ref RCC_CRS_FLAG_ESYNC + * @arg @ref RCC_CRS_FLAG_TRIMOVF + * @arg @ref RCC_CRS_FLAG_SYNCERR + * @arg @ref RCC_CRS_FLAG_SYNCMISS + * @retval The new state of __FLAG__ (TRUE or FALSE). + */ +#define __HAL_RCC_CRS_GET_FLAG(__FLAG__) ((CRS->ISR & (__FLAG__)) == (__FLAG__)) + +/** + * @brief Clears the CRS specified FLAG. + * @param __FLAG__ specifies the flag to clear. + * This parameter can be one of the following values: + * @arg @ref RCC_CRS_FLAG_SYNCOK + * @arg @ref RCC_CRS_FLAG_SYNCWARN + * @arg @ref RCC_CRS_FLAG_ERR + * @arg @ref RCC_CRS_FLAG_ESYNC + * @arg @ref RCC_CRS_FLAG_TRIMOVF + * @arg @ref RCC_CRS_FLAG_SYNCERR + * @arg @ref RCC_CRS_FLAG_SYNCMISS + * @retval None + */ +#define __HAL_RCC_CRS_CLEAR_FLAG(__FLAG__) do { \ + if(((__FLAG__) & RCC_CRS_FLAG_ERROR_MASK) != 0U) \ + { \ + WRITE_REG(CRS->ICR, CRS_ICR_ERRC | ((__FLAG__) & ~RCC_CRS_FLAG_ERROR_MASK)); \ + } \ + else \ + { \ + WRITE_REG(CRS->ICR, (__FLAG__)); \ + } \ + } while(0) + +/** + * @brief Enables the oscillator clock for frequency error counter. + * @note when the CEN bit is set the CRS_CFGR register becomes write-protected. + * @retval None + */ +#define __HAL_RCC_CRS_FREQ_ERROR_COUNTER_ENABLE() SET_BIT(CRS->CR, CRS_CR_CEN) + +/** + * @brief Disables the oscillator clock for frequency error counter. + * @retval None + */ +#define __HAL_RCC_CRS_FREQ_ERROR_COUNTER_DISABLE() CLEAR_BIT(CRS->CR, CRS_CR_CEN) + +/** + * @brief Enables the automatic hardware adjustment of TRIM bits. + * @note When the AUTOTRIMEN bit is set the CRS_CFGR register becomes write-protected. + * @retval None + */ +#define __HAL_RCC_CRS_AUTOMATIC_CALIB_ENABLE() SET_BIT(CRS->CR, CRS_CR_AUTOTRIMEN) + +/** + * @brief Enables or disables the automatic hardware adjustment of TRIM bits. + * @retval None + */ +#define __HAL_RCC_CRS_AUTOMATIC_CALIB_DISABLE() CLEAR_BIT(CRS->CR, CRS_CR_AUTOTRIMEN) + +/** + * @brief Macro to calculate reload value to be set in CRS register according to target and sync frequencies + * @note The RELOAD value should be selected according to the ratio between the target frequency and the frequency + * of the synchronization source after prescaling. It is then decreased by one in order to + * reach the expected synchronization on the zero value. The formula is the following: + * RELOAD = (fTARGET / fSYNC) -1 + * @param __FTARGET__ Target frequency (value in Hz) + * @param __FSYNC__ Synchronization signal frequency (value in Hz) + * @retval None + */ +#define __HAL_RCC_CRS_RELOADVALUE_CALCULATE(__FTARGET__, __FSYNC__) (((__FTARGET__) / (__FSYNC__)) - 1) + +#endif /* CRS */ + + +#if defined(RCC_CR_HSIOUTEN) +/** @brief Enable he HSI OUT . + * @note After reset, the HSI output is not available + */ + +#define __HAL_RCC_HSI_OUT_ENABLE() SET_BIT(RCC->CR, RCC_CR_HSIOUTEN) + +/** @brief Disable the HSI OUT . + * @note After reset, the HSI output is not available + */ + +#define __HAL_RCC_HSI_OUT_DISABLE() CLEAR_BIT(RCC->CR, RCC_CR_HSIOUTEN) + +#endif /* RCC_CR_HSIOUTEN */ + +#if defined(STM32L053xx) || defined(STM32L063xx) || defined(STM32L073xx) || defined(STM32L083xx)\ + || defined(STM32L052xx) || defined(STM32L062xx) || defined(STM32L072xx) || defined(STM32L082xx) + +/** + * @brief Enable the Internal High Speed oscillator for USB (HSI48). + * @note After enabling the HSI48, the application software should wait on + * HSI48RDY flag to be set indicating that HSI48 clock is stable and can + * be used to clock the USB. + * @note The HSI48 is stopped by hardware when entering STOP and STANDBY modes. + */ +#define __HAL_RCC_HSI48_ENABLE() do { SET_BIT(RCC->CRRCR, RCC_CRRCR_HSI48ON); \ + SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SYSCFGEN); \ + SET_BIT(SYSCFG->CFGR3, SYSCFG_CFGR3_ENREF_HSI48); \ + } while (0) +/** + * @brief Disable the Internal High Speed oscillator for USB (HSI48). + */ +#define __HAL_RCC_HSI48_DISABLE() do { CLEAR_BIT(RCC->CRRCR, RCC_CRRCR_HSI48ON); \ + CLEAR_BIT(SYSCFG->CFGR3, SYSCFG_CFGR3_ENREF_HSI48); \ + } while (0) + +/** @brief Macro to get the Internal 48Mhz High Speed oscillator (HSI48) state. + * @retval The clock source can be one of the following values: + * @arg @ref RCC_HSI48_ON HSI48 enabled + * @arg @ref RCC_HSI48_OFF HSI48 disabled + */ +#define __HAL_RCC_GET_HSI48_STATE() \ + (((uint32_t)(READ_BIT(RCC->CRRCR, RCC_CRRCR_HSI48ON)) != 0U) ? RCC_HSI48_ON : RCC_HSI48_OFF) + +/** @brief Enable or disable the HSI48M DIV6 OUT . + * @note After reset, the HSI48Mhz (divided by 6) output is not available + */ + +#define __HAL_RCC_HSI48M_DIV6_OUT_ENABLE() SET_BIT(RCC->CR, RCC_CRRCR_HSI48DIV6OUTEN) +#define __HAL_RCC_HSI48M_DIV6_OUT_DISABLE() CLEAR_BIT(RCC->CR, RCC_CRRCR_HSI48DIV6OUTEN) + +#endif /* STM32L071xx || STM32L081xx || */ + /* STM32L072xx || STM32L082xx || */ + /* STM32L073xx || STM32L083xx */ + + +/** + * @} + */ + +/* 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); + + +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); + + +#if defined(SYSCFG_CFGR3_ENREF_HSI48) +void HAL_RCCEx_EnableHSI48_VREFINT(void); +void HAL_RCCEx_DisableHSI48_VREFINT(void); +#endif /* SYSCFG_CFGR3_ENREF_HSI48 */ + +/** + * @} + */ + +#if defined(CRS) + +/** @addtogroup RCCEx_Exported_Functions_Group3 + * @{ + */ + +void HAL_RCCEx_CRSConfig(RCC_CRSInitTypeDef *pInit); +void HAL_RCCEx_CRSSoftwareSynchronizationGenerate(void); +void HAL_RCCEx_CRSGetSynchronizationInfo(RCC_CRSSynchroInfoTypeDef *pSynchroInfo); +uint32_t HAL_RCCEx_CRSWaitSynchronization(uint32_t Timeout); +void HAL_RCCEx_CRS_IRQHandler(void); +void HAL_RCCEx_CRS_SyncOkCallback(void); +void HAL_RCCEx_CRS_SyncWarnCallback(void); +void HAL_RCCEx_CRS_ExpectedSyncCallback(void); +void HAL_RCCEx_CRS_ErrorCallback(uint32_t Error); + +/** + * @} + */ + +#endif /* CRS */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32L0xx_HAL_RCC_EX_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h new file mode 100644 index 0000000..d0f8a19 --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h @@ -0,0 +1,1828 @@ +/** + ****************************************************************************** + * @file stm32l0xx_hal_tim.h + * @author MCD Application Team + * @brief Header file of TIM HAL module. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32L0xx_HAL_TIM_H +#define STM32L0xx_HAL_TIM_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal_def.h" + +/** @addtogroup STM32L0xx_HAL_Driver + * @{ + */ + +/** @addtogroup TIM + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup TIM_Exported_Types TIM Exported Types + * @{ + */ + +/** + * @brief TIM Time base Configuration Structure definition + */ +typedef struct +{ + uint32_t Prescaler; /*!< Specifies the prescaler value used to divide the TIM clock. + This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */ + + uint32_t CounterMode; /*!< Specifies the counter mode. + This parameter can be a value of @ref TIM_Counter_Mode */ + + uint32_t Period; /*!< Specifies the period value to be loaded into the active + Auto-Reload Register at the next update event. + This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF. */ + + uint32_t ClockDivision; /*!< Specifies the clock division. + This parameter can be a value of @ref TIM_ClockDivision */ + + uint32_t AutoReloadPreload; /*!< Specifies the auto-reload preload. + This parameter can be a value of @ref TIM_AutoReloadPreload */ +} TIM_Base_InitTypeDef; + +/** + * @brief TIM Output Compare Configuration Structure definition + */ +typedef struct +{ + uint32_t OCMode; /*!< Specifies the TIM mode. + This parameter can be a value of @ref TIM_Output_Compare_and_PWM_modes */ + + uint32_t Pulse; /*!< Specifies the pulse value to be loaded into the Capture Compare Register. + This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */ + + uint32_t OCPolarity; /*!< Specifies the output polarity. + This parameter can be a value of @ref TIM_Output_Compare_Polarity */ + + uint32_t OCFastMode; /*!< Specifies the Fast mode state. + This parameter can be a value of @ref TIM_Output_Fast_State + @note This parameter is valid only in PWM1 and PWM2 mode. */ +} TIM_OC_InitTypeDef; + +/** + * @brief TIM One Pulse Mode Configuration Structure definition + */ +typedef struct +{ + uint32_t OCMode; /*!< Specifies the TIM mode. + This parameter can be a value of @ref TIM_Output_Compare_and_PWM_modes */ + + uint32_t Pulse; /*!< Specifies the pulse value to be loaded into the Capture Compare Register. + This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */ + + uint32_t OCPolarity; /*!< Specifies the output polarity. + This parameter can be a value of @ref TIM_Output_Compare_Polarity */ + + uint32_t ICPolarity; /*!< Specifies the active edge of the input signal. + This parameter can be a value of @ref TIM_Input_Capture_Polarity */ + + uint32_t ICSelection; /*!< Specifies the input. + This parameter can be a value of @ref TIM_Input_Capture_Selection */ + + uint32_t ICFilter; /*!< Specifies the input capture filter. + This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */ +} TIM_OnePulse_InitTypeDef; + +/** + * @brief TIM Input Capture Configuration Structure definition + */ +typedef struct +{ + uint32_t ICPolarity; /*!< Specifies the active edge of the input signal. + This parameter can be a value of @ref TIM_Input_Capture_Polarity */ + + uint32_t ICSelection; /*!< Specifies the input. + This parameter can be a value of @ref TIM_Input_Capture_Selection */ + + uint32_t ICPrescaler; /*!< Specifies the Input Capture Prescaler. + This parameter can be a value of @ref TIM_Input_Capture_Prescaler */ + + uint32_t ICFilter; /*!< Specifies the input capture filter. + This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */ +} TIM_IC_InitTypeDef; + +/** + * @brief TIM Encoder Configuration Structure definition + */ +typedef struct +{ + uint32_t EncoderMode; /*!< Specifies the active edge of the input signal. + This parameter can be a value of @ref TIM_Encoder_Mode */ + + uint32_t IC1Polarity; /*!< Specifies the active edge of the input signal. + This parameter can be a value of @ref TIM_Encoder_Input_Polarity */ + + uint32_t IC1Selection; /*!< Specifies the input. + This parameter can be a value of @ref TIM_Input_Capture_Selection */ + + uint32_t IC1Prescaler; /*!< Specifies the Input Capture Prescaler. + This parameter can be a value of @ref TIM_Input_Capture_Prescaler */ + + uint32_t IC1Filter; /*!< Specifies the input capture filter. + This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */ + + uint32_t IC2Polarity; /*!< Specifies the active edge of the input signal. + This parameter can be a value of @ref TIM_Encoder_Input_Polarity */ + + uint32_t IC2Selection; /*!< Specifies the input. + This parameter can be a value of @ref TIM_Input_Capture_Selection */ + + uint32_t IC2Prescaler; /*!< Specifies the Input Capture Prescaler. + This parameter can be a value of @ref TIM_Input_Capture_Prescaler */ + + uint32_t IC2Filter; /*!< Specifies the input capture filter. + This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */ +} TIM_Encoder_InitTypeDef; + +/** + * @brief Clock Configuration Handle Structure definition + */ +typedef struct +{ + uint32_t ClockSource; /*!< TIM clock sources + This parameter can be a value of @ref TIM_Clock_Source */ + uint32_t ClockPolarity; /*!< TIM clock polarity + This parameter can be a value of @ref TIM_Clock_Polarity */ + uint32_t ClockPrescaler; /*!< TIM clock prescaler + This parameter can be a value of @ref TIM_Clock_Prescaler */ + uint32_t ClockFilter; /*!< TIM clock filter + This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */ +} TIM_ClockConfigTypeDef; + +/** + * @brief TIM Clear Input Configuration Handle Structure definition + */ +typedef struct +{ + uint32_t ClearInputState; /*!< TIM clear Input state + This parameter can be ENABLE or DISABLE */ + uint32_t ClearInputSource; /*!< TIM clear Input sources + This parameter can be a value of @ref TIM_ClearInput_Source */ + uint32_t ClearInputPolarity; /*!< TIM Clear Input polarity + This parameter can be a value of @ref TIM_ClearInput_Polarity */ + uint32_t ClearInputPrescaler; /*!< TIM Clear Input prescaler + This parameter must be 0: When OCRef clear feature is used with ETR source, + ETR prescaler must be off */ + uint32_t ClearInputFilter; /*!< TIM Clear Input filter + This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */ +} TIM_ClearInputConfigTypeDef; + +/** + * @brief TIM Master configuration Structure definition + */ +typedef struct +{ + uint32_t MasterOutputTrigger; /*!< Trigger output (TRGO) selection + This parameter can be a value of @ref TIM_Master_Mode_Selection */ + uint32_t MasterSlaveMode; /*!< Master/slave mode selection + This parameter can be a value of @ref TIM_Master_Slave_Mode + @note When the Master/slave mode is enabled, the effect of + an event on the trigger input (TRGI) is delayed to allow a + perfect synchronization between the current timer and its + slaves (through TRGO). It is not mandatory in case of timer + synchronization mode. */ +} TIM_MasterConfigTypeDef; + +/** + * @brief TIM Slave configuration Structure definition + */ +typedef struct +{ + uint32_t SlaveMode; /*!< Slave mode selection + This parameter can be a value of @ref TIM_Slave_Mode */ + uint32_t InputTrigger; /*!< Input Trigger source + This parameter can be a value of @ref TIM_Trigger_Selection */ + uint32_t TriggerPolarity; /*!< Input Trigger polarity + This parameter can be a value of @ref TIM_Trigger_Polarity */ + uint32_t TriggerPrescaler; /*!< Input trigger prescaler + This parameter can be a value of @ref TIM_Trigger_Prescaler */ + uint32_t TriggerFilter; /*!< Input trigger filter + This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */ + +} TIM_SlaveConfigTypeDef; + +/** + * @brief HAL State structures definition + */ +typedef enum +{ + HAL_TIM_STATE_RESET = 0x00U, /*!< Peripheral not yet initialized or disabled */ + HAL_TIM_STATE_READY = 0x01U, /*!< Peripheral Initialized and ready for use */ + HAL_TIM_STATE_BUSY = 0x02U, /*!< An internal process is ongoing */ + HAL_TIM_STATE_TIMEOUT = 0x03U, /*!< Timeout state */ + HAL_TIM_STATE_ERROR = 0x04U /*!< Reception process is ongoing */ +} HAL_TIM_StateTypeDef; + +/** + * @brief TIM Channel States definition + */ +typedef enum +{ + HAL_TIM_CHANNEL_STATE_RESET = 0x00U, /*!< TIM Channel initial state */ + HAL_TIM_CHANNEL_STATE_READY = 0x01U, /*!< TIM Channel ready for use */ + HAL_TIM_CHANNEL_STATE_BUSY = 0x02U, /*!< An internal process is ongoing on the TIM channel */ +} HAL_TIM_ChannelStateTypeDef; + +/** + * @brief DMA Burst States definition + */ +typedef enum +{ + HAL_DMA_BURST_STATE_RESET = 0x00U, /*!< DMA Burst initial state */ + HAL_DMA_BURST_STATE_READY = 0x01U, /*!< DMA Burst ready for use */ + HAL_DMA_BURST_STATE_BUSY = 0x02U, /*!< Ongoing DMA Burst */ +} HAL_TIM_DMABurstStateTypeDef; + +/** + * @brief HAL Active channel structures definition + */ +typedef enum +{ + HAL_TIM_ACTIVE_CHANNEL_1 = 0x01U, /*!< The active channel is 1 */ + HAL_TIM_ACTIVE_CHANNEL_2 = 0x02U, /*!< The active channel is 2 */ + HAL_TIM_ACTIVE_CHANNEL_3 = 0x04U, /*!< The active channel is 3 */ + HAL_TIM_ACTIVE_CHANNEL_4 = 0x08U, /*!< The active channel is 4 */ + HAL_TIM_ACTIVE_CHANNEL_CLEARED = 0x00U /*!< All active channels cleared */ +} HAL_TIM_ActiveChannel; + +/** + * @brief TIM Time Base Handle Structure definition + */ +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +typedef struct __TIM_HandleTypeDef +#else +typedef struct +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +{ + TIM_TypeDef *Instance; /*!< Register base address */ + TIM_Base_InitTypeDef Init; /*!< TIM Time Base required parameters */ + HAL_TIM_ActiveChannel Channel; /*!< Active channel */ + DMA_HandleTypeDef *hdma[7]; /*!< DMA Handlers array + This array is accessed by a @ref DMA_Handle_index */ + HAL_LockTypeDef Lock; /*!< Locking object */ + __IO HAL_TIM_StateTypeDef State; /*!< TIM operation state */ + __IO HAL_TIM_ChannelStateTypeDef ChannelState[4]; /*!< TIM channel operation state */ + __IO HAL_TIM_DMABurstStateTypeDef DMABurstState; /*!< DMA burst operation state */ + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + void (* Base_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Base Msp Init Callback */ + void (* Base_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Base Msp DeInit Callback */ + void (* IC_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM IC Msp Init Callback */ + void (* IC_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM IC Msp DeInit Callback */ + void (* OC_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM OC Msp Init Callback */ + void (* OC_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM OC Msp DeInit Callback */ + void (* PWM_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM PWM Msp Init Callback */ + void (* PWM_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM PWM Msp DeInit Callback */ + void (* OnePulse_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM One Pulse Msp Init Callback */ + void (* OnePulse_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM One Pulse Msp DeInit Callback */ + void (* Encoder_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Encoder Msp Init Callback */ + void (* Encoder_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Encoder Msp DeInit Callback */ + void (* PeriodElapsedCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Period Elapsed Callback */ + void (* PeriodElapsedHalfCpltCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Period Elapsed half complete Callback */ + void (* TriggerCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Trigger Callback */ + void (* TriggerHalfCpltCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Trigger half complete Callback */ + void (* IC_CaptureCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Input Capture Callback */ + void (* IC_CaptureHalfCpltCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Input Capture half complete Callback */ + void (* OC_DelayElapsedCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Output Compare Delay Elapsed Callback */ + void (* PWM_PulseFinishedCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM PWM Pulse Finished Callback */ + void (* PWM_PulseFinishedHalfCpltCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM PWM Pulse Finished half complete Callback */ + void (* ErrorCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Error Callback */ +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +} TIM_HandleTypeDef; + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +/** + * @brief HAL TIM Callback ID enumeration definition + */ +typedef enum +{ + HAL_TIM_BASE_MSPINIT_CB_ID = 0x00U /*!< TIM Base MspInit Callback ID */ + , HAL_TIM_BASE_MSPDEINIT_CB_ID = 0x01U /*!< TIM Base MspDeInit Callback ID */ + , HAL_TIM_IC_MSPINIT_CB_ID = 0x02U /*!< TIM IC MspInit Callback ID */ + , HAL_TIM_IC_MSPDEINIT_CB_ID = 0x03U /*!< TIM IC MspDeInit Callback ID */ + , HAL_TIM_OC_MSPINIT_CB_ID = 0x04U /*!< TIM OC MspInit Callback ID */ + , HAL_TIM_OC_MSPDEINIT_CB_ID = 0x05U /*!< TIM OC MspDeInit Callback ID */ + , HAL_TIM_PWM_MSPINIT_CB_ID = 0x06U /*!< TIM PWM MspInit Callback ID */ + , HAL_TIM_PWM_MSPDEINIT_CB_ID = 0x07U /*!< TIM PWM MspDeInit Callback ID */ + , HAL_TIM_ONE_PULSE_MSPINIT_CB_ID = 0x08U /*!< TIM One Pulse MspInit Callback ID */ + , HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID = 0x09U /*!< TIM One Pulse MspDeInit Callback ID */ + , HAL_TIM_ENCODER_MSPINIT_CB_ID = 0x0AU /*!< TIM Encoder MspInit Callback ID */ + , HAL_TIM_ENCODER_MSPDEINIT_CB_ID = 0x0BU /*!< TIM Encoder MspDeInit Callback ID */ + , HAL_TIM_PERIOD_ELAPSED_CB_ID = 0x0EU /*!< TIM Period Elapsed Callback ID */ + , HAL_TIM_PERIOD_ELAPSED_HALF_CB_ID = 0x0FU /*!< TIM Period Elapsed half complete Callback ID */ + , HAL_TIM_TRIGGER_CB_ID = 0x10U /*!< TIM Trigger Callback ID */ + , HAL_TIM_TRIGGER_HALF_CB_ID = 0x11U /*!< TIM Trigger half complete Callback ID */ + + , HAL_TIM_IC_CAPTURE_CB_ID = 0x12U /*!< TIM Input Capture Callback ID */ + , HAL_TIM_IC_CAPTURE_HALF_CB_ID = 0x13U /*!< TIM Input Capture half complete Callback ID */ + , HAL_TIM_OC_DELAY_ELAPSED_CB_ID = 0x14U /*!< TIM Output Compare Delay Elapsed Callback ID */ + , HAL_TIM_PWM_PULSE_FINISHED_CB_ID = 0x15U /*!< TIM PWM Pulse Finished Callback ID */ + , HAL_TIM_PWM_PULSE_FINISHED_HALF_CB_ID = 0x16U /*!< TIM PWM Pulse Finished half complete Callback ID */ + , HAL_TIM_ERROR_CB_ID = 0x17U /*!< TIM Error Callback ID */ +} HAL_TIM_CallbackIDTypeDef; + +/** + * @brief HAL TIM Callback pointer definition + */ +typedef void (*pTIM_CallbackTypeDef)(TIM_HandleTypeDef *htim); /*!< pointer to the TIM callback function */ + +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + +/** + * @} + */ +/* End of exported types -----------------------------------------------------*/ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup TIM_Exported_Constants TIM Exported Constants + * @{ + */ + +/** @defgroup TIM_ClearInput_Source TIM Clear Input Source + * @{ + */ +#define TIM_CLEARINPUTSOURCE_NONE 0x00000000U /*!< OCREF_CLR is disabled */ +#define TIM_CLEARINPUTSOURCE_ETR 0x00000001U /*!< OCREF_CLR is connected to ETRF input */ +/** + * @} + */ + +/** @defgroup TIM_DMA_Base_address TIM DMA Base Address + * @{ + */ +#define TIM_DMABASE_CR1 0x00000000U +#define TIM_DMABASE_CR2 0x00000001U +#define TIM_DMABASE_SMCR 0x00000002U +#define TIM_DMABASE_DIER 0x00000003U +#define TIM_DMABASE_SR 0x00000004U +#define TIM_DMABASE_EGR 0x00000005U +#define TIM_DMABASE_CCMR1 0x00000006U +#define TIM_DMABASE_CCMR2 0x00000007U +#define TIM_DMABASE_CCER 0x00000008U +#define TIM_DMABASE_CNT 0x00000009U +#define TIM_DMABASE_PSC 0x0000000AU +#define TIM_DMABASE_ARR 0x0000000BU +#define TIM_DMABASE_CCR1 0x0000000DU +#define TIM_DMABASE_CCR2 0x0000000EU +#define TIM_DMABASE_CCR3 0x0000000FU +#define TIM_DMABASE_CCR4 0x00000010U +#define TIM_DMABASE_DCR 0x00000012U +#define TIM_DMABASE_DMAR 0x00000013U +#define TIM_DMABASE_OR 0x00000014U +/** + * @} + */ + +/** @defgroup TIM_Event_Source TIM Event Source + * @{ + */ +#define TIM_EVENTSOURCE_UPDATE TIM_EGR_UG /*!< Reinitialize the counter and generates an update of the registers */ +#define TIM_EVENTSOURCE_CC1 TIM_EGR_CC1G /*!< A capture/compare event is generated on channel 1 */ +#define TIM_EVENTSOURCE_CC2 TIM_EGR_CC2G /*!< A capture/compare event is generated on channel 2 */ +#define TIM_EVENTSOURCE_CC3 TIM_EGR_CC3G /*!< A capture/compare event is generated on channel 3 */ +#define TIM_EVENTSOURCE_CC4 TIM_EGR_CC4G /*!< A capture/compare event is generated on channel 4 */ +#define TIM_EVENTSOURCE_TRIGGER TIM_EGR_TG /*!< A trigger event is generated */ +/** + * @} + */ + +/** @defgroup TIM_Input_Channel_Polarity TIM Input Channel polarity + * @{ + */ +#define TIM_INPUTCHANNELPOLARITY_RISING 0x00000000U /*!< Polarity for TIx source */ +#define TIM_INPUTCHANNELPOLARITY_FALLING TIM_CCER_CC1P /*!< Polarity for TIx source */ +#define TIM_INPUTCHANNELPOLARITY_BOTHEDGE (TIM_CCER_CC1P | TIM_CCER_CC1NP) /*!< Polarity for TIx source */ +/** + * @} + */ + +/** @defgroup TIM_ETR_Polarity TIM ETR Polarity + * @{ + */ +#define TIM_ETRPOLARITY_INVERTED TIM_SMCR_ETP /*!< Polarity for ETR source */ +#define TIM_ETRPOLARITY_NONINVERTED 0x00000000U /*!< Polarity for ETR source */ +/** + * @} + */ + +/** @defgroup TIM_ETR_Prescaler TIM ETR Prescaler + * @{ + */ +#define TIM_ETRPRESCALER_DIV1 0x00000000U /*!< No prescaler is used */ +#define TIM_ETRPRESCALER_DIV2 TIM_SMCR_ETPS_0 /*!< ETR input source is divided by 2 */ +#define TIM_ETRPRESCALER_DIV4 TIM_SMCR_ETPS_1 /*!< ETR input source is divided by 4 */ +#define TIM_ETRPRESCALER_DIV8 TIM_SMCR_ETPS /*!< ETR input source is divided by 8 */ +/** + * @} + */ + +/** @defgroup TIM_Counter_Mode TIM Counter Mode + * @{ + */ +#define TIM_COUNTERMODE_UP 0x00000000U /*!< Counter used as up-counter */ +#define TIM_COUNTERMODE_DOWN TIM_CR1_DIR /*!< Counter used as down-counter */ +#define TIM_COUNTERMODE_CENTERALIGNED1 TIM_CR1_CMS_0 /*!< Center-aligned mode 1 */ +#define TIM_COUNTERMODE_CENTERALIGNED2 TIM_CR1_CMS_1 /*!< Center-aligned mode 2 */ +#define TIM_COUNTERMODE_CENTERALIGNED3 TIM_CR1_CMS /*!< Center-aligned mode 3 */ +/** + * @} + */ + +/** @defgroup TIM_ClockDivision TIM Clock Division + * @{ + */ +#define TIM_CLOCKDIVISION_DIV1 0x00000000U /*!< Clock division: tDTS=tCK_INT */ +#define TIM_CLOCKDIVISION_DIV2 TIM_CR1_CKD_0 /*!< Clock division: tDTS=2*tCK_INT */ +#define TIM_CLOCKDIVISION_DIV4 TIM_CR1_CKD_1 /*!< Clock division: tDTS=4*tCK_INT */ +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_State TIM Output Compare State + * @{ + */ +#define TIM_OUTPUTSTATE_DISABLE 0x00000000U /*!< Capture/Compare 1 output disabled */ +#define TIM_OUTPUTSTATE_ENABLE TIM_CCER_CC1E /*!< Capture/Compare 1 output enabled */ +/** + * @} + */ + +/** @defgroup TIM_AutoReloadPreload TIM Auto-Reload Preload + * @{ + */ +#define TIM_AUTORELOAD_PRELOAD_DISABLE 0x00000000U /*!< TIMx_ARR register is not buffered */ +#define TIM_AUTORELOAD_PRELOAD_ENABLE TIM_CR1_ARPE /*!< TIMx_ARR register is buffered */ + +/** + * @} + */ + +/** @defgroup TIM_Output_Fast_State TIM Output Fast State + * @{ + */ +#define TIM_OCFAST_DISABLE 0x00000000U /*!< Output Compare fast disable */ +#define TIM_OCFAST_ENABLE TIM_CCMR1_OC1FE /*!< Output Compare fast enable */ +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_N_State TIM Complementary Output Compare State + * @{ + */ +#define TIM_OUTPUTNSTATE_DISABLE 0x00000000U /*!< OCxN is disabled */ +#define TIM_OUTPUTNSTATE_ENABLE TIM_CCER_CC1NE /*!< OCxN is enabled */ +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_Polarity TIM Output Compare Polarity + * @{ + */ +#define TIM_OCPOLARITY_HIGH 0x00000000U /*!< Capture/Compare output polarity */ +#define TIM_OCPOLARITY_LOW TIM_CCER_CC1P /*!< Capture/Compare output polarity */ +/** + * @} + */ + +/** @defgroup TIM_Input_Capture_Polarity TIM Input Capture Polarity + * @{ + */ +#define TIM_ICPOLARITY_RISING TIM_INPUTCHANNELPOLARITY_RISING /*!< Capture triggered by rising edge on timer input */ +#define TIM_ICPOLARITY_FALLING TIM_INPUTCHANNELPOLARITY_FALLING /*!< Capture triggered by falling edge on timer input */ +#define TIM_ICPOLARITY_BOTHEDGE TIM_INPUTCHANNELPOLARITY_BOTHEDGE /*!< Capture triggered by both rising and falling edges on timer input*/ +/** + * @} + */ + +/** @defgroup TIM_Encoder_Input_Polarity TIM Encoder Input Polarity + * @{ + */ +#define TIM_ENCODERINPUTPOLARITY_RISING TIM_INPUTCHANNELPOLARITY_RISING /*!< Encoder input with rising edge polarity */ +#define TIM_ENCODERINPUTPOLARITY_FALLING TIM_INPUTCHANNELPOLARITY_FALLING /*!< Encoder input with falling edge polarity */ +/** + * @} + */ + +/** @defgroup TIM_Input_Capture_Selection TIM Input Capture Selection + * @{ + */ +#define TIM_ICSELECTION_DIRECTTI TIM_CCMR1_CC1S_0 /*!< TIM Input 1, 2, 3 or 4 is selected to be connected to IC1, IC2, IC3 or IC4, respectively */ +#define TIM_ICSELECTION_INDIRECTTI TIM_CCMR1_CC1S_1 /*!< TIM Input 1, 2, 3 or 4 is selected to be connected to IC2, IC1, IC4 or IC3, respectively */ +#define TIM_ICSELECTION_TRC TIM_CCMR1_CC1S /*!< TIM Input 1, 2, 3 or 4 is selected to be connected to TRC */ +/** + * @} + */ + +/** @defgroup TIM_Input_Capture_Prescaler TIM Input Capture Prescaler + * @{ + */ +#define TIM_ICPSC_DIV1 0x00000000U /*!< Capture performed each time an edge is detected on the capture input */ +#define TIM_ICPSC_DIV2 TIM_CCMR1_IC1PSC_0 /*!< Capture performed once every 2 events */ +#define TIM_ICPSC_DIV4 TIM_CCMR1_IC1PSC_1 /*!< Capture performed once every 4 events */ +#define TIM_ICPSC_DIV8 TIM_CCMR1_IC1PSC /*!< Capture performed once every 8 events */ +/** + * @} + */ + +/** @defgroup TIM_One_Pulse_Mode TIM One Pulse Mode + * @{ + */ +#define TIM_OPMODE_SINGLE TIM_CR1_OPM /*!< Counter stops counting at the next update event */ +#define TIM_OPMODE_REPETITIVE 0x00000000U /*!< Counter is not stopped at update event */ +/** + * @} + */ + +/** @defgroup TIM_Encoder_Mode TIM Encoder Mode + * @{ + */ +#define TIM_ENCODERMODE_TI1 TIM_SMCR_SMS_0 /*!< Quadrature encoder mode 1, x2 mode, counts up/down on TI1FP1 edge depending on TI2FP2 level */ +#define TIM_ENCODERMODE_TI2 TIM_SMCR_SMS_1 /*!< Quadrature encoder mode 2, x2 mode, counts up/down on TI2FP2 edge depending on TI1FP1 level. */ +#define TIM_ENCODERMODE_TI12 (TIM_SMCR_SMS_1 | TIM_SMCR_SMS_0) /*!< Quadrature encoder mode 3, x4 mode, counts up/down on both TI1FP1 and TI2FP2 edges depending on the level of the other input. */ +/** + * @} + */ + +/** @defgroup TIM_Interrupt_definition TIM interrupt Definition + * @{ + */ +#define TIM_IT_UPDATE TIM_DIER_UIE /*!< Update interrupt */ +#define TIM_IT_CC1 TIM_DIER_CC1IE /*!< Capture/Compare 1 interrupt */ +#define TIM_IT_CC2 TIM_DIER_CC2IE /*!< Capture/Compare 2 interrupt */ +#define TIM_IT_CC3 TIM_DIER_CC3IE /*!< Capture/Compare 3 interrupt */ +#define TIM_IT_CC4 TIM_DIER_CC4IE /*!< Capture/Compare 4 interrupt */ +#define TIM_IT_TRIGGER TIM_DIER_TIE /*!< Trigger interrupt */ +/** + * @} + */ + +/** @defgroup TIM_DMA_sources TIM DMA Sources + * @{ + */ +#define TIM_DMA_UPDATE TIM_DIER_UDE /*!< DMA request is triggered by the update event */ +#define TIM_DMA_CC1 TIM_DIER_CC1DE /*!< DMA request is triggered by the capture/compare macth 1 event */ +#define TIM_DMA_CC2 TIM_DIER_CC2DE /*!< DMA request is triggered by the capture/compare macth 2 event event */ +#define TIM_DMA_CC3 TIM_DIER_CC3DE /*!< DMA request is triggered by the capture/compare macth 3 event event */ +#define TIM_DMA_CC4 TIM_DIER_CC4DE /*!< DMA request is triggered by the capture/compare macth 4 event event */ +#define TIM_DMA_TRIGGER TIM_DIER_TDE /*!< DMA request is triggered by the trigger event */ +/** + * @} + */ + +/** @defgroup TIM_Flag_definition TIM Flag Definition + * @{ + */ +#define TIM_FLAG_UPDATE TIM_SR_UIF /*!< Update interrupt flag */ +#define TIM_FLAG_CC1 TIM_SR_CC1IF /*!< Capture/Compare 1 interrupt flag */ +#define TIM_FLAG_CC2 TIM_SR_CC2IF /*!< Capture/Compare 2 interrupt flag */ +#define TIM_FLAG_CC3 TIM_SR_CC3IF /*!< Capture/Compare 3 interrupt flag */ +#define TIM_FLAG_CC4 TIM_SR_CC4IF /*!< Capture/Compare 4 interrupt flag */ +#define TIM_FLAG_TRIGGER TIM_SR_TIF /*!< Trigger interrupt flag */ +#define TIM_FLAG_CC1OF TIM_SR_CC1OF /*!< Capture 1 overcapture flag */ +#define TIM_FLAG_CC2OF TIM_SR_CC2OF /*!< Capture 2 overcapture flag */ +#define TIM_FLAG_CC3OF TIM_SR_CC3OF /*!< Capture 3 overcapture flag */ +#define TIM_FLAG_CC4OF TIM_SR_CC4OF /*!< Capture 4 overcapture flag */ +/** + * @} + */ + +/** @defgroup TIM_Channel TIM Channel + * @{ + */ +#define TIM_CHANNEL_1 0x00000000U /*!< Capture/compare channel 1 identifier */ +#define TIM_CHANNEL_2 0x00000004U /*!< Capture/compare channel 2 identifier */ +#define TIM_CHANNEL_3 0x00000008U /*!< Capture/compare channel 3 identifier */ +#define TIM_CHANNEL_4 0x0000000CU /*!< Capture/compare channel 4 identifier */ +#define TIM_CHANNEL_ALL 0x0000003CU /*!< Global Capture/compare channel identifier */ +/** + * @} + */ + +/** @defgroup TIM_Clock_Source TIM Clock Source + * @{ + */ +#define TIM_CLOCKSOURCE_ETRMODE2 TIM_SMCR_ETPS_1 /*!< External clock source mode 2 */ +#define TIM_CLOCKSOURCE_INTERNAL TIM_SMCR_ETPS_0 /*!< Internal clock source */ +#define TIM_CLOCKSOURCE_ITR0 TIM_TS_ITR0 /*!< External clock source mode 1 (ITR0) */ +#define TIM_CLOCKSOURCE_ITR1 TIM_TS_ITR1 /*!< External clock source mode 1 (ITR1) */ +#define TIM_CLOCKSOURCE_ITR2 TIM_TS_ITR2 /*!< External clock source mode 1 (ITR2) */ +#define TIM_CLOCKSOURCE_ITR3 TIM_TS_ITR3 /*!< External clock source mode 1 (ITR3) */ +#define TIM_CLOCKSOURCE_TI1ED TIM_TS_TI1F_ED /*!< External clock source mode 1 (TTI1FP1 + edge detect.) */ +#define TIM_CLOCKSOURCE_TI1 TIM_TS_TI1FP1 /*!< External clock source mode 1 (TTI1FP1) */ +#define TIM_CLOCKSOURCE_TI2 TIM_TS_TI2FP2 /*!< External clock source mode 1 (TTI2FP2) */ +#define TIM_CLOCKSOURCE_ETRMODE1 TIM_TS_ETRF /*!< External clock source mode 1 (ETRF) */ +/** + * @} + */ + +/** @defgroup TIM_Clock_Polarity TIM Clock Polarity + * @{ + */ +#define TIM_CLOCKPOLARITY_INVERTED TIM_ETRPOLARITY_INVERTED /*!< Polarity for ETRx clock sources */ +#define TIM_CLOCKPOLARITY_NONINVERTED TIM_ETRPOLARITY_NONINVERTED /*!< Polarity for ETRx clock sources */ +#define TIM_CLOCKPOLARITY_RISING TIM_INPUTCHANNELPOLARITY_RISING /*!< Polarity for TIx clock sources */ +#define TIM_CLOCKPOLARITY_FALLING TIM_INPUTCHANNELPOLARITY_FALLING /*!< Polarity for TIx clock sources */ +#define TIM_CLOCKPOLARITY_BOTHEDGE TIM_INPUTCHANNELPOLARITY_BOTHEDGE /*!< Polarity for TIx clock sources */ +/** + * @} + */ + +/** @defgroup TIM_Clock_Prescaler TIM Clock Prescaler + * @{ + */ +#define TIM_CLOCKPRESCALER_DIV1 TIM_ETRPRESCALER_DIV1 /*!< No prescaler is used */ +#define TIM_CLOCKPRESCALER_DIV2 TIM_ETRPRESCALER_DIV2 /*!< Prescaler for External ETR Clock: Capture performed once every 2 events. */ +#define TIM_CLOCKPRESCALER_DIV4 TIM_ETRPRESCALER_DIV4 /*!< Prescaler for External ETR Clock: Capture performed once every 4 events. */ +#define TIM_CLOCKPRESCALER_DIV8 TIM_ETRPRESCALER_DIV8 /*!< Prescaler for External ETR Clock: Capture performed once every 8 events. */ +/** + * @} + */ + +/** @defgroup TIM_ClearInput_Polarity TIM Clear Input Polarity + * @{ + */ +#define TIM_CLEARINPUTPOLARITY_INVERTED TIM_ETRPOLARITY_INVERTED /*!< Polarity for ETRx pin */ +#define TIM_CLEARINPUTPOLARITY_NONINVERTED TIM_ETRPOLARITY_NONINVERTED /*!< Polarity for ETRx pin */ +/** + * @} + */ + +/** @defgroup TIM_ClearInput_Prescaler TIM Clear Input Prescaler + * @{ + */ +#define TIM_CLEARINPUTPRESCALER_DIV1 TIM_ETRPRESCALER_DIV1 /*!< No prescaler is used */ +#define TIM_CLEARINPUTPRESCALER_DIV2 TIM_ETRPRESCALER_DIV2 /*!< Prescaler for External ETR pin: Capture performed once every 2 events. */ +#define TIM_CLEARINPUTPRESCALER_DIV4 TIM_ETRPRESCALER_DIV4 /*!< Prescaler for External ETR pin: Capture performed once every 4 events. */ +#define TIM_CLEARINPUTPRESCALER_DIV8 TIM_ETRPRESCALER_DIV8 /*!< Prescaler for External ETR pin: Capture performed once every 8 events. */ +/** + * @} + */ + +/** @defgroup TIM_Master_Mode_Selection TIM Master Mode Selection + * @{ + */ +#define TIM_TRGO_RESET 0x00000000U /*!< TIMx_EGR.UG bit is used as trigger output (TRGO) */ +#define TIM_TRGO_ENABLE TIM_CR2_MMS_0 /*!< TIMx_CR1.CEN bit is used as trigger output (TRGO) */ +#define TIM_TRGO_UPDATE TIM_CR2_MMS_1 /*!< Update event is used as trigger output (TRGO) */ +#define TIM_TRGO_OC1 (TIM_CR2_MMS_1 | TIM_CR2_MMS_0) /*!< Capture or a compare match 1 is used as trigger output (TRGO) */ +#define TIM_TRGO_OC1REF TIM_CR2_MMS_2 /*!< OC1REF signal is used as trigger output (TRGO) */ +#define TIM_TRGO_OC2REF (TIM_CR2_MMS_2 | TIM_CR2_MMS_0) /*!< OC2REF signal is used as trigger output(TRGO) */ +#define TIM_TRGO_OC3REF (TIM_CR2_MMS_2 | TIM_CR2_MMS_1) /*!< OC3REF signal is used as trigger output(TRGO) */ +#define TIM_TRGO_OC4REF (TIM_CR2_MMS_2 | TIM_CR2_MMS_1 | TIM_CR2_MMS_0) /*!< OC4REF signal is used as trigger output(TRGO) */ +/** + * @} + */ + +/** @defgroup TIM_Master_Slave_Mode TIM Master/Slave Mode + * @{ + */ +#define TIM_MASTERSLAVEMODE_ENABLE TIM_SMCR_MSM /*!< No action */ +#define TIM_MASTERSLAVEMODE_DISABLE 0x00000000U /*!< Master/slave mode is selected */ +/** + * @} + */ + +/** @defgroup TIM_Slave_Mode TIM Slave mode + * @{ + */ +#define TIM_SLAVEMODE_DISABLE 0x00000000U /*!< Slave mode disabled */ +#define TIM_SLAVEMODE_RESET TIM_SMCR_SMS_2 /*!< Reset Mode */ +#define TIM_SLAVEMODE_GATED (TIM_SMCR_SMS_2 | TIM_SMCR_SMS_0) /*!< Gated Mode */ +#define TIM_SLAVEMODE_TRIGGER (TIM_SMCR_SMS_2 | TIM_SMCR_SMS_1) /*!< Trigger Mode */ +#define TIM_SLAVEMODE_EXTERNAL1 (TIM_SMCR_SMS_2 | TIM_SMCR_SMS_1 | TIM_SMCR_SMS_0) /*!< External Clock Mode 1 */ +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_and_PWM_modes TIM Output Compare and PWM Modes + * @{ + */ +#define TIM_OCMODE_TIMING 0x00000000U /*!< Frozen */ +#define TIM_OCMODE_ACTIVE TIM_CCMR1_OC1M_0 /*!< Set channel to active level on match */ +#define TIM_OCMODE_INACTIVE TIM_CCMR1_OC1M_1 /*!< Set channel to inactive level on match */ +#define TIM_OCMODE_TOGGLE (TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0) /*!< Toggle */ +#define TIM_OCMODE_PWM1 (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1) /*!< PWM mode 1 */ +#define TIM_OCMODE_PWM2 (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0) /*!< PWM mode 2 */ +#define TIM_OCMODE_FORCED_ACTIVE (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_0) /*!< Force active level */ +#define TIM_OCMODE_FORCED_INACTIVE TIM_CCMR1_OC1M_2 /*!< Force inactive level */ +/** + * @} + */ + +/** @defgroup TIM_Trigger_Selection TIM Trigger Selection + * @{ + */ +#define TIM_TS_ITR0 0x00000000U /*!< Internal Trigger 0 (ITR0) */ +#define TIM_TS_ITR1 TIM_SMCR_TS_0 /*!< Internal Trigger 1 (ITR1) */ +#define TIM_TS_ITR2 TIM_SMCR_TS_1 /*!< Internal Trigger 2 (ITR2) */ +#define TIM_TS_ITR3 (TIM_SMCR_TS_0 | TIM_SMCR_TS_1) /*!< Internal Trigger 3 (ITR3) */ +#define TIM_TS_TI1F_ED TIM_SMCR_TS_2 /*!< TI1 Edge Detector (TI1F_ED) */ +#define TIM_TS_TI1FP1 (TIM_SMCR_TS_0 | TIM_SMCR_TS_2) /*!< Filtered Timer Input 1 (TI1FP1) */ +#define TIM_TS_TI2FP2 (TIM_SMCR_TS_1 | TIM_SMCR_TS_2) /*!< Filtered Timer Input 2 (TI2FP2) */ +#define TIM_TS_ETRF (TIM_SMCR_TS_0 | TIM_SMCR_TS_1 | TIM_SMCR_TS_2) /*!< Filtered External Trigger input (ETRF) */ +#define TIM_TS_NONE 0x0000FFFFU /*!< No trigger selected */ +/** + * @} + */ + +/** @defgroup TIM_Trigger_Polarity TIM Trigger Polarity + * @{ + */ +#define TIM_TRIGGERPOLARITY_INVERTED TIM_ETRPOLARITY_INVERTED /*!< Polarity for ETRx trigger sources */ +#define TIM_TRIGGERPOLARITY_NONINVERTED TIM_ETRPOLARITY_NONINVERTED /*!< Polarity for ETRx trigger sources */ +#define TIM_TRIGGERPOLARITY_RISING TIM_INPUTCHANNELPOLARITY_RISING /*!< Polarity for TIxFPx or TI1_ED trigger sources */ +#define TIM_TRIGGERPOLARITY_FALLING TIM_INPUTCHANNELPOLARITY_FALLING /*!< Polarity for TIxFPx or TI1_ED trigger sources */ +#define TIM_TRIGGERPOLARITY_BOTHEDGE TIM_INPUTCHANNELPOLARITY_BOTHEDGE /*!< Polarity for TIxFPx or TI1_ED trigger sources */ +/** + * @} + */ + +/** @defgroup TIM_Trigger_Prescaler TIM Trigger Prescaler + * @{ + */ +#define TIM_TRIGGERPRESCALER_DIV1 TIM_ETRPRESCALER_DIV1 /*!< No prescaler is used */ +#define TIM_TRIGGERPRESCALER_DIV2 TIM_ETRPRESCALER_DIV2 /*!< Prescaler for External ETR Trigger: Capture performed once every 2 events. */ +#define TIM_TRIGGERPRESCALER_DIV4 TIM_ETRPRESCALER_DIV4 /*!< Prescaler for External ETR Trigger: Capture performed once every 4 events. */ +#define TIM_TRIGGERPRESCALER_DIV8 TIM_ETRPRESCALER_DIV8 /*!< Prescaler for External ETR Trigger: Capture performed once every 8 events. */ +/** + * @} + */ + +/** @defgroup TIM_TI1_Selection TIM TI1 Input Selection + * @{ + */ +#define TIM_TI1SELECTION_CH1 0x00000000U /*!< The TIMx_CH1 pin is connected to TI1 input */ +#define TIM_TI1SELECTION_XORCOMBINATION TIM_CR2_TI1S /*!< The TIMx_CH1, CH2 and CH3 pins are connected to the TI1 input (XOR combination) */ +/** + * @} + */ + +/** @defgroup TIM_DMA_Burst_Length TIM DMA Burst Length + * @{ + */ +#define TIM_DMABURSTLENGTH_1TRANSFER 0x00000000U /*!< The transfer is done to 1 register starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_2TRANSFERS 0x00000100U /*!< The transfer is done to 2 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_3TRANSFERS 0x00000200U /*!< The transfer is done to 3 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_4TRANSFERS 0x00000300U /*!< The transfer is done to 4 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_5TRANSFERS 0x00000400U /*!< The transfer is done to 5 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_6TRANSFERS 0x00000500U /*!< The transfer is done to 6 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_7TRANSFERS 0x00000600U /*!< The transfer is done to 7 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_8TRANSFERS 0x00000700U /*!< The transfer is done to 8 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_9TRANSFERS 0x00000800U /*!< The transfer is done to 9 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_10TRANSFERS 0x00000900U /*!< The transfer is done to 10 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_11TRANSFERS 0x00000A00U /*!< The transfer is done to 11 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_12TRANSFERS 0x00000B00U /*!< The transfer is done to 12 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_13TRANSFERS 0x00000C00U /*!< The transfer is done to 13 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_14TRANSFERS 0x00000D00U /*!< The transfer is done to 14 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_15TRANSFERS 0x00000E00U /*!< The transfer is done to 15 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_16TRANSFERS 0x00000F00U /*!< The transfer is done to 16 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_17TRANSFERS 0x00001000U /*!< The transfer is done to 17 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_18TRANSFERS 0x00001100U /*!< The transfer is done to 18 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +/** + * @} + */ + +/** @defgroup DMA_Handle_index TIM DMA Handle Index + * @{ + */ +#define TIM_DMA_ID_UPDATE ((uint16_t) 0x0000) /*!< Index of the DMA handle used for Update DMA requests */ +#define TIM_DMA_ID_CC1 ((uint16_t) 0x0001) /*!< Index of the DMA handle used for Capture/Compare 1 DMA requests */ +#define TIM_DMA_ID_CC2 ((uint16_t) 0x0002) /*!< Index of the DMA handle used for Capture/Compare 2 DMA requests */ +#define TIM_DMA_ID_CC3 ((uint16_t) 0x0003) /*!< Index of the DMA handle used for Capture/Compare 3 DMA requests */ +#define TIM_DMA_ID_CC4 ((uint16_t) 0x0004) /*!< Index of the DMA handle used for Capture/Compare 4 DMA requests */ +#define TIM_DMA_ID_TRIGGER ((uint16_t) 0x0006) /*!< Index of the DMA handle used for Trigger DMA requests */ +/** + * @} + */ + +/** @defgroup Channel_CC_State TIM Capture/Compare Channel State + * @{ + */ +#define TIM_CCx_ENABLE 0x00000001U /*!< Input or output channel is enabled */ +#define TIM_CCx_DISABLE 0x00000000U /*!< Input or output channel is disabled */ +/** + * @} + */ + +/** + * @} + */ +/* End of exported constants -------------------------------------------------*/ + +/* Exported macros -----------------------------------------------------------*/ +/** @defgroup TIM_Exported_Macros TIM Exported Macros + * @{ + */ + +/** @brief Reset TIM handle state. + * @param __HANDLE__ TIM handle. + * @retval None + */ +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +#define __HAL_TIM_RESET_HANDLE_STATE(__HANDLE__) do { \ + (__HANDLE__)->State = HAL_TIM_STATE_RESET; \ + (__HANDLE__)->ChannelState[0] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelState[1] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelState[2] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelState[3] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->DMABurstState = HAL_DMA_BURST_STATE_RESET; \ + (__HANDLE__)->Base_MspInitCallback = NULL; \ + (__HANDLE__)->Base_MspDeInitCallback = NULL; \ + (__HANDLE__)->IC_MspInitCallback = NULL; \ + (__HANDLE__)->IC_MspDeInitCallback = NULL; \ + (__HANDLE__)->OC_MspInitCallback = NULL; \ + (__HANDLE__)->OC_MspDeInitCallback = NULL; \ + (__HANDLE__)->PWM_MspInitCallback = NULL; \ + (__HANDLE__)->PWM_MspDeInitCallback = NULL; \ + (__HANDLE__)->OnePulse_MspInitCallback = NULL; \ + (__HANDLE__)->OnePulse_MspDeInitCallback = NULL; \ + (__HANDLE__)->Encoder_MspInitCallback = NULL; \ + (__HANDLE__)->Encoder_MspDeInitCallback = NULL; \ + } while(0) +#else +#define __HAL_TIM_RESET_HANDLE_STATE(__HANDLE__) do { \ + (__HANDLE__)->State = HAL_TIM_STATE_RESET; \ + (__HANDLE__)->ChannelState[0] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelState[1] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelState[2] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelState[3] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->DMABurstState = HAL_DMA_BURST_STATE_RESET; \ + } while(0) +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + +/** + * @brief Enable the TIM peripheral. + * @param __HANDLE__ TIM handle + * @retval None + */ +#define __HAL_TIM_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1|=(TIM_CR1_CEN)) + +/** + * @brief Disable the TIM peripheral. + * @param __HANDLE__ TIM handle + * @retval None + */ +#define __HAL_TIM_DISABLE(__HANDLE__) \ + do { \ + if (((__HANDLE__)->Instance->CCER & TIM_CCER_CCxE_MASK) == 0UL) \ + { \ + (__HANDLE__)->Instance->CR1 &= ~(TIM_CR1_CEN); \ + } \ + } while(0) + +/** @brief Enable the specified TIM interrupt. + * @param __HANDLE__ specifies the TIM Handle. + * @param __INTERRUPT__ specifies the TIM interrupt source to enable. + * This parameter can be one of the following values: + * @arg TIM_IT_UPDATE: Update interrupt + * @arg TIM_IT_CC1: Capture/Compare 1 interrupt + * @arg TIM_IT_CC2: Capture/Compare 2 interrupt + * @arg TIM_IT_CC3: Capture/Compare 3 interrupt + * @arg TIM_IT_CC4: Capture/Compare 4 interrupt + * @arg TIM_IT_TRIGGER: Trigger interrupt + * @retval None + */ +#define __HAL_TIM_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->DIER |= (__INTERRUPT__)) + +/** @brief Disable the specified TIM interrupt. + * @param __HANDLE__ specifies the TIM Handle. + * @param __INTERRUPT__ specifies the TIM interrupt source to disable. + * This parameter can be one of the following values: + * @arg TIM_IT_UPDATE: Update interrupt + * @arg TIM_IT_CC1: Capture/Compare 1 interrupt + * @arg TIM_IT_CC2: Capture/Compare 2 interrupt + * @arg TIM_IT_CC3: Capture/Compare 3 interrupt + * @arg TIM_IT_CC4: Capture/Compare 4 interrupt + * @arg TIM_IT_TRIGGER: Trigger interrupt + * @retval None + */ +#define __HAL_TIM_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->DIER &= ~(__INTERRUPT__)) + +/** @brief Enable the specified DMA request. + * @param __HANDLE__ specifies the TIM Handle. + * @param __DMA__ specifies the TIM DMA request to enable. + * This parameter can be one of the following values: + * @arg TIM_DMA_UPDATE: Update DMA request + * @arg TIM_DMA_CC1: Capture/Compare 1 DMA request + * @arg TIM_DMA_CC2: Capture/Compare 2 DMA request + * @arg TIM_DMA_CC3: Capture/Compare 3 DMA request + * @arg TIM_DMA_CC4: Capture/Compare 4 DMA request + * @arg TIM_DMA_TRIGGER: Trigger DMA request + * @retval None + */ +#define __HAL_TIM_ENABLE_DMA(__HANDLE__, __DMA__) ((__HANDLE__)->Instance->DIER |= (__DMA__)) + +/** @brief Disable the specified DMA request. + * @param __HANDLE__ specifies the TIM Handle. + * @param __DMA__ specifies the TIM DMA request to disable. + * This parameter can be one of the following values: + * @arg TIM_DMA_UPDATE: Update DMA request + * @arg TIM_DMA_CC1: Capture/Compare 1 DMA request + * @arg TIM_DMA_CC2: Capture/Compare 2 DMA request + * @arg TIM_DMA_CC3: Capture/Compare 3 DMA request + * @arg TIM_DMA_CC4: Capture/Compare 4 DMA request + * @arg TIM_DMA_TRIGGER: Trigger DMA request + * @retval None + */ +#define __HAL_TIM_DISABLE_DMA(__HANDLE__, __DMA__) ((__HANDLE__)->Instance->DIER &= ~(__DMA__)) + +/** @brief Check whether the specified TIM interrupt flag is set or not. + * @param __HANDLE__ specifies the TIM Handle. + * @param __FLAG__ specifies the TIM interrupt flag to check. + * This parameter can be one of the following values: + * @arg TIM_FLAG_UPDATE: Update interrupt flag + * @arg TIM_FLAG_CC1: Capture/Compare 1 interrupt flag + * @arg TIM_FLAG_CC2: Capture/Compare 2 interrupt flag + * @arg TIM_FLAG_CC3: Capture/Compare 3 interrupt flag + * @arg TIM_FLAG_CC4: Capture/Compare 4 interrupt flag + * @arg TIM_FLAG_TRIGGER: Trigger interrupt flag + * @arg TIM_FLAG_CC1OF: Capture/Compare 1 overcapture flag + * @arg TIM_FLAG_CC2OF: Capture/Compare 2 overcapture flag + * @arg TIM_FLAG_CC3OF: Capture/Compare 3 overcapture flag + * @arg TIM_FLAG_CC4OF: Capture/Compare 4 overcapture flag + * @retval The new state of __FLAG__ (TRUE or FALSE). + */ +#define __HAL_TIM_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->SR &(__FLAG__)) == (__FLAG__)) + +/** @brief Clear the specified TIM interrupt flag. + * @param __HANDLE__ specifies the TIM Handle. + * @param __FLAG__ specifies the TIM interrupt flag to clear. + * This parameter can be one of the following values: + * @arg TIM_FLAG_UPDATE: Update interrupt flag + * @arg TIM_FLAG_CC1: Capture/Compare 1 interrupt flag + * @arg TIM_FLAG_CC2: Capture/Compare 2 interrupt flag + * @arg TIM_FLAG_CC3: Capture/Compare 3 interrupt flag + * @arg TIM_FLAG_CC4: Capture/Compare 4 interrupt flag + * @arg TIM_FLAG_TRIGGER: Trigger interrupt flag + * @arg TIM_FLAG_CC1OF: Capture/Compare 1 overcapture flag + * @arg TIM_FLAG_CC2OF: Capture/Compare 2 overcapture flag + * @arg TIM_FLAG_CC3OF: Capture/Compare 3 overcapture flag + * @arg TIM_FLAG_CC4OF: Capture/Compare 4 overcapture flag + * @retval The new state of __FLAG__ (TRUE or FALSE). + */ +#define __HAL_TIM_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->SR = ~(__FLAG__)) + +/** + * @brief Check whether the specified TIM interrupt source is enabled or not. + * @param __HANDLE__ TIM handle + * @param __INTERRUPT__ specifies the TIM interrupt source to check. + * This parameter can be one of the following values: + * @arg TIM_IT_UPDATE: Update interrupt + * @arg TIM_IT_CC1: Capture/Compare 1 interrupt + * @arg TIM_IT_CC2: Capture/Compare 2 interrupt + * @arg TIM_IT_CC3: Capture/Compare 3 interrupt + * @arg TIM_IT_CC4: Capture/Compare 4 interrupt + * @arg TIM_IT_TRIGGER: Trigger interrupt + * @retval The state of TIM_IT (SET or RESET). + */ +#define __HAL_TIM_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->DIER & (__INTERRUPT__)) \ + == (__INTERRUPT__)) ? SET : RESET) + +/** @brief Clear the TIM interrupt pending bits. + * @param __HANDLE__ TIM handle + * @param __INTERRUPT__ specifies the interrupt pending bit to clear. + * This parameter can be one of the following values: + * @arg TIM_IT_UPDATE: Update interrupt + * @arg TIM_IT_CC1: Capture/Compare 1 interrupt + * @arg TIM_IT_CC2: Capture/Compare 2 interrupt + * @arg TIM_IT_CC3: Capture/Compare 3 interrupt + * @arg TIM_IT_CC4: Capture/Compare 4 interrupt + * @arg TIM_IT_TRIGGER: Trigger interrupt + * @retval None + */ +#define __HAL_TIM_CLEAR_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->SR = ~(__INTERRUPT__)) + +/** + * @brief Indicates whether or not the TIM Counter is used as downcounter. + * @param __HANDLE__ TIM handle. + * @retval False (Counter used as upcounter) or True (Counter used as downcounter) + * @note This macro is particularly useful to get the counting mode when the timer operates in Center-aligned mode + * or Encoder mode. + */ +#define __HAL_TIM_IS_TIM_COUNTING_DOWN(__HANDLE__) (((__HANDLE__)->Instance->CR1 &(TIM_CR1_DIR)) == (TIM_CR1_DIR)) + +/** + * @brief Set the TIM Prescaler on runtime. + * @param __HANDLE__ TIM handle. + * @param __PRESC__ specifies the Prescaler new value. + * @retval None + */ +#define __HAL_TIM_SET_PRESCALER(__HANDLE__, __PRESC__) ((__HANDLE__)->Instance->PSC = (__PRESC__)) + +/** + * @brief Set the TIM Counter Register value on runtime. + * @param __HANDLE__ TIM handle. + * @param __COUNTER__ specifies the Counter register new value. + * @retval None + */ +#define __HAL_TIM_SET_COUNTER(__HANDLE__, __COUNTER__) ((__HANDLE__)->Instance->CNT = (__COUNTER__)) + +/** + * @brief Get the TIM Counter Register value on runtime. + * @param __HANDLE__ TIM handle. + * @retval 16-bit value of the timer counter register (TIMx_CNT) + */ +#define __HAL_TIM_GET_COUNTER(__HANDLE__) ((__HANDLE__)->Instance->CNT) + +/** + * @brief Set the TIM Autoreload Register value on runtime without calling another time any Init function. + * @param __HANDLE__ TIM handle. + * @param __AUTORELOAD__ specifies the Counter register new value. + * @retval None + */ +#define __HAL_TIM_SET_AUTORELOAD(__HANDLE__, __AUTORELOAD__) \ + do{ \ + (__HANDLE__)->Instance->ARR = (__AUTORELOAD__); \ + (__HANDLE__)->Init.Period = (__AUTORELOAD__); \ + } while(0) + +/** + * @brief Get the TIM Autoreload Register value on runtime. + * @param __HANDLE__ TIM handle. + * @retval 16-bit value of the timer auto-reload register(TIMx_ARR) + */ +#define __HAL_TIM_GET_AUTORELOAD(__HANDLE__) ((__HANDLE__)->Instance->ARR) + +/** + * @brief Set the TIM Clock Division value on runtime without calling another time any Init function. + * @param __HANDLE__ TIM handle. + * @param __CKD__ specifies the clock division value. + * This parameter can be one of the following value: + * @arg TIM_CLOCKDIVISION_DIV1: tDTS=tCK_INT + * @arg TIM_CLOCKDIVISION_DIV2: tDTS=2*tCK_INT + * @arg TIM_CLOCKDIVISION_DIV4: tDTS=4*tCK_INT + * @retval None + */ +#define __HAL_TIM_SET_CLOCKDIVISION(__HANDLE__, __CKD__) \ + do{ \ + (__HANDLE__)->Instance->CR1 &= (~TIM_CR1_CKD); \ + (__HANDLE__)->Instance->CR1 |= (__CKD__); \ + (__HANDLE__)->Init.ClockDivision = (__CKD__); \ + } while(0) + +/** + * @brief Get the TIM Clock Division value on runtime. + * @param __HANDLE__ TIM handle. + * @retval The clock division can be one of the following values: + * @arg TIM_CLOCKDIVISION_DIV1: tDTS=tCK_INT + * @arg TIM_CLOCKDIVISION_DIV2: tDTS=2*tCK_INT + * @arg TIM_CLOCKDIVISION_DIV4: tDTS=4*tCK_INT + */ +#define __HAL_TIM_GET_CLOCKDIVISION(__HANDLE__) ((__HANDLE__)->Instance->CR1 & TIM_CR1_CKD) + +/** + * @brief Set the TIM Input Capture prescaler on runtime without calling another time HAL_TIM_IC_ConfigChannel() + * function. + * @param __HANDLE__ TIM handle. + * @param __CHANNEL__ TIM Channels to be configured. + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @param __ICPSC__ specifies the Input Capture4 prescaler new value. + * This parameter can be one of the following values: + * @arg TIM_ICPSC_DIV1: no prescaler + * @arg TIM_ICPSC_DIV2: capture is done once every 2 events + * @arg TIM_ICPSC_DIV4: capture is done once every 4 events + * @arg TIM_ICPSC_DIV8: capture is done once every 8 events + * @retval None + */ +#define __HAL_TIM_SET_ICPRESCALER(__HANDLE__, __CHANNEL__, __ICPSC__) \ + do{ \ + TIM_RESET_ICPRESCALERVALUE((__HANDLE__), (__CHANNEL__)); \ + TIM_SET_ICPRESCALERVALUE((__HANDLE__), (__CHANNEL__), (__ICPSC__)); \ + } while(0) + +/** + * @brief Get the TIM Input Capture prescaler on runtime. + * @param __HANDLE__ TIM handle. + * @param __CHANNEL__ TIM Channels to be configured. + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: get input capture 1 prescaler value + * @arg TIM_CHANNEL_2: get input capture 2 prescaler value + * @arg TIM_CHANNEL_3: get input capture 3 prescaler value + * @arg TIM_CHANNEL_4: get input capture 4 prescaler value + * @retval The input capture prescaler can be one of the following values: + * @arg TIM_ICPSC_DIV1: no prescaler + * @arg TIM_ICPSC_DIV2: capture is done once every 2 events + * @arg TIM_ICPSC_DIV4: capture is done once every 4 events + * @arg TIM_ICPSC_DIV8: capture is done once every 8 events + */ +#define __HAL_TIM_GET_ICPRESCALER(__HANDLE__, __CHANNEL__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 & TIM_CCMR1_IC1PSC) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? (((__HANDLE__)->Instance->CCMR1 & TIM_CCMR1_IC2PSC) >> 8U) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 & TIM_CCMR2_IC3PSC) :\ + (((__HANDLE__)->Instance->CCMR2 & TIM_CCMR2_IC4PSC)) >> 8U) + +/** + * @brief Set the TIM Capture Compare Register value on runtime without calling another time ConfigChannel function. + * @param __HANDLE__ TIM handle. + * @param __CHANNEL__ TIM Channels to be configured. + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @param __COMPARE__ specifies the Capture Compare register new value. + * @retval None + */ +#define __HAL_TIM_SET_COMPARE(__HANDLE__, __CHANNEL__, __COMPARE__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCR1 = (__COMPARE__)) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCR2 = (__COMPARE__)) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCR3 = (__COMPARE__)) :\ + ((__HANDLE__)->Instance->CCR4 = (__COMPARE__))) + +/** + * @brief Get the TIM Capture Compare Register value on runtime. + * @param __HANDLE__ TIM handle. + * @param __CHANNEL__ TIM Channel associated with the capture compare register + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: get capture/compare 1 register value + * @arg TIM_CHANNEL_2: get capture/compare 2 register value + * @arg TIM_CHANNEL_3: get capture/compare 3 register value + * @arg TIM_CHANNEL_4: get capture/compare 4 register value + * @retval 16-bit value of the capture/compare register (TIMx_CCRy) + */ +#define __HAL_TIM_GET_COMPARE(__HANDLE__, __CHANNEL__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCR1) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCR2) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCR3) :\ + ((__HANDLE__)->Instance->CCR4)) + +/** + * @brief Set the TIM Output compare preload. + * @param __HANDLE__ TIM handle. + * @param __CHANNEL__ TIM Channels to be configured. + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval None + */ +#define __HAL_TIM_ENABLE_OCxPRELOAD(__HANDLE__, __CHANNEL__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC1PE) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC2PE) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC3PE) :\ + ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC4PE)) + +/** + * @brief Reset the TIM Output compare preload. + * @param __HANDLE__ TIM handle. + * @param __CHANNEL__ TIM Channels to be configured. + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval None + */ +#define __HAL_TIM_DISABLE_OCxPRELOAD(__HANDLE__, __CHANNEL__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC1PE) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC2PE) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC3PE) :\ + ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC4PE)) + +/** + * @brief Enable fast mode for a given channel. + * @param __HANDLE__ TIM handle. + * @param __CHANNEL__ TIM Channels to be configured. + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @note When fast mode is enabled an active edge on the trigger input acts + * like a compare match on CCx output. Delay to sample the trigger + * input and to activate CCx output is reduced to 3 clock cycles. + * @note Fast mode acts only if the channel is configured in PWM1 or PWM2 mode. + * @retval None + */ +#define __HAL_TIM_ENABLE_OCxFAST(__HANDLE__, __CHANNEL__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC1FE) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC2FE) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC3FE) :\ + ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC4FE)) + +/** + * @brief Disable fast mode for a given channel. + * @param __HANDLE__ TIM handle. + * @param __CHANNEL__ TIM Channels to be configured. + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @note When fast mode is disabled CCx output behaves normally depending + * on counter and CCRx values even when the trigger is ON. The minimum + * delay to activate CCx output when an active edge occurs on the + * trigger input is 5 clock cycles. + * @retval None + */ +#define __HAL_TIM_DISABLE_OCxFAST(__HANDLE__, __CHANNEL__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC1FE) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC2FE) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC3FE) :\ + ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC4FE)) + +/** + * @brief Set the Update Request Source (URS) bit of the TIMx_CR1 register. + * @param __HANDLE__ TIM handle. + * @note When the URS bit of the TIMx_CR1 register is set, only counter + * overflow/underflow generates an update interrupt or DMA request (if + * enabled) + * @retval None + */ +#define __HAL_TIM_URS_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1|= TIM_CR1_URS) + +/** + * @brief Reset the Update Request Source (URS) bit of the TIMx_CR1 register. + * @param __HANDLE__ TIM handle. + * @note When the URS bit of the TIMx_CR1 register is reset, any of the + * following events generate an update interrupt or DMA request (if + * enabled): + * _ Counter overflow underflow + * _ Setting the UG bit + * _ Update generation through the slave mode controller + * @retval None + */ +#define __HAL_TIM_URS_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1&=~TIM_CR1_URS) + +/** + * @brief Set the TIM Capture x input polarity on runtime. + * @param __HANDLE__ TIM handle. + * @param __CHANNEL__ TIM Channels to be configured. + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @param __POLARITY__ Polarity for TIx source + * @arg TIM_INPUTCHANNELPOLARITY_RISING: Rising Edge + * @arg TIM_INPUTCHANNELPOLARITY_FALLING: Falling Edge + * @arg TIM_INPUTCHANNELPOLARITY_BOTHEDGE: Rising and Falling Edge + * @retval None + */ +#define __HAL_TIM_SET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__, __POLARITY__) \ + do{ \ + TIM_RESET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__)); \ + TIM_SET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__), (__POLARITY__)); \ + }while(0) + +/** + * @} + */ +/* End of exported macros ----------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup TIM_Private_Constants TIM Private Constants + * @{ + */ +/* The counter of a timer instance is disabled only if all the CCx and CCxN + channels have been disabled */ +#define TIM_CCER_CCxE_MASK ((uint32_t)(TIM_CCER_CC1E | TIM_CCER_CC2E | TIM_CCER_CC3E | TIM_CCER_CC4E)) +/** + * @} + */ +/* End of private constants --------------------------------------------------*/ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup TIM_Private_Macros TIM Private Macros + * @{ + */ +#define IS_TIM_CLEARINPUT_SOURCE(__MODE__) (((__MODE__) == TIM_CLEARINPUTSOURCE_NONE) || \ + ((__MODE__) == TIM_CLEARINPUTSOURCE_ETR)) + +#define IS_TIM_DMA_BASE(__BASE__) (((__BASE__) == TIM_DMABASE_CR1) || \ + ((__BASE__) == TIM_DMABASE_CR2) || \ + ((__BASE__) == TIM_DMABASE_SMCR) || \ + ((__BASE__) == TIM_DMABASE_DIER) || \ + ((__BASE__) == TIM_DMABASE_SR) || \ + ((__BASE__) == TIM_DMABASE_EGR) || \ + ((__BASE__) == TIM_DMABASE_CCMR1) || \ + ((__BASE__) == TIM_DMABASE_CCMR2) || \ + ((__BASE__) == TIM_DMABASE_CCER) || \ + ((__BASE__) == TIM_DMABASE_CNT) || \ + ((__BASE__) == TIM_DMABASE_PSC) || \ + ((__BASE__) == TIM_DMABASE_ARR) || \ + ((__BASE__) == TIM_DMABASE_CCR1) || \ + ((__BASE__) == TIM_DMABASE_CCR2) || \ + ((__BASE__) == TIM_DMABASE_CCR3) || \ + ((__BASE__) == TIM_DMABASE_CCR4) || \ + ((__BASE__) == TIM_DMABASE_OR)) + +#define IS_TIM_EVENT_SOURCE(__SOURCE__) ((((__SOURCE__) & 0xFFFFFFA0U) == 0x00000000U) && ((__SOURCE__) != 0x00000000U)) + +#define IS_TIM_COUNTER_MODE(__MODE__) (((__MODE__) == TIM_COUNTERMODE_UP) || \ + ((__MODE__) == TIM_COUNTERMODE_DOWN) || \ + ((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED1) || \ + ((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED2) || \ + ((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED3)) + +#define IS_TIM_CLOCKDIVISION_DIV(__DIV__) (((__DIV__) == TIM_CLOCKDIVISION_DIV1) || \ + ((__DIV__) == TIM_CLOCKDIVISION_DIV2) || \ + ((__DIV__) == TIM_CLOCKDIVISION_DIV4)) + +#define IS_TIM_AUTORELOAD_PRELOAD(PRELOAD) (((PRELOAD) == TIM_AUTORELOAD_PRELOAD_DISABLE) || \ + ((PRELOAD) == TIM_AUTORELOAD_PRELOAD_ENABLE)) + +#define IS_TIM_FAST_STATE(__STATE__) (((__STATE__) == TIM_OCFAST_DISABLE) || \ + ((__STATE__) == TIM_OCFAST_ENABLE)) + +#define IS_TIM_OC_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_OCPOLARITY_HIGH) || \ + ((__POLARITY__) == TIM_OCPOLARITY_LOW)) + +#define IS_TIM_ENCODERINPUT_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_ENCODERINPUTPOLARITY_RISING) || \ + ((__POLARITY__) == TIM_ENCODERINPUTPOLARITY_FALLING)) + +#define IS_TIM_IC_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_ICPOLARITY_RISING) || \ + ((__POLARITY__) == TIM_ICPOLARITY_FALLING) || \ + ((__POLARITY__) == TIM_ICPOLARITY_BOTHEDGE)) + +#define IS_TIM_IC_SELECTION(__SELECTION__) (((__SELECTION__) == TIM_ICSELECTION_DIRECTTI) || \ + ((__SELECTION__) == TIM_ICSELECTION_INDIRECTTI) || \ + ((__SELECTION__) == TIM_ICSELECTION_TRC)) + +#define IS_TIM_IC_PRESCALER(__PRESCALER__) (((__PRESCALER__) == TIM_ICPSC_DIV1) || \ + ((__PRESCALER__) == TIM_ICPSC_DIV2) || \ + ((__PRESCALER__) == TIM_ICPSC_DIV4) || \ + ((__PRESCALER__) == TIM_ICPSC_DIV8)) + +#define IS_TIM_OPM_MODE(__MODE__) (((__MODE__) == TIM_OPMODE_SINGLE) || \ + ((__MODE__) == TIM_OPMODE_REPETITIVE)) + +#define IS_TIM_ENCODER_MODE(__MODE__) (((__MODE__) == TIM_ENCODERMODE_TI1) || \ + ((__MODE__) == TIM_ENCODERMODE_TI2) || \ + ((__MODE__) == TIM_ENCODERMODE_TI12)) + +#define IS_TIM_DMA_SOURCE(__SOURCE__) ((((__SOURCE__) & 0xFFFFA0FFU) == 0x00000000U) && ((__SOURCE__) != 0x00000000U)) + +#define IS_TIM_CHANNELS(__CHANNEL__) (((__CHANNEL__) == TIM_CHANNEL_1) || \ + ((__CHANNEL__) == TIM_CHANNEL_2) || \ + ((__CHANNEL__) == TIM_CHANNEL_3) || \ + ((__CHANNEL__) == TIM_CHANNEL_4) || \ + ((__CHANNEL__) == TIM_CHANNEL_ALL)) + +#define IS_TIM_OPM_CHANNELS(__CHANNEL__) (((__CHANNEL__) == TIM_CHANNEL_1) || \ + ((__CHANNEL__) == TIM_CHANNEL_2)) + +#define IS_TIM_PERIOD(__PERIOD__) ((__PERIOD__) <= 0xFFFFU) + +#define IS_TIM_PRESCALER(__PRESCALER__) ((__PRESCALER__) <= 0xFFFFU) + +#define IS_TIM_CLOCKSOURCE(__CLOCK__) (((__CLOCK__) == TIM_CLOCKSOURCE_INTERNAL) || \ + ((__CLOCK__) == TIM_CLOCKSOURCE_ETRMODE2) || \ + ((__CLOCK__) == TIM_CLOCKSOURCE_ITR0) || \ + ((__CLOCK__) == TIM_CLOCKSOURCE_ITR1) || \ + ((__CLOCK__) == TIM_CLOCKSOURCE_ITR2) || \ + ((__CLOCK__) == TIM_CLOCKSOURCE_ITR3) || \ + ((__CLOCK__) == TIM_CLOCKSOURCE_TI1ED) || \ + ((__CLOCK__) == TIM_CLOCKSOURCE_TI1) || \ + ((__CLOCK__) == TIM_CLOCKSOURCE_TI2) || \ + ((__CLOCK__) == TIM_CLOCKSOURCE_ETRMODE1)) + +#define IS_TIM_CLOCKPOLARITY(__POLARITY__) (((__POLARITY__) == TIM_CLOCKPOLARITY_INVERTED) || \ + ((__POLARITY__) == TIM_CLOCKPOLARITY_NONINVERTED) || \ + ((__POLARITY__) == TIM_CLOCKPOLARITY_RISING) || \ + ((__POLARITY__) == TIM_CLOCKPOLARITY_FALLING) || \ + ((__POLARITY__) == TIM_CLOCKPOLARITY_BOTHEDGE)) + +#define IS_TIM_CLOCKPRESCALER(__PRESCALER__) (((__PRESCALER__) == TIM_CLOCKPRESCALER_DIV1) || \ + ((__PRESCALER__) == TIM_CLOCKPRESCALER_DIV2) || \ + ((__PRESCALER__) == TIM_CLOCKPRESCALER_DIV4) || \ + ((__PRESCALER__) == TIM_CLOCKPRESCALER_DIV8)) + +#define IS_TIM_CLOCKFILTER(__ICFILTER__) ((__ICFILTER__) <= 0xFU) + +#define IS_TIM_CLEARINPUT_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_CLEARINPUTPOLARITY_INVERTED) || \ + ((__POLARITY__) == TIM_CLEARINPUTPOLARITY_NONINVERTED)) + +#define IS_TIM_CLEARINPUT_PRESCALER(__PRESCALER__) (((__PRESCALER__) == TIM_CLEARINPUTPRESCALER_DIV1) || \ + ((__PRESCALER__) == TIM_CLEARINPUTPRESCALER_DIV2) || \ + ((__PRESCALER__) == TIM_CLEARINPUTPRESCALER_DIV4) || \ + ((__PRESCALER__) == TIM_CLEARINPUTPRESCALER_DIV8)) + +#define IS_TIM_CLEARINPUT_FILTER(__ICFILTER__) ((__ICFILTER__) <= 0xFU) + +#define IS_TIM_TRGO_SOURCE(__SOURCE__) (((__SOURCE__) == TIM_TRGO_RESET) || \ + ((__SOURCE__) == TIM_TRGO_ENABLE) || \ + ((__SOURCE__) == TIM_TRGO_UPDATE) || \ + ((__SOURCE__) == TIM_TRGO_OC1) || \ + ((__SOURCE__) == TIM_TRGO_OC1REF) || \ + ((__SOURCE__) == TIM_TRGO_OC2REF) || \ + ((__SOURCE__) == TIM_TRGO_OC3REF) || \ + ((__SOURCE__) == TIM_TRGO_OC4REF)) + +#define IS_TIM_MSM_STATE(__STATE__) (((__STATE__) == TIM_MASTERSLAVEMODE_ENABLE) || \ + ((__STATE__) == TIM_MASTERSLAVEMODE_DISABLE)) + +#define IS_TIM_SLAVE_MODE(__MODE__) (((__MODE__) == TIM_SLAVEMODE_DISABLE) || \ + ((__MODE__) == TIM_SLAVEMODE_RESET) || \ + ((__MODE__) == TIM_SLAVEMODE_GATED) || \ + ((__MODE__) == TIM_SLAVEMODE_TRIGGER) || \ + ((__MODE__) == TIM_SLAVEMODE_EXTERNAL1)) + +#define IS_TIM_PWM_MODE(__MODE__) (((__MODE__) == TIM_OCMODE_PWM1) || \ + ((__MODE__) == TIM_OCMODE_PWM2)) + +#define IS_TIM_OC_MODE(__MODE__) (((__MODE__) == TIM_OCMODE_TIMING) || \ + ((__MODE__) == TIM_OCMODE_ACTIVE) || \ + ((__MODE__) == TIM_OCMODE_INACTIVE) || \ + ((__MODE__) == TIM_OCMODE_TOGGLE) || \ + ((__MODE__) == TIM_OCMODE_FORCED_ACTIVE) || \ + ((__MODE__) == TIM_OCMODE_FORCED_INACTIVE)) + +#define IS_TIM_TRIGGER_SELECTION(__SELECTION__) (((__SELECTION__) == TIM_TS_ITR0) || \ + ((__SELECTION__) == TIM_TS_ITR1) || \ + ((__SELECTION__) == TIM_TS_ITR2) || \ + ((__SELECTION__) == TIM_TS_ITR3) || \ + ((__SELECTION__) == TIM_TS_TI1F_ED) || \ + ((__SELECTION__) == TIM_TS_TI1FP1) || \ + ((__SELECTION__) == TIM_TS_TI2FP2) || \ + ((__SELECTION__) == TIM_TS_ETRF)) + +#define IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(__SELECTION__) (((__SELECTION__) == TIM_TS_ITR0) || \ + ((__SELECTION__) == TIM_TS_ITR1) || \ + ((__SELECTION__) == TIM_TS_ITR2) || \ + ((__SELECTION__) == TIM_TS_ITR3) || \ + ((__SELECTION__) == TIM_TS_NONE)) + +#define IS_TIM_TRIGGERPOLARITY(__POLARITY__) (((__POLARITY__) == TIM_TRIGGERPOLARITY_INVERTED ) || \ + ((__POLARITY__) == TIM_TRIGGERPOLARITY_NONINVERTED) || \ + ((__POLARITY__) == TIM_TRIGGERPOLARITY_RISING ) || \ + ((__POLARITY__) == TIM_TRIGGERPOLARITY_FALLING ) || \ + ((__POLARITY__) == TIM_TRIGGERPOLARITY_BOTHEDGE )) + +#define IS_TIM_TRIGGERPRESCALER(__PRESCALER__) (((__PRESCALER__) == TIM_TRIGGERPRESCALER_DIV1) || \ + ((__PRESCALER__) == TIM_TRIGGERPRESCALER_DIV2) || \ + ((__PRESCALER__) == TIM_TRIGGERPRESCALER_DIV4) || \ + ((__PRESCALER__) == TIM_TRIGGERPRESCALER_DIV8)) + +#define IS_TIM_TRIGGERFILTER(__ICFILTER__) ((__ICFILTER__) <= 0xFU) + +#define IS_TIM_TI1SELECTION(__TI1SELECTION__) (((__TI1SELECTION__) == TIM_TI1SELECTION_CH1) || \ + ((__TI1SELECTION__) == TIM_TI1SELECTION_XORCOMBINATION)) + +#define IS_TIM_DMA_LENGTH(__LENGTH__) (((__LENGTH__) == TIM_DMABURSTLENGTH_1TRANSFER) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_2TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_3TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_4TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_5TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_6TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_7TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_8TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_9TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_10TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_11TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_12TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_13TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_14TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_15TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_16TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_17TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_18TRANSFERS)) + +#define IS_TIM_DMA_DATA_LENGTH(LENGTH) (((LENGTH) >= 0x1U) && ((LENGTH) < 0x10000U)) + +#define IS_TIM_IC_FILTER(__ICFILTER__) ((__ICFILTER__) <= 0xFU) + +#define IS_TIM_SLAVEMODE_TRIGGER_ENABLED(__TRIGGER__) ((__TRIGGER__) == TIM_SLAVEMODE_TRIGGER) + +#define TIM_SET_ICPRESCALERVALUE(__HANDLE__, __CHANNEL__, __ICPSC__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= (__ICPSC__)) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= ((__ICPSC__) << 8U)) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= (__ICPSC__)) :\ + ((__HANDLE__)->Instance->CCMR2 |= ((__ICPSC__) << 8U))) + +#define TIM_RESET_ICPRESCALERVALUE(__HANDLE__, __CHANNEL__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_IC2PSC) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_IC3PSC) :\ + ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_IC4PSC)) + +#define TIM_SET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__, __POLARITY__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCER |= (__POLARITY__)) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCER |= ((__POLARITY__) << 4U)) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCER |= ((__POLARITY__) << 8U)) :\ + ((__HANDLE__)->Instance->CCER |= (((__POLARITY__) << 12U)))) + +#define TIM_RESET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP)) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP)) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC3P | TIM_CCER_CC3NP)) :\ + ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC4P | TIM_CCER_CC4NP))) + +#define TIM_CHANNEL_STATE_GET(__HANDLE__, __CHANNEL__)\ + (((__CHANNEL__) == TIM_CHANNEL_1) ? (__HANDLE__)->ChannelState[0] :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? (__HANDLE__)->ChannelState[1] :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? (__HANDLE__)->ChannelState[2] :\ + (__HANDLE__)->ChannelState[3]) + +#define TIM_CHANNEL_STATE_SET(__HANDLE__, __CHANNEL__, __CHANNEL_STATE__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->ChannelState[0] = (__CHANNEL_STATE__)) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->ChannelState[1] = (__CHANNEL_STATE__)) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->ChannelState[2] = (__CHANNEL_STATE__)) :\ + ((__HANDLE__)->ChannelState[3] = (__CHANNEL_STATE__))) + +#define TIM_CHANNEL_STATE_SET_ALL(__HANDLE__, __CHANNEL_STATE__) do { \ + (__HANDLE__)->ChannelState[0] = (__CHANNEL_STATE__); \ + (__HANDLE__)->ChannelState[1] = (__CHANNEL_STATE__); \ + (__HANDLE__)->ChannelState[2] = (__CHANNEL_STATE__); \ + (__HANDLE__)->ChannelState[3] = (__CHANNEL_STATE__); \ + } while(0) + +/** + * @} + */ +/* End of private macros -----------------------------------------------------*/ + +/* Include TIM HAL Extended module */ +#include "stm32l0xx_hal_tim_ex.h" + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup TIM_Exported_Functions TIM Exported Functions + * @{ + */ + +/** @addtogroup TIM_Exported_Functions_Group1 TIM Time Base functions + * @brief Time Base functions + * @{ + */ +/* Time Base functions ********************************************************/ +HAL_StatusTypeDef HAL_TIM_Base_Init(TIM_HandleTypeDef *htim); +HAL_StatusTypeDef HAL_TIM_Base_DeInit(TIM_HandleTypeDef *htim); +void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim); +void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef *htim); +/* Blocking mode: Polling */ +HAL_StatusTypeDef HAL_TIM_Base_Start(TIM_HandleTypeDef *htim); +HAL_StatusTypeDef HAL_TIM_Base_Stop(TIM_HandleTypeDef *htim); +/* Non-Blocking mode: Interrupt */ +HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim); +HAL_StatusTypeDef HAL_TIM_Base_Stop_IT(TIM_HandleTypeDef *htim); +/* Non-Blocking mode: DMA */ +HAL_StatusTypeDef HAL_TIM_Base_Start_DMA(TIM_HandleTypeDef *htim, uint32_t *pData, uint16_t Length); +HAL_StatusTypeDef HAL_TIM_Base_Stop_DMA(TIM_HandleTypeDef *htim); +/** + * @} + */ + +/** @addtogroup TIM_Exported_Functions_Group2 TIM Output Compare functions + * @brief TIM Output Compare functions + * @{ + */ +/* Timer Output Compare functions *********************************************/ +HAL_StatusTypeDef HAL_TIM_OC_Init(TIM_HandleTypeDef *htim); +HAL_StatusTypeDef HAL_TIM_OC_DeInit(TIM_HandleTypeDef *htim); +void HAL_TIM_OC_MspInit(TIM_HandleTypeDef *htim); +void HAL_TIM_OC_MspDeInit(TIM_HandleTypeDef *htim); +/* Blocking mode: Polling */ +HAL_StatusTypeDef HAL_TIM_OC_Start(TIM_HandleTypeDef *htim, uint32_t Channel); +HAL_StatusTypeDef HAL_TIM_OC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel); +/* Non-Blocking mode: Interrupt */ +HAL_StatusTypeDef HAL_TIM_OC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel); +HAL_StatusTypeDef HAL_TIM_OC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel); +/* Non-Blocking mode: DMA */ +HAL_StatusTypeDef HAL_TIM_OC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length); +HAL_StatusTypeDef HAL_TIM_OC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel); +/** + * @} + */ + +/** @addtogroup TIM_Exported_Functions_Group3 TIM PWM functions + * @brief TIM PWM functions + * @{ + */ +/* Timer PWM functions ********************************************************/ +HAL_StatusTypeDef HAL_TIM_PWM_Init(TIM_HandleTypeDef *htim); +HAL_StatusTypeDef HAL_TIM_PWM_DeInit(TIM_HandleTypeDef *htim); +void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim); +void HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef *htim); +/* Blocking mode: Polling */ +HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel); +HAL_StatusTypeDef HAL_TIM_PWM_Stop(TIM_HandleTypeDef *htim, uint32_t Channel); +/* Non-Blocking mode: Interrupt */ +HAL_StatusTypeDef HAL_TIM_PWM_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel); +HAL_StatusTypeDef HAL_TIM_PWM_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel); +/* Non-Blocking mode: DMA */ +HAL_StatusTypeDef HAL_TIM_PWM_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length); +HAL_StatusTypeDef HAL_TIM_PWM_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel); +/** + * @} + */ + +/** @addtogroup TIM_Exported_Functions_Group4 TIM Input Capture functions + * @brief TIM Input Capture functions + * @{ + */ +/* Timer Input Capture functions **********************************************/ +HAL_StatusTypeDef HAL_TIM_IC_Init(TIM_HandleTypeDef *htim); +HAL_StatusTypeDef HAL_TIM_IC_DeInit(TIM_HandleTypeDef *htim); +void HAL_TIM_IC_MspInit(TIM_HandleTypeDef *htim); +void HAL_TIM_IC_MspDeInit(TIM_HandleTypeDef *htim); +/* Blocking mode: Polling */ +HAL_StatusTypeDef HAL_TIM_IC_Start(TIM_HandleTypeDef *htim, uint32_t Channel); +HAL_StatusTypeDef HAL_TIM_IC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel); +/* Non-Blocking mode: Interrupt */ +HAL_StatusTypeDef HAL_TIM_IC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel); +HAL_StatusTypeDef HAL_TIM_IC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel); +/* Non-Blocking mode: DMA */ +HAL_StatusTypeDef HAL_TIM_IC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length); +HAL_StatusTypeDef HAL_TIM_IC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel); +/** + * @} + */ + +/** @addtogroup TIM_Exported_Functions_Group5 TIM One Pulse functions + * @brief TIM One Pulse functions + * @{ + */ +/* Timer One Pulse functions **************************************************/ +HAL_StatusTypeDef HAL_TIM_OnePulse_Init(TIM_HandleTypeDef *htim, uint32_t OnePulseMode); +HAL_StatusTypeDef HAL_TIM_OnePulse_DeInit(TIM_HandleTypeDef *htim); +void HAL_TIM_OnePulse_MspInit(TIM_HandleTypeDef *htim); +void HAL_TIM_OnePulse_MspDeInit(TIM_HandleTypeDef *htim); +/* Blocking mode: Polling */ +HAL_StatusTypeDef HAL_TIM_OnePulse_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel); +HAL_StatusTypeDef HAL_TIM_OnePulse_Stop(TIM_HandleTypeDef *htim, uint32_t OutputChannel); +/* Non-Blocking mode: Interrupt */ +HAL_StatusTypeDef HAL_TIM_OnePulse_Start_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel); +HAL_StatusTypeDef HAL_TIM_OnePulse_Stop_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel); +/** + * @} + */ + +/** @addtogroup TIM_Exported_Functions_Group6 TIM Encoder functions + * @brief TIM Encoder functions + * @{ + */ +/* Timer Encoder functions ****************************************************/ +HAL_StatusTypeDef HAL_TIM_Encoder_Init(TIM_HandleTypeDef *htim, TIM_Encoder_InitTypeDef *sConfig); +HAL_StatusTypeDef HAL_TIM_Encoder_DeInit(TIM_HandleTypeDef *htim); +void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef *htim); +void HAL_TIM_Encoder_MspDeInit(TIM_HandleTypeDef *htim); +/* Blocking mode: Polling */ +HAL_StatusTypeDef HAL_TIM_Encoder_Start(TIM_HandleTypeDef *htim, uint32_t Channel); +HAL_StatusTypeDef HAL_TIM_Encoder_Stop(TIM_HandleTypeDef *htim, uint32_t Channel); +/* Non-Blocking mode: Interrupt */ +HAL_StatusTypeDef HAL_TIM_Encoder_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel); +HAL_StatusTypeDef HAL_TIM_Encoder_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel); +/* Non-Blocking mode: DMA */ +HAL_StatusTypeDef HAL_TIM_Encoder_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData1, + uint32_t *pData2, uint16_t Length); +HAL_StatusTypeDef HAL_TIM_Encoder_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel); +/** + * @} + */ + +/** @addtogroup TIM_Exported_Functions_Group7 TIM IRQ handler management + * @brief IRQ handler management + * @{ + */ +/* Interrupt Handler functions ***********************************************/ +void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim); +/** + * @} + */ + +/** @defgroup TIM_Exported_Functions_Group8 TIM Peripheral Control functions + * @brief Peripheral Control functions + * @{ + */ +/* Control functions *********************************************************/ +HAL_StatusTypeDef HAL_TIM_OC_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfig, uint32_t Channel); +HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfig, uint32_t Channel); +HAL_StatusTypeDef HAL_TIM_IC_ConfigChannel(TIM_HandleTypeDef *htim, TIM_IC_InitTypeDef *sConfig, uint32_t Channel); +HAL_StatusTypeDef HAL_TIM_OnePulse_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OnePulse_InitTypeDef *sConfig, + uint32_t OutputChannel, uint32_t InputChannel); +HAL_StatusTypeDef HAL_TIM_ConfigOCrefClear(TIM_HandleTypeDef *htim, TIM_ClearInputConfigTypeDef *sClearInputConfig, + uint32_t Channel); +HAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, TIM_ClockConfigTypeDef *sClockSourceConfig); +HAL_StatusTypeDef HAL_TIM_ConfigTI1Input(TIM_HandleTypeDef *htim, uint32_t TI1_Selection); +HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro(TIM_HandleTypeDef *htim, TIM_SlaveConfigTypeDef *sSlaveConfig); +HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro_IT(TIM_HandleTypeDef *htim, TIM_SlaveConfigTypeDef *sSlaveConfig); +HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, + uint32_t BurstRequestSrc, uint32_t *BurstBuffer, uint32_t BurstLength); +HAL_StatusTypeDef HAL_TIM_DMABurst_MultiWriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, + uint32_t BurstRequestSrc, uint32_t *BurstBuffer, + uint32_t BurstLength, uint32_t DataLength); +HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc); +HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, + uint32_t BurstRequestSrc, uint32_t *BurstBuffer, uint32_t BurstLength); +HAL_StatusTypeDef HAL_TIM_DMABurst_MultiReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, + uint32_t BurstRequestSrc, uint32_t *BurstBuffer, + uint32_t BurstLength, uint32_t DataLength); +HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc); +HAL_StatusTypeDef HAL_TIM_GenerateEvent(TIM_HandleTypeDef *htim, uint32_t EventSource); +uint32_t HAL_TIM_ReadCapturedValue(TIM_HandleTypeDef *htim, uint32_t Channel); +/** + * @} + */ + +/** @defgroup TIM_Exported_Functions_Group9 TIM Callbacks functions + * @brief TIM Callbacks functions + * @{ + */ +/* Callback in non blocking modes (Interrupt and DMA) *************************/ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim); +void HAL_TIM_PeriodElapsedHalfCpltCallback(TIM_HandleTypeDef *htim); +void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim); +void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim); +void HAL_TIM_IC_CaptureHalfCpltCallback(TIM_HandleTypeDef *htim); +void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim); +void HAL_TIM_PWM_PulseFinishedHalfCpltCallback(TIM_HandleTypeDef *htim); +void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim); +void HAL_TIM_TriggerHalfCpltCallback(TIM_HandleTypeDef *htim); +void HAL_TIM_ErrorCallback(TIM_HandleTypeDef *htim); + +/* Callbacks Register/UnRegister functions ***********************************/ +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +HAL_StatusTypeDef HAL_TIM_RegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID, + pTIM_CallbackTypeDef pCallback); +HAL_StatusTypeDef HAL_TIM_UnRegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + +/** + * @} + */ + +/** @defgroup TIM_Exported_Functions_Group10 TIM Peripheral State functions + * @brief Peripheral State functions + * @{ + */ +/* Peripheral State functions ************************************************/ +HAL_TIM_StateTypeDef HAL_TIM_Base_GetState(TIM_HandleTypeDef *htim); +HAL_TIM_StateTypeDef HAL_TIM_OC_GetState(TIM_HandleTypeDef *htim); +HAL_TIM_StateTypeDef HAL_TIM_PWM_GetState(TIM_HandleTypeDef *htim); +HAL_TIM_StateTypeDef HAL_TIM_IC_GetState(TIM_HandleTypeDef *htim); +HAL_TIM_StateTypeDef HAL_TIM_OnePulse_GetState(TIM_HandleTypeDef *htim); +HAL_TIM_StateTypeDef HAL_TIM_Encoder_GetState(TIM_HandleTypeDef *htim); + +/* Peripheral Channel state functions ************************************************/ +HAL_TIM_ActiveChannel HAL_TIM_GetActiveChannel(TIM_HandleTypeDef *htim); +HAL_TIM_ChannelStateTypeDef HAL_TIM_GetChannelState(TIM_HandleTypeDef *htim, uint32_t Channel); +HAL_TIM_DMABurstStateTypeDef HAL_TIM_DMABurstState(TIM_HandleTypeDef *htim); +/** + * @} + */ + +/** + * @} + */ +/* End of exported functions -------------------------------------------------*/ + +/* Private functions----------------------------------------------------------*/ +/** @defgroup TIM_Private_Functions TIM Private Functions + * @{ + */ +void TIM_DMAError(DMA_HandleTypeDef *hdma); +void TIM_DMACaptureCplt(DMA_HandleTypeDef *hdma); +void TIM_DMACaptureHalfCplt(DMA_HandleTypeDef *hdma); + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +void TIM_ResetCallback(TIM_HandleTypeDef *htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + +/** + * @} + */ +/* End of private functions --------------------------------------------------*/ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32L0xx_HAL_TIM_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h new file mode 100644 index 0000000..c5dacb9 --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h @@ -0,0 +1,247 @@ +/** + ****************************************************************************** + * @file stm32l0xx_hal_tim_ex.h + * @author MCD Application Team + * @brief Header file of TIM HAL Extended module. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32L0xx_HAL_TIM_EX_H +#define STM32L0xx_HAL_TIM_EX_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal_def.h" + +/** @addtogroup STM32L0xx_HAL_Driver + * @{ + */ + +/** @addtogroup TIMEx + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup TIMEx_Exported_Types TIM Extended Exported Types + * @{ + */ + +/** + * @} + */ +/* End of exported types -----------------------------------------------------*/ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup TIMEx_Exported_Constants TIM Extended Exported Constants + * @{ + */ + +/** @defgroup TIMEx_Remap TIM Extended Remapping + * @{ + */ +#define TIM2_ETR_GPIO 0x00000000U /*!< TIM2 ETR input is connected to ORed GPIOs */ +#if defined(RCC_HSI48_SUPPORT) +#define TIM2_ETR_HSI48 TIM2_OR_ETR_RMP_2 /*!< TIM2 ETR input is connected to HSI48 clock */ +#endif /* RCC_HSI48_SUPPORT */ +#define TIM2_ETR_HSI16 (TIM2_OR_ETR_RMP_1 | TIM2_OR_ETR_RMP_0) /*!< TIM2 ETR input is connected to HSI16 clock */ +#define TIM2_ETR_LSE (TIM2_OR_ETR_RMP_2 | TIM2_OR_ETR_RMP_0) /*!< TIM2 ETR input is connected to LSE clock */ +#if defined(COMP1) && defined(COMP2) +#define TIM2_ETR_COMP2_OUT (TIM2_OR_ETR_RMP_2 | TIM2_OR_ETR_RMP_1) /*!< TIM2 ETR input is connected to COMP2_OUT */ +#define TIM2_ETR_COMP1_OUT TIM2_OR_ETR_RMP /*!< TIM2 ETR input is connected to COMP1_OUT */ +#endif /* COMP1 && COMP2 */ + +#define TIM2_TI4_GPIO 0x00000000U /*!< TIM2 TI4 input connected to ORed GPIOs */ +#if defined(COMP1) && defined(COMP2) +#define TIM2_TI4_COMP2 TIM2_OR_TI4_RMP_0 /*!< TIM2 TI4 input connected to COMP2_OUT */ +#define TIM2_TI4_COMP1 TIM2_OR_TI4_RMP_1 /*!< TIM2 TI4 input connected to COMP1_OUT */ +#endif /* COMP1 && COMP2 */ + +#if defined(TIM3) +#if defined(USB) +#define TIM3_TI4_USB_NOE 0x00000000U /*!< USB_NOE selected selected for PC9 (AF2) remapping */ +#endif /* USB */ + +#define TIM3_TI4_GPIOC9_AF2 TIM3_OR_TI4_RMP /*!< TIM3_CH4 selected for PC9 (AF2) remapping */ +#define TIM3_TI2_GPIO_DEF 0x00000000U /*!< TIM3_CH2 selected for PB5 (AF4) remapping */ +#define TIM3_TI2_GPIOB5_AF4 TIM3_OR_TI2_RMP /*!< TIM22_CH2 selected for PB5 (AF4) remapping */ + +#if defined(USB) +#define TIM3_TI1_USB_SOF 0x00000000U /*!< TIM3 TI1 input connected to USB_SOF */ +#endif /* USB */ + +#define TIM3_TI1_GPIO TIM3_OR_TI1_RMP /*!< TIM3 TI1 input connected to ORed GPIOs */ +#define TIM3_ETR_GPIO 0x00000000U /*!< TIM3 ETR input connected to ORed GPIOs */ +#define TIM3_ETR_HSI TIM3_OR_ETR_RMP_1 /*!< TIM3_ETR input is connected to HSI48 clock */ +#endif /* TIM3 */ + +#define TIM21_ETR_GPIO 0x00000000U /*!< TIM21 ETR input connected to ORed GPIOs */ +#if defined(COMP1) && defined(COMP2) +#define TIM21_ETR_COMP2_OUT TIM21_OR_ETR_RMP_0 /*!< TIM21 ETR input connected to COMP2_OUT */ +#define TIM21_ETR_COMP1_OUT TIM21_OR_ETR_RMP_1 /*!< TIM21 ETR input connected to COMP1_OUT */ +#endif /* COMP1 && COMP2 */ +#define TIM21_ETR_LSE TIM21_OR_ETR_RMP /*!< TIM21 ETR input connected to LSE clock */ + +#define TIM21_TI1_GPIO 0x00000000U /*!< TIM21 TI1 input connected to ORed GPIOs */ +#define TIM21_TI1_MCO TIM21_OR_TI1_RMP /*!< TIM21 TI1 input connected to MCO clock */ +#define TIM21_TI1_RTC_WKUT_IT TIM21_OR_TI1_RMP_0 /*!< TIM21 TI1 input connected to RTC WAKEUP interrupt */ +#define TIM21_TI1_HSE_RTC TIM21_OR_TI1_RMP_1 /*!< TIM21 TI1 input connected to HSE_RTC clock */ +#define TIM21_TI1_MSI (TIM21_OR_TI1_RMP_0 | TIM21_OR_TI1_RMP_1) /*!< TIM21 TI1 input connected to MSI clock */ +#define TIM21_TI1_LSE TIM21_OR_TI1_RMP_2 /*!< TIM21 TI1 input connected to LSE clock */ +#define TIM21_TI1_LSI (TIM21_OR_TI1_RMP_2 | TIM21_OR_TI1_RMP_0) /*!< TIM21 TI1 input connected to LSI clock */ +#if defined(COMP1) +#define TIM21_TI1_COMP1_OUT (TIM21_OR_TI1_RMP_2 | TIM21_OR_TI1_RMP_1) /*!< TIM21 TI1 input connected to COMP1_OUT */ +#endif /* COMP1 */ + +#define TIM21_TI2_GPIO 0x00000000U /*!< TIM21 TI2 input connected to ORed GPIOs */ +#if defined(COMP2) +#define TIM21_TI2_COMP2_OUT TIM21_OR_TI2_RMP /*!< TIM21 TI2 input connected to COMP2_OUT */ +#endif /* COMP2 */ + +#if defined(TIM22) +#define TIM22_ETR_GPIO 0x00000000U /*!< TIM22 ETR input is connected to ORed GPIOs */ +#if defined(COMP1) && defined(COMP2) +#define TIM22_ETR_COMP2_OUT TIM22_OR_ETR_RMP_0 /*!< TIM22 ETR input is connected to COMP2_OUT */ +#define TIM22_ETR_COMP1_OUT TIM22_OR_ETR_RMP_1 /*!< TIM22 ETR input is connected to COMP1_OUT */ +#endif /* COMP1 && COMP2 */ +#define TIM22_ETR_LSE TIM22_OR_ETR_RMP /*!< TIM22 ETR input is connected to LSE clock */ + +#define TIM22_TI1_GPIO 0x00000000U /*!< TIM22 TI1 input is connected to ORed GPIOs */ +#if defined(COMP1) && defined(COMP2) +#define TIM22_TI1_COMP2_OUT TIM22_OR_TI1_RMP_0 /*!< TIM22 TI1 input is connected to COMP2_OUT */ +#define TIM22_TI1_COMP1_OUT TIM22_OR_TI1_RMP_1 /*!< TIM22 TI1 input is connected to COMP1_OUT */ +#endif /* COMP1 && COMP2 */ +#endif /* TIM22 */ +/** + * @} + */ + +/** + * @} + */ +/* End of exported constants -------------------------------------------------*/ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup TIMEx_Exported_Macros TIM Extended Exported Macros + * @{ + */ + +/** + * @} + */ +/* End of exported macro -----------------------------------------------------*/ + +/* Private macro -------------------------------------------------------------*/ +/** @defgroup TIMEx_Private_Macros TIM Extended Private Macros + * @{ + */ +#if defined(TIM3) && defined(TIM22) + +#define IS_TIM_REMAP(__INSTANCE__, __TIM_REMAP__) \ + ((((__INSTANCE__) == TIM2) && ((__TIM_REMAP__) <= (TIM2_OR_TI4_RMP | TIM2_OR_ETR_RMP))) || \ + (((__INSTANCE__) == TIM22) && ((__TIM_REMAP__) <= (TIM22_OR_TI1_RMP | TIM22_OR_ETR_RMP))) || \ + (((__INSTANCE__) == TIM21) && ((__TIM_REMAP__) <= (TIM21_OR_ETR_RMP | TIM21_OR_TI1_RMP | TIM21_OR_TI2_RMP))) || \ + (((__INSTANCE__) == TIM3) && ((__TIM_REMAP__) <= (TIM3_OR_ETR_RMP | TIM3_OR_TI1_RMP | TIM3_OR_TI2_RMP | TIM3_OR_TI4_RMP)))) + +#define IS_CHANNEL_AVAILABLE(__INSTANCE__, __CHANNEL__) \ + ((((__INSTANCE__) == TIM2) && (((__CHANNEL__) == TIM_CHANNEL_1) || \ + ((__CHANNEL__) == TIM_CHANNEL_2) || \ + ((__CHANNEL__) == TIM_CHANNEL_3) || \ + ((__CHANNEL__) == TIM_CHANNEL_4))) || \ + (((__INSTANCE__) == TIM3) && (((__CHANNEL__) == TIM_CHANNEL_1) || \ + ((__CHANNEL__) == TIM_CHANNEL_2) || \ + ((__CHANNEL__) == TIM_CHANNEL_3) || \ + ((__CHANNEL__) == TIM_CHANNEL_4))) || \ + (((__INSTANCE__) == TIM21) && (((__CHANNEL__) == TIM_CHANNEL_1) || \ + ((__CHANNEL__) == TIM_CHANNEL_2))) || \ + (((__INSTANCE__) == TIM22) && (((__CHANNEL__) == TIM_CHANNEL_1) || \ + ((__CHANNEL__) == TIM_CHANNEL_2)))) + +#elif defined(TIM22) + +#define IS_TIM_REMAP(__INSTANCE__, __TIM_REMAP__) \ + ((((__INSTANCE__) == TIM2) && ((__TIM_REMAP__) <= (TIM2_OR_TI4_RMP | TIM2_OR_ETR_RMP))) || \ + (((__INSTANCE__) == TIM22) && ((__TIM_REMAP__) <= (TIM22_OR_TI1_RMP | TIM22_OR_ETR_RMP))) || \ + (((__INSTANCE__) == TIM21) && ((__TIM_REMAP__) <= (TIM21_OR_ETR_RMP | TIM21_OR_TI1_RMP | TIM21_OR_TI2_RMP)))) + +#define IS_CHANNEL_AVAILABLE(__INSTANCE__, __CHANNEL__) \ + ((((__INSTANCE__) == TIM2) && (((__CHANNEL__) == TIM_CHANNEL_1) || \ + ((__CHANNEL__) == TIM_CHANNEL_2) || \ + ((__CHANNEL__) == TIM_CHANNEL_3) || \ + ((__CHANNEL__) == TIM_CHANNEL_4))) || \ + (((__INSTANCE__) == TIM21) && (((__CHANNEL__) == TIM_CHANNEL_1) || \ + ((__CHANNEL__) == TIM_CHANNEL_2))) || \ + (((__INSTANCE__) == TIM22) && (((__CHANNEL__) == TIM_CHANNEL_1) || \ + ((__CHANNEL__) == TIM_CHANNEL_2)))) +#else + +#define IS_TIM_REMAP(__INSTANCE__, __TIM_REMAP__) \ + ((((__INSTANCE__) == TIM2) && ((__TIM_REMAP__) <= (TIM2_OR_TI4_RMP | TIM2_OR_ETR_RMP))) || \ + (((__INSTANCE__) == TIM21) && ((__TIM_REMAP__) <= (TIM21_OR_ETR_RMP | TIM21_OR_TI1_RMP | TIM21_OR_TI2_RMP)))) + +#define IS_CHANNEL_AVAILABLE(__INSTANCE__, __CHANNEL__) \ + ((((__INSTANCE__) == TIM2) && (((__CHANNEL__) == TIM_CHANNEL_1) || \ + ((__CHANNEL__) == TIM_CHANNEL_2) || \ + ((__CHANNEL__) == TIM_CHANNEL_3) || \ + ((__CHANNEL__) == TIM_CHANNEL_4))) || \ + (((__INSTANCE__) == TIM21) && (((__CHANNEL__) == TIM_CHANNEL_1) || \ + ((__CHANNEL__) == TIM_CHANNEL_2)))) +#endif /* TIM3 && TIM22 */ + +/** + * @} + */ +/* End of private macro ------------------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup TIMEx_Exported_Functions TIM Extended Exported Functions + * @{ + */ + +/** @addtogroup TIMEx_Exported_Functions_Group5 Extended Peripheral Control functions + * @brief Peripheral Control functions + * @{ + */ +/* Extended Control functions ************************************************/ +HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, + TIM_MasterConfigTypeDef *sMasterConfig); +HAL_StatusTypeDef HAL_TIMEx_RemapConfig(TIM_HandleTypeDef *htim, uint32_t Remap); +/** + * @} + */ + +/** + * @} + */ +/* End of exported functions -------------------------------------------------*/ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + + +#endif /* STM32L0xx_HAL_TIM_EX_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h new file mode 100644 index 0000000..1da0379 --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h @@ -0,0 +1,1591 @@ +/** + ****************************************************************************** + * @file stm32l0xx_hal_uart.h + * @author MCD Application Team + * @brief Header file of UART HAL module. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32L0xx_HAL_UART_H +#define STM32L0xx_HAL_UART_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal_def.h" + +/** @addtogroup STM32L0xx_HAL_Driver + * @{ + */ + +/** @addtogroup UART + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup UART_Exported_Types UART Exported Types + * @{ + */ + +/** + * @brief UART Init Structure definition + */ +typedef struct +{ + uint32_t BaudRate; /*!< This member configures the UART communication baud rate. + The baud rate register is computed using the following formula: + LPUART: + ======= + Baud Rate Register = ((256 * lpuart_ker_ck) / ((huart->Init.BaudRate))) + where lpuart_ker_ck is the UART input clock + UART: + ===== + - If oversampling is 16 or in LIN mode, + Baud Rate Register = ((uart_ker_ck) / ((huart->Init.BaudRate))) + - If oversampling is 8, + Baud Rate Register[15:4] = ((2 * uart_ker_ck) / + ((huart->Init.BaudRate)))[15:4] + Baud Rate Register[3] = 0 + Baud Rate Register[2:0] = (((2 * uart_ker_ck) / + ((huart->Init.BaudRate)))[3:0]) >> 1 + where uart_ker_ck is the UART input clock */ + + uint32_t WordLength; /*!< Specifies the number of data bits transmitted or received in a frame. + This parameter can be a value of @ref UARTEx_Word_Length. */ + + uint32_t StopBits; /*!< Specifies the number of stop bits transmitted. + This parameter can be a value of @ref UART_Stop_Bits. */ + + uint32_t Parity; /*!< Specifies the parity mode. + This parameter can be a value of @ref UART_Parity + @note When parity is enabled, the computed parity is inserted + at the MSB position of the transmitted data (9th bit when + the word length is set to 9 data bits; 8th bit when the + word length is set to 8 data bits). */ + + uint32_t Mode; /*!< Specifies whether the Receive or Transmit mode is enabled or disabled. + This parameter can be a value of @ref UART_Mode. */ + + uint32_t HwFlowCtl; /*!< Specifies whether the hardware flow control mode is enabled + or disabled. + This parameter can be a value of @ref UART_Hardware_Flow_Control. */ + + uint32_t OverSampling; /*!< Specifies whether the Over sampling 8 is enabled or disabled, + to achieve higher speed (up to f_PCLK/8). + This parameter can be a value of @ref UART_Over_Sampling. */ + + uint32_t OneBitSampling; /*!< Specifies whether a single sample or three samples' majority vote is selected. + Selecting the single sample method increases the receiver tolerance to clock + deviations. This parameter can be a value of @ref UART_OneBit_Sampling. */ + + +} UART_InitTypeDef; + +/** + * @brief UART Advanced Features initialization structure definition + */ +typedef struct +{ + uint32_t AdvFeatureInit; /*!< Specifies which advanced UART features is initialized. Several + Advanced Features may be initialized at the same time . + This parameter can be a value of + @ref UART_Advanced_Features_Initialization_Type. */ + + uint32_t TxPinLevelInvert; /*!< Specifies whether the TX pin active level is inverted. + This parameter can be a value of @ref UART_Tx_Inv. */ + + uint32_t RxPinLevelInvert; /*!< Specifies whether the RX pin active level is inverted. + This parameter can be a value of @ref UART_Rx_Inv. */ + + uint32_t DataInvert; /*!< Specifies whether data are inverted (positive/direct logic + vs negative/inverted logic). + This parameter can be a value of @ref UART_Data_Inv. */ + + uint32_t Swap; /*!< Specifies whether TX and RX pins are swapped. + This parameter can be a value of @ref UART_Rx_Tx_Swap. */ + + uint32_t OverrunDisable; /*!< Specifies whether the reception overrun detection is disabled. + This parameter can be a value of @ref UART_Overrun_Disable. */ + + uint32_t DMADisableonRxError; /*!< Specifies whether the DMA is disabled in case of reception error. + This parameter can be a value of @ref UART_DMA_Disable_on_Rx_Error. */ + + uint32_t AutoBaudRateEnable; /*!< Specifies whether auto Baud rate detection is enabled. + This parameter can be a value of @ref UART_AutoBaudRate_Enable. */ + + uint32_t AutoBaudRateMode; /*!< If auto Baud rate detection is enabled, specifies how the rate + detection is carried out. + This parameter can be a value of @ref UART_AutoBaud_Rate_Mode. */ + + uint32_t MSBFirst; /*!< Specifies whether MSB is sent first on UART line. + This parameter can be a value of @ref UART_MSB_First. */ +} UART_AdvFeatureInitTypeDef; + +/** + * @brief HAL UART State definition + * @note HAL UART State value is a combination of 2 different substates: + * gState and RxState (see @ref UART_State_Definition). + * - gState contains UART state information related to global Handle management + * and also information related to Tx operations. + * gState value coding follow below described bitmap : + * b7-b6 Error information + * 00 : No Error + * 01 : (Not Used) + * 10 : Timeout + * 11 : Error + * b5 Peripheral initialization status + * 0 : Reset (Peripheral not initialized) + * 1 : Init done (Peripheral initialized. HAL UART Init function already called) + * b4-b3 (not used) + * xx : Should be set to 00 + * b2 Intrinsic process state + * 0 : Ready + * 1 : Busy (Peripheral busy with some configuration or internal operations) + * b1 (not used) + * x : Should be set to 0 + * b0 Tx state + * 0 : Ready (no Tx operation ongoing) + * 1 : Busy (Tx operation ongoing) + * - RxState contains information related to Rx operations. + * RxState value coding follow below described bitmap : + * b7-b6 (not used) + * xx : Should be set to 00 + * b5 Peripheral initialization status + * 0 : Reset (Peripheral not initialized) + * 1 : Init done (Peripheral initialized) + * b4-b2 (not used) + * xxx : Should be set to 000 + * b1 Rx state + * 0 : Ready (no Rx operation ongoing) + * 1 : Busy (Rx operation ongoing) + * b0 (not used) + * x : Should be set to 0. + */ +typedef uint32_t HAL_UART_StateTypeDef; + +/** + * @brief UART clock sources definition + */ +typedef enum +{ + UART_CLOCKSOURCE_PCLK1 = 0x00U, /*!< PCLK1 clock source */ + UART_CLOCKSOURCE_PCLK2 = 0x01U, /*!< PCLK2 clock source */ + UART_CLOCKSOURCE_HSI = 0x02U, /*!< HSI clock source */ + UART_CLOCKSOURCE_SYSCLK = 0x04U, /*!< SYSCLK clock source */ + UART_CLOCKSOURCE_LSE = 0x08U, /*!< LSE clock source */ + UART_CLOCKSOURCE_UNDEFINED = 0x10U /*!< Undefined clock source */ +} UART_ClockSourceTypeDef; + +/** + * @brief HAL UART Reception type definition + * @note HAL UART Reception type value aims to identify which type of Reception is ongoing. + * It is expected to admit following values : + * HAL_UART_RECEPTION_STANDARD = 0x00U, + * HAL_UART_RECEPTION_TOIDLE = 0x01U, + * HAL_UART_RECEPTION_TORTO = 0x02U, + * HAL_UART_RECEPTION_TOCHARMATCH = 0x03U, + */ +typedef uint32_t HAL_UART_RxTypeTypeDef; + +/** + * @brief UART handle Structure definition + */ +typedef struct __UART_HandleTypeDef +{ + USART_TypeDef *Instance; /*!< UART registers base address */ + + UART_InitTypeDef Init; /*!< UART communication parameters */ + + UART_AdvFeatureInitTypeDef AdvancedInit; /*!< UART Advanced Features initialization parameters */ + + uint8_t *pTxBuffPtr; /*!< Pointer to UART Tx transfer Buffer */ + + uint16_t TxXferSize; /*!< UART Tx Transfer size */ + + __IO uint16_t TxXferCount; /*!< UART Tx Transfer Counter */ + + uint8_t *pRxBuffPtr; /*!< Pointer to UART Rx transfer Buffer */ + + uint16_t RxXferSize; /*!< UART Rx Transfer size */ + + __IO uint16_t RxXferCount; /*!< UART Rx Transfer Counter */ + + uint16_t Mask; /*!< UART Rx RDR register mask */ + + __IO HAL_UART_RxTypeTypeDef ReceptionType; /*!< Type of ongoing reception */ + + void (*RxISR)(struct __UART_HandleTypeDef *huart); /*!< Function pointer on Rx IRQ handler */ + + void (*TxISR)(struct __UART_HandleTypeDef *huart); /*!< Function pointer on Tx IRQ handler */ + + DMA_HandleTypeDef *hdmatx; /*!< UART Tx DMA Handle parameters */ + + DMA_HandleTypeDef *hdmarx; /*!< UART Rx DMA Handle parameters */ + + HAL_LockTypeDef Lock; /*!< Locking object */ + + __IO HAL_UART_StateTypeDef gState; /*!< UART state information related to global Handle management + and also related to Tx operations. This parameter + can be a value of @ref HAL_UART_StateTypeDef */ + + __IO HAL_UART_StateTypeDef RxState; /*!< UART state information related to Rx operations. This + parameter can be a value of @ref HAL_UART_StateTypeDef */ + + __IO uint32_t ErrorCode; /*!< UART Error code */ + +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) + void (* TxHalfCpltCallback)(struct __UART_HandleTypeDef *huart); /*!< UART Tx Half Complete Callback */ + void (* TxCpltCallback)(struct __UART_HandleTypeDef *huart); /*!< UART Tx Complete Callback */ + void (* RxHalfCpltCallback)(struct __UART_HandleTypeDef *huart); /*!< UART Rx Half Complete Callback */ + void (* RxCpltCallback)(struct __UART_HandleTypeDef *huart); /*!< UART Rx Complete Callback */ + void (* ErrorCallback)(struct __UART_HandleTypeDef *huart); /*!< UART Error Callback */ + void (* AbortCpltCallback)(struct __UART_HandleTypeDef *huart); /*!< UART Abort Complete Callback */ + void (* AbortTransmitCpltCallback)(struct __UART_HandleTypeDef *huart); /*!< UART Abort Transmit Complete Callback */ + void (* AbortReceiveCpltCallback)(struct __UART_HandleTypeDef *huart); /*!< UART Abort Receive Complete Callback */ + void (* WakeupCallback)(struct __UART_HandleTypeDef *huart); /*!< UART Wakeup Callback */ + void (* RxEventCallback)(struct __UART_HandleTypeDef *huart, uint16_t Pos); /*!< UART Reception Event Callback */ + + void (* MspInitCallback)(struct __UART_HandleTypeDef *huart); /*!< UART Msp Init callback */ + void (* MspDeInitCallback)(struct __UART_HandleTypeDef *huart); /*!< UART Msp DeInit callback */ +#endif /* USE_HAL_UART_REGISTER_CALLBACKS */ + +} UART_HandleTypeDef; + +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) +/** + * @brief HAL UART Callback ID enumeration definition + */ +typedef enum +{ + HAL_UART_TX_HALFCOMPLETE_CB_ID = 0x00U, /*!< UART Tx Half Complete Callback ID */ + HAL_UART_TX_COMPLETE_CB_ID = 0x01U, /*!< UART Tx Complete Callback ID */ + HAL_UART_RX_HALFCOMPLETE_CB_ID = 0x02U, /*!< UART Rx Half Complete Callback ID */ + HAL_UART_RX_COMPLETE_CB_ID = 0x03U, /*!< UART Rx Complete Callback ID */ + HAL_UART_ERROR_CB_ID = 0x04U, /*!< UART Error Callback ID */ + HAL_UART_ABORT_COMPLETE_CB_ID = 0x05U, /*!< UART Abort Complete Callback ID */ + HAL_UART_ABORT_TRANSMIT_COMPLETE_CB_ID = 0x06U, /*!< UART Abort Transmit Complete Callback ID */ + HAL_UART_ABORT_RECEIVE_COMPLETE_CB_ID = 0x07U, /*!< UART Abort Receive Complete Callback ID */ + HAL_UART_WAKEUP_CB_ID = 0x08U, /*!< UART Wakeup Callback ID */ + + HAL_UART_MSPINIT_CB_ID = 0x0BU, /*!< UART MspInit callback ID */ + HAL_UART_MSPDEINIT_CB_ID = 0x0CU /*!< UART MspDeInit callback ID */ + +} HAL_UART_CallbackIDTypeDef; + +/** + * @brief HAL UART Callback pointer definition + */ +typedef void (*pUART_CallbackTypeDef)(UART_HandleTypeDef *huart); /*!< pointer to an UART callback function */ +typedef void (*pUART_RxEventCallbackTypeDef) +(struct __UART_HandleTypeDef *huart, uint16_t Pos); /*!< pointer to a UART Rx Event specific callback function */ + +#endif /* USE_HAL_UART_REGISTER_CALLBACKS */ + +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup UART_Exported_Constants UART Exported Constants + * @{ + */ + +/** @defgroup UART_State_Definition UART State Code Definition + * @{ + */ +#define HAL_UART_STATE_RESET 0x00000000U /*!< Peripheral is not initialized + Value is allowed for gState and RxState */ +#define HAL_UART_STATE_READY 0x00000020U /*!< Peripheral Initialized and ready for use + Value is allowed for gState and RxState */ +#define HAL_UART_STATE_BUSY 0x00000024U /*!< an internal process is ongoing + Value is allowed for gState only */ +#define HAL_UART_STATE_BUSY_TX 0x00000021U /*!< Data Transmission process is ongoing + Value is allowed for gState only */ +#define HAL_UART_STATE_BUSY_RX 0x00000022U /*!< Data Reception process is ongoing + Value is allowed for RxState only */ +#define HAL_UART_STATE_BUSY_TX_RX 0x00000023U /*!< Data Transmission and Reception process is ongoing + Not to be used for neither gState nor RxState.Value is result + of combination (Or) between gState and RxState values */ +#define HAL_UART_STATE_TIMEOUT 0x000000A0U /*!< Timeout state + Value is allowed for gState only */ +#define HAL_UART_STATE_ERROR 0x000000E0U /*!< Error + Value is allowed for gState only */ +/** + * @} + */ + +/** @defgroup UART_Error_Definition UART Error Definition + * @{ + */ +#define HAL_UART_ERROR_NONE (0x00000000U) /*!< No error */ +#define HAL_UART_ERROR_PE (0x00000001U) /*!< Parity error */ +#define HAL_UART_ERROR_NE (0x00000002U) /*!< Noise error */ +#define HAL_UART_ERROR_FE (0x00000004U) /*!< Frame error */ +#define HAL_UART_ERROR_ORE (0x00000008U) /*!< Overrun error */ +#define HAL_UART_ERROR_DMA (0x00000010U) /*!< DMA transfer error */ +#define HAL_UART_ERROR_RTO (0x00000020U) /*!< Receiver Timeout error */ + +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) +#define HAL_UART_ERROR_INVALID_CALLBACK (0x00000040U) /*!< Invalid Callback error */ +#endif /* USE_HAL_UART_REGISTER_CALLBACKS */ +/** + * @} + */ + +/** @defgroup UART_Stop_Bits UART Number of Stop Bits + * @{ + */ +#define UART_STOPBITS_0_5 USART_CR2_STOP_0 /*!< UART frame with 0.5 stop bit */ +#define UART_STOPBITS_1 0x00000000U /*!< UART frame with 1 stop bit */ +#define UART_STOPBITS_1_5 (USART_CR2_STOP_0 | USART_CR2_STOP_1) /*!< UART frame with 1.5 stop bits */ +#define UART_STOPBITS_2 USART_CR2_STOP_1 /*!< UART frame with 2 stop bits */ +/** + * @} + */ + +/** @defgroup UART_Parity UART Parity + * @{ + */ +#define UART_PARITY_NONE 0x00000000U /*!< No parity */ +#define UART_PARITY_EVEN USART_CR1_PCE /*!< Even parity */ +#define UART_PARITY_ODD (USART_CR1_PCE | USART_CR1_PS) /*!< Odd parity */ +/** + * @} + */ + +/** @defgroup UART_Hardware_Flow_Control UART Hardware Flow Control + * @{ + */ +#define UART_HWCONTROL_NONE 0x00000000U /*!< No hardware control */ +#define UART_HWCONTROL_RTS USART_CR3_RTSE /*!< Request To Send */ +#define UART_HWCONTROL_CTS USART_CR3_CTSE /*!< Clear To Send */ +#define UART_HWCONTROL_RTS_CTS (USART_CR3_RTSE | USART_CR3_CTSE) /*!< Request and Clear To Send */ +/** + * @} + */ + +/** @defgroup UART_Mode UART Transfer Mode + * @{ + */ +#define UART_MODE_RX USART_CR1_RE /*!< RX mode */ +#define UART_MODE_TX USART_CR1_TE /*!< TX mode */ +#define UART_MODE_TX_RX (USART_CR1_TE |USART_CR1_RE) /*!< RX and TX mode */ +/** + * @} + */ + +/** @defgroup UART_State UART State + * @{ + */ +#define UART_STATE_DISABLE 0x00000000U /*!< UART disabled */ +#define UART_STATE_ENABLE USART_CR1_UE /*!< UART enabled */ +/** + * @} + */ + +/** @defgroup UART_Over_Sampling UART Over Sampling + * @{ + */ +#define UART_OVERSAMPLING_16 0x00000000U /*!< Oversampling by 16 */ +#define UART_OVERSAMPLING_8 USART_CR1_OVER8 /*!< Oversampling by 8 */ +/** + * @} + */ + +/** @defgroup UART_OneBit_Sampling UART One Bit Sampling Method + * @{ + */ +#define UART_ONE_BIT_SAMPLE_DISABLE 0x00000000U /*!< One-bit sampling disable */ +#define UART_ONE_BIT_SAMPLE_ENABLE USART_CR3_ONEBIT /*!< One-bit sampling enable */ +/** + * @} + */ + +/** @defgroup UART_AutoBaud_Rate_Mode UART Advanced Feature AutoBaud Rate Mode + * @{ + */ +#define UART_ADVFEATURE_AUTOBAUDRATE_ONSTARTBIT 0x00000000U /*!< Auto Baud rate detection + on start bit */ +#define UART_ADVFEATURE_AUTOBAUDRATE_ONFALLINGEDGE USART_CR2_ABRMODE_0 /*!< Auto Baud rate detection + on falling edge */ +#define UART_ADVFEATURE_AUTOBAUDRATE_ON0X7FFRAME USART_CR2_ABRMODE_1 /*!< Auto Baud rate detection + on 0x7F frame detection */ +#define UART_ADVFEATURE_AUTOBAUDRATE_ON0X55FRAME USART_CR2_ABRMODE /*!< Auto Baud rate detection + on 0x55 frame detection */ +/** + * @} + */ + +/** @defgroup UART_Receiver_Timeout UART Receiver Timeout + * @{ + */ +#define UART_RECEIVER_TIMEOUT_DISABLE 0x00000000U /*!< UART Receiver Timeout disable */ +#define UART_RECEIVER_TIMEOUT_ENABLE USART_CR2_RTOEN /*!< UART Receiver Timeout enable */ +/** + * @} + */ + +/** @defgroup UART_LIN UART Local Interconnection Network mode + * @{ + */ +#define UART_LIN_DISABLE 0x00000000U /*!< Local Interconnect Network disable */ +#define UART_LIN_ENABLE USART_CR2_LINEN /*!< Local Interconnect Network enable */ +/** + * @} + */ + +/** @defgroup UART_LIN_Break_Detection UART LIN Break Detection + * @{ + */ +#define UART_LINBREAKDETECTLENGTH_10B 0x00000000U /*!< LIN 10-bit break detection length */ +#define UART_LINBREAKDETECTLENGTH_11B USART_CR2_LBDL /*!< LIN 11-bit break detection length */ +/** + * @} + */ + +/** @defgroup UART_DMA_Tx UART DMA Tx + * @{ + */ +#define UART_DMA_TX_DISABLE 0x00000000U /*!< UART DMA TX disabled */ +#define UART_DMA_TX_ENABLE USART_CR3_DMAT /*!< UART DMA TX enabled */ +/** + * @} + */ + +/** @defgroup UART_DMA_Rx UART DMA Rx + * @{ + */ +#define UART_DMA_RX_DISABLE 0x00000000U /*!< UART DMA RX disabled */ +#define UART_DMA_RX_ENABLE USART_CR3_DMAR /*!< UART DMA RX enabled */ +/** + * @} + */ + +/** @defgroup UART_Half_Duplex_Selection UART Half Duplex Selection + * @{ + */ +#define UART_HALF_DUPLEX_DISABLE 0x00000000U /*!< UART half-duplex disabled */ +#define UART_HALF_DUPLEX_ENABLE USART_CR3_HDSEL /*!< UART half-duplex enabled */ +/** + * @} + */ + +/** @defgroup UART_WakeUp_Methods UART WakeUp Methods + * @{ + */ +#define UART_WAKEUPMETHOD_IDLELINE 0x00000000U /*!< UART wake-up on idle line */ +#define UART_WAKEUPMETHOD_ADDRESSMARK USART_CR1_WAKE /*!< UART wake-up on address mark */ +/** + * @} + */ + +/** @defgroup UART_Request_Parameters UART Request Parameters + * @{ + */ +#define UART_AUTOBAUD_REQUEST USART_RQR_ABRRQ /*!< Auto-Baud Rate Request */ +#define UART_SENDBREAK_REQUEST USART_RQR_SBKRQ /*!< Send Break Request */ +#define UART_MUTE_MODE_REQUEST USART_RQR_MMRQ /*!< Mute Mode Request */ +#define UART_RXDATA_FLUSH_REQUEST USART_RQR_RXFRQ /*!< Receive Data flush Request */ +#define UART_TXDATA_FLUSH_REQUEST USART_RQR_TXFRQ /*!< Transmit data flush Request */ +/** + * @} + */ + +/** @defgroup UART_Advanced_Features_Initialization_Type UART Advanced Feature Initialization Type + * @{ + */ +#define UART_ADVFEATURE_NO_INIT 0x00000000U /*!< No advanced feature initialization */ +#define UART_ADVFEATURE_TXINVERT_INIT 0x00000001U /*!< TX pin active level inversion */ +#define UART_ADVFEATURE_RXINVERT_INIT 0x00000002U /*!< RX pin active level inversion */ +#define UART_ADVFEATURE_DATAINVERT_INIT 0x00000004U /*!< Binary data inversion */ +#define UART_ADVFEATURE_SWAP_INIT 0x00000008U /*!< TX/RX pins swap */ +#define UART_ADVFEATURE_RXOVERRUNDISABLE_INIT 0x00000010U /*!< RX overrun disable */ +#define UART_ADVFEATURE_DMADISABLEONERROR_INIT 0x00000020U /*!< DMA disable on Reception Error */ +#define UART_ADVFEATURE_AUTOBAUDRATE_INIT 0x00000040U /*!< Auto Baud rate detection initialization */ +#define UART_ADVFEATURE_MSBFIRST_INIT 0x00000080U /*!< Most significant bit sent/received first */ +/** + * @} + */ + +/** @defgroup UART_Tx_Inv UART Advanced Feature TX Pin Active Level Inversion + * @{ + */ +#define UART_ADVFEATURE_TXINV_DISABLE 0x00000000U /*!< TX pin active level inversion disable */ +#define UART_ADVFEATURE_TXINV_ENABLE USART_CR2_TXINV /*!< TX pin active level inversion enable */ +/** + * @} + */ + +/** @defgroup UART_Rx_Inv UART Advanced Feature RX Pin Active Level Inversion + * @{ + */ +#define UART_ADVFEATURE_RXINV_DISABLE 0x00000000U /*!< RX pin active level inversion disable */ +#define UART_ADVFEATURE_RXINV_ENABLE USART_CR2_RXINV /*!< RX pin active level inversion enable */ +/** + * @} + */ + +/** @defgroup UART_Data_Inv UART Advanced Feature Binary Data Inversion + * @{ + */ +#define UART_ADVFEATURE_DATAINV_DISABLE 0x00000000U /*!< Binary data inversion disable */ +#define UART_ADVFEATURE_DATAINV_ENABLE USART_CR2_DATAINV /*!< Binary data inversion enable */ +/** + * @} + */ + +/** @defgroup UART_Rx_Tx_Swap UART Advanced Feature RX TX Pins Swap + * @{ + */ +#define UART_ADVFEATURE_SWAP_DISABLE 0x00000000U /*!< TX/RX pins swap disable */ +#define UART_ADVFEATURE_SWAP_ENABLE USART_CR2_SWAP /*!< TX/RX pins swap enable */ +/** + * @} + */ + +/** @defgroup UART_Overrun_Disable UART Advanced Feature Overrun Disable + * @{ + */ +#define UART_ADVFEATURE_OVERRUN_ENABLE 0x00000000U /*!< RX overrun enable */ +#define UART_ADVFEATURE_OVERRUN_DISABLE USART_CR3_OVRDIS /*!< RX overrun disable */ +/** + * @} + */ + +/** @defgroup UART_AutoBaudRate_Enable UART Advanced Feature Auto BaudRate Enable + * @{ + */ +#define UART_ADVFEATURE_AUTOBAUDRATE_DISABLE 0x00000000U /*!< RX Auto Baud rate detection enable */ +#define UART_ADVFEATURE_AUTOBAUDRATE_ENABLE USART_CR2_ABREN /*!< RX Auto Baud rate detection disable */ +/** + * @} + */ + +/** @defgroup UART_DMA_Disable_on_Rx_Error UART Advanced Feature DMA Disable On Rx Error + * @{ + */ +#define UART_ADVFEATURE_DMA_ENABLEONRXERROR 0x00000000U /*!< DMA enable on Reception Error */ +#define UART_ADVFEATURE_DMA_DISABLEONRXERROR USART_CR3_DDRE /*!< DMA disable on Reception Error */ +/** + * @} + */ + +/** @defgroup UART_MSB_First UART Advanced Feature MSB First + * @{ + */ +#define UART_ADVFEATURE_MSBFIRST_DISABLE 0x00000000U /*!< Most significant bit sent/received + first disable */ +#define UART_ADVFEATURE_MSBFIRST_ENABLE USART_CR2_MSBFIRST /*!< Most significant bit sent/received + first enable */ +/** + * @} + */ + +/** @defgroup UART_Stop_Mode_Enable UART Advanced Feature Stop Mode Enable + * @{ + */ +#define UART_ADVFEATURE_STOPMODE_DISABLE 0x00000000U /*!< UART stop mode disable */ +#define UART_ADVFEATURE_STOPMODE_ENABLE USART_CR1_UESM /*!< UART stop mode enable */ +/** + * @} + */ + +/** @defgroup UART_Mute_Mode UART Advanced Feature Mute Mode Enable + * @{ + */ +#define UART_ADVFEATURE_MUTEMODE_DISABLE 0x00000000U /*!< UART mute mode disable */ +#define UART_ADVFEATURE_MUTEMODE_ENABLE USART_CR1_MME /*!< UART mute mode enable */ +/** + * @} + */ + +/** @defgroup UART_CR2_ADDRESS_LSB_POS UART Address-matching LSB Position In CR2 Register + * @{ + */ +#define UART_CR2_ADDRESS_LSB_POS 24U /*!< UART address-matching LSB position in CR2 register */ +/** + * @} + */ + +/** @defgroup UART_WakeUp_from_Stop_Selection UART WakeUp From Stop Selection + * @{ + */ +#define UART_WAKEUP_ON_ADDRESS 0x00000000U /*!< UART wake-up on address */ +#define UART_WAKEUP_ON_STARTBIT USART_CR3_WUS_1 /*!< UART wake-up on start bit */ +#define UART_WAKEUP_ON_READDATA_NONEMPTY USART_CR3_WUS /*!< UART wake-up on receive data register + not empty or RXFIFO is not empty */ +/** + * @} + */ + +/** @defgroup UART_DriverEnable_Polarity UART DriverEnable Polarity + * @{ + */ +#define UART_DE_POLARITY_HIGH 0x00000000U /*!< Driver enable signal is active high */ +#define UART_DE_POLARITY_LOW USART_CR3_DEP /*!< Driver enable signal is active low */ +/** + * @} + */ + +/** @defgroup UART_CR1_DEAT_ADDRESS_LSB_POS UART Driver Enable Assertion Time LSB Position In CR1 Register + * @{ + */ +#define UART_CR1_DEAT_ADDRESS_LSB_POS 21U /*!< UART Driver Enable assertion time LSB + position in CR1 register */ +/** + * @} + */ + +/** @defgroup UART_CR1_DEDT_ADDRESS_LSB_POS UART Driver Enable DeAssertion Time LSB Position In CR1 Register + * @{ + */ +#define UART_CR1_DEDT_ADDRESS_LSB_POS 16U /*!< UART Driver Enable de-assertion time LSB + position in CR1 register */ +/** + * @} + */ + +/** @defgroup UART_Interruption_Mask UART Interruptions Flag Mask + * @{ + */ +#define UART_IT_MASK 0x001FU /*!< UART interruptions flags mask */ +/** + * @} + */ + +/** @defgroup UART_TimeOut_Value UART polling-based communications time-out value + * @{ + */ +#define HAL_UART_TIMEOUT_VALUE 0x1FFFFFFU /*!< UART polling-based communications time-out value */ +/** + * @} + */ + +/** @defgroup UART_Flags UART Status Flags + * Elements values convention: 0xXXXX + * - 0xXXXX : Flag mask in the ISR register + * @{ + */ +#define UART_FLAG_REACK USART_ISR_REACK /*!< UART receive enable acknowledge flag */ +#define UART_FLAG_TEACK USART_ISR_TEACK /*!< UART transmit enable acknowledge flag */ +#define UART_FLAG_WUF USART_ISR_WUF /*!< UART wake-up from stop mode flag */ +#define UART_FLAG_RWU USART_ISR_RWU /*!< UART receiver wake-up from mute mode flag */ +#define UART_FLAG_SBKF USART_ISR_SBKF /*!< UART send break flag */ +#define UART_FLAG_CMF USART_ISR_CMF /*!< UART character match flag */ +#define UART_FLAG_BUSY USART_ISR_BUSY /*!< UART busy flag */ +#define UART_FLAG_ABRF USART_ISR_ABRF /*!< UART auto Baud rate flag */ +#define UART_FLAG_ABRE USART_ISR_ABRE /*!< UART auto Baud rate error */ +#define UART_FLAG_RTOF USART_ISR_RTOF /*!< UART receiver timeout flag */ +#define UART_FLAG_CTS USART_ISR_CTS /*!< UART clear to send flag */ +#define UART_FLAG_CTSIF USART_ISR_CTSIF /*!< UART clear to send interrupt flag */ +#define UART_FLAG_LBDF USART_ISR_LBDF /*!< UART LIN break detection flag */ +#define UART_FLAG_TXE USART_ISR_TXE /*!< UART transmit data register empty */ +#define UART_FLAG_TC USART_ISR_TC /*!< UART transmission complete */ +#define UART_FLAG_RXNE USART_ISR_RXNE /*!< UART read data register not empty */ +#define UART_FLAG_IDLE USART_ISR_IDLE /*!< UART idle flag */ +#define UART_FLAG_ORE USART_ISR_ORE /*!< UART overrun error */ +#define UART_FLAG_NE USART_ISR_NE /*!< UART noise error */ +#define UART_FLAG_FE USART_ISR_FE /*!< UART frame error */ +#define UART_FLAG_PE USART_ISR_PE /*!< UART parity error */ +/** + * @} + */ + +/** @defgroup UART_Interrupt_definition UART Interrupts Definition + * Elements values convention: 000ZZZZZ0XXYYYYYb + * - YYYYY : Interrupt source position in the XX register (5bits) + * - XX : Interrupt source register (2bits) + * - 01: CR1 register + * - 10: CR2 register + * - 11: CR3 register + * - ZZZZZ : Flag position in the ISR register(5bits) + * Elements values convention: 000000000XXYYYYYb + * - YYYYY : Interrupt source position in the XX register (5bits) + * - XX : Interrupt source register (2bits) + * - 01: CR1 register + * - 10: CR2 register + * - 11: CR3 register + * Elements values convention: 0000ZZZZ00000000b + * - ZZZZ : Flag position in the ISR register(4bits) + * @{ + */ +#define UART_IT_PE 0x0028U /*!< UART parity error interruption */ +#define UART_IT_TXE 0x0727U /*!< UART transmit data register empty interruption */ +#define UART_IT_TC 0x0626U /*!< UART transmission complete interruption */ +#define UART_IT_RXNE 0x0525U /*!< UART read data register not empty interruption */ +#define UART_IT_IDLE 0x0424U /*!< UART idle interruption */ +#define UART_IT_LBD 0x0846U /*!< UART LIN break detection interruption */ +#define UART_IT_CTS 0x096AU /*!< UART CTS interruption */ +#define UART_IT_CM 0x112EU /*!< UART character match interruption */ +#define UART_IT_WUF 0x1476U /*!< UART wake-up from stop mode interruption */ +#define UART_IT_RTO 0x0B3AU /*!< UART receiver timeout interruption */ + +#define UART_IT_ERR 0x0060U /*!< UART error interruption */ + +#define UART_IT_ORE 0x0300U /*!< UART overrun error interruption */ +#define UART_IT_NE 0x0200U /*!< UART noise error interruption */ +#define UART_IT_FE 0x0100U /*!< UART frame error interruption */ +/** + * @} + */ + +/** @defgroup UART_IT_CLEAR_Flags UART Interruption Clear Flags + * @{ + */ +#define UART_CLEAR_PEF USART_ICR_PECF /*!< Parity Error Clear Flag */ +#define UART_CLEAR_FEF USART_ICR_FECF /*!< Framing Error Clear Flag */ +#define UART_CLEAR_NEF USART_ICR_NCF /*!< Noise Error detected Clear Flag */ +#define UART_CLEAR_OREF USART_ICR_ORECF /*!< Overrun Error Clear Flag */ +#define UART_CLEAR_IDLEF USART_ICR_IDLECF /*!< IDLE line detected Clear Flag */ +#define UART_CLEAR_TCF USART_ICR_TCCF /*!< Transmission Complete Clear Flag */ +#define UART_CLEAR_LBDF USART_ICR_LBDCF /*!< LIN Break Detection Clear Flag */ +#define UART_CLEAR_CTSF USART_ICR_CTSCF /*!< CTS Interrupt Clear Flag */ +#define UART_CLEAR_CMF USART_ICR_CMCF /*!< Character Match Clear Flag */ +#define UART_CLEAR_WUF USART_ICR_WUCF /*!< Wake Up from stop mode Clear Flag */ +#define UART_CLEAR_RTOF USART_ICR_RTOCF /*!< UART receiver timeout clear flag */ +/** + * @} + */ + +/** @defgroup UART_RECEPTION_TYPE_Values UART Reception type values + * @{ + */ +#define HAL_UART_RECEPTION_STANDARD (0x00000000U) /*!< Standard reception */ +#define HAL_UART_RECEPTION_TOIDLE (0x00000001U) /*!< Reception till completion or IDLE event */ +#define HAL_UART_RECEPTION_TORTO (0x00000002U) /*!< Reception till completion or RTO event */ +#define HAL_UART_RECEPTION_TOCHARMATCH (0x00000003U) /*!< Reception till completion or CM event */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macros -----------------------------------------------------------*/ +/** @defgroup UART_Exported_Macros UART Exported Macros + * @{ + */ + +/** @brief Reset UART handle states. + * @param __HANDLE__ UART handle. + * @retval None + */ +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) +#define __HAL_UART_RESET_HANDLE_STATE(__HANDLE__) do{ \ + (__HANDLE__)->gState = HAL_UART_STATE_RESET; \ + (__HANDLE__)->RxState = HAL_UART_STATE_RESET; \ + (__HANDLE__)->MspInitCallback = NULL; \ + (__HANDLE__)->MspDeInitCallback = NULL; \ + } while(0U) +#else +#define __HAL_UART_RESET_HANDLE_STATE(__HANDLE__) do{ \ + (__HANDLE__)->gState = HAL_UART_STATE_RESET; \ + (__HANDLE__)->RxState = HAL_UART_STATE_RESET; \ + } while(0U) +#endif /*USE_HAL_UART_REGISTER_CALLBACKS */ + +/** @brief Flush the UART Data registers. + * @param __HANDLE__ specifies the UART Handle. + * @retval None + */ +#define __HAL_UART_FLUSH_DRREGISTER(__HANDLE__) \ + do{ \ + SET_BIT((__HANDLE__)->Instance->RQR, UART_RXDATA_FLUSH_REQUEST); \ + SET_BIT((__HANDLE__)->Instance->RQR, UART_TXDATA_FLUSH_REQUEST); \ + } while(0U) + +/** @brief Clear the specified UART pending flag. + * @param __HANDLE__ specifies the UART Handle. + * @param __FLAG__ specifies the flag to check. + * This parameter can be any combination of the following values: + * @arg @ref UART_CLEAR_PEF Parity Error Clear Flag + * @arg @ref UART_CLEAR_FEF Framing Error Clear Flag + * @arg @ref UART_CLEAR_NEF Noise detected Clear Flag + * @arg @ref UART_CLEAR_OREF Overrun Error Clear Flag + * @arg @ref UART_CLEAR_IDLEF IDLE line detected Clear Flag + * @arg @ref UART_CLEAR_TCF Transmission Complete Clear Flag + * @arg @ref UART_CLEAR_RTOF Receiver Timeout clear flag + * @arg @ref UART_CLEAR_LBDF LIN Break Detection Clear Flag + * @arg @ref UART_CLEAR_CTSF CTS Interrupt Clear Flag + * @arg @ref UART_CLEAR_CMF Character Match Clear Flag + * @arg @ref UART_CLEAR_WUF Wake Up from stop mode Clear Flag + * @retval None + */ +#define __HAL_UART_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ICR = (__FLAG__)) + +/** @brief Clear the UART PE pending flag. + * @param __HANDLE__ specifies the UART Handle. + * @retval None + */ +#define __HAL_UART_CLEAR_PEFLAG(__HANDLE__) __HAL_UART_CLEAR_FLAG((__HANDLE__), UART_CLEAR_PEF) + +/** @brief Clear the UART FE pending flag. + * @param __HANDLE__ specifies the UART Handle. + * @retval None + */ +#define __HAL_UART_CLEAR_FEFLAG(__HANDLE__) __HAL_UART_CLEAR_FLAG((__HANDLE__), UART_CLEAR_FEF) + +/** @brief Clear the UART NE pending flag. + * @param __HANDLE__ specifies the UART Handle. + * @retval None + */ +#define __HAL_UART_CLEAR_NEFLAG(__HANDLE__) __HAL_UART_CLEAR_FLAG((__HANDLE__), UART_CLEAR_NEF) + +/** @brief Clear the UART ORE pending flag. + * @param __HANDLE__ specifies the UART Handle. + * @retval None + */ +#define __HAL_UART_CLEAR_OREFLAG(__HANDLE__) __HAL_UART_CLEAR_FLAG((__HANDLE__), UART_CLEAR_OREF) + +/** @brief Clear the UART IDLE pending flag. + * @param __HANDLE__ specifies the UART Handle. + * @retval None + */ +#define __HAL_UART_CLEAR_IDLEFLAG(__HANDLE__) __HAL_UART_CLEAR_FLAG((__HANDLE__), UART_CLEAR_IDLEF) + + +/** @brief Check whether the specified UART flag is set or not. + * @param __HANDLE__ specifies the UART Handle. + * @param __FLAG__ specifies the flag to check. + * This parameter can be one of the following values: + * @arg @ref UART_FLAG_REACK Receive enable acknowledge flag + * @arg @ref UART_FLAG_TEACK Transmit enable acknowledge flag + * @arg @ref UART_FLAG_WUF Wake up from stop mode flag + * @arg @ref UART_FLAG_RWU Receiver wake up flag (if the UART in mute mode) + * @arg @ref UART_FLAG_SBKF Send Break flag + * @arg @ref UART_FLAG_CMF Character match flag + * @arg @ref UART_FLAG_BUSY Busy flag + * @arg @ref UART_FLAG_ABRF Auto Baud rate detection flag + * @arg @ref UART_FLAG_ABRE Auto Baud rate detection error flag + * @arg @ref UART_FLAG_CTS CTS Change flag + * @arg @ref UART_FLAG_LBDF LIN Break detection flag + * @arg @ref UART_FLAG_TXE Transmit data register empty flag + * @arg @ref UART_FLAG_TC Transmission Complete flag + * @arg @ref UART_FLAG_RXNE Receive data register not empty flag + * @arg @ref UART_FLAG_RTOF Receiver Timeout flag + * @arg @ref UART_FLAG_IDLE Idle Line detection flag + * @arg @ref UART_FLAG_ORE Overrun Error flag + * @arg @ref UART_FLAG_NE Noise Error flag + * @arg @ref UART_FLAG_FE Framing Error flag + * @arg @ref UART_FLAG_PE Parity Error flag + * @retval The new state of __FLAG__ (TRUE or FALSE). + */ +#define __HAL_UART_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->ISR & (__FLAG__)) == (__FLAG__)) + +/** @brief Enable the specified UART interrupt. + * @param __HANDLE__ specifies the UART Handle. + * @param __INTERRUPT__ specifies the UART interrupt source to enable. + * This parameter can be one of the following values: + * @arg @ref UART_IT_WUF Wakeup from stop mode interrupt + * @arg @ref UART_IT_CM Character match interrupt + * @arg @ref UART_IT_CTS CTS change interrupt + * @arg @ref UART_IT_LBD LIN Break detection interrupt + * @arg @ref UART_IT_TXE Transmit Data Register empty interrupt + * @arg @ref UART_IT_TC Transmission complete interrupt + * @arg @ref UART_IT_RXNE Receive Data register not empty interrupt + * @arg @ref UART_IT_RTO Receive Timeout interrupt + * @arg @ref UART_IT_IDLE Idle line detection interrupt + * @arg @ref UART_IT_PE Parity Error interrupt + * @arg @ref UART_IT_ERR Error interrupt (frame error, noise error, overrun error) + * @retval None + */ +#define __HAL_UART_ENABLE_IT(__HANDLE__, __INTERRUPT__) (\ + ((((uint8_t)(__INTERRUPT__)) >> 5U) == 1U)?\ + ((__HANDLE__)->Instance->CR1 |= (1U <<\ + ((__INTERRUPT__) & UART_IT_MASK))): \ + ((((uint8_t)(__INTERRUPT__)) >> 5U) == 2U)?\ + ((__HANDLE__)->Instance->CR2 |= (1U <<\ + ((__INTERRUPT__) & UART_IT_MASK))): \ + ((__HANDLE__)->Instance->CR3 |= (1U <<\ + ((__INTERRUPT__) & UART_IT_MASK)))) + +/** @brief Disable the specified UART interrupt. + * @param __HANDLE__ specifies the UART Handle. + * @param __INTERRUPT__ specifies the UART interrupt source to disable. + * This parameter can be one of the following values: + * @arg @ref UART_IT_WUF Wakeup from stop mode interrupt + * @arg @ref UART_IT_CM Character match interrupt + * @arg @ref UART_IT_CTS CTS change interrupt + * @arg @ref UART_IT_LBD LIN Break detection interrupt + * @arg @ref UART_IT_TXE Transmit Data Register empty interrupt + * @arg @ref UART_IT_TC Transmission complete interrupt + * @arg @ref UART_IT_RXNE Receive Data register not empty interrupt + * @arg @ref UART_IT_RTO Receive Timeout interrupt + * @arg @ref UART_IT_IDLE Idle line detection interrupt + * @arg @ref UART_IT_PE Parity Error interrupt + * @arg @ref UART_IT_ERR Error interrupt (Frame error, noise error, overrun error) + * @retval None + */ +#define __HAL_UART_DISABLE_IT(__HANDLE__, __INTERRUPT__) (\ + ((((uint8_t)(__INTERRUPT__)) >> 5U) == 1U)?\ + ((__HANDLE__)->Instance->CR1 &= ~ (1U <<\ + ((__INTERRUPT__) & UART_IT_MASK))): \ + ((((uint8_t)(__INTERRUPT__)) >> 5U) == 2U)?\ + ((__HANDLE__)->Instance->CR2 &= ~ (1U <<\ + ((__INTERRUPT__) & UART_IT_MASK))): \ + ((__HANDLE__)->Instance->CR3 &= ~ (1U <<\ + ((__INTERRUPT__) & UART_IT_MASK)))) + +/** @brief Check whether the specified UART interrupt has occurred or not. + * @param __HANDLE__ specifies the UART Handle. + * @param __INTERRUPT__ specifies the UART interrupt to check. + * This parameter can be one of the following values: + * @arg @ref UART_IT_WUF Wakeup from stop mode interrupt + * @arg @ref UART_IT_CM Character match interrupt + * @arg @ref UART_IT_CTS CTS change interrupt + * @arg @ref UART_IT_LBD LIN Break detection interrupt + * @arg @ref UART_IT_TXE Transmit Data Register empty interrupt + * @arg @ref UART_IT_TC Transmission complete interrupt + * @arg @ref UART_IT_RXNE Receive Data register not empty interrupt + * @arg @ref UART_IT_RTO Receive Timeout interrupt + * @arg @ref UART_IT_IDLE Idle line detection interrupt + * @arg @ref UART_IT_PE Parity Error interrupt + * @arg @ref UART_IT_ERR Error interrupt (Frame error, noise error, overrun error) + * @retval The new state of __INTERRUPT__ (SET or RESET). + */ +#define __HAL_UART_GET_IT(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->ISR\ + & (1U << ((__INTERRUPT__)>> 8U))) != RESET) ? SET : RESET) + +/** @brief Check whether the specified UART interrupt source is enabled or not. + * @param __HANDLE__ specifies the UART Handle. + * @param __INTERRUPT__ specifies the UART interrupt source to check. + * This parameter can be one of the following values: + * @arg @ref UART_IT_WUF Wakeup from stop mode interrupt + * @arg @ref UART_IT_CM Character match interrupt + * @arg @ref UART_IT_CTS CTS change interrupt + * @arg @ref UART_IT_LBD LIN Break detection interrupt + * @arg @ref UART_IT_TXE Transmit Data Register empty interrupt + * @arg @ref UART_IT_TC Transmission complete interrupt + * @arg @ref UART_IT_RXNE Receive Data register not empty interrupt + * @arg @ref UART_IT_RTO Receive Timeout interrupt + * @arg @ref UART_IT_IDLE Idle line detection interrupt + * @arg @ref UART_IT_PE Parity Error interrupt + * @arg @ref UART_IT_ERR Error interrupt (Frame error, noise error, overrun error) + * @retval The new state of __INTERRUPT__ (SET or RESET). + */ +#define __HAL_UART_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((((((uint8_t)(__INTERRUPT__)) >> 5U) == 1U) ?\ + (__HANDLE__)->Instance->CR1 : \ + (((((uint8_t)(__INTERRUPT__)) >> 5U) == 2U) ?\ + (__HANDLE__)->Instance->CR2 : \ + (__HANDLE__)->Instance->CR3)) & (1U <<\ + (((uint16_t)(__INTERRUPT__)) &\ + UART_IT_MASK))) != RESET) ? SET : RESET) + +/** @brief Clear the specified UART ISR flag, in setting the proper ICR register flag. + * @param __HANDLE__ specifies the UART Handle. + * @param __IT_CLEAR__ specifies the interrupt clear register flag that needs to be set + * to clear the corresponding interrupt + * This parameter can be one of the following values: + * @arg @ref UART_CLEAR_PEF Parity Error Clear Flag + * @arg @ref UART_CLEAR_FEF Framing Error Clear Flag + * @arg @ref UART_CLEAR_NEF Noise detected Clear Flag + * @arg @ref UART_CLEAR_OREF Overrun Error Clear Flag + * @arg @ref UART_CLEAR_IDLEF IDLE line detected Clear Flag + * @arg @ref UART_CLEAR_RTOF Receiver timeout clear flag + * @arg @ref UART_CLEAR_TCF Transmission Complete Clear Flag + * @arg @ref UART_CLEAR_LBDF LIN Break Detection Clear Flag + * @arg @ref UART_CLEAR_CTSF CTS Interrupt Clear Flag + * @arg @ref UART_CLEAR_CMF Character Match Clear Flag + * @arg @ref UART_CLEAR_WUF Wake Up from stop mode Clear Flag + * @retval None + */ +#define __HAL_UART_CLEAR_IT(__HANDLE__, __IT_CLEAR__) ((__HANDLE__)->Instance->ICR = (uint32_t)(__IT_CLEAR__)) + +/** @brief Set a specific UART request flag. + * @param __HANDLE__ specifies the UART Handle. + * @param __REQ__ specifies the request flag to set + * This parameter can be one of the following values: + * @arg @ref UART_AUTOBAUD_REQUEST Auto-Baud Rate Request + * @arg @ref UART_SENDBREAK_REQUEST Send Break Request + * @arg @ref UART_MUTE_MODE_REQUEST Mute Mode Request + * @arg @ref UART_RXDATA_FLUSH_REQUEST Receive Data flush Request + * @arg @ref UART_TXDATA_FLUSH_REQUEST Transmit data flush Request + * @retval None + */ +#define __HAL_UART_SEND_REQ(__HANDLE__, __REQ__) ((__HANDLE__)->Instance->RQR |= (uint16_t)(__REQ__)) + +/** @brief Enable the UART one bit sample method. + * @param __HANDLE__ specifies the UART Handle. + * @retval None + */ +#define __HAL_UART_ONE_BIT_SAMPLE_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR3|= USART_CR3_ONEBIT) + +/** @brief Disable the UART one bit sample method. + * @param __HANDLE__ specifies the UART Handle. + * @retval None + */ +#define __HAL_UART_ONE_BIT_SAMPLE_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR3 &= ~USART_CR3_ONEBIT) + +/** @brief Enable UART. + * @param __HANDLE__ specifies the UART Handle. + * @retval None + */ +#define __HAL_UART_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 |= USART_CR1_UE) + +/** @brief Disable UART. + * @param __HANDLE__ specifies the UART Handle. + * @retval None + */ +#define __HAL_UART_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1 &= ~USART_CR1_UE) + +/** @brief Enable CTS flow control. + * @note This macro allows to enable CTS hardware flow control for a given UART instance, + * without need to call HAL_UART_Init() function. + * As involving direct access to UART registers, usage of this macro should be fully endorsed by user. + * @note As macro is expected to be used for modifying CTS Hw flow control feature activation, without need + * for USART instance Deinit/Init, following conditions for macro call should be fulfilled : + * - UART instance should have already been initialised (through call of HAL_UART_Init() ) + * - macro could only be called when corresponding UART instance is disabled + * (i.e. __HAL_UART_DISABLE(__HANDLE__)) and should be followed by an Enable + * macro (i.e. __HAL_UART_ENABLE(__HANDLE__)). + * @param __HANDLE__ specifies the UART Handle. + * @retval None + */ +#define __HAL_UART_HWCONTROL_CTS_ENABLE(__HANDLE__) \ + do{ \ + ATOMIC_SET_BIT((__HANDLE__)->Instance->CR3, USART_CR3_CTSE); \ + (__HANDLE__)->Init.HwFlowCtl |= USART_CR3_CTSE; \ + } while(0U) + +/** @brief Disable CTS flow control. + * @note This macro allows to disable CTS hardware flow control for a given UART instance, + * without need to call HAL_UART_Init() function. + * As involving direct access to UART registers, usage of this macro should be fully endorsed by user. + * @note As macro is expected to be used for modifying CTS Hw flow control feature activation, without need + * for USART instance Deinit/Init, following conditions for macro call should be fulfilled : + * - UART instance should have already been initialised (through call of HAL_UART_Init() ) + * - macro could only be called when corresponding UART instance is disabled + * (i.e. __HAL_UART_DISABLE(__HANDLE__)) and should be followed by an Enable + * macro (i.e. __HAL_UART_ENABLE(__HANDLE__)). + * @param __HANDLE__ specifies the UART Handle. + * @retval None + */ +#define __HAL_UART_HWCONTROL_CTS_DISABLE(__HANDLE__) \ + do{ \ + ATOMIC_CLEAR_BIT((__HANDLE__)->Instance->CR3, USART_CR3_CTSE); \ + (__HANDLE__)->Init.HwFlowCtl &= ~(USART_CR3_CTSE); \ + } while(0U) + +/** @brief Enable RTS flow control. + * @note This macro allows to enable RTS hardware flow control for a given UART instance, + * without need to call HAL_UART_Init() function. + * As involving direct access to UART registers, usage of this macro should be fully endorsed by user. + * @note As macro is expected to be used for modifying RTS Hw flow control feature activation, without need + * for USART instance Deinit/Init, following conditions for macro call should be fulfilled : + * - UART instance should have already been initialised (through call of HAL_UART_Init() ) + * - macro could only be called when corresponding UART instance is disabled + * (i.e. __HAL_UART_DISABLE(__HANDLE__)) and should be followed by an Enable + * macro (i.e. __HAL_UART_ENABLE(__HANDLE__)). + * @param __HANDLE__ specifies the UART Handle. + * @retval None + */ +#define __HAL_UART_HWCONTROL_RTS_ENABLE(__HANDLE__) \ + do{ \ + ATOMIC_SET_BIT((__HANDLE__)->Instance->CR3, USART_CR3_RTSE); \ + (__HANDLE__)->Init.HwFlowCtl |= USART_CR3_RTSE; \ + } while(0U) + +/** @brief Disable RTS flow control. + * @note This macro allows to disable RTS hardware flow control for a given UART instance, + * without need to call HAL_UART_Init() function. + * As involving direct access to UART registers, usage of this macro should be fully endorsed by user. + * @note As macro is expected to be used for modifying RTS Hw flow control feature activation, without need + * for USART instance Deinit/Init, following conditions for macro call should be fulfilled : + * - UART instance should have already been initialised (through call of HAL_UART_Init() ) + * - macro could only be called when corresponding UART instance is disabled + * (i.e. __HAL_UART_DISABLE(__HANDLE__)) and should be followed by an Enable + * macro (i.e. __HAL_UART_ENABLE(__HANDLE__)). + * @param __HANDLE__ specifies the UART Handle. + * @retval None + */ +#define __HAL_UART_HWCONTROL_RTS_DISABLE(__HANDLE__) \ + do{ \ + ATOMIC_CLEAR_BIT((__HANDLE__)->Instance->CR3, USART_CR3_RTSE);\ + (__HANDLE__)->Init.HwFlowCtl &= ~(USART_CR3_RTSE); \ + } while(0U) +/** + * @} + */ + +/* Private macros --------------------------------------------------------*/ +/** @defgroup UART_Private_Macros UART Private Macros + * @{ + */ + +/** @brief BRR division operation to set BRR register with LPUART. + * @param __PCLK__ LPUART clock. + * @param __BAUD__ Baud rate set by the user. + * @retval Division result + */ +#define UART_DIV_LPUART(__PCLK__, __BAUD__) (((((uint64_t)(__PCLK__)*256U)) + ((__BAUD__)/2U)) / (__BAUD__)) + +/** @brief BRR division operation to set BRR register in 8-bit oversampling mode. + * @param __PCLK__ UART clock. + * @param __BAUD__ Baud rate set by the user. + * @retval Division result + */ +#define UART_DIV_SAMPLING8(__PCLK__, __BAUD__) ((((__PCLK__)*2U) + ((__BAUD__)/2U)) / (__BAUD__)) + +/** @brief BRR division operation to set BRR register in 16-bit oversampling mode. + * @param __PCLK__ UART clock. + * @param __BAUD__ Baud rate set by the user. + * @retval Division result + */ +#define UART_DIV_SAMPLING16(__PCLK__, __BAUD__) (((__PCLK__) + ((__BAUD__)/2U)) / (__BAUD__)) + +/** @brief Check whether or not UART instance is Low Power UART. + * @param __HANDLE__ specifies the UART Handle. + * @retval SET (instance is LPUART) or RESET (instance isn't LPUART) + */ +#define UART_INSTANCE_LOWPOWER(__HANDLE__) (IS_LPUART_INSTANCE((__HANDLE__)->Instance)) + +/** @brief Check UART Baud rate. + * @param __BAUDRATE__ Baudrate specified by the user. + * The maximum Baud Rate is derived from the maximum clock on L0 (i.e. 32 MHz) + * divided by the smallest oversampling used on the USART (i.e. 8) + * @retval SET (__BAUDRATE__ is valid) or RESET (__BAUDRATE__ is invalid) + */ +#define IS_UART_BAUDRATE(__BAUDRATE__) ((__BAUDRATE__) < 4000001U) + +/** @brief Check UART assertion time. + * @param __TIME__ 5-bit value assertion time. + * @retval Test result (TRUE or FALSE). + */ +#define IS_UART_ASSERTIONTIME(__TIME__) ((__TIME__) <= 0x1FU) + +/** @brief Check UART deassertion time. + * @param __TIME__ 5-bit value deassertion time. + * @retval Test result (TRUE or FALSE). + */ +#define IS_UART_DEASSERTIONTIME(__TIME__) ((__TIME__) <= 0x1FU) + +/** + * @brief Ensure that UART frame number of stop bits is valid. + * @param __STOPBITS__ UART frame number of stop bits. + * @retval SET (__STOPBITS__ is valid) or RESET (__STOPBITS__ is invalid) + */ +#define IS_UART_STOPBITS(__STOPBITS__) (((__STOPBITS__) == UART_STOPBITS_0_5) || \ + ((__STOPBITS__) == UART_STOPBITS_1) || \ + ((__STOPBITS__) == UART_STOPBITS_1_5) || \ + ((__STOPBITS__) == UART_STOPBITS_2)) + +/** + * @brief Ensure that LPUART frame number of stop bits is valid. + * @param __STOPBITS__ LPUART frame number of stop bits. + * @retval SET (__STOPBITS__ is valid) or RESET (__STOPBITS__ is invalid) + */ +#define IS_LPUART_STOPBITS(__STOPBITS__) (((__STOPBITS__) == UART_STOPBITS_1) || \ + ((__STOPBITS__) == UART_STOPBITS_2)) + +/** + * @brief Ensure that UART frame parity is valid. + * @param __PARITY__ UART frame parity. + * @retval SET (__PARITY__ is valid) or RESET (__PARITY__ is invalid) + */ +#define IS_UART_PARITY(__PARITY__) (((__PARITY__) == UART_PARITY_NONE) || \ + ((__PARITY__) == UART_PARITY_EVEN) || \ + ((__PARITY__) == UART_PARITY_ODD)) + +/** + * @brief Ensure that UART hardware flow control is valid. + * @param __CONTROL__ UART hardware flow control. + * @retval SET (__CONTROL__ is valid) or RESET (__CONTROL__ is invalid) + */ +#define IS_UART_HARDWARE_FLOW_CONTROL(__CONTROL__)\ + (((__CONTROL__) == UART_HWCONTROL_NONE) || \ + ((__CONTROL__) == UART_HWCONTROL_RTS) || \ + ((__CONTROL__) == UART_HWCONTROL_CTS) || \ + ((__CONTROL__) == UART_HWCONTROL_RTS_CTS)) + +/** + * @brief Ensure that UART communication mode is valid. + * @param __MODE__ UART communication mode. + * @retval SET (__MODE__ is valid) or RESET (__MODE__ is invalid) + */ +#define IS_UART_MODE(__MODE__) ((((__MODE__) & (~((uint32_t)(UART_MODE_TX_RX)))) == 0x00U) && ((__MODE__) != 0x00U)) + +/** + * @brief Ensure that UART state is valid. + * @param __STATE__ UART state. + * @retval SET (__STATE__ is valid) or RESET (__STATE__ is invalid) + */ +#define IS_UART_STATE(__STATE__) (((__STATE__) == UART_STATE_DISABLE) || \ + ((__STATE__) == UART_STATE_ENABLE)) + +/** + * @brief Ensure that UART oversampling is valid. + * @param __SAMPLING__ UART oversampling. + * @retval SET (__SAMPLING__ is valid) or RESET (__SAMPLING__ is invalid) + */ +#define IS_UART_OVERSAMPLING(__SAMPLING__) (((__SAMPLING__) == UART_OVERSAMPLING_16) || \ + ((__SAMPLING__) == UART_OVERSAMPLING_8)) + +/** + * @brief Ensure that UART frame sampling is valid. + * @param __ONEBIT__ UART frame sampling. + * @retval SET (__ONEBIT__ is valid) or RESET (__ONEBIT__ is invalid) + */ +#define IS_UART_ONE_BIT_SAMPLE(__ONEBIT__) (((__ONEBIT__) == UART_ONE_BIT_SAMPLE_DISABLE) || \ + ((__ONEBIT__) == UART_ONE_BIT_SAMPLE_ENABLE)) + +/** + * @brief Ensure that UART auto Baud rate detection mode is valid. + * @param __MODE__ UART auto Baud rate detection mode. + * @retval SET (__MODE__ is valid) or RESET (__MODE__ is invalid) + */ +#define IS_UART_ADVFEATURE_AUTOBAUDRATEMODE(__MODE__) (((__MODE__) == UART_ADVFEATURE_AUTOBAUDRATE_ONSTARTBIT) || \ + ((__MODE__) == UART_ADVFEATURE_AUTOBAUDRATE_ONFALLINGEDGE) || \ + ((__MODE__) == UART_ADVFEATURE_AUTOBAUDRATE_ON0X7FFRAME) || \ + ((__MODE__) == UART_ADVFEATURE_AUTOBAUDRATE_ON0X55FRAME)) + +/** + * @brief Ensure that UART receiver timeout setting is valid. + * @param __TIMEOUT__ UART receiver timeout setting. + * @retval SET (__TIMEOUT__ is valid) or RESET (__TIMEOUT__ is invalid) + */ +#define IS_UART_RECEIVER_TIMEOUT(__TIMEOUT__) (((__TIMEOUT__) == UART_RECEIVER_TIMEOUT_DISABLE) || \ + ((__TIMEOUT__) == UART_RECEIVER_TIMEOUT_ENABLE)) + +/** @brief Check the receiver timeout value. + * @note The maximum UART receiver timeout value is 0xFFFFFF. + * @param __TIMEOUTVALUE__ receiver timeout value. + * @retval Test result (TRUE or FALSE) + */ +#define IS_UART_RECEIVER_TIMEOUT_VALUE(__TIMEOUTVALUE__) ((__TIMEOUTVALUE__) <= 0xFFFFFFU) + +/** + * @brief Ensure that UART LIN state is valid. + * @param __LIN__ UART LIN state. + * @retval SET (__LIN__ is valid) or RESET (__LIN__ is invalid) + */ +#define IS_UART_LIN(__LIN__) (((__LIN__) == UART_LIN_DISABLE) || \ + ((__LIN__) == UART_LIN_ENABLE)) + +/** + * @brief Ensure that UART LIN break detection length is valid. + * @param __LENGTH__ UART LIN break detection length. + * @retval SET (__LENGTH__ is valid) or RESET (__LENGTH__ is invalid) + */ +#define IS_UART_LIN_BREAK_DETECT_LENGTH(__LENGTH__) (((__LENGTH__) == UART_LINBREAKDETECTLENGTH_10B) || \ + ((__LENGTH__) == UART_LINBREAKDETECTLENGTH_11B)) + +/** + * @brief Ensure that UART DMA TX state is valid. + * @param __DMATX__ UART DMA TX state. + * @retval SET (__DMATX__ is valid) or RESET (__DMATX__ is invalid) + */ +#define IS_UART_DMA_TX(__DMATX__) (((__DMATX__) == UART_DMA_TX_DISABLE) || \ + ((__DMATX__) == UART_DMA_TX_ENABLE)) + +/** + * @brief Ensure that UART DMA RX state is valid. + * @param __DMARX__ UART DMA RX state. + * @retval SET (__DMARX__ is valid) or RESET (__DMARX__ is invalid) + */ +#define IS_UART_DMA_RX(__DMARX__) (((__DMARX__) == UART_DMA_RX_DISABLE) || \ + ((__DMARX__) == UART_DMA_RX_ENABLE)) + +/** + * @brief Ensure that UART half-duplex state is valid. + * @param __HDSEL__ UART half-duplex state. + * @retval SET (__HDSEL__ is valid) or RESET (__HDSEL__ is invalid) + */ +#define IS_UART_HALF_DUPLEX(__HDSEL__) (((__HDSEL__) == UART_HALF_DUPLEX_DISABLE) || \ + ((__HDSEL__) == UART_HALF_DUPLEX_ENABLE)) + +/** + * @brief Ensure that UART wake-up method is valid. + * @param __WAKEUP__ UART wake-up method . + * @retval SET (__WAKEUP__ is valid) or RESET (__WAKEUP__ is invalid) + */ +#define IS_UART_WAKEUPMETHOD(__WAKEUP__) (((__WAKEUP__) == UART_WAKEUPMETHOD_IDLELINE) || \ + ((__WAKEUP__) == UART_WAKEUPMETHOD_ADDRESSMARK)) + +/** + * @brief Ensure that UART request parameter is valid. + * @param __PARAM__ UART request parameter. + * @retval SET (__PARAM__ is valid) or RESET (__PARAM__ is invalid) + */ +#define IS_UART_REQUEST_PARAMETER(__PARAM__) (((__PARAM__) == UART_AUTOBAUD_REQUEST) || \ + ((__PARAM__) == UART_SENDBREAK_REQUEST) || \ + ((__PARAM__) == UART_MUTE_MODE_REQUEST) || \ + ((__PARAM__) == UART_RXDATA_FLUSH_REQUEST) || \ + ((__PARAM__) == UART_TXDATA_FLUSH_REQUEST)) + +/** + * @brief Ensure that UART advanced features initialization is valid. + * @param __INIT__ UART advanced features initialization. + * @retval SET (__INIT__ is valid) or RESET (__INIT__ is invalid) + */ +#define IS_UART_ADVFEATURE_INIT(__INIT__) ((__INIT__) <= (UART_ADVFEATURE_NO_INIT | \ + UART_ADVFEATURE_TXINVERT_INIT | \ + UART_ADVFEATURE_RXINVERT_INIT | \ + UART_ADVFEATURE_DATAINVERT_INIT | \ + UART_ADVFEATURE_SWAP_INIT | \ + UART_ADVFEATURE_RXOVERRUNDISABLE_INIT | \ + UART_ADVFEATURE_DMADISABLEONERROR_INIT | \ + UART_ADVFEATURE_AUTOBAUDRATE_INIT | \ + UART_ADVFEATURE_MSBFIRST_INIT)) + +/** + * @brief Ensure that UART frame TX inversion setting is valid. + * @param __TXINV__ UART frame TX inversion setting. + * @retval SET (__TXINV__ is valid) or RESET (__TXINV__ is invalid) + */ +#define IS_UART_ADVFEATURE_TXINV(__TXINV__) (((__TXINV__) == UART_ADVFEATURE_TXINV_DISABLE) || \ + ((__TXINV__) == UART_ADVFEATURE_TXINV_ENABLE)) + +/** + * @brief Ensure that UART frame RX inversion setting is valid. + * @param __RXINV__ UART frame RX inversion setting. + * @retval SET (__RXINV__ is valid) or RESET (__RXINV__ is invalid) + */ +#define IS_UART_ADVFEATURE_RXINV(__RXINV__) (((__RXINV__) == UART_ADVFEATURE_RXINV_DISABLE) || \ + ((__RXINV__) == UART_ADVFEATURE_RXINV_ENABLE)) + +/** + * @brief Ensure that UART frame data inversion setting is valid. + * @param __DATAINV__ UART frame data inversion setting. + * @retval SET (__DATAINV__ is valid) or RESET (__DATAINV__ is invalid) + */ +#define IS_UART_ADVFEATURE_DATAINV(__DATAINV__) (((__DATAINV__) == UART_ADVFEATURE_DATAINV_DISABLE) || \ + ((__DATAINV__) == UART_ADVFEATURE_DATAINV_ENABLE)) + +/** + * @brief Ensure that UART frame RX/TX pins swap setting is valid. + * @param __SWAP__ UART frame RX/TX pins swap setting. + * @retval SET (__SWAP__ is valid) or RESET (__SWAP__ is invalid) + */ +#define IS_UART_ADVFEATURE_SWAP(__SWAP__) (((__SWAP__) == UART_ADVFEATURE_SWAP_DISABLE) || \ + ((__SWAP__) == UART_ADVFEATURE_SWAP_ENABLE)) + +/** + * @brief Ensure that UART frame overrun setting is valid. + * @param __OVERRUN__ UART frame overrun setting. + * @retval SET (__OVERRUN__ is valid) or RESET (__OVERRUN__ is invalid) + */ +#define IS_UART_OVERRUN(__OVERRUN__) (((__OVERRUN__) == UART_ADVFEATURE_OVERRUN_ENABLE) || \ + ((__OVERRUN__) == UART_ADVFEATURE_OVERRUN_DISABLE)) + +/** + * @brief Ensure that UART auto Baud rate state is valid. + * @param __AUTOBAUDRATE__ UART auto Baud rate state. + * @retval SET (__AUTOBAUDRATE__ is valid) or RESET (__AUTOBAUDRATE__ is invalid) + */ +#define IS_UART_ADVFEATURE_AUTOBAUDRATE(__AUTOBAUDRATE__) (((__AUTOBAUDRATE__) == \ + UART_ADVFEATURE_AUTOBAUDRATE_DISABLE) || \ + ((__AUTOBAUDRATE__) == UART_ADVFEATURE_AUTOBAUDRATE_ENABLE)) + +/** + * @brief Ensure that UART DMA enabling or disabling on error setting is valid. + * @param __DMA__ UART DMA enabling or disabling on error setting. + * @retval SET (__DMA__ is valid) or RESET (__DMA__ is invalid) + */ +#define IS_UART_ADVFEATURE_DMAONRXERROR(__DMA__) (((__DMA__) == UART_ADVFEATURE_DMA_ENABLEONRXERROR) || \ + ((__DMA__) == UART_ADVFEATURE_DMA_DISABLEONRXERROR)) + +/** + * @brief Ensure that UART frame MSB first setting is valid. + * @param __MSBFIRST__ UART frame MSB first setting. + * @retval SET (__MSBFIRST__ is valid) or RESET (__MSBFIRST__ is invalid) + */ +#define IS_UART_ADVFEATURE_MSBFIRST(__MSBFIRST__) (((__MSBFIRST__) == UART_ADVFEATURE_MSBFIRST_DISABLE) || \ + ((__MSBFIRST__) == UART_ADVFEATURE_MSBFIRST_ENABLE)) + +/** + * @brief Ensure that UART stop mode state is valid. + * @param __STOPMODE__ UART stop mode state. + * @retval SET (__STOPMODE__ is valid) or RESET (__STOPMODE__ is invalid) + */ +#define IS_UART_ADVFEATURE_STOPMODE(__STOPMODE__) (((__STOPMODE__) == UART_ADVFEATURE_STOPMODE_DISABLE) || \ + ((__STOPMODE__) == UART_ADVFEATURE_STOPMODE_ENABLE)) + +/** + * @brief Ensure that UART mute mode state is valid. + * @param __MUTE__ UART mute mode state. + * @retval SET (__MUTE__ is valid) or RESET (__MUTE__ is invalid) + */ +#define IS_UART_MUTE_MODE(__MUTE__) (((__MUTE__) == UART_ADVFEATURE_MUTEMODE_DISABLE) || \ + ((__MUTE__) == UART_ADVFEATURE_MUTEMODE_ENABLE)) + +/** + * @brief Ensure that UART wake-up selection is valid. + * @param __WAKE__ UART wake-up selection. + * @retval SET (__WAKE__ is valid) or RESET (__WAKE__ is invalid) + */ +#define IS_UART_WAKEUP_SELECTION(__WAKE__) (((__WAKE__) == UART_WAKEUP_ON_ADDRESS) || \ + ((__WAKE__) == UART_WAKEUP_ON_STARTBIT) || \ + ((__WAKE__) == UART_WAKEUP_ON_READDATA_NONEMPTY)) + +/** + * @brief Ensure that UART driver enable polarity is valid. + * @param __POLARITY__ UART driver enable polarity. + * @retval SET (__POLARITY__ is valid) or RESET (__POLARITY__ is invalid) + */ +#define IS_UART_DE_POLARITY(__POLARITY__) (((__POLARITY__) == UART_DE_POLARITY_HIGH) || \ + ((__POLARITY__) == UART_DE_POLARITY_LOW)) + + +/** + * @} + */ + +/* Include UART HAL Extended module */ +#include "stm32l0xx_hal_uart_ex.h" + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup UART_Exported_Functions UART Exported Functions + * @{ + */ + +/** @addtogroup UART_Exported_Functions_Group1 Initialization and de-initialization functions + * @{ + */ + +/* Initialization and de-initialization functions ****************************/ +HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart); +HAL_StatusTypeDef HAL_HalfDuplex_Init(UART_HandleTypeDef *huart); +HAL_StatusTypeDef HAL_LIN_Init(UART_HandleTypeDef *huart, uint32_t BreakDetectLength); +HAL_StatusTypeDef HAL_MultiProcessor_Init(UART_HandleTypeDef *huart, uint8_t Address, uint32_t WakeUpMethod); +HAL_StatusTypeDef HAL_UART_DeInit(UART_HandleTypeDef *huart); +void HAL_UART_MspInit(UART_HandleTypeDef *huart); +void HAL_UART_MspDeInit(UART_HandleTypeDef *huart); + +/* Callbacks Register/UnRegister functions ***********************************/ +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) +HAL_StatusTypeDef HAL_UART_RegisterCallback(UART_HandleTypeDef *huart, HAL_UART_CallbackIDTypeDef CallbackID, + pUART_CallbackTypeDef pCallback); +HAL_StatusTypeDef HAL_UART_UnRegisterCallback(UART_HandleTypeDef *huart, HAL_UART_CallbackIDTypeDef CallbackID); + +HAL_StatusTypeDef HAL_UART_RegisterRxEventCallback(UART_HandleTypeDef *huart, pUART_RxEventCallbackTypeDef pCallback); +HAL_StatusTypeDef HAL_UART_UnRegisterRxEventCallback(UART_HandleTypeDef *huart); +#endif /* USE_HAL_UART_REGISTER_CALLBACKS */ + +/** + * @} + */ + +/** @addtogroup UART_Exported_Functions_Group2 IO operation functions + * @{ + */ + +/* IO operation functions *****************************************************/ +HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout); +HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout); +HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size); +HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size); +HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size); +HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size); +HAL_StatusTypeDef HAL_UART_DMAPause(UART_HandleTypeDef *huart); +HAL_StatusTypeDef HAL_UART_DMAResume(UART_HandleTypeDef *huart); +HAL_StatusTypeDef HAL_UART_DMAStop(UART_HandleTypeDef *huart); +/* Transfer Abort functions */ +HAL_StatusTypeDef HAL_UART_Abort(UART_HandleTypeDef *huart); +HAL_StatusTypeDef HAL_UART_AbortTransmit(UART_HandleTypeDef *huart); +HAL_StatusTypeDef HAL_UART_AbortReceive(UART_HandleTypeDef *huart); +HAL_StatusTypeDef HAL_UART_Abort_IT(UART_HandleTypeDef *huart); +HAL_StatusTypeDef HAL_UART_AbortTransmit_IT(UART_HandleTypeDef *huart); +HAL_StatusTypeDef HAL_UART_AbortReceive_IT(UART_HandleTypeDef *huart); + +void HAL_UART_IRQHandler(UART_HandleTypeDef *huart); +void HAL_UART_TxHalfCpltCallback(UART_HandleTypeDef *huart); +void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart); +void HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart); +void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart); +void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart); +void HAL_UART_AbortCpltCallback(UART_HandleTypeDef *huart); +void HAL_UART_AbortTransmitCpltCallback(UART_HandleTypeDef *huart); +void HAL_UART_AbortReceiveCpltCallback(UART_HandleTypeDef *huart); + +void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size); + +/** + * @} + */ + +/** @addtogroup UART_Exported_Functions_Group3 Peripheral Control functions + * @{ + */ + +/* Peripheral Control functions ************************************************/ +void HAL_UART_ReceiverTimeout_Config(UART_HandleTypeDef *huart, uint32_t TimeoutValue); +HAL_StatusTypeDef HAL_UART_EnableReceiverTimeout(UART_HandleTypeDef *huart); +HAL_StatusTypeDef HAL_UART_DisableReceiverTimeout(UART_HandleTypeDef *huart); + +HAL_StatusTypeDef HAL_LIN_SendBreak(UART_HandleTypeDef *huart); +HAL_StatusTypeDef HAL_MultiProcessor_EnableMuteMode(UART_HandleTypeDef *huart); +HAL_StatusTypeDef HAL_MultiProcessor_DisableMuteMode(UART_HandleTypeDef *huart); +void HAL_MultiProcessor_EnterMuteMode(UART_HandleTypeDef *huart); +HAL_StatusTypeDef HAL_HalfDuplex_EnableTransmitter(UART_HandleTypeDef *huart); +HAL_StatusTypeDef HAL_HalfDuplex_EnableReceiver(UART_HandleTypeDef *huart); + +/** + * @} + */ + +/** @addtogroup UART_Exported_Functions_Group4 Peripheral State and Error functions + * @{ + */ + +/* Peripheral State and Errors functions **************************************************/ +HAL_UART_StateTypeDef HAL_UART_GetState(UART_HandleTypeDef *huart); +uint32_t HAL_UART_GetError(UART_HandleTypeDef *huart); + +/** + * @} + */ + +/** + * @} + */ + +/* Private functions -----------------------------------------------------------*/ +/** @addtogroup UART_Private_Functions UART Private Functions + * @{ + */ +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) +void UART_InitCallbacksToDefault(UART_HandleTypeDef *huart); +#endif /* USE_HAL_UART_REGISTER_CALLBACKS */ +HAL_StatusTypeDef UART_SetConfig(UART_HandleTypeDef *huart); +HAL_StatusTypeDef UART_CheckIdleState(UART_HandleTypeDef *huart); +HAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(UART_HandleTypeDef *huart, uint32_t Flag, FlagStatus Status, + uint32_t Tickstart, uint32_t Timeout); +void UART_AdvFeatureConfig(UART_HandleTypeDef *huart); +HAL_StatusTypeDef UART_Start_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size); +HAL_StatusTypeDef UART_Start_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size); + +/** + * @} + */ + +/* Private variables -----------------------------------------------------------*/ +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32L0xx_HAL_UART_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h new file mode 100644 index 0000000..ce33770 --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h @@ -0,0 +1,453 @@ +/** + ****************************************************************************** + * @file stm32l0xx_hal_uart_ex.h + * @author MCD Application Team + * @brief Header file of UART HAL Extended module. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32L0xx_HAL_UART_EX_H +#define STM32L0xx_HAL_UART_EX_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal_def.h" + +/** @addtogroup STM32L0xx_HAL_Driver + * @{ + */ + +/** @addtogroup UARTEx + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup UARTEx_Exported_Types UARTEx Exported Types + * @{ + */ + +/** + * @brief UART wake up from stop mode parameters + */ +typedef struct +{ + uint32_t WakeUpEvent; /*!< Specifies which event will activate the Wakeup from Stop mode flag (WUF). + This parameter can be a value of @ref UART_WakeUp_from_Stop_Selection. + If set to UART_WAKEUP_ON_ADDRESS, the two other fields below must + be filled up. */ + + uint16_t AddressLength; /*!< Specifies whether the address is 4 or 7-bit long. + This parameter can be a value of @ref UARTEx_WakeUp_Address_Length. */ + + uint8_t Address; /*!< UART/USART node address (7-bit long max). */ +} UART_WakeUpTypeDef; + +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup UARTEx_Exported_Constants UARTEx Exported Constants + * @{ + */ + +/** @defgroup UARTEx_Word_Length UARTEx Word Length + * @{ + */ +#define UART_WORDLENGTH_7B USART_CR1_M1 /*!< 7-bit long UART frame */ +#define UART_WORDLENGTH_8B 0x00000000U /*!< 8-bit long UART frame */ +#define UART_WORDLENGTH_9B USART_CR1_M0 /*!< 9-bit long UART frame */ +/** + * @} + */ + +/** @defgroup UARTEx_WakeUp_Address_Length UARTEx WakeUp Address Length + * @{ + */ +#define UART_ADDRESS_DETECT_4B 0x00000000U /*!< 4-bit long wake-up address */ +#define UART_ADDRESS_DETECT_7B USART_CR2_ADDM7 /*!< 7-bit long wake-up address */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macros -----------------------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup UARTEx_Exported_Functions + * @{ + */ + +/** @addtogroup UARTEx_Exported_Functions_Group1 + * @{ + */ + +/* Initialization and de-initialization functions ****************************/ +HAL_StatusTypeDef HAL_RS485Ex_Init(UART_HandleTypeDef *huart, uint32_t Polarity, uint32_t AssertionTime, + uint32_t DeassertionTime); + +/** + * @} + */ + +/** @addtogroup UARTEx_Exported_Functions_Group2 + * @{ + */ + +void HAL_UARTEx_WakeupCallback(UART_HandleTypeDef *huart); + +/** + * @} + */ + +/** @addtogroup UARTEx_Exported_Functions_Group3 + * @{ + */ + +/* Peripheral Control functions **********************************************/ +HAL_StatusTypeDef HAL_UARTEx_StopModeWakeUpSourceConfig(UART_HandleTypeDef *huart, UART_WakeUpTypeDef WakeUpSelection); +HAL_StatusTypeDef HAL_UARTEx_EnableStopMode(UART_HandleTypeDef *huart); +HAL_StatusTypeDef HAL_UARTEx_DisableStopMode(UART_HandleTypeDef *huart); + +HAL_StatusTypeDef HAL_UARTEx_EnableClockStopMode(UART_HandleTypeDef *huart); +HAL_StatusTypeDef HAL_UARTEx_DisableClockStopMode(UART_HandleTypeDef *huart); + +HAL_StatusTypeDef HAL_MultiProcessorEx_AddressLength_Set(UART_HandleTypeDef *huart, uint32_t AddressLength); + + +HAL_StatusTypeDef HAL_UARTEx_ReceiveToIdle(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint16_t *RxLen, + uint32_t Timeout); +HAL_StatusTypeDef HAL_UARTEx_ReceiveToIdle_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size); +HAL_StatusTypeDef HAL_UARTEx_ReceiveToIdle_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size); + + +/** + * @} + */ + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup UARTEx_Private_Macros UARTEx Private Macros + * @{ + */ + +/** @brief Report the UART clock source. + * @param __HANDLE__ specifies the UART Handle. + * @param __CLOCKSOURCE__ output variable. + * @retval UART clocking source, written in __CLOCKSOURCE__. + */ +#if defined (STM32L031xx) || defined (STM32L041xx) || defined (STM32L011xx) || defined (STM32L021xx) || defined (STM32L010xB) || defined (STM32L010x8) || defined (STM32L010x6) || defined (STM32L010x4) +#define UART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \ + do { \ + if((__HANDLE__)->Instance == USART2) \ + { \ + switch(__HAL_RCC_GET_USART2_SOURCE()) \ + { \ + case RCC_USART2CLKSOURCE_PCLK1: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \ + break; \ + case RCC_USART2CLKSOURCE_HSI: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \ + break; \ + case RCC_USART2CLKSOURCE_SYSCLK: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \ + break; \ + case RCC_USART2CLKSOURCE_LSE: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \ + break; \ + default: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \ + break; \ + } \ + } \ + else if((__HANDLE__)->Instance == LPUART1) \ + { \ + switch(__HAL_RCC_GET_LPUART1_SOURCE()) \ + { \ + case RCC_LPUART1CLKSOURCE_PCLK1: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \ + break; \ + case RCC_LPUART1CLKSOURCE_HSI: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \ + break; \ + case RCC_LPUART1CLKSOURCE_SYSCLK: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \ + break; \ + case RCC_LPUART1CLKSOURCE_LSE: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \ + break; \ + default: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \ + break; \ + } \ + } \ + else \ + { \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \ + } \ + } while(0) + +#elif defined (STM32L051xx) || defined (STM32L052xx) || defined (STM32L053xx) || defined (STM32L062xx) || defined (STM32L063xx) + +#define UART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \ + do { \ + if((__HANDLE__)->Instance == USART1) \ + { \ + switch(__HAL_RCC_GET_USART1_SOURCE()) \ + { \ + case RCC_USART1CLKSOURCE_PCLK2: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK2; \ + break; \ + case RCC_USART1CLKSOURCE_HSI: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \ + break; \ + case RCC_USART1CLKSOURCE_SYSCLK: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \ + break; \ + case RCC_USART1CLKSOURCE_LSE: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \ + break; \ + default: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \ + break; \ + } \ + } \ + else if((__HANDLE__)->Instance == USART2) \ + { \ + switch(__HAL_RCC_GET_USART2_SOURCE()) \ + { \ + case RCC_USART2CLKSOURCE_PCLK1: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \ + break; \ + case RCC_USART2CLKSOURCE_HSI: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \ + break; \ + case RCC_USART2CLKSOURCE_SYSCLK: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \ + break; \ + case RCC_USART2CLKSOURCE_LSE: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \ + break; \ + default: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \ + break; \ + } \ + } \ + else if((__HANDLE__)->Instance == LPUART1) \ + { \ + switch(__HAL_RCC_GET_LPUART1_SOURCE()) \ + { \ + case RCC_LPUART1CLKSOURCE_PCLK1: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \ + break; \ + case RCC_LPUART1CLKSOURCE_HSI: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \ + break; \ + case RCC_LPUART1CLKSOURCE_SYSCLK: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \ + break; \ + case RCC_LPUART1CLKSOURCE_LSE: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \ + break; \ + default: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \ + break; \ + } \ + } \ + else \ + { \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \ + } \ + } while(0) + +#else + +#define UART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \ + do { \ + if((__HANDLE__)->Instance == USART1) \ + { \ + switch(__HAL_RCC_GET_USART1_SOURCE()) \ + { \ + case RCC_USART1CLKSOURCE_PCLK2: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK2; \ + break; \ + case RCC_USART1CLKSOURCE_HSI: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \ + break; \ + case RCC_USART1CLKSOURCE_SYSCLK: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \ + break; \ + case RCC_USART1CLKSOURCE_LSE: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \ + break; \ + default: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \ + break; \ + } \ + } \ + else if((__HANDLE__)->Instance == USART2) \ + { \ + switch(__HAL_RCC_GET_USART2_SOURCE()) \ + { \ + case RCC_USART2CLKSOURCE_PCLK1: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \ + break; \ + case RCC_USART2CLKSOURCE_HSI: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \ + break; \ + case RCC_USART2CLKSOURCE_SYSCLK: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \ + break; \ + case RCC_USART2CLKSOURCE_LSE: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \ + break; \ + default: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \ + break; \ + } \ + } \ + else if((__HANDLE__)->Instance == USART4) \ + { \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \ + } \ + else if((__HANDLE__)->Instance == USART5) \ + { \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \ + } \ + else if((__HANDLE__)->Instance == LPUART1) \ + { \ + switch(__HAL_RCC_GET_LPUART1_SOURCE()) \ + { \ + case RCC_LPUART1CLKSOURCE_PCLK1: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \ + break; \ + case RCC_LPUART1CLKSOURCE_HSI: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \ + break; \ + case RCC_LPUART1CLKSOURCE_SYSCLK: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \ + break; \ + case RCC_LPUART1CLKSOURCE_LSE: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \ + break; \ + default: \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \ + break; \ + } \ + } \ + else \ + { \ + (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \ + } \ + } while(0) +#endif /* (STM32L031xx) || (STM32L041xx) || (STM32L011xx) || (STM32L021xx) || (STM32L010xB) || (STM32L010x8) || (STM32L010x6) || (STM32L010x4)*/ + + +/** @brief Report the UART mask to apply to retrieve the received data + * according to the word length and to the parity bits activation. + * @note If PCE = 1, the parity bit is not included in the data extracted + * by the reception API(). + * This masking operation is not carried out in the case of + * DMA transfers. + * @param __HANDLE__ specifies the UART Handle. + * @retval None, the mask to apply to UART RDR register is stored in (__HANDLE__)->Mask field. + */ +#define UART_MASK_COMPUTATION(__HANDLE__) \ + do { \ + if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_9B) \ + { \ + if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \ + { \ + (__HANDLE__)->Mask = 0x01FFU ; \ + } \ + else \ + { \ + (__HANDLE__)->Mask = 0x00FFU ; \ + } \ + } \ + else if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_8B) \ + { \ + if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \ + { \ + (__HANDLE__)->Mask = 0x00FFU ; \ + } \ + else \ + { \ + (__HANDLE__)->Mask = 0x007FU ; \ + } \ + } \ + else if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_7B) \ + { \ + if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \ + { \ + (__HANDLE__)->Mask = 0x007FU ; \ + } \ + else \ + { \ + (__HANDLE__)->Mask = 0x003FU ; \ + } \ + } \ + else \ + { \ + (__HANDLE__)->Mask = 0x0000U; \ + } \ + } while(0U) + +/** + * @brief Ensure that UART frame length is valid. + * @param __LENGTH__ UART frame length. + * @retval SET (__LENGTH__ is valid) or RESET (__LENGTH__ is invalid) + */ +#define IS_UART_WORD_LENGTH(__LENGTH__) (((__LENGTH__) == UART_WORDLENGTH_7B) || \ + ((__LENGTH__) == UART_WORDLENGTH_8B) || \ + ((__LENGTH__) == UART_WORDLENGTH_9B)) + +/** + * @brief Ensure that UART wake-up address length is valid. + * @param __ADDRESS__ UART wake-up address length. + * @retval SET (__ADDRESS__ is valid) or RESET (__ADDRESS__ is invalid) + */ +#define IS_UART_ADDRESSLENGTH_DETECT(__ADDRESS__) (((__ADDRESS__) == UART_ADDRESS_DETECT_4B) || \ + ((__ADDRESS__) == UART_ADDRESS_DETECT_7B)) + +/** + * @} + */ + +/* Private functions ---------------------------------------------------------*/ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32L0xx_HAL_UART_EX_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.c b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.c new file mode 100644 index 0000000..6d64a67 --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.c @@ -0,0 +1,674 @@ +/** + ****************************************************************************** + * @file stm32l0xx_hal.c + * @author MCD Application Team + * @brief HAL module driver. + * This is the common part of the HAL initialization + * + @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 + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal.h" + +/** @addtogroup STM32L0xx_HAL_Driver + * @{ + */ + +#ifdef HAL_MODULE_ENABLED + +/** @addtogroup HAL + * @brief HAL module driver. + * @{ + */ + +/** @addtogroup HAL_Exported_Constants + * @{ + */ + +/** @defgroup HAL_Version HAL Version + * @{ + */ + +/** + * @brief STM32L0xx HAL Driver version number + */ +#define __STM32L0xx_HAL_VERSION_MAIN (0x01U) /*!< [31:24] main version */ +#define __STM32L0xx_HAL_VERSION_SUB1 (0x0AU) /*!< [23:16] sub1 version */ +#define __STM32L0xx_HAL_VERSION_SUB2 (0x05U) /*!< [15:8] sub2 version */ +#define __STM32L0xx_HAL_VERSION_RC (0x00U) /*!< [7:0] release candidate */ +#define __STM32L0xx_HAL_VERSION ((__STM32L0xx_HAL_VERSION_MAIN << 24U)\ + |(__STM32L0xx_HAL_VERSION_SUB1 << 16U)\ + |(__STM32L0xx_HAL_VERSION_SUB2 << 8U )\ + |(__STM32L0xx_HAL_VERSION_RC)) + +#define IDCODE_DEVID_MASK (0x00000FFFU) + +/** + * @} + */ + +/** + * @} + */ + +/* Exported variables --------------------------------------------------------*/ +/** @addtogroup HAL_Exported_Variables + * @{ + */ +__IO uint32_t uwTick; +uint32_t uwTickPrio = (1UL << __NVIC_PRIO_BITS); /* Invalid PRIO */ +HAL_TickFreqTypeDef uwTickFreq = HAL_TICK_FREQ_DEFAULT; /* 1KHz */ +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup HAL_Exported_Functions + * @{ + */ + +/** @addtogroup HAL_Exported_Functions_Group1 + * @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, Flash preread and Buffer cache, + * 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 Buffer cache, Flash prefetch, Flash preread */ +#if (BUFFER_CACHE_DISABLE != 0) + __HAL_FLASH_BUFFER_CACHE_DISABLE(); +#endif /* BUFFER_CACHE_DISABLE */ + +#if (PREREAD_ENABLE != 0) + __HAL_FLASH_PREREAD_BUFFER_ENABLE(); +#endif /* PREREAD_ENABLE */ + +#if (PREFETCH_ENABLE != 0) + __HAL_FLASH_PREFETCH_BUFFER_ENABLE(); +#endif /* PREFETCH_ENABLE */ + + /* 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(); + + __HAL_RCC_IOP_FORCE_RESET(); + __HAL_RCC_IOP_RELEASE_RESET(); + + /* De-Init the low level hardware */ + HAL_MspDeInit(); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Initializes 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 DeInitializes 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) +{ + /* Configure the SysTick to have interrupt in 1ms time basis*/ + if (HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq)) > 0U) + { + return HAL_ERROR; + } + + /* Configure the SysTick IRQ priority */ + if (TickPriority < (1UL << __NVIC_PRIO_BITS)) + { + HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U); + uwTickPrio = TickPriority; + } + else + { + return HAL_ERROR; + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @} + */ + +/** @addtogroup HAL_Exported_Functions_Group2 + * @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 + +@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 Provides 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. + * @retval Status + */ +HAL_StatusTypeDef HAL_SetTickFreq(HAL_TickFreqTypeDef Freq) +{ + HAL_StatusTypeDef status = HAL_OK; + HAL_TickFreqTypeDef 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 period in Hz + */ +HAL_TickFreqTypeDef 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 freq to guarantee minimum wait */ + if (wait < HAL_MAX_DELAY) + { + wait += (uint32_t)(uwTickFreq); + } + + while((HAL_GetTick() - tickstart) < wait) + { + } +} + +/** + * @brief Suspends 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 */ + SysTick->CTRL &= ~SysTick_CTRL_TICKINT_Msk; +} + +/** + * @brief Resumes 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 */ + SysTick->CTRL |= SysTick_CTRL_TICKINT_Msk; +} + +/** + * @brief Returns the HAL revision + * @retval version: 0xXYZR (8bits for each decimal, R for RC) + */ +uint32_t HAL_GetHalVersion(void) +{ + return __STM32L0xx_HAL_VERSION; +} + +/** + * @brief Returns the device revision identifier. + * @retval Device revision identifier + */ +uint32_t HAL_GetREVID(void) +{ + return((DBGMCU->IDCODE) >> 16U); +} + +/** + * @brief Returns the device identifier. + * @retval Device identifier + */ +uint32_t HAL_GetDEVID(void) +{ + return((DBGMCU->IDCODE) & IDCODE_DEVID_MASK); +} + +/** + * @brief Returns the first word of the unique device identifier (UID based on 96 bits) + * @retval Device identifier + */ +uint32_t HAL_GetUIDw0(void) +{ + return(READ_REG(*((uint32_t *)UID_BASE))); +} + +/** + * @brief Returns the second word of the unique device identifier (UID based on 96 bits) + * @retval Device identifier + */ +uint32_t HAL_GetUIDw1(void) +{ + return(READ_REG(*((uint32_t *)(UID_BASE + 0x04U)))); +} + +/** + * @brief Returns the third word of the unique device identifier (UID based on 96 bits) + * @retval Device identifier + */ +uint32_t HAL_GetUIDw2(void) +{ + return(READ_REG(*((uint32_t *)(UID_BASE + 0x14U)))); +} + +/** + * @} + */ + +/** @addtogroup HAL_Exported_Functions_Group2 + * @brief HAL Debug functions + * +@verbatim + =============================================================================== + ##### HAL Debug 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 Enables the Debug Module during SLEEP mode + * @retval None + */ +void HAL_DBGMCU_EnableDBGSleepMode(void) +{ + SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEP); +} + +/** + * @brief Disables the Debug Module during SLEEP mode + * @retval None + */ +void HAL_DBGMCU_DisableDBGSleepMode(void) +{ + CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEP); +} + +/** + * @brief Enables the Debug Module during STOP mode + * @retval None + */ +void HAL_DBGMCU_EnableDBGStopMode(void) +{ + SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP); +} + +/** + * @brief Disables the Debug Module during STOP mode + * @retval None + */ +void HAL_DBGMCU_DisableDBGStopMode(void) +{ + CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP); +} + +/** + * @brief Enables the Debug Module during STANDBY mode + * @retval None + */ +void HAL_DBGMCU_EnableDBGStandbyMode(void) +{ + SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBY); +} + +/** + * @brief Disables the Debug Module during STANDBY mode + * @retval None + */ +void HAL_DBGMCU_DisableDBGStandbyMode(void) +{ + CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBY); +} + +/** + * @brief Enable low power mode behavior when the MCU is in Debug mode. + * @param Periph: specifies the low power mode. + * This parameter can be any combination of the following values: + * @arg DBGMCU_SLEEP: Keep debugger connection during SLEEP mode + * @arg DBGMCU_STOP: Keep debugger connection during STOP mode + * @arg DBGMCU_STANDBY: Keep debugger connection during STANDBY mode + * @retval None + */ +void HAL_DBGMCU_DBG_EnableLowPowerConfig(uint32_t Periph) +{ + /* Check the parameters */ + assert_param(IS_DBGMCU_PERIPH(Periph)); + + DBGMCU->CR |= Periph; + +} +/** + * @brief Disable low power mode behavior when the MCU is in Debug mode. + * @param Periph: specifies the low power mode. + * This parameter can be any combination of the following values: + * @arg DBGMCU_SLEEP: Keep debugger connection during SLEEP mode + * @arg DBGMCU_STOP: Keep debugger connection during STOP mode + * @arg DBGMCU_STANDBY: Keep debugger connection during STANDBY mode + * @retval None + */ +void HAL_DBGMCU_DBG_DisableLowPowerConfig(uint32_t Periph) +{ + /* Check the parameters */ + assert_param(IS_DBGMCU_PERIPH(Periph)); + { + DBGMCU->CR &= ~Periph; + } +} + +/** + * @} + */ + +/** @addtogroup HAL_Exported_Functions_Group3 + * @brief HAL SYSCFG configuration functions + * +@verbatim + =============================================================================== + ##### HAL SYSCFG configuration functions ##### + =============================================================================== + [..] This section provides functions allowing to: + (+) Return the boot mode + (+) Select the output of internal reference voltage (VREFINT) + (+) Lock/Unlock the SYSCFG VREF register values + +@endverbatim + * @{ + */ + +/** + * @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: + * - 0x00000000 : Boot is configured in Main Flash memory + * - 0x00000100 : Boot is configured in System Flash memory + * - 0x00000300 : Boot is configured in Embedded SRAM memory + */ +uint32_t HAL_SYSCFG_GetBootMode(void) +{ + return (SYSCFG->CFGR1 & SYSCFG_CFGR1_BOOT_MODE); +} + +/** + * @brief Selects the output of internal reference voltage (VREFINT). + * The VREFINT output can be routed to(PB0) or + * (PB1) or both. + * @param SYSCFG_Vrefint_OUTPUT: new state of the Vrefint output. + * This parameter can be one of the following values: + * @arg SYSCFG_VREFINT_OUT_NONE + * @arg SYSCFG_VREFINT_OUT_PB0 + * @arg SYSCFG_VREFINT_OUT_PB1 + * @arg SYSCFG_VREFINT_OUT_PB0_PB1 + * @retval None + */ +void HAL_SYSCFG_VREFINT_OutputSelect(uint32_t SYSCFG_Vrefint_OUTPUT) +{ + /* Check the parameters */ + assert_param(IS_SYSCFG_VREFINT_OUT_SELECT(SYSCFG_Vrefint_OUTPUT)); + + /* Set the output Vrefint pin */ + SYSCFG->CFGR3 &= ~(SYSCFG_CFGR3_VREF_OUT); + SYSCFG->CFGR3 |= (uint32_t)(SYSCFG_Vrefint_OUTPUT); +} + +/** + * @brief Lock the SYSCFG VREF register values + * @retval None + */ +void HAL_SYSCFG_Enable_Lock_VREFINT(void) +{ + /* Enable the LOCK by setting REF_LOCK bit in the CFGR3 register */ + SET_BIT(SYSCFG->CFGR3, SYSCFG_CFGR3_REF_LOCK); +} + +/** + * @brief Unlock the overall SYSCFG VREF register values + * @retval None + */ +void HAL_SYSCFG_Disable_Lock_VREFINT(void) +{ + /* Disable the LOCK by setting REF_LOCK bit in the CFGR3 register */ + CLEAR_BIT(SYSCFG->CFGR3, SYSCFG_CFGR3_REF_LOCK); +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ +#endif /* HAL_MODULE_ENABLED */ +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.c b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.c new file mode 100644 index 0000000..128cbad --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.c @@ -0,0 +1,415 @@ +/** + ****************************************************************************** + * @file stm32l0xx_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 Configuration functions + * + Peripheral Control functions + * + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + [..] + *** How to configure Interrupts using CORTEX HAL driver *** + =========================================================== + [..] + This section provides functions allowing to configure the NVIC interrupts (IRQ). + The Cortex M0+ exceptions are managed by CMSIS functions. + (#) Enable and Configure the priority of the selected IRQ Channels. + The priority can be 0..3. + + -@- Lower priority values gives higher priority. + -@- Priority Order: + (#@) Lowest priority. + (#@) Lowest hardware priority (IRQn position). + + (#) Configure the priority of the selected IRQ Channels using HAL_NVIC_SetPriority() + + (#) Enable the selected IRQ Channels using HAL_NVIC_EnableIRQ() + + [..] + *** How to configure Systick using CORTEX HAL driver *** + ======================================================== + [..] + Setup SysTick Timer for time base. + + (+) 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 (0x03). + (++) 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 function + HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK_DIV8) just after the + HAL_SYSTICK_Config() function call. The HAL_SYSTICK_CLKSourceConfig() function is defined + inside the stm32l0xx_hal_cortex.c 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) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal.h" + +/** @addtogroup STM32L0xx_HAL_Driver + * @{ + */ + +#ifdef HAL_CORTEX_MODULE_ENABLED + +/** @addtogroup CORTEX + * @brief CORTEX HAL module driver + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ + +/** @addtogroup CORTEX_Exported_Functions + * @{ + */ + + +/** @addtogroup CORTEX_Exported_Functions_Group1 Initialization and de-initialization functions + * @brief Initialization and Configuration functions + * +@verbatim + ============================================================================== + ##### Initialization and Configuration functions ##### + ============================================================================== + [..] + This section provides the CORTEX HAL driver functions allowing to configure Interrupts + Systick functionalities + +@endverbatim + * @{ + */ + +/** + * @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 stm32l0xx.h file) + * @param PreemptPriority The pre-emption priority for the IRQn channel. + * This parameter can be a value between 0 and 3. + * A lower priority value indicates a higher priority + * @param SubPriority the subpriority level for the IRQ channel. + * with stm32l0xx devices, this parameter is a dummy value and it is ignored, because + * no subpriority supported in Cortex M0+ based products. + * @retval None + */ +void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority) +{ + /* Check the parameters */ + assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority)); + NVIC_SetPriority(IRQn,PreemptPriority); +} + +/** + * @brief Enable 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 stm32l0xx.h file) + * @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 Disable 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 stm32l0xx.h file) + * @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 Initiate a system reset request to reset the MCU. + * @retval None + */ +void HAL_NVIC_SystemReset(void) +{ + /* System Reset */ + NVIC_SystemReset(); +} + +/** + * @brief Initialize the System Timer with interrupt enabled and start the System Tick Timer (SysTick) + * 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); +} +/** + * @} + */ + +/** @addtogroup 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) functionalities. + + +@endverbatim + * @{ + */ + + +/** + * @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 (stm32l0xxxx.h)) + * @retval None + */ +uint32_t HAL_NVIC_GetPriority(IRQn_Type IRQn) +{ + /* Get priority for Cortex-M system or device specific interrupts */ + return NVIC_GetPriority(IRQn); +} + +/** + * @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 stm32l0xx.h file) + * @retval None + */ +void HAL_NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + /* Set interrupt pending */ + NVIC_SetPendingIRQ(IRQn); +} + +/** + * @brief Get Pending Interrupt (read the pending register in the NVIC + * and return 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 stm32l0xx.h file) + * @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 Clear 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 stm32l0xx.h file) + * @retval None + */ +void HAL_NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + /* Clear pending interrupt */ + NVIC_ClearPendingIRQ(IRQn); +} + + +/** + * @brief Configure 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 Handle 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 + */ +} + +#if (__MPU_PRESENT == 1U) +/** + * @brief Disable the MPU. + * @retval None + */ +void HAL_MPU_Disable(void) +{ + + /*Data Memory Barrier setup */ + __DMB(); + /* Disable the MPU */ + MPU->CTRL = 0; +} + +/** + * @brief Enable the MPU. + * @param MPU_Control Specifies the control mode of the MPU during hard fault, + * NMI, FAULTMASK and privileged access to 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; + /* Data Synchronization Barrier setup */ + __DSB(); + /* Instruction Synchronization Barrier setup */ + __ISB(); + +} + +/** + * @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)); + + /* Set the Region number */ + MPU->RNR = MPU_Init->Number; + + if ((MPU_Init->Enable) == MPU_REGION_ENABLE) + { + /* Check the parameters */ + assert_param(IS_MPU_INSTRUCTION_ACCESS(MPU_Init->DisableExec)); + assert_param(IS_MPU_REGION_PERMISSION_ATTRIBUTE(MPU_Init->AccessPermission)); + 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 base adsress and set the 4 LSB to 0 */ + MPU->RBAR = (MPU_Init->BaseAddress) & 0xfffffff0U; + + /* Fill the field RASR */ + MPU->RASR = ((uint32_t)MPU_Init->DisableExec << MPU_RASR_XN_Pos) | + ((uint32_t)MPU_Init->AccessPermission << MPU_RASR_AP_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); + } + else + { + MPU->RBAR = 0x00U; + MPU->RASR = 0x00U; + } +} +#endif /* __MPU_PRESENT */ + + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* HAL_CORTEX_MODULE_ENABLED */ +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.c b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.c new file mode 100644 index 0000000..db289fa --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.c @@ -0,0 +1,885 @@ +/** + ****************************************************************************** + * @file stm32l0xx_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 + @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). + + (#) 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 has occurred or not. + + [..] + (@) You can refer to the DMA HAL driver header file for more useful macros + + @endverbatim + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal.h" + +/** @addtogroup STM32L0xx_HAL_Driver + * @{ + */ + +/** @defgroup DMA DMA + * @brief DMA HAL module driver + * @{ + */ + +#ifdef HAL_DMA_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/** @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_ALL_REQUEST(hdma->Init.Request)); + 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)); + + /* Compute the channel index */ + /* Only one DMA: DMA1 */ + hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA1_Channel1) / ((uint32_t)DMA1_Channel2 - (uint32_t)DMA1_Channel1)) << 2; + hdma->DmaBaseAddress = DMA1; + + /* 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; + + /* Set request selection */ + if(hdma->Init.Direction != DMA_MEMORY_TO_MEMORY) + { + /* Write to DMA channel selection register */ + /* Reset request selection for DMA1 Channelx */ + DMA1_CSELR->CSELR &= ~(DMA_CSELR_C1S << (hdma->ChannelIndex & 0x1cU)); + + /* Configure request selection for DMA1 Channelx */ + DMA1_CSELR->CSELR |= (uint32_t) (hdma->Init.Request << (hdma->ChannelIndex & 0x1cU)); + } + + /* 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); + + /* Compute the channel index */ + /* DMA1 */ + hdma->ChannelIndex = (((uint32_t)hdma->Instance - (uint32_t)DMA1_Channel1) / ((uint32_t)DMA1_Channel2 - (uint32_t)DMA1_Channel1)) << 2; + hdma->DmaBaseAddress = DMA1; + + /* Reset DMA Channel control register */ + hdma->Instance->CCR = 0U; + + /* Clear all flags */ + hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1cU)); + + /* Reset DMA channel selection register */ + /* DMA1 */ + DMA1_CSELR->CSELR &= ~(DMA_CSELR_C1S << (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 (0U != (hdma->Instance->CCR & DMA_CCR_CIRC)) + { + 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(0U == (hdma->DmaBaseAddress->ISR & temp)) + { + if((0U != (hdma->DmaBaseAddress->ISR & (DMA_FLAG_TE1 << (hdma->ChannelIndex& 0x1cU))))) + { + /* 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 ((0U != (flag_it & (DMA_FLAG_HT1 << (hdma->ChannelIndex & 0x1cU)))) && (0U != (source_it & DMA_IT_HT))) + { + /* 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 ((0U != (flag_it & (DMA_FLAG_TC1 << (hdma->ChannelIndex & 0x1cU)))) && (0U != (source_it & DMA_IT_TC))) + { + if((hdma->Instance->CCR & DMA_CCR_CIRC) == 0U) + { + /* Disable the transfer complete and error interrupt */ + __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 ((0U != (flag_it & (DMA_FLAG_TE1 << (hdma->ChannelIndex & 0x1cU)))) && (0U != (source_it & DMA_IT_TE))) + { + /* 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 identifer + * a HAL_DMA_CallbackIDTypeDef ENUM as parameter. + * @param pCallback pointer to private callbacsk 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 identifer + * 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 */ +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.c b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.c new file mode 100644 index 0000000..bd2a38d --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.c @@ -0,0 +1,549 @@ +/** + ****************************************************************************** + * @file stm32l0xx_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 + * + @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_GetConfigLine(). + (++) 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_GetPending(). + + (#) Generate software interrupt using HAL_EXTI_GenerateSWI(). + + @endverbatim + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2019 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal.h" + +/** @addtogroup STM32L0xx_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 * (3uL - (linepos & 0x03u)))) >> 24); + } + } + + 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 */ +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c new file mode 100644 index 0000000..1905425 --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c @@ -0,0 +1,769 @@ +/** + ****************************************************************************** + * @file stm32l0xx_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 STM32L0xx 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 preread buffer + (+) 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) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal.h" + +/** @addtogroup STM32L0xx_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 = HAL_ERROR; + + /* 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 = 0; + + /* Check FLASH operation error flags */ + + /* WARNING : On the first cut of STM32L031xx and STM32L041xx devices, + * (RefID = 0x1000) the FLASH_FLAG_OPTVERR bit was not behaving + * as expected. If the user run an application using the first + * cut of the STM32L031xx device or the first cut of the STM32L041xx + * device, the check on the FLASH_FLAG_OPTVERR bit should be ignored. + * + * Note :The revId of the device can be retrieved via the HAL_GetREVID() + * function. + * + */ + + if( __HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR) || + __HAL_FLASH_GET_FLAG(FLASH_FLAG_PGAERR) || + __HAL_FLASH_GET_FLAG(FLASH_FLAG_SIZERR) || + __HAL_FLASH_GET_FLAG(FLASH_FLAG_OPTVERR) || + __HAL_FLASH_GET_FLAG(FLASH_FLAG_RDERR) || + __HAL_FLASH_GET_FLAG(FLASH_FLAG_FWWERR) || + __HAL_FLASH_GET_FLAG(FLASH_FLAG_NOTZEROERR) ) + { + 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) +{ + uint32_t primask_bit; + + /* Unlocking FLASH_PECR register access*/ + if(HAL_IS_BIT_SET(FLASH->PECR, FLASH_PECR_PELOCK)) + { + /* Disable interrupts to avoid any interruption during unlock sequence */ + primask_bit = __get_PRIMASK(); + __disable_irq(); + + WRITE_REG(FLASH->PEKEYR, FLASH_PEKEY1); + WRITE_REG(FLASH->PEKEYR, FLASH_PEKEY2); + + /* Re-enable the interrupts: restore previous priority mask */ + __set_PRIMASK(primask_bit); + + if(HAL_IS_BIT_SET(FLASH->PECR, FLASH_PECR_PELOCK)) + { + return HAL_ERROR; + } + } + + if (HAL_IS_BIT_SET(FLASH->PECR, FLASH_PECR_PRGLOCK)) + { + /* Disable interrupts to avoid any interruption during unlock sequence */ + primask_bit = __get_PRIMASK(); + __disable_irq(); + + /* Unlocking the program memory access */ + WRITE_REG(FLASH->PRGKEYR, FLASH_PRGKEY1); + WRITE_REG(FLASH->PRGKEYR, FLASH_PRGKEY2); + + /* Re-enable the interrupts: restore previous priority mask */ + __set_PRIMASK(primask_bit); + + 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); + + /* Set the PELOCK Bit to lock the PECR Register access */ + SET_BIT(FLASH->PECR, FLASH_PECR_PELOCK); + + return HAL_OK; +} + +/** + * @brief Unlock the FLASH Option Control Registers access. + * @retval HAL Status + */ +HAL_StatusTypeDef HAL_FLASH_OB_Unlock(void) +{ + uint32_t primask_bit; + + if(HAL_IS_BIT_SET(FLASH->PECR, FLASH_PECR_OPTLOCK)) + { + /* Disable interrupts to avoid any interruption during unlock sequence */ + primask_bit = __get_PRIMASK(); + __disable_irq(); + + /* 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); + } + + /* Unlocking the option bytes block access */ + WRITE_REG(FLASH->OPTKEYR, FLASH_OPTKEY1); + WRITE_REG(FLASH->OPTKEYR, FLASH_OPTKEY2); + + /* Re-enable the interrupts: restore previous priority mask */ + __set_PRIMASK(primask_bit); + } + else + { + 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_PGAERR) || + __HAL_FLASH_GET_FLAG(FLASH_FLAG_SIZERR) || + __HAL_FLASH_GET_FLAG(FLASH_FLAG_OPTVERR) || + __HAL_FLASH_GET_FLAG(FLASH_FLAG_RDERR) || + __HAL_FLASH_GET_FLAG(FLASH_FLAG_FWWERR) || + __HAL_FLASH_GET_FLAG(FLASH_FLAG_NOTZEROERR) ) + { + /*Save the error code*/ + + /* WARNING : On the first cut of STM32L031xx and STM32L041xx devices, + * (RefID = 0x1000) the FLASH_FLAG_OPTVERR bit was not behaving + * as expected. If the user run an application using the first + * cut of the STM32L031xx device or the first cut of the STM32L041xx + * device, this error should be ignored. The revId of the device + * can be retrieved via the HAL_GetREVID() function. + * + */ + 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 = 0; + + 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_SIZERR)) + { + pFlash.ErrorCode |= HAL_FLASH_ERROR_SIZE; + flags |= FLASH_FLAG_SIZERR; + } + if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_OPTVERR)) + { + /* WARNING : On the first cut of STM32L031xx and STM32L041xx devices, + * (RefID = 0x1000) the FLASH_FLAG_OPTVERR bit was not behaving + * as expected. If the user run an application using the first + * cut of the STM32L031xx device or the first cut of the STM32L041xx + * device, this error should be ignored. The revId of the device + * can be retrieved via the HAL_GetREVID() function. + * + */ + pFlash.ErrorCode |= HAL_FLASH_ERROR_OPTV; + flags |= FLASH_FLAG_OPTVERR; + } + + if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_RDERR)) + { + pFlash.ErrorCode |= HAL_FLASH_ERROR_RD; + flags |= FLASH_FLAG_RDERR; + } + if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_FWWERR)) + { + pFlash.ErrorCode |= HAL_FLASH_ERROR_FWWERR; + flags |= HAL_FLASH_ERROR_FWWERR; + } + if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_NOTZEROERR)) + { + pFlash.ErrorCode |= HAL_FLASH_ERROR_NOTZERO; + flags |= FLASH_FLAG_NOTZEROERR; + } + + /* Clear FLASH error pending bits */ + __HAL_FLASH_CLEAR_FLAG(flags); +} +/** + * @} + */ + +/** + * @} + */ + +#endif /* HAL_FLASH_MODULE_ENABLED */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c new file mode 100644 index 0000000..2461eb8 --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c @@ -0,0 +1,1274 @@ +/** + ****************************************************************************** + * @file stm32l0xx_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 STM32L0xx + 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 STM32L0xx. It includes: + (+) Full DATA_EEPROM erase and program management + (+) Boot activation + (+) PCROP protection configuration and control for all pages + + @endverbatim + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal.h" + +/** @addtogroup STM32L0xx_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); +#if defined(FLASH_OPTR_BFB2) +static HAL_StatusTypeDef FLASH_OB_BootConfig(uint8_t OB_BOOT); +#endif /* FLASH_OPTR_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 uint8_t FLASH_OB_GetBOOTBit1(void); +static HAL_StatusTypeDef FLASH_OB_BOOTBit1Config(uint8_t OB_BootBit1); +#if defined(STM32L071xx) || defined(STM32L072xx) || defined(STM32L073xx) || defined(STM32L081xx) || defined(STM32L082xx) || defined(STM32L083xx) +static HAL_StatusTypeDef FLASH_OB_ProtectedSectorsConfig(uint32_t Sector, uint32_t Sector2, uint32_t NewState); +#else +static HAL_StatusTypeDef FLASH_OB_ProtectedSectorsConfig(uint32_t Sector, uint32_t NewState); +#endif +static uint32_t FLASH_OB_GetWRP(void); +#if defined(STM32L071xx) || defined(STM32L072xx) || defined(STM32L073xx) || defined(STM32L081xx) || defined(STM32L082xx) || defined(STM32L083xx) +static uint32_t FLASH_OB_GetWRP2(void); +#endif + +/** + * @} + */ + +/* 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) + * @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 = HAL_ERROR; + 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)); + + /* 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 + * @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 = HAL_ERROR; + + /* 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 - 1)) + pEraseInit->NbPages * FLASH_PAGE_SIZE - 1)); + + /* Process Locked */ + __HAL_LOCK(&pFlash); + + /* 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 WPRMOD option bit must be activated. + (#) The active value of nWRPi bits is inverted when PCROP mode is active, this + means: if WPRMOD = 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 + +@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 defined(STM32L071xx) || defined(STM32L072xx) || defined(STM32L073xx) || defined(STM32L081xx) || defined(STM32L082xx) || defined(STM32L083xx) + status = FLASH_OB_ProtectedSectorsConfig(pOBInit->WRPSector, pOBInit->WRPSector2, pOBInit->WRPState); +#else + status = FLASH_OB_ProtectedSectorsConfig(pOBInit->WRPSector, pOBInit->WRPState); +#endif + 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; + } + } + + /* Program BOOT Bit1 config option byte */ + if ((pOBInit->OptionType & OPTIONBYTE_BOOT_BIT1) == OPTIONBYTE_BOOT_BIT1) + { + status = FLASH_OB_BOOTBit1Config(pOBInit->BOOTBit1Config); + } + /* 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 WRP sector */ + pOBInit->WRPSector = FLASH_OB_GetWRP(); + +#if defined(STM32L071xx) || defined(STM32L072xx) || defined(STM32L073xx) || defined(STM32L081xx) || defined(STM32L082xx) || defined(STM32L083xx) + pOBInit->WRPSector2 = FLASH_OB_GetWRP2(); +#endif + + /*Get RDP Level*/ + pOBInit->RDPLevel = FLASH_OB_GetRDP(); + + /*Get USER*/ + pOBInit->USERConfig = FLASH_OB_GetUser(); + + /*Get BOR Level*/ + pOBInit->BORLevel = FLASH_OB_GetBOR(); + + /* Get BOOT bit 1 config OB */ + pOBInit->BOOTBit1Config = FLASH_OB_GetBOOTBit1(); +} + +#if defined(FLASH_OPTR_WPRMOD) || defined(FLASH_OPTR_BFB2) + +/** + * @brief Program option bytes + * @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_OPTR_WPRMOD) + + /* Program PCROP option byte*/ + if ((pAdvOBInit->OptionType & OPTIONBYTE_PCROP) == OPTIONBYTE_PCROP) + { + /* Check the parameters */ + assert_param(IS_PCROPSTATE(pAdvOBInit->PCROPState)); +#if defined(STM32L071xx) || defined(STM32L072xx) || defined(STM32L073xx) || defined(STM32L081xx) || defined(STM32L082xx) || defined(STM32L083xx) + status = FLASH_OB_ProtectedSectorsConfig(pAdvOBInit->PCROPSector, pAdvOBInit->PCROPSector2, pAdvOBInit->PCROPState); +#else + status = FLASH_OB_ProtectedSectorsConfig(pAdvOBInit->PCROPSector, pAdvOBInit->PCROPState); +#endif + } + +#endif /* FLASH_OPTR_WPRMOD */ + +#if defined(FLASH_OPTR_BFB2) + + /* Program BOOT config option byte */ + if ((pAdvOBInit->OptionType & OPTIONBYTE_BOOTCONFIG) == OPTIONBYTE_BOOTCONFIG) + { + status = FLASH_OB_BootConfig(pAdvOBInit->BootConfig); + } + +#endif /* FLASH_OPTR_BFB2 */ + + return status; +} + +/** + * @brief Get the OBEX byte configuration + * @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 = 0; + +#if defined(FLASH_OPTR_WPRMOD) + + pAdvOBInit->OptionType |= OPTIONBYTE_PCROP; + + + /* Get PCROP state */ + pAdvOBInit->PCROPState = (FLASH->OPTR & FLASH_OPTR_WPRMOD) >> FLASH_OPTR_WPRMOD_Pos; + /* Get PCROP protected sector */ + pAdvOBInit->PCROPSector = FLASH->WRPR; + +#if defined(STM32L071xx) || defined(STM32L072xx) || defined(STM32L073xx) || defined(STM32L081xx) || defined(STM32L082xx) || defined(STM32L083xx) + /* Get PCROP protected sector */ + pAdvOBInit->PCROPSector2 = FLASH->WRPR2; +#endif +#endif /* FLASH_OPTR_WPRMOD */ + +#if defined(FLASH_OPTR_BFB2) + + pAdvOBInit->OptionType |= OPTIONBYTE_BOOTCONFIG; + + /* Get Boot config OB */ + pAdvOBInit->BootConfig = (FLASH->OPTR & FLASH_OPTR_BFB2) >> 16U; + +#endif /* FLASH_OPTR_BFB2 */ +} + +#endif /* FLASH_OPTR_WPRMOD || FLASH_OPTR_BFB2 */ + +#if defined(FLASH_OPTR_WPRMOD) + +/** + * @brief Select the Protection Mode (WPRMOD). + * @note Once WPRMOD 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 = 0; + uint32_t tmp2 = 0; + uint8_t optiontmp = 0; + uint16_t optiontmp2 = 0; + + 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 (WPRMOD). + * @note Once WPRMOD 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 = 0; + uint32_t tmp2 = 0; + uint8_t optiontmp = 0; + uint16_t optiontmp2 = 0; + + 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_OPTR_WPRMOD */ + +/** + * @} + */ + +/** @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) +{ + uint32_t primask_bit; + + if((FLASH->PECR & FLASH_PECR_PELOCK) != RESET) + { + /* Disable interrupts to avoid any interruption during unlock sequence */ + primask_bit = __get_PRIMASK(); + __disable_irq(); + + /* Unlocking the Data memory and FLASH_PECR register access*/ + FLASH->PEKEYR = FLASH_PEKEY1; + FLASH->PEKEYR = FLASH_PEKEY2; + + /* Re-enable the interrupts: restore previous priority mask */ + __set_PRIMASK(primask_bit); + + if((FLASH->PECR & FLASH_PECR_PELOCK) != RESET) + { + 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. + * @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 Address) +{ + 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) + { + /* Clean the error context */ + pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; + + /* Write 00000000h to valid address in the data memory */ + *(__IO uint32_t *) Address = 0x00000000U; + + 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 = HAL_ERROR; + + /* Process Locked */ + __HAL_LOCK(&pFlash); + + /* Check the parameters */ + assert_param(IS_TYPEPROGRAMDATA(TypeProgram)); + 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(TypeProgram == FLASH_TYPEPROGRAMDATA_WORD) + { + /* Program word (32-bit) at a specified address.*/ + *(__IO uint32_t *)Address = Data; + } + else if(TypeProgram == FLASH_TYPEPROGRAMDATA_HALFWORD) + { + /* Program halfword (16-bit) at a specified address.*/ + *(__IO uint16_t *)Address = (uint16_t) Data; + } + else if(TypeProgram == FLASH_TYPEPROGRAMDATA_BYTE) + { + /* Program byte (8-bit) at a specified address.*/ + *(__IO uint8_t *)Address = (uint8_t) Data; + } + else + { + status = HAL_ERROR; + } + + if (status != HAL_OK) + { + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + } + } + + /* 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_FIX); +} + +/** + * @brief Disables DATA EEPROM fixed Time programming (2*Tprog). + * @retval None + */ +void HAL_FLASHEx_DATAEEPROM_DisableFixedTimeProgram(void) +{ + CLEAR_BIT(FLASH->PECR, FLASH_PECR_FIX); +} + +/** + * @} + */ + +/** + * @} + */ + +/** @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_OPTR_RDPROT); + +#if defined(FLASH_OPTR_WPRMOD) + /* Mask WPRMOD bit */ + tmp3 = (uint32_t)(OB->RDP & FLASH_OPTR_WPRMOD); +#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 = 0, tmp1 = 0; + + /* Check the parameters */ + assert_param(IS_OB_BOR_LEVEL(OB_BOR)); + + /* Get the User Option byte register */ + tmp1 = OB->USER & ((~FLASH_OPTR_BOR_LEV) >> 16U); + + /* Calculate the option byte to write - [0xFF | nUSER | 0x00 | 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 Sets or resets the BOOT bit1 option bit. + * @param OB_BootBit1 Set or Reset the BOOT bit1 option bit. + * This parameter can be one of the following values: + * @arg @ref OB_BOOT_BIT1_RESET BOOT1 option bit reset + * @arg @ref OB_BOOT_BIT1_SET BOOT1 option bit set + * @retval HAL status + */ +static HAL_StatusTypeDef FLASH_OB_BOOTBit1Config(uint8_t OB_BootBit1) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmp = 0, tmp1 = 0, OB_Bits = ((uint32_t) OB_BootBit1) << 15; + + /* Check the parameters */ + assert_param(IS_OB_BOOT1(OB_BootBit1)); + + /* Get the User Option byte register */ + tmp1 = OB->USER & ((~FLASH_OPTR_BOOT1) >> 16U); + + /* Calculate the user option byte to write */ + tmp = (~(OB_Bits | tmp1)) << 16U; + tmp |= OB_Bits | 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; + /* Program OB */ + OB->USER = tmp; + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + } + + 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->OPTR & FLASH_OPTR_USER) >> 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 = READ_BIT(FLASH->OPTR, FLASH_OPTR_RDPROT); + + 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->OPTR & (uint32_t)FLASH_OPTR_BOR_LEV) >> 16U); +} + +/** + * @brief Returns the FLASH BOOT bit1 value. + * @retval The BOOT bit 1 value Option Bytes. + */ +static uint8_t FLASH_OB_GetBOOTBit1(void) +{ + /* Return the BOR level */ + return (FLASH->OPTR & FLASH_OPTR_BOOT1) >> FLASH_OPTR_BOOT1_Pos; + +} + +/** + * @brief Returns the FLASH Write Protection Option Bytes value. + * @retval The FLASH Write Protection Option Bytes value. + */ +static uint32_t FLASH_OB_GetWRP(void) +{ + /* Return the FLASH write protection Register value */ + return (uint32_t)(FLASH->WRPR); +} + +#if defined(STM32L071xx) || defined(STM32L072xx) || defined(STM32L073xx) || defined(STM32L081xx) || defined(STM32L082xx) || defined(STM32L083xx) +/** + * @brief Returns the FLASH Write Protection Option Bytes value. + * @retval The FLASH Write Protection Option Bytes value. + */ +static uint32_t FLASH_OB_GetWRP2(void) +{ + /* Return the FLASH write protection Register value */ + return (uint32_t)(FLASH->WRPR2); +} +#endif /* STM32L071xx || STM32L072xx || STM32L073xx || STM32L081xx || STM32L082xx || STM32L083xx */ + +#if defined(STM32L071xx) || defined(STM32L072xx) || defined(STM32L073xx) || defined(STM32L081xx) || defined(STM32L082xx) || defined(STM32L083xx) +/** + * @brief Write Option Byte of the desired pages of the Flash. + * @param Sector specifies the sectors to be write protected. + * @param Sector2 specifies the sectors to be write protected (only stm32l07xxx and stm32l08xxx devices) + * @param NewState new state of the specified FLASH Pages Write protection. + * This parameter can be: + * @arg @ref OB_WRPSTATE_ENABLE + * @arg @ref OB_WRPSTATE_DISABLE + * @retval HAL_StatusTypeDef + */ +static HAL_StatusTypeDef FLASH_OB_ProtectedSectorsConfig(uint32_t Sector, uint32_t Sector2, uint32_t NewState) +#else +/** + * @brief Write Option Byte of the desired pages of the Flash. + * @param Sector specifies the sectors to be write protected. + * @param NewState new state of the specified FLASH Pages Write protection. + * This parameter can be: + * @arg @ref OB_WRPSTATE_ENABLE + * @arg @ref OB_WRPSTATE_DISABLE + * @retval HAL_StatusTypeDef + */ +static HAL_StatusTypeDef FLASH_OB_ProtectedSectorsConfig(uint32_t Sector, uint32_t NewState) +#endif +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t WRP_Data = 0; + uint32_t OB_WRP = Sector; + + /* 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; + + /* Update WRP only if at least 1 selected sector */ + if (OB_WRP != 0x00000000U) + { + if ((OB_WRP & WRP_MASK_LOW) != 0x00000000U) + { + if (NewState != OB_WRPSTATE_DISABLE) + { + WRP_Data = (uint16_t)(((OB_WRP & WRP_MASK_LOW) | OB->WRP01)); + OB->WRP01 = (uint32_t)(~(WRP_Data) << 16U) | (WRP_Data); + } + else + { + WRP_Data = (uint16_t)(~OB_WRP & (WRP_MASK_LOW & OB->WRP01)); + OB->WRP01 = (uint32_t)((~WRP_Data) << 16U) | (WRP_Data); + } + } + } +#if defined(STM32L071xx) || defined(STM32L072xx) || defined(STM32L073xx) || defined(STM32L081xx) || defined(STM32L082xx) || defined(STM32L083xx) + /* Update WRP only if at least 1 selected sector */ + if (OB_WRP != 0x00000000U) + { + if ((OB_WRP & WRP_MASK_HIGH) != 0x00000000U) + { + if (NewState != OB_WRPSTATE_DISABLE) + { + WRP_Data = (uint16_t)((((OB_WRP & WRP_MASK_HIGH) >> 16U | OB->WRP23))); + OB->WRP23 = (uint32_t)(~(WRP_Data) << 16U) | (WRP_Data); + } + else + { + WRP_Data = (uint16_t)((((~OB_WRP & WRP_MASK_HIGH) >> 16U & OB->WRP23))); + OB->WRP23 = (uint32_t)((~WRP_Data) << 16U) | (WRP_Data); + } + } + } + + OB_WRP = Sector2; + /* Update WRP only if at least 1 selected sector */ + if (OB_WRP != 0x00000000U) + { + if ((OB_WRP & WRP_MASK_LOW) != 0x00000000U) + { + if (NewState != OB_WRPSTATE_DISABLE) + { + WRP_Data = (uint16_t)(((OB_WRP & WRP_MASK_LOW) | OB->WRP45)); + OB->WRP45 =(uint32_t)(~(WRP_Data) << 16U) | (WRP_Data); + } + else + { + WRP_Data = (uint16_t)(~OB_WRP & (WRP_MASK_LOW & OB->WRP45)); + OB->WRP45 = (uint32_t)((~WRP_Data) << 16U) | (WRP_Data); + } + } + } +#endif /* STM32L071xx || STM32L072xx || STM32L073xx || STM32L081xx || STM32L082xx || STM32L083xx */ + } + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + /* Return the write protection operation Status */ + return status; +} + +/** + * @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 = 0, tmp1 = 0; + + /* 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_OPTR_USER) >> 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_OPTR_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: + * This parameter can be one of the following values: + * @arg @ref OB_BOOT_BANK1 BFB2 option bit reset + * @arg @ref OB_BOOT_BANK2 BFB2 option bit set + * @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_OPTR_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_OPTR_BFB2 */ + +/** + * @} + */ + +/** + * @} + */ + +/** @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 */ +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c new file mode 100644 index 0000000..dd58988 --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c @@ -0,0 +1,521 @@ +/** + ****************************************************************************** + * @file stm32l0xx_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) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal.h" + +/** @addtogroup STM32L0xx_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 STM32L07xxx/STM32L08xxx 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 16 Words). + * @note This function can be used only for STM32L07xxx/STM32L08xxx 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 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 64 + * bytes) and the 15 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 count = 0U; + HAL_StatusTypeDef status = HAL_OK; + + /* Wait for last operation to be completed */ + status = FLASHRAM_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + if(status == HAL_OK) + { + /* 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); + + /* Wait for last operation to be completed */ + status = FLASHRAM_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + if(status == HAL_OK) + { + /* Disable all IRQs */ + __disable_irq(); + + /* Write the first half page directly with 16 different words */ + while(count < 16U) + { + /* Address1 doesn't need to be increased */ + *(__IO uint32_t*) Address1 = *pBuffer1; + pBuffer1++; + count ++; + } + + /* Write the second half page directly with 16 different words */ + count = 0U; + while(count < 16U) + { + /* Address2 doesn't need to be increased */ + *(__IO uint32_t*) Address2 = *pBuffer2; + pBuffer2++; + count ++; + } + + /* Enable IRQs */ + __enable_irq(); + + /* 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); + } + + /* 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 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 64 + * bytes) and the 15 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 count = 0U; + HAL_StatusTypeDef status = HAL_OK; + + /* Wait for last operation to be completed */ + status = FLASHRAM_WaitForLastOperation(FLASH_TIMEOUT_VALUE); + + if(status == HAL_OK) + { + /* Proceed to program the new half page */ + SET_BIT(FLASH->PECR, FLASH_PECR_FPRG); + SET_BIT(FLASH->PECR, FLASH_PECR_PROG); + + /* Disable all IRQs */ + __disable_irq(); + + /* Write one half page directly with 16 different words */ + while(count < 16U) + { + /* Address doesn't need to be increased */ + *(__IO uint32_t*) Address = *pBuffer; + pBuffer++; + count ++; + } + + /* Enable IRQs */ + __enable_irq(); + + /* 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); + } + + /* 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: + * @arg @ref HAL_FLASH_ERROR_RD FLASH Read Protection error flag (PCROP) + * @arg @ref HAL_FLASH_ERROR_SIZE FLASH Programming Parallelism error flag + * @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 + * @arg @ref HAL_FLASH_ERROR_FWWERR FLASH Write or Erase operation aborted + * @arg @ref HAL_FLASH_ERROR_NOTZERO FLASH Write operation is done in a not-erased region + * @retval HAL Status + */ +__RAM_FUNC HAL_StatusTypeDef HAL_FLASHEx_GetError(uint32_t * Error) +{ + *Error = pFlash.ErrorCode; + return HAL_OK; +} + +/** + * @} + */ + +/** + * @} + */ + +/** @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 = 0; + + 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_SIZERR)) + { + pFlash.ErrorCode |= HAL_FLASH_ERROR_SIZE; + flags |= FLASH_FLAG_SIZERR; + } + if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_OPTVERR)) + { + /* WARNING : On the first cut of STM32L031xx and STM32L041xx devices, + * (RefID = 0x1000) the FLASH_FLAG_OPTVERR bit was not behaving + * as expected. If the user run an application using the first + * cut of the STM32L031xx device or the first cut of the STM32L041xx + * device, this error should be ignored. The revId of the device + * can be retrieved via the HAL_GetREVID() function. + * + */ + pFlash.ErrorCode |= HAL_FLASH_ERROR_OPTV; + flags |= FLASH_FLAG_OPTVERR; + } + + if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_RDERR)) + { + pFlash.ErrorCode |= HAL_FLASH_ERROR_RD; + flags |= FLASH_FLAG_RDERR; + } + if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_FWWERR)) + { + pFlash.ErrorCode |= HAL_FLASH_ERROR_FWWERR; + flags |= HAL_FLASH_ERROR_FWWERR; + } + if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_NOTZEROERR)) + { + pFlash.ErrorCode |= HAL_FLASH_ERROR_NOTZERO; + flags |= FLASH_FLAG_NOTZEROERR; + } + + /* 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_PGAERR) || + __HAL_FLASH_GET_FLAG(FLASH_FLAG_SIZERR) || + __HAL_FLASH_GET_FLAG(FLASH_FLAG_OPTVERR) || + __HAL_FLASH_GET_FLAG(FLASH_FLAG_RDERR) || + __HAL_FLASH_GET_FLAG(FLASH_FLAG_FWWERR) || + __HAL_FLASH_GET_FLAG(FLASH_FLAG_NOTZEROERR) ) + { + /*Save the error code*/ + + /* WARNING : On the first cut of STM32L031xx and STM32L041xx devices, + * (RefID = 0x1000) the FLASH_FLAG_OPTVERR bit was not behaving + * as expected. If the user run an application using the first + * cut of the STM32L031xx device or the first cut of the STM32L041xx + * device, this error should be ignored. The revId of the device + * can be retrieved via the HAL_GetREVID() function. + * + */ + FLASHRAM_SetErrorCode(); + return HAL_ERROR; + } + + /* There is no error flag set */ + return HAL_OK; +} + +/** + * @} + */ + +/** + * @} + */ + +#endif /* HAL_FLASH_MODULE_ENABLED */ +/** + * @} + */ + + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c new file mode 100644 index 0000000..f22aeca --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c @@ -0,0 +1,532 @@ +/** + ****************************************************************************** + * @file stm32l0xx_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 + * + @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 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 + (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 IOPORT clock using the following function: __HAL_RCC_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. + (++) In alternate mode is selection, 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. This function + is also to be used when unconfiguring pin which was used as an external interrupt + or in event mode. That is the only way to reset the 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 + ****************************************************************************** + * @attention + * + *

© Copyright(c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal.h" + +/** @addtogroup STM32L0xx_HAL_Driver + * @{ + */ + +#ifdef HAL_GPIO_MODULE_ENABLED + +/** @addtogroup GPIO + * @brief GPIO HAL module driver + * @{ + */ + +/* Private define ------------------------------------------------------------*/ +/** @addtogroup GPIO_Private + * @{ + */ +#define GPIO_NUMBER (16U) +/** + * @} + */ +/** @addtogroup GPIO_Exported_Functions + * @{ + */ + +/** @addtogroup GPIO_Exported_Functions_Group1 + * @brief Initialization and de-initialization functions + * +@verbatim + =============================================================================== + ##### Initialization and de-initialization functions ##### + =============================================================================== + +@endverbatim + * @{ + */ + +/** + * @brief Initializes the GPIOx peripheral according to the specified parameters in the GPIO_Init. + * @param GPIOx where x can be (A..E and H) to select the GPIO peripheral for STM32L0XX family devices. + * Note that GPIOE is not available on all 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 = 0x00U; + uint32_t iocurrent = 0x00U; + uint32_t temp = 0x00U; + + /* Check the parameters */ + assert_param(IS_GPIO_MODE(GPIO_Init->Mode)); + assert_param(IS_GPIO_PIN_AVAILABLE(GPIOx, (GPIO_Init->Pin))); + + /* Configure the port pins */ + while (((GPIO_Init->Pin) >> position) != 0) + { + /* Get the 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; + temp &= ~(GPIO_OSPEEDER_OSPEED0 << (position * 2U)); + temp |= (GPIO_Init->Speed << (position * 2U)); + GPIOx->OSPEEDR = temp; + + /* Configure the IO Output Type */ + temp = GPIOx->OTYPER; + temp &= ~(GPIO_OTYPER_OT_0 << position) ; + 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; + temp &= ~(GPIO_PUPDR_PUPD0 << (position * 2U)); + temp |= ((GPIO_Init->Pull) << (position * 2U)); + 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 */ + temp = GPIOx->AFR[position >> 3U]; + temp &= ~(0xFUL << ((uint32_t)(position & 0x07UL) * 4U)); + temp |= ((uint32_t)(GPIO_Init->Alternate) << (((uint32_t)position & (uint32_t)0x07U) * 4U)); + GPIOx->AFR[position >> 3U] = temp; + } + + /* Configure IO Direction mode (Input, Output, Alternate or Analog) */ + temp = GPIOx->MODER; + temp &= ~(GPIO_MODER_MODE0 << (position * 2U)); + temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2U)); + 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 >> 2U]; + CLEAR_BIT(temp, (0x0FUL) << (4U * (position & 0x03U))); + SET_BIT(temp, (GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03U))); + SYSCFG->EXTICR[position >> 2U] = temp; + + /* Clear EXTI line configuration */ + temp = EXTI->IMR; + temp &= ~((uint32_t)iocurrent); + if ((GPIO_Init->Mode & EXTI_IT) != 0x00U) + { + temp |= iocurrent; + } + EXTI->IMR = temp; + + temp = EXTI->EMR; + temp &= ~((uint32_t)iocurrent); + if ((GPIO_Init->Mode & EXTI_EVT) != 0x00U) + { + temp |= iocurrent; + } + EXTI->EMR = temp; + + /* Clear Rising Falling edge configuration */ + temp = EXTI->RTSR; + temp &= ~((uint32_t)iocurrent); + if ((GPIO_Init->Mode & TRIGGER_RISING) != 0x00U) + { + temp |= iocurrent; + } + EXTI->RTSR = temp; + + temp = EXTI->FTSR; + temp &= ~((uint32_t)iocurrent); + if ((GPIO_Init->Mode & TRIGGER_FALLING) != 0x00U) + { + temp |= iocurrent; + } + EXTI->FTSR = temp; + } + } + position++; + } +} + +/** + * @brief De-initializes the GPIOx peripheral registers to their default reset values. + * @param GPIOx where x can be (A..E and H) to select the GPIO peripheral for STM32L0XX family devices. + * Note that GPIOE is not available on all 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). + * All port bits are not necessarily available on all GPIOs. + * @retval None + */ +void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin) +{ + uint32_t position = 0x00U; + uint32_t iocurrent = 0x00U; + uint32_t tmp = 0x00U; + + /* Check the parameters */ + assert_param(IS_GPIO_PIN_AVAILABLE(GPIOx, GPIO_Pin)); + + /* Configure the port pins */ + while ((GPIO_Pin >> position) != 0) + { + /* Get the 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 >> 2U]; + tmp &= ((0x0FUL) << (4U * (position & 0x03U))); + if (tmp == (GPIO_GET_INDEX(GPIOx) << (4U * (position & 0x03U)))) + { + /* Clear EXTI line configuration */ + EXTI->IMR &= ~((uint32_t)iocurrent); + EXTI->EMR &= ~((uint32_t)iocurrent); + + /* Clear Rising Falling edge configuration */ + EXTI->RTSR &= ~((uint32_t)iocurrent); + EXTI->FTSR &= ~((uint32_t)iocurrent); + + tmp = (0x0FUL) << (4U * (position & 0x03U)); + SYSCFG->EXTICR[position >> 2U] &= ~tmp; + } + + /*------------------------- GPIO Mode Configuration --------------------*/ + /* Configure IO Direction in Input Floting Mode */ + GPIOx->MODER |= (GPIO_MODER_MODE0 << (position * 2U)); + + /* Configure the default Alternate Function in current IO */ + GPIOx->AFR[position >> 3U] &= ~(0xFUL << ((uint32_t)(position & 0x07UL) * 4U)); + + /* Deactivate the Pull-up oand Pull-down resistor for the current IO */ + GPIOx->PUPDR &= ~(GPIO_PUPDR_PUPD0 << (position * 2U)); + + /* Configure the default value IO Output Type */ + GPIOx->OTYPER &= ~(GPIO_OTYPER_OT_0 << position); + + /* Configure the default value for IO Speed */ + GPIOx->OSPEEDR &= ~(GPIO_OSPEEDER_OSPEED0 << (position * 2U)); + } + position++; + } +} + +/** + * @} + */ + +/** @addtogroup GPIO_Exported_Functions_Group2 + * @brief GPIO Read and Write + * +@verbatim + =============================================================================== + ##### IO operation functions ##### + =============================================================================== + +@endverbatim + * @{ + */ + +/** + * @brief Reads the specified input port pin. + * @param GPIOx where x can be (A..E and H) to select the GPIO peripheral for STM32L0xx family devices. + * Note that GPIOE is not available on all devices. + * @param GPIO_Pin specifies the port bit to read. + * This parameter can be GPIO_PIN_x where x can be (0..15). + * All port bits are not necessarily available on all GPIOs. + * @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_AVAILABLE(GPIOx, 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..E and H) to select the GPIO peripheral for STM32L0xx family devices. + * Note that GPIOE is not available on all 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). + * All port bits are not necessarily available on all GPIOs. + * @param PinState specifies the value to be written to the selected bit. + * This parameter can be one of the GPIO_PinState enum values: + * GPIO_PIN_RESET: to clear the port pin + * 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_AVAILABLE(GPIOx, GPIO_Pin)); + assert_param(IS_GPIO_PIN_ACTION(PinState)); + + if (PinState != GPIO_PIN_RESET) + { + GPIOx->BSRR = GPIO_Pin; + } + else + { + GPIOx->BRR = GPIO_Pin ; + } +} + +/** + * @brief Toggles the specified GPIO pins. + * @param GPIOx Where x can be (A..E and H) to select the GPIO peripheral for STM32L0xx family devices. + * Note that GPIOE is not available on all devices. + * All port bits are not necessarily available on all GPIOs. + * @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_AVAILABLE(GPIOx, GPIO_Pin)); + + /* get current Ouput 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. +* @param GPIOx where x can be (A..E and H) to select the GPIO peripheral for STM32L0xx family. +* Note that GPIOE is not available on all 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). +* All port bits are not necessarily available on all GPIOs. +* @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_PIN_AVAILABLE(GPIOx, GPIO_Pin)); + + /* Apply lock key write sequence */ + 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 pins connected to the 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 pins connected to the 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 */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.c b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.c new file mode 100644 index 0000000..60a372d --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.c @@ -0,0 +1,6794 @@ +/** + ****************************************************************************** + * @file stm32l0xx_hal_i2c.c + * @author MCD Application Team + * @brief I2C HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the Inter Integrated Circuit (I2C) peripheral: + * + Initialization and de-initialization functions + * + IO operation functions + * + Peripheral State and Errors functions + * + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + [..] + The I2C HAL driver can be used as follows: + + (#) Declare a I2C_HandleTypeDef handle structure, for example: + I2C_HandleTypeDef hi2c; + + (#)Initialize the I2C low level resources by implementing the HAL_I2C_MspInit() API: + (##) Enable the I2Cx interface clock + (##) I2C pins configuration + (+++) Enable the clock for the I2C GPIOs + (+++) Configure I2C pins as alternate function open-drain + (##) NVIC configuration if you need to use interrupt process + (+++) Configure the I2Cx interrupt priority + (+++) Enable the NVIC I2C IRQ Channel + (##) DMA Configuration if you need to use DMA process + (+++) Declare a DMA_HandleTypeDef handle structure for + the transmit or receive channel + (+++) Enable the DMAx interface clock using + (+++) Configure the DMA handle parameters + (+++) Configure the DMA Tx or Rx channel + (+++) Associate the initialized DMA handle to the hi2c DMA Tx or Rx handle + (+++) Configure the priority and enable the NVIC for the transfer complete interrupt on + the DMA Tx or Rx channel + + (#) Configure the Communication Clock Timing, Own Address1, Master Addressing mode, Dual Addressing mode, + Own Address2, Own Address2 Mask, General call and Nostretch mode in the hi2c Init structure. + + (#) Initialize the I2C registers by calling the HAL_I2C_Init(), configures also the low level Hardware + (GPIO, CLOCK, NVIC...etc) by calling the customized HAL_I2C_MspInit(&hi2c) API. + + (#) To check if target device is ready for communication, use the function HAL_I2C_IsDeviceReady() + + (#) For I2C IO and IO MEM operations, three operation modes are available within this driver : + + *** Polling mode IO operation *** + ================================= + [..] + (+) Transmit in master mode an amount of data in blocking mode using HAL_I2C_Master_Transmit() + (+) Receive in master mode an amount of data in blocking mode using HAL_I2C_Master_Receive() + (+) Transmit in slave mode an amount of data in blocking mode using HAL_I2C_Slave_Transmit() + (+) Receive in slave mode an amount of data in blocking mode using HAL_I2C_Slave_Receive() + + *** Polling mode IO MEM operation *** + ===================================== + [..] + (+) Write an amount of data in blocking mode to a specific memory address using HAL_I2C_Mem_Write() + (+) Read an amount of data in blocking mode from a specific memory address using HAL_I2C_Mem_Read() + + + *** Interrupt mode IO operation *** + =================================== + [..] + (+) Transmit in master mode an amount of data in non-blocking mode using HAL_I2C_Master_Transmit_IT() + (+) At transmission end of transfer, HAL_I2C_MasterTxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_MasterTxCpltCallback() + (+) Receive in master mode an amount of data in non-blocking mode using HAL_I2C_Master_Receive_IT() + (+) At reception end of transfer, HAL_I2C_MasterRxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_MasterRxCpltCallback() + (+) Transmit in slave mode an amount of data in non-blocking mode using HAL_I2C_Slave_Transmit_IT() + (+) At transmission end of transfer, HAL_I2C_SlaveTxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_SlaveTxCpltCallback() + (+) Receive in slave mode an amount of data in non-blocking mode using HAL_I2C_Slave_Receive_IT() + (+) At reception end of transfer, HAL_I2C_SlaveRxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_SlaveRxCpltCallback() + (+) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can + add their own code by customization of function pointer HAL_I2C_ErrorCallback() + (+) Abort a master I2C process communication with Interrupt using HAL_I2C_Master_Abort_IT() + (+) End of abort process, HAL_I2C_AbortCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_AbortCpltCallback() + (+) Discard a slave I2C process communication using __HAL_I2C_GENERATE_NACK() macro. + This action will inform Master to generate a Stop condition to discard the communication. + + + *** Interrupt mode or DMA mode IO sequential operation *** + ========================================================== + [..] + (@) These interfaces allow to manage a sequential transfer with a repeated start condition + when a direction change during transfer + [..] + (+) A specific option field manage the different steps of a sequential transfer + (+) Option field values are defined through I2C_XFEROPTIONS and are listed below: + (++) I2C_FIRST_AND_LAST_FRAME: No sequential usage, functional is same as associated interfaces in + no sequential mode + (++) I2C_FIRST_FRAME: Sequential usage, this option allow to manage a sequence with start condition, address + and data to transfer without a final stop condition + (++) I2C_FIRST_AND_NEXT_FRAME: Sequential usage (Master only), this option allow to manage a sequence with + start condition, address and data to transfer without a final stop condition, + an then permit a call the same master sequential interface several times + (like HAL_I2C_Master_Seq_Transmit_IT() then HAL_I2C_Master_Seq_Transmit_IT() + or HAL_I2C_Master_Seq_Transmit_DMA() then HAL_I2C_Master_Seq_Transmit_DMA()) + (++) I2C_NEXT_FRAME: Sequential usage, this option allow to manage a sequence with a restart condition, address + and with new data to transfer if the direction change or manage only the new data to + transfer + if no direction change and without a final stop condition in both cases + (++) I2C_LAST_FRAME: Sequential usage, this option allow to manage a sequance with a restart condition, address + and with new data to transfer if the direction change or manage only the new data to + transfer + if no direction change and with a final stop condition in both cases + (++) I2C_LAST_FRAME_NO_STOP: Sequential usage (Master only), this option allow to manage a restart condition + after several call of the same master sequential interface several times + (link with option I2C_FIRST_AND_NEXT_FRAME). + Usage can, transfer several bytes one by one using + HAL_I2C_Master_Seq_Transmit_IT + or HAL_I2C_Master_Seq_Receive_IT + or HAL_I2C_Master_Seq_Transmit_DMA + or HAL_I2C_Master_Seq_Receive_DMA + with option I2C_FIRST_AND_NEXT_FRAME then I2C_NEXT_FRAME. + Then usage of this option I2C_LAST_FRAME_NO_STOP at the last Transmit or + Receive sequence permit to call the opposite interface Receive or Transmit + without stopping the communication and so generate a restart condition. + (++) I2C_OTHER_FRAME: Sequential usage (Master only), this option allow to manage a restart condition after + each call of the same master sequential + interface. + Usage can, transfer several bytes one by one with a restart with slave address between + each bytes using + HAL_I2C_Master_Seq_Transmit_IT + or HAL_I2C_Master_Seq_Receive_IT + or HAL_I2C_Master_Seq_Transmit_DMA + or HAL_I2C_Master_Seq_Receive_DMA + with option I2C_FIRST_FRAME then I2C_OTHER_FRAME. + Then usage of this option I2C_OTHER_AND_LAST_FRAME at the last frame to help automatic + generation of STOP condition. + + (+) Different sequential I2C interfaces are listed below: + (++) Sequential transmit in master I2C mode an amount of data in non-blocking mode using + HAL_I2C_Master_Seq_Transmit_IT() or using HAL_I2C_Master_Seq_Transmit_DMA() + (+++) At transmission end of current frame transfer, HAL_I2C_MasterTxCpltCallback() is executed and + users can add their own code by customization of function pointer HAL_I2C_MasterTxCpltCallback() + (++) Sequential receive in master I2C mode an amount of data in non-blocking mode using + HAL_I2C_Master_Seq_Receive_IT() or using HAL_I2C_Master_Seq_Receive_DMA() + (+++) At reception end of current frame transfer, HAL_I2C_MasterRxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_MasterRxCpltCallback() + (++) Abort a master IT or DMA I2C process communication with Interrupt using HAL_I2C_Master_Abort_IT() + (+++) End of abort process, HAL_I2C_AbortCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_AbortCpltCallback() + (++) Enable/disable the Address listen mode in slave I2C mode using HAL_I2C_EnableListen_IT() + HAL_I2C_DisableListen_IT() + (+++) When address slave I2C match, HAL_I2C_AddrCallback() is executed and users can + add their own code to check the Address Match Code and the transmission direction request by master + (Write/Read). + (+++) At Listen mode end HAL_I2C_ListenCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_ListenCpltCallback() + (++) Sequential transmit in slave I2C mode an amount of data in non-blocking mode using + HAL_I2C_Slave_Seq_Transmit_IT() or using HAL_I2C_Slave_Seq_Transmit_DMA() + (+++) At transmission end of current frame transfer, HAL_I2C_SlaveTxCpltCallback() is executed and + users can add their own code by customization of function pointer HAL_I2C_SlaveTxCpltCallback() + (++) Sequential receive in slave I2C mode an amount of data in non-blocking mode using + HAL_I2C_Slave_Seq_Receive_IT() or using HAL_I2C_Slave_Seq_Receive_DMA() + (+++) At reception end of current frame transfer, HAL_I2C_SlaveRxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_SlaveRxCpltCallback() + (++) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can + add their own code by customization of function pointer HAL_I2C_ErrorCallback() + (++) Discard a slave I2C process communication using __HAL_I2C_GENERATE_NACK() macro. + This action will inform Master to generate a Stop condition to discard the communication. + + *** Interrupt mode IO MEM operation *** + ======================================= + [..] + (+) Write an amount of data in non-blocking mode with Interrupt to a specific memory address using + HAL_I2C_Mem_Write_IT() + (+) At Memory end of write transfer, HAL_I2C_MemTxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_MemTxCpltCallback() + (+) Read an amount of data in non-blocking mode with Interrupt from a specific memory address using + HAL_I2C_Mem_Read_IT() + (+) At Memory end of read transfer, HAL_I2C_MemRxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_MemRxCpltCallback() + (+) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can + add their own code by customization of function pointer HAL_I2C_ErrorCallback() + + *** DMA mode IO operation *** + ============================== + [..] + (+) Transmit in master mode an amount of data in non-blocking mode (DMA) using + HAL_I2C_Master_Transmit_DMA() + (+) At transmission end of transfer, HAL_I2C_MasterTxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_MasterTxCpltCallback() + (+) Receive in master mode an amount of data in non-blocking mode (DMA) using + HAL_I2C_Master_Receive_DMA() + (+) At reception end of transfer, HAL_I2C_MasterRxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_MasterRxCpltCallback() + (+) Transmit in slave mode an amount of data in non-blocking mode (DMA) using + HAL_I2C_Slave_Transmit_DMA() + (+) At transmission end of transfer, HAL_I2C_SlaveTxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_SlaveTxCpltCallback() + (+) Receive in slave mode an amount of data in non-blocking mode (DMA) using + HAL_I2C_Slave_Receive_DMA() + (+) At reception end of transfer, HAL_I2C_SlaveRxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_SlaveRxCpltCallback() + (+) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can + add their own code by customization of function pointer HAL_I2C_ErrorCallback() + (+) Abort a master I2C process communication with Interrupt using HAL_I2C_Master_Abort_IT() + (+) End of abort process, HAL_I2C_AbortCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_AbortCpltCallback() + (+) Discard a slave I2C process communication using __HAL_I2C_GENERATE_NACK() macro. + This action will inform Master to generate a Stop condition to discard the communication. + + *** DMA mode IO MEM operation *** + ================================= + [..] + (+) Write an amount of data in non-blocking mode with DMA to a specific memory address using + HAL_I2C_Mem_Write_DMA() + (+) At Memory end of write transfer, HAL_I2C_MemTxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_MemTxCpltCallback() + (+) Read an amount of data in non-blocking mode with DMA from a specific memory address using + HAL_I2C_Mem_Read_DMA() + (+) At Memory end of read transfer, HAL_I2C_MemRxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_MemRxCpltCallback() + (+) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can + add their own code by customization of function pointer HAL_I2C_ErrorCallback() + + + *** I2C HAL driver macros list *** + ================================== + [..] + Below the list of most used macros in I2C HAL driver. + + (+) __HAL_I2C_ENABLE: Enable the I2C peripheral + (+) __HAL_I2C_DISABLE: Disable the I2C peripheral + (+) __HAL_I2C_GENERATE_NACK: Generate a Non-Acknowledge I2C peripheral in Slave mode + (+) __HAL_I2C_GET_FLAG: Check whether the specified I2C flag is set or not + (+) __HAL_I2C_CLEAR_FLAG: Clear the specified I2C pending flag + (+) __HAL_I2C_ENABLE_IT: Enable the specified I2C interrupt + (+) __HAL_I2C_DISABLE_IT: Disable the specified I2C interrupt + + *** Callback registration *** + ============================================= + [..] + The compilation flag USE_HAL_I2C_REGISTER_CALLBACKS when set to 1 + allows the user to configure dynamically the driver callbacks. + Use Functions HAL_I2C_RegisterCallback() or HAL_I2C_RegisterAddrCallback() + to register an interrupt callback. + [..] + Function HAL_I2C_RegisterCallback() allows to register following callbacks: + (+) MasterTxCpltCallback : callback for Master transmission end of transfer. + (+) MasterRxCpltCallback : callback for Master reception end of transfer. + (+) SlaveTxCpltCallback : callback for Slave transmission end of transfer. + (+) SlaveRxCpltCallback : callback for Slave reception end of transfer. + (+) ListenCpltCallback : callback for end of listen mode. + (+) MemTxCpltCallback : callback for Memory transmission end of transfer. + (+) MemRxCpltCallback : callback for Memory reception end of transfer. + (+) ErrorCallback : callback for error detection. + (+) AbortCpltCallback : callback for abort completion process. + (+) MspInitCallback : callback for Msp Init. + (+) MspDeInitCallback : callback for Msp DeInit. + This function takes as parameters the HAL peripheral handle, the Callback ID + and a pointer to the user callback function. + [..] + For specific callback AddrCallback use dedicated register callbacks : HAL_I2C_RegisterAddrCallback(). + [..] + Use function HAL_I2C_UnRegisterCallback to reset a callback to the default + weak function. + HAL_I2C_UnRegisterCallback takes as parameters the HAL peripheral handle, + and the Callback ID. + This function allows to reset following callbacks: + (+) MasterTxCpltCallback : callback for Master transmission end of transfer. + (+) MasterRxCpltCallback : callback for Master reception end of transfer. + (+) SlaveTxCpltCallback : callback for Slave transmission end of transfer. + (+) SlaveRxCpltCallback : callback for Slave reception end of transfer. + (+) ListenCpltCallback : callback for end of listen mode. + (+) MemTxCpltCallback : callback for Memory transmission end of transfer. + (+) MemRxCpltCallback : callback for Memory reception end of transfer. + (+) ErrorCallback : callback for error detection. + (+) AbortCpltCallback : callback for abort completion process. + (+) MspInitCallback : callback for Msp Init. + (+) MspDeInitCallback : callback for Msp DeInit. + [..] + For callback AddrCallback use dedicated register callbacks : HAL_I2C_UnRegisterAddrCallback(). + [..] + By default, after the HAL_I2C_Init() and when the state is HAL_I2C_STATE_RESET + all callbacks are set to the corresponding weak functions: + examples HAL_I2C_MasterTxCpltCallback(), HAL_I2C_MasterRxCpltCallback(). + Exception done for MspInit and MspDeInit functions that are + reset to the legacy weak functions in the HAL_I2C_Init()/ HAL_I2C_DeInit() only when + these callbacks are null (not registered beforehand). + If MspInit or MspDeInit are not null, the HAL_I2C_Init()/ HAL_I2C_DeInit() + keep and use the user MspInit/MspDeInit callbacks (registered beforehand) whatever the state. + [..] + Callbacks can be registered/unregistered in HAL_I2C_STATE_READY state only. + Exception done MspInit/MspDeInit functions that can be registered/unregistered + in HAL_I2C_STATE_READY or HAL_I2C_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_I2C_RegisterCallback() before calling HAL_I2C_DeInit() + or HAL_I2C_Init() function. + [..] + When the compilation flag USE_HAL_I2C_REGISTER_CALLBACKS is set to 0 or + not defined, the callback registration feature is not available and all callbacks + are set to the corresponding weak functions. + + [..] + (@) You can refer to the I2C HAL driver header file for more useful macros + + @endverbatim + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal.h" + +/** @addtogroup STM32L0xx_HAL_Driver + * @{ + */ + +/** @defgroup I2C I2C + * @brief I2C HAL module driver + * @{ + */ + +#ifdef HAL_I2C_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ + +/** @defgroup I2C_Private_Define I2C Private Define + * @{ + */ +#define TIMING_CLEAR_MASK (0xF0FFFFFFU) /*!< I2C TIMING clear register Mask */ +#define I2C_TIMEOUT_ADDR (10000U) /*!< 10 s */ +#define I2C_TIMEOUT_BUSY (25U) /*!< 25 ms */ +#define I2C_TIMEOUT_DIR (25U) /*!< 25 ms */ +#define I2C_TIMEOUT_RXNE (25U) /*!< 25 ms */ +#define I2C_TIMEOUT_STOPF (25U) /*!< 25 ms */ +#define I2C_TIMEOUT_TC (25U) /*!< 25 ms */ +#define I2C_TIMEOUT_TCR (25U) /*!< 25 ms */ +#define I2C_TIMEOUT_TXIS (25U) /*!< 25 ms */ +#define I2C_TIMEOUT_FLAG (25U) /*!< 25 ms */ + +#define MAX_NBYTE_SIZE 255U +#define SLAVE_ADDR_SHIFT 7U +#define SLAVE_ADDR_MSK 0x06U + +/* Private define for @ref PreviousState usage */ +#define I2C_STATE_MSK ((uint32_t)((uint32_t)((uint32_t)HAL_I2C_STATE_BUSY_TX | \ + (uint32_t)HAL_I2C_STATE_BUSY_RX) & \ + (uint32_t)(~((uint32_t)HAL_I2C_STATE_READY)))) +/*!< Mask State define, keep only RX and TX bits */ +#define I2C_STATE_NONE ((uint32_t)(HAL_I2C_MODE_NONE)) +/*!< Default Value */ +#define I2C_STATE_MASTER_BUSY_TX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | \ + (uint32_t)HAL_I2C_MODE_MASTER)) +/*!< Master Busy TX, combinaison of State LSB and Mode enum */ +#define I2C_STATE_MASTER_BUSY_RX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | \ + (uint32_t)HAL_I2C_MODE_MASTER)) +/*!< Master Busy RX, combinaison of State LSB and Mode enum */ +#define I2C_STATE_SLAVE_BUSY_TX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | \ + (uint32_t)HAL_I2C_MODE_SLAVE)) +/*!< Slave Busy TX, combinaison of State LSB and Mode enum */ +#define I2C_STATE_SLAVE_BUSY_RX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | \ + (uint32_t)HAL_I2C_MODE_SLAVE)) +/*!< Slave Busy RX, combinaison of State LSB and Mode enum */ +#define I2C_STATE_MEM_BUSY_TX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | \ + (uint32_t)HAL_I2C_MODE_MEM)) +/*!< Memory Busy TX, combinaison of State LSB and Mode enum */ +#define I2C_STATE_MEM_BUSY_RX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | \ + (uint32_t)HAL_I2C_MODE_MEM)) +/*!< Memory Busy RX, combinaison of State LSB and Mode enum */ + + +/* Private define to centralize the enable/disable of Interrupts */ +#define I2C_XFER_TX_IT (uint16_t)(0x0001U) /*!< Bit field can be combinated with + @ref I2C_XFER_LISTEN_IT */ +#define I2C_XFER_RX_IT (uint16_t)(0x0002U) /*!< Bit field can be combinated with + @ref I2C_XFER_LISTEN_IT */ +#define I2C_XFER_LISTEN_IT (uint16_t)(0x8000U) /*!< Bit field can be combinated with @ref I2C_XFER_TX_IT + and @ref I2C_XFER_RX_IT */ + +#define I2C_XFER_ERROR_IT (uint16_t)(0x0010U) /*!< Bit definition to manage addition of global Error + and NACK treatment */ +#define I2C_XFER_CPLT_IT (uint16_t)(0x0020U) /*!< Bit definition to manage only STOP evenement */ +#define I2C_XFER_RELOAD_IT (uint16_t)(0x0040U) /*!< Bit definition to manage only Reload of NBYTE */ + +/* Private define Sequential Transfer Options default/reset value */ +#define I2C_NO_OPTION_FRAME (0xFFFF0000U) +/** + * @} + */ + +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ + +/** @defgroup I2C_Private_Functions I2C Private Functions + * @{ + */ +/* Private functions to handle DMA transfer */ +static void I2C_DMAMasterTransmitCplt(DMA_HandleTypeDef *hdma); +static void I2C_DMAMasterReceiveCplt(DMA_HandleTypeDef *hdma); +static void I2C_DMASlaveTransmitCplt(DMA_HandleTypeDef *hdma); +static void I2C_DMASlaveReceiveCplt(DMA_HandleTypeDef *hdma); +static void I2C_DMAError(DMA_HandleTypeDef *hdma); +static void I2C_DMAAbort(DMA_HandleTypeDef *hdma); + +/* Private functions to handle IT transfer */ +static void I2C_ITAddrCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags); +static void I2C_ITMasterSeqCplt(I2C_HandleTypeDef *hi2c); +static void I2C_ITSlaveSeqCplt(I2C_HandleTypeDef *hi2c); +static void I2C_ITMasterCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags); +static void I2C_ITSlaveCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags); +static void I2C_ITListenCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags); +static void I2C_ITError(I2C_HandleTypeDef *hi2c, uint32_t ErrorCode); + +/* Private functions to handle IT transfer */ +static HAL_StatusTypeDef I2C_RequestMemoryWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, + uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout, + uint32_t Tickstart); +static HAL_StatusTypeDef I2C_RequestMemoryRead(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, + uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout, + uint32_t Tickstart); + +/* Private functions for I2C transfer IRQ handler */ +static HAL_StatusTypeDef I2C_Master_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + uint32_t ITSources); +static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + uint32_t ITSources); +static HAL_StatusTypeDef I2C_Master_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + uint32_t ITSources); +static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + uint32_t ITSources); + +/* Private functions to handle flags during polling transfer */ +static HAL_StatusTypeDef I2C_WaitOnFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Flag, FlagStatus Status, + uint32_t Timeout, uint32_t Tickstart); +static HAL_StatusTypeDef I2C_WaitOnTXISFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, + uint32_t Tickstart); +static HAL_StatusTypeDef I2C_WaitOnRXNEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, + uint32_t Tickstart); +static HAL_StatusTypeDef I2C_WaitOnSTOPFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, + uint32_t Tickstart); +static HAL_StatusTypeDef I2C_IsAcknowledgeFailed(I2C_HandleTypeDef *hi2c, uint32_t Timeout, + uint32_t Tickstart); + +/* Private functions to centralize the enable/disable of Interrupts */ +static void I2C_Enable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest); +static void I2C_Disable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest); + +/* Private function to treat different error callback */ +static void I2C_TreatErrorCallback(I2C_HandleTypeDef *hi2c); + +/* Private function to flush TXDR register */ +static void I2C_Flush_TXDR(I2C_HandleTypeDef *hi2c); + +/* Private function to handle start, restart or stop a transfer */ +static void I2C_TransferConfig(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t Mode, + uint32_t Request); + +/* Private function to Convert Specific options */ +static void I2C_ConvertOtherXferOptions(I2C_HandleTypeDef *hi2c); +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ + +/** @defgroup I2C_Exported_Functions I2C Exported Functions + * @{ + */ + +/** @defgroup I2C_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 + deinitialize the I2Cx peripheral: + + (+) User must Implement HAL_I2C_MspInit() function in which he configures + all related peripherals resources (CLOCK, GPIO, DMA, IT and NVIC ). + + (+) Call the function HAL_I2C_Init() to configure the selected device with + the selected configuration: + (++) Clock Timing + (++) Own Address 1 + (++) Addressing mode (Master, Slave) + (++) Dual Addressing mode + (++) Own Address 2 + (++) Own Address 2 Mask + (++) General call mode + (++) Nostretch mode + + (+) Call the function HAL_I2C_DeInit() to restore the default configuration + of the selected I2Cx peripheral. + +@endverbatim + * @{ + */ + +/** + * @brief Initializes the I2C according to the specified parameters + * in the I2C_InitTypeDef and initialize the associated handle. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Init(I2C_HandleTypeDef *hi2c) +{ + /* Check the I2C handle allocation */ + if (hi2c == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); + assert_param(IS_I2C_OWN_ADDRESS1(hi2c->Init.OwnAddress1)); + assert_param(IS_I2C_ADDRESSING_MODE(hi2c->Init.AddressingMode)); + assert_param(IS_I2C_DUAL_ADDRESS(hi2c->Init.DualAddressMode)); + assert_param(IS_I2C_OWN_ADDRESS2(hi2c->Init.OwnAddress2)); + assert_param(IS_I2C_OWN_ADDRESS2_MASK(hi2c->Init.OwnAddress2Masks)); + assert_param(IS_I2C_GENERAL_CALL(hi2c->Init.GeneralCallMode)); + assert_param(IS_I2C_NO_STRETCH(hi2c->Init.NoStretchMode)); + + if (hi2c->State == HAL_I2C_STATE_RESET) + { + /* Allocate lock resource and initialize it */ + hi2c->Lock = HAL_UNLOCKED; + +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + /* Init the I2C Callback settings */ + hi2c->MasterTxCpltCallback = HAL_I2C_MasterTxCpltCallback; /* Legacy weak MasterTxCpltCallback */ + hi2c->MasterRxCpltCallback = HAL_I2C_MasterRxCpltCallback; /* Legacy weak MasterRxCpltCallback */ + hi2c->SlaveTxCpltCallback = HAL_I2C_SlaveTxCpltCallback; /* Legacy weak SlaveTxCpltCallback */ + hi2c->SlaveRxCpltCallback = HAL_I2C_SlaveRxCpltCallback; /* Legacy weak SlaveRxCpltCallback */ + hi2c->ListenCpltCallback = HAL_I2C_ListenCpltCallback; /* Legacy weak ListenCpltCallback */ + hi2c->MemTxCpltCallback = HAL_I2C_MemTxCpltCallback; /* Legacy weak MemTxCpltCallback */ + hi2c->MemRxCpltCallback = HAL_I2C_MemRxCpltCallback; /* Legacy weak MemRxCpltCallback */ + hi2c->ErrorCallback = HAL_I2C_ErrorCallback; /* Legacy weak ErrorCallback */ + hi2c->AbortCpltCallback = HAL_I2C_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ + hi2c->AddrCallback = HAL_I2C_AddrCallback; /* Legacy weak AddrCallback */ + + if (hi2c->MspInitCallback == NULL) + { + hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit */ + } + + /* Init the low level hardware : GPIO, CLOCK, CORTEX...etc */ + hi2c->MspInitCallback(hi2c); +#else + /* Init the low level hardware : GPIO, CLOCK, CORTEX...etc */ + HAL_I2C_MspInit(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + + hi2c->State = HAL_I2C_STATE_BUSY; + + /* Disable the selected I2C peripheral */ + __HAL_I2C_DISABLE(hi2c); + + /*---------------------------- I2Cx TIMINGR Configuration ------------------*/ + /* Configure I2Cx: Frequency range */ + hi2c->Instance->TIMINGR = hi2c->Init.Timing & TIMING_CLEAR_MASK; + + /*---------------------------- I2Cx OAR1 Configuration ---------------------*/ + /* Disable Own Address1 before set the Own Address1 configuration */ + hi2c->Instance->OAR1 &= ~I2C_OAR1_OA1EN; + + /* Configure I2Cx: Own Address1 and ack own address1 mode */ + if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_7BIT) + { + hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | hi2c->Init.OwnAddress1); + } + else /* I2C_ADDRESSINGMODE_10BIT */ + { + hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | I2C_OAR1_OA1MODE | hi2c->Init.OwnAddress1); + } + + /*---------------------------- I2Cx CR2 Configuration ----------------------*/ + /* Configure I2Cx: Addressing Master mode */ + if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) + { + hi2c->Instance->CR2 = (I2C_CR2_ADD10); + } + /* Enable the AUTOEND by default, and enable NACK (should be disable only during Slave process */ + hi2c->Instance->CR2 |= (I2C_CR2_AUTOEND | I2C_CR2_NACK); + + /*---------------------------- I2Cx OAR2 Configuration ---------------------*/ + /* Disable Own Address2 before set the Own Address2 configuration */ + hi2c->Instance->OAR2 &= ~I2C_DUALADDRESS_ENABLE; + + /* Configure I2Cx: Dual mode and Own Address2 */ + hi2c->Instance->OAR2 = (hi2c->Init.DualAddressMode | hi2c->Init.OwnAddress2 | \ + (hi2c->Init.OwnAddress2Masks << 8)); + + /*---------------------------- I2Cx CR1 Configuration ----------------------*/ + /* Configure I2Cx: Generalcall and NoStretch mode */ + hi2c->Instance->CR1 = (hi2c->Init.GeneralCallMode | hi2c->Init.NoStretchMode); + + /* Enable the selected I2C peripheral */ + __HAL_I2C_ENABLE(hi2c); + + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + hi2c->State = HAL_I2C_STATE_READY; + hi2c->PreviousState = I2C_STATE_NONE; + hi2c->Mode = HAL_I2C_MODE_NONE; + + return HAL_OK; +} + +/** + * @brief DeInitialize the I2C peripheral. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_DeInit(I2C_HandleTypeDef *hi2c) +{ + /* Check the I2C handle allocation */ + if (hi2c == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); + + hi2c->State = HAL_I2C_STATE_BUSY; + + /* Disable the I2C Peripheral Clock */ + __HAL_I2C_DISABLE(hi2c); + +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + if (hi2c->MspDeInitCallback == NULL) + { + hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit */ + } + + /* DeInit the low level hardware: GPIO, CLOCK, NVIC */ + hi2c->MspDeInitCallback(hi2c); +#else + /* DeInit the low level hardware: GPIO, CLOCK, NVIC */ + HAL_I2C_MspDeInit(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + hi2c->State = HAL_I2C_STATE_RESET; + hi2c->PreviousState = I2C_STATE_NONE; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Release Lock */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; +} + +/** + * @brief Initialize the I2C MSP. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +__weak void HAL_I2C_MspInit(I2C_HandleTypeDef *hi2c) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hi2c); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_I2C_MspInit could be implemented in the user file + */ +} + +/** + * @brief DeInitialize the I2C MSP. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +__weak void HAL_I2C_MspDeInit(I2C_HandleTypeDef *hi2c) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hi2c); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_I2C_MspDeInit could be implemented in the user file + */ +} + +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) +/** + * @brief Register a User I2C Callback + * To be used instead of the weak predefined callback + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param CallbackID ID of the callback to be registered + * This parameter can be one of the following values: + * @arg @ref HAL_I2C_MASTER_TX_COMPLETE_CB_ID Master Tx Transfer completed callback ID + * @arg @ref HAL_I2C_MASTER_RX_COMPLETE_CB_ID Master Rx Transfer completed callback ID + * @arg @ref HAL_I2C_SLAVE_TX_COMPLETE_CB_ID Slave Tx Transfer completed callback ID + * @arg @ref HAL_I2C_SLAVE_RX_COMPLETE_CB_ID Slave Rx Transfer completed callback ID + * @arg @ref HAL_I2C_LISTEN_COMPLETE_CB_ID Listen Complete callback ID + * @arg @ref HAL_I2C_MEM_TX_COMPLETE_CB_ID Memory Tx Transfer callback ID + * @arg @ref HAL_I2C_MEM_RX_COMPLETE_CB_ID Memory Rx Transfer completed callback ID + * @arg @ref HAL_I2C_ERROR_CB_ID Error callback ID + * @arg @ref HAL_I2C_ABORT_CB_ID Abort callback ID + * @arg @ref HAL_I2C_MSPINIT_CB_ID MspInit callback ID + * @arg @ref HAL_I2C_MSPDEINIT_CB_ID MspDeInit callback ID + * @param pCallback pointer to the Callback function + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_RegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef CallbackID, + pI2C_CallbackTypeDef pCallback) +{ + HAL_StatusTypeDef status = HAL_OK; + + if (pCallback == NULL) + { + /* Update the error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + + return HAL_ERROR; + } + /* Process locked */ + __HAL_LOCK(hi2c); + + if (HAL_I2C_STATE_READY == hi2c->State) + { + switch (CallbackID) + { + case HAL_I2C_MASTER_TX_COMPLETE_CB_ID : + hi2c->MasterTxCpltCallback = pCallback; + break; + + case HAL_I2C_MASTER_RX_COMPLETE_CB_ID : + hi2c->MasterRxCpltCallback = pCallback; + break; + + case HAL_I2C_SLAVE_TX_COMPLETE_CB_ID : + hi2c->SlaveTxCpltCallback = pCallback; + break; + + case HAL_I2C_SLAVE_RX_COMPLETE_CB_ID : + hi2c->SlaveRxCpltCallback = pCallback; + break; + + case HAL_I2C_LISTEN_COMPLETE_CB_ID : + hi2c->ListenCpltCallback = pCallback; + break; + + case HAL_I2C_MEM_TX_COMPLETE_CB_ID : + hi2c->MemTxCpltCallback = pCallback; + break; + + case HAL_I2C_MEM_RX_COMPLETE_CB_ID : + hi2c->MemRxCpltCallback = pCallback; + break; + + case HAL_I2C_ERROR_CB_ID : + hi2c->ErrorCallback = pCallback; + break; + + case HAL_I2C_ABORT_CB_ID : + hi2c->AbortCpltCallback = pCallback; + break; + + case HAL_I2C_MSPINIT_CB_ID : + hi2c->MspInitCallback = pCallback; + break; + + case HAL_I2C_MSPDEINIT_CB_ID : + hi2c->MspDeInitCallback = pCallback; + break; + + default : + /* Update the error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else if (HAL_I2C_STATE_RESET == hi2c->State) + { + switch (CallbackID) + { + case HAL_I2C_MSPINIT_CB_ID : + hi2c->MspInitCallback = pCallback; + break; + + case HAL_I2C_MSPDEINIT_CB_ID : + hi2c->MspDeInitCallback = pCallback; + break; + + default : + /* Update the error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else + { + /* Update the error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hi2c); + return status; +} + +/** + * @brief Unregister an I2C Callback + * I2C callback is redirected to the weak predefined callback + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param CallbackID ID of the callback to be unregistered + * This parameter can be one of the following values: + * This parameter can be one of the following values: + * @arg @ref HAL_I2C_MASTER_TX_COMPLETE_CB_ID Master Tx Transfer completed callback ID + * @arg @ref HAL_I2C_MASTER_RX_COMPLETE_CB_ID Master Rx Transfer completed callback ID + * @arg @ref HAL_I2C_SLAVE_TX_COMPLETE_CB_ID Slave Tx Transfer completed callback ID + * @arg @ref HAL_I2C_SLAVE_RX_COMPLETE_CB_ID Slave Rx Transfer completed callback ID + * @arg @ref HAL_I2C_LISTEN_COMPLETE_CB_ID Listen Complete callback ID + * @arg @ref HAL_I2C_MEM_TX_COMPLETE_CB_ID Memory Tx Transfer callback ID + * @arg @ref HAL_I2C_MEM_RX_COMPLETE_CB_ID Memory Rx Transfer completed callback ID + * @arg @ref HAL_I2C_ERROR_CB_ID Error callback ID + * @arg @ref HAL_I2C_ABORT_CB_ID Abort callback ID + * @arg @ref HAL_I2C_MSPINIT_CB_ID MspInit callback ID + * @arg @ref HAL_I2C_MSPDEINIT_CB_ID MspDeInit callback ID + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_UnRegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef CallbackID) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Process locked */ + __HAL_LOCK(hi2c); + + if (HAL_I2C_STATE_READY == hi2c->State) + { + switch (CallbackID) + { + case HAL_I2C_MASTER_TX_COMPLETE_CB_ID : + hi2c->MasterTxCpltCallback = HAL_I2C_MasterTxCpltCallback; /* Legacy weak MasterTxCpltCallback */ + break; + + case HAL_I2C_MASTER_RX_COMPLETE_CB_ID : + hi2c->MasterRxCpltCallback = HAL_I2C_MasterRxCpltCallback; /* Legacy weak MasterRxCpltCallback */ + break; + + case HAL_I2C_SLAVE_TX_COMPLETE_CB_ID : + hi2c->SlaveTxCpltCallback = HAL_I2C_SlaveTxCpltCallback; /* Legacy weak SlaveTxCpltCallback */ + break; + + case HAL_I2C_SLAVE_RX_COMPLETE_CB_ID : + hi2c->SlaveRxCpltCallback = HAL_I2C_SlaveRxCpltCallback; /* Legacy weak SlaveRxCpltCallback */ + break; + + case HAL_I2C_LISTEN_COMPLETE_CB_ID : + hi2c->ListenCpltCallback = HAL_I2C_ListenCpltCallback; /* Legacy weak ListenCpltCallback */ + break; + + case HAL_I2C_MEM_TX_COMPLETE_CB_ID : + hi2c->MemTxCpltCallback = HAL_I2C_MemTxCpltCallback; /* Legacy weak MemTxCpltCallback */ + break; + + case HAL_I2C_MEM_RX_COMPLETE_CB_ID : + hi2c->MemRxCpltCallback = HAL_I2C_MemRxCpltCallback; /* Legacy weak MemRxCpltCallback */ + break; + + case HAL_I2C_ERROR_CB_ID : + hi2c->ErrorCallback = HAL_I2C_ErrorCallback; /* Legacy weak ErrorCallback */ + break; + + case HAL_I2C_ABORT_CB_ID : + hi2c->AbortCpltCallback = HAL_I2C_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ + break; + + case HAL_I2C_MSPINIT_CB_ID : + hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit */ + break; + + case HAL_I2C_MSPDEINIT_CB_ID : + hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit */ + break; + + default : + /* Update the error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else if (HAL_I2C_STATE_RESET == hi2c->State) + { + switch (CallbackID) + { + case HAL_I2C_MSPINIT_CB_ID : + hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit */ + break; + + case HAL_I2C_MSPDEINIT_CB_ID : + hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit */ + break; + + default : + /* Update the error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else + { + /* Update the error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hi2c); + return status; +} + +/** + * @brief Register the Slave Address Match I2C Callback + * To be used instead of the weak HAL_I2C_AddrCallback() predefined callback + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param pCallback pointer to the Address Match Callback function + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_RegisterAddrCallback(I2C_HandleTypeDef *hi2c, pI2C_AddrCallbackTypeDef pCallback) +{ + HAL_StatusTypeDef status = HAL_OK; + + if (pCallback == NULL) + { + /* Update the error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + + return HAL_ERROR; + } + /* Process locked */ + __HAL_LOCK(hi2c); + + if (HAL_I2C_STATE_READY == hi2c->State) + { + hi2c->AddrCallback = pCallback; + } + else + { + /* Update the error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hi2c); + return status; +} + +/** + * @brief UnRegister the Slave Address Match I2C Callback + * Info Ready I2C Callback is redirected to the weak HAL_I2C_AddrCallback() predefined callback + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_UnRegisterAddrCallback(I2C_HandleTypeDef *hi2c) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Process locked */ + __HAL_LOCK(hi2c); + + if (HAL_I2C_STATE_READY == hi2c->State) + { + hi2c->AddrCallback = HAL_I2C_AddrCallback; /* Legacy weak AddrCallback */ + } + else + { + /* Update the error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hi2c); + return status; +} + +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + +/** + * @} + */ + +/** @defgroup I2C_Exported_Functions_Group2 Input and Output operation functions + * @brief Data transfers functions + * +@verbatim + =============================================================================== + ##### IO operation functions ##### + =============================================================================== + [..] + This subsection provides a set of functions allowing to manage the I2C data + transfers. + + (#) There are two modes of transfer: + (++) Blocking mode : The communication is performed in the polling mode. + The 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 functions return the status of the transfer startup. + The end of the data processing will be indicated through the + dedicated I2C IRQ when using Interrupt mode or the DMA IRQ when + using DMA mode. + + (#) Blocking mode functions are : + (++) HAL_I2C_Master_Transmit() + (++) HAL_I2C_Master_Receive() + (++) HAL_I2C_Slave_Transmit() + (++) HAL_I2C_Slave_Receive() + (++) HAL_I2C_Mem_Write() + (++) HAL_I2C_Mem_Read() + (++) HAL_I2C_IsDeviceReady() + + (#) No-Blocking mode functions with Interrupt are : + (++) HAL_I2C_Master_Transmit_IT() + (++) HAL_I2C_Master_Receive_IT() + (++) HAL_I2C_Slave_Transmit_IT() + (++) HAL_I2C_Slave_Receive_IT() + (++) HAL_I2C_Mem_Write_IT() + (++) HAL_I2C_Mem_Read_IT() + (++) HAL_I2C_Master_Seq_Transmit_IT() + (++) HAL_I2C_Master_Seq_Receive_IT() + (++) HAL_I2C_Slave_Seq_Transmit_IT() + (++) HAL_I2C_Slave_Seq_Receive_IT() + (++) HAL_I2C_EnableListen_IT() + (++) HAL_I2C_DisableListen_IT() + (++) HAL_I2C_Master_Abort_IT() + + (#) No-Blocking mode functions with DMA are : + (++) HAL_I2C_Master_Transmit_DMA() + (++) HAL_I2C_Master_Receive_DMA() + (++) HAL_I2C_Slave_Transmit_DMA() + (++) HAL_I2C_Slave_Receive_DMA() + (++) HAL_I2C_Mem_Write_DMA() + (++) HAL_I2C_Mem_Read_DMA() + (++) HAL_I2C_Master_Seq_Transmit_DMA() + (++) HAL_I2C_Master_Seq_Receive_DMA() + (++) HAL_I2C_Slave_Seq_Transmit_DMA() + (++) HAL_I2C_Slave_Seq_Receive_DMA() + + (#) A set of Transfer Complete Callbacks are provided in non Blocking mode: + (++) HAL_I2C_MasterTxCpltCallback() + (++) HAL_I2C_MasterRxCpltCallback() + (++) HAL_I2C_SlaveTxCpltCallback() + (++) HAL_I2C_SlaveRxCpltCallback() + (++) HAL_I2C_MemTxCpltCallback() + (++) HAL_I2C_MemRxCpltCallback() + (++) HAL_I2C_AddrCallback() + (++) HAL_I2C_ListenCpltCallback() + (++) HAL_I2C_ErrorCallback() + (++) HAL_I2C_AbortCpltCallback() + +@endverbatim + * @{ + */ + +/** + * @brief Transmits in master mode an amount of data in blocking mode. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param Timeout Timeout duration + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t Timeout) +{ + uint32_t tickstart; + + if (hi2c->State == HAL_I2C_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + hi2c->State = HAL_I2C_STATE_BUSY_TX; + hi2c->Mode = HAL_I2C_MODE_MASTER; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferISR = NULL; + + /* Send Slave Address */ + /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, + I2C_GENERATE_START_WRITE); + } + else + { + hi2c->XferSize = hi2c->XferCount; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + I2C_GENERATE_START_WRITE); + } + + while (hi2c->XferCount > 0U) + { + /* Wait until TXIS flag is set */ + if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + /* Write data to TXDR */ + hi2c->Instance->TXDR = *hi2c->pBuffPtr; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferCount--; + hi2c->XferSize--; + + if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) + { + /* Wait until TCR flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, + I2C_NO_STARTSTOP); + } + else + { + hi2c->XferSize = hi2c->XferCount; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + I2C_NO_STARTSTOP); + } + } + } + + /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */ + /* Wait until STOPF flag is set */ + if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Clear STOP Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + + /* Clear Configuration Register 2 */ + I2C_RESET_CR2(hi2c); + + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Receives in master mode an amount of data in blocking mode. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param Timeout Timeout duration + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t Timeout) +{ + uint32_t tickstart; + + if (hi2c->State == HAL_I2C_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + hi2c->State = HAL_I2C_STATE_BUSY_RX; + hi2c->Mode = HAL_I2C_MODE_MASTER; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferISR = NULL; + + /* Send Slave Address */ + /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, + I2C_GENERATE_START_READ); + } + else + { + hi2c->XferSize = hi2c->XferCount; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + I2C_GENERATE_START_READ); + } + + while (hi2c->XferCount > 0U) + { + /* Wait until RXNE flag is set */ + if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Read data from RXDR */ + *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferSize--; + hi2c->XferCount--; + + if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) + { + /* Wait until TCR flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, + I2C_NO_STARTSTOP); + } + else + { + hi2c->XferSize = hi2c->XferCount; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + I2C_NO_STARTSTOP); + } + } + } + + /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */ + /* Wait until STOPF flag is set */ + if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Clear STOP Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + + /* Clear Configuration Register 2 */ + I2C_RESET_CR2(hi2c); + + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Transmits in slave mode an amount of data in blocking mode. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param Timeout Timeout duration + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Slave_Transmit(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, + uint32_t Timeout) +{ + uint32_t tickstart; + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + + hi2c->State = HAL_I2C_STATE_BUSY_TX; + hi2c->Mode = HAL_I2C_MODE_SLAVE; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferISR = NULL; + + /* Enable Address Acknowledge */ + hi2c->Instance->CR2 &= ~I2C_CR2_NACK; + + /* Wait until ADDR flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK) + { + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + return HAL_ERROR; + } + + /* Clear ADDR flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); + + /* If 10bit addressing mode is selected */ + if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) + { + /* Wait until ADDR flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK) + { + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + return HAL_ERROR; + } + + /* Clear ADDR flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); + } + + /* Wait until DIR flag is set Transmitter mode */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_DIR, RESET, Timeout, tickstart) != HAL_OK) + { + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + return HAL_ERROR; + } + + while (hi2c->XferCount > 0U) + { + /* Wait until TXIS flag is set */ + if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + { + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + return HAL_ERROR; + } + + /* Write data to TXDR */ + hi2c->Instance->TXDR = *hi2c->pBuffPtr; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferCount--; + } + + /* Wait until STOP flag is set */ + if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + { + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + + if (hi2c->ErrorCode == HAL_I2C_ERROR_AF) + { + /* Normal use case for Transmitter mode */ + /* A NACK is generated to confirm the end of transfer */ + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + } + else + { + return HAL_ERROR; + } + } + + /* Clear STOP flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + + /* Wait until BUSY flag is reset */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, Timeout, tickstart) != HAL_OK) + { + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + return HAL_ERROR; + } + + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Receive in slave mode an amount of data in blocking mode + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param Timeout Timeout duration + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Slave_Receive(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, + uint32_t Timeout) +{ + uint32_t tickstart; + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + + hi2c->State = HAL_I2C_STATE_BUSY_RX; + hi2c->Mode = HAL_I2C_MODE_SLAVE; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferISR = NULL; + + /* Enable Address Acknowledge */ + hi2c->Instance->CR2 &= ~I2C_CR2_NACK; + + /* Wait until ADDR flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK) + { + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + return HAL_ERROR; + } + + /* Clear ADDR flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); + + /* Wait until DIR flag is reset Receiver mode */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_DIR, SET, Timeout, tickstart) != HAL_OK) + { + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + return HAL_ERROR; + } + + while (hi2c->XferCount > 0U) + { + /* Wait until RXNE flag is set */ + if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + { + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + + /* Store Last receive data if any */ + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == SET) + { + /* Read data from RXDR */ + *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferCount--; + } + + return HAL_ERROR; + } + + /* Read data from RXDR */ + *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferCount--; + } + + /* Wait until STOP flag is set */ + if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + { + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + return HAL_ERROR; + } + + /* Clear STOP flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + + /* Wait until BUSY flag is reset */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, Timeout, tickstart) != HAL_OK) + { + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + return HAL_ERROR; + } + + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Transmit in master mode an amount of data in non-blocking mode with Interrupt + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Master_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size) +{ + uint32_t xfermode; + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) + { + return HAL_BUSY; + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_TX; + hi2c->Mode = HAL_I2C_MODE_MASTER; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferISR = I2C_Master_ISR_IT; + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + xfermode = I2C_RELOAD_MODE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + xfermode = I2C_AUTOEND_MODE; + } + + /* Send Slave Address */ + /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_WRITE); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + + /* Enable ERR, TC, STOP, NACK, TXI interrupt */ + /* possible to enable all of these */ + /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | + I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ + I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Receive in master mode an amount of data in non-blocking mode with Interrupt + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Master_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size) +{ + uint32_t xfermode; + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) + { + return HAL_BUSY; + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_RX; + hi2c->Mode = HAL_I2C_MODE_MASTER; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferISR = I2C_Master_ISR_IT; + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + xfermode = I2C_RELOAD_MODE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + xfermode = I2C_AUTOEND_MODE; + } + + /* Send Slave Address */ + /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_READ); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + + /* Enable ERR, TC, STOP, NACK, RXI interrupt */ + /* possible to enable all of these */ + /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | + I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ + I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Transmit in slave mode an amount of data in non-blocking mode with Interrupt + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Slave_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) +{ + if (hi2c->State == HAL_I2C_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_TX; + hi2c->Mode = HAL_I2C_MODE_SLAVE; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Enable Address Acknowledge */ + hi2c->Instance->CR2 &= ~I2C_CR2_NACK; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferSize = hi2c->XferCount; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferISR = I2C_Slave_ISR_IT; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + + /* Enable ERR, TC, STOP, NACK, TXI interrupt */ + /* possible to enable all of these */ + /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | + I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ + I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Receive in slave mode an amount of data in non-blocking mode with Interrupt + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Slave_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) +{ + if (hi2c->State == HAL_I2C_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_RX; + hi2c->Mode = HAL_I2C_MODE_SLAVE; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Enable Address Acknowledge */ + hi2c->Instance->CR2 &= ~I2C_CR2_NACK; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferSize = hi2c->XferCount; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferISR = I2C_Slave_ISR_IT; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + + /* Enable ERR, TC, STOP, NACK, RXI interrupt */ + /* possible to enable all of these */ + /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | + I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ + I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Transmit in master mode an amount of data in non-blocking mode with DMA + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Master_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size) +{ + uint32_t xfermode; + HAL_StatusTypeDef dmaxferstatus; + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) + { + return HAL_BUSY; + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_TX; + hi2c->Mode = HAL_I2C_MODE_MASTER; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferISR = I2C_Master_ISR_DMA; + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + xfermode = I2C_RELOAD_MODE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + xfermode = I2C_AUTOEND_MODE; + } + + if (hi2c->XferSize > 0U) + { + if (hi2c->hdmatx != NULL) + { + /* Set the I2C DMA transfer complete callback */ + hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt; + + /* Set the DMA error callback */ + hi2c->hdmatx->XferErrorCallback = I2C_DMAError; + + /* Set the unused DMA callbacks to NULL */ + hi2c->hdmatx->XferHalfCpltCallback = NULL; + hi2c->hdmatx->XferAbortCallback = NULL; + + /* Enable the DMA channel */ + dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, + hi2c->XferSize); + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + if (dmaxferstatus == HAL_OK) + { + /* Send Slave Address */ + /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_WRITE); + + /* Update XferCount value */ + hi2c->XferCount -= hi2c->XferSize; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR and NACK interrupts */ + I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); + + /* Enable DMA Request */ + hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + } + else + { + /* Update Transfer ISR function pointer */ + hi2c->XferISR = I2C_Master_ISR_IT; + + /* Send Slave Address */ + /* Set NBYTES to write and generate START condition */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + I2C_GENERATE_START_WRITE); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR, TC, STOP, NACK, TXI interrupt */ + /* possible to enable all of these */ + /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | + I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ + I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); + } + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Receive in master mode an amount of data in non-blocking mode with DMA + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Master_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size) +{ + uint32_t xfermode; + HAL_StatusTypeDef dmaxferstatus; + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) + { + return HAL_BUSY; + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_RX; + hi2c->Mode = HAL_I2C_MODE_MASTER; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferISR = I2C_Master_ISR_DMA; + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + xfermode = I2C_RELOAD_MODE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + xfermode = I2C_AUTOEND_MODE; + } + + if (hi2c->XferSize > 0U) + { + if (hi2c->hdmarx != NULL) + { + /* Set the I2C DMA transfer complete callback */ + hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt; + + /* Set the DMA error callback */ + hi2c->hdmarx->XferErrorCallback = I2C_DMAError; + + /* Set the unused DMA callbacks to NULL */ + hi2c->hdmarx->XferHalfCpltCallback = NULL; + hi2c->hdmarx->XferAbortCallback = NULL; + + /* Enable the DMA channel */ + dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, + hi2c->XferSize); + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + if (dmaxferstatus == HAL_OK) + { + /* Send Slave Address */ + /* Set NBYTES to read and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_READ); + + /* Update XferCount value */ + hi2c->XferCount -= hi2c->XferSize; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR and NACK interrupts */ + I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); + + /* Enable DMA Request */ + hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + } + else + { + /* Update Transfer ISR function pointer */ + hi2c->XferISR = I2C_Master_ISR_IT; + + /* Send Slave Address */ + /* Set NBYTES to read and generate START condition */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + I2C_GENERATE_START_READ); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR, TC, STOP, NACK, TXI interrupt */ + /* possible to enable all of these */ + /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | + I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ + I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); + } + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Transmit in slave mode an amount of data in non-blocking mode with DMA + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Slave_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) +{ + HAL_StatusTypeDef dmaxferstatus; + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_TX; + hi2c->Mode = HAL_I2C_MODE_SLAVE; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferSize = hi2c->XferCount; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferISR = I2C_Slave_ISR_DMA; + + if (hi2c->hdmatx != NULL) + { + /* Set the I2C DMA transfer complete callback */ + hi2c->hdmatx->XferCpltCallback = I2C_DMASlaveTransmitCplt; + + /* Set the DMA error callback */ + hi2c->hdmatx->XferErrorCallback = I2C_DMAError; + + /* Set the unused DMA callbacks to NULL */ + hi2c->hdmatx->XferHalfCpltCallback = NULL; + hi2c->hdmatx->XferAbortCallback = NULL; + + /* Enable the DMA channel */ + dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, + hi2c->XferSize); + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_LISTEN; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + if (dmaxferstatus == HAL_OK) + { + /* Enable Address Acknowledge */ + hi2c->Instance->CR2 &= ~I2C_CR2_NACK; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR, STOP, NACK, ADDR interrupts */ + I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); + + /* Enable DMA Request */ + hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_LISTEN; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Receive in slave mode an amount of data in non-blocking mode with DMA + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Slave_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) +{ + HAL_StatusTypeDef dmaxferstatus; + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_RX; + hi2c->Mode = HAL_I2C_MODE_SLAVE; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferSize = hi2c->XferCount; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferISR = I2C_Slave_ISR_DMA; + + if (hi2c->hdmarx != NULL) + { + /* Set the I2C DMA transfer complete callback */ + hi2c->hdmarx->XferCpltCallback = I2C_DMASlaveReceiveCplt; + + /* Set the DMA error callback */ + hi2c->hdmarx->XferErrorCallback = I2C_DMAError; + + /* Set the unused DMA callbacks to NULL */ + hi2c->hdmarx->XferHalfCpltCallback = NULL; + hi2c->hdmarx->XferAbortCallback = NULL; + + /* Enable the DMA channel */ + dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, + hi2c->XferSize); + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_LISTEN; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + if (dmaxferstatus == HAL_OK) + { + /* Enable Address Acknowledge */ + hi2c->Instance->CR2 &= ~I2C_CR2_NACK; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR, STOP, NACK, ADDR interrupts */ + I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); + + /* Enable DMA Request */ + hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_LISTEN; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} +/** + * @brief Write an amount of data in blocking mode to a specific memory address + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param MemAddress Internal memory address + * @param MemAddSize Size of internal memory address + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param Timeout Timeout duration + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout) +{ + uint32_t tickstart; + + /* Check the parameters */ + assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + hi2c->State = HAL_I2C_STATE_BUSY_TX; + hi2c->Mode = HAL_I2C_MODE_MEM; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferISR = NULL; + + /* Send Slave Address and Memory Address */ + if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) != HAL_OK) + { + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + return HAL_ERROR; + } + + /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTSTOP); + } + else + { + hi2c->XferSize = hi2c->XferCount; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); + } + + do + { + /* Wait until TXIS flag is set */ + if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Write data to TXDR */ + hi2c->Instance->TXDR = *hi2c->pBuffPtr; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferCount--; + hi2c->XferSize--; + + if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) + { + /* Wait until TCR flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, + I2C_NO_STARTSTOP); + } + else + { + hi2c->XferSize = hi2c->XferCount; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + I2C_NO_STARTSTOP); + } + } + + } while (hi2c->XferCount > 0U); + + /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */ + /* Wait until STOPF flag is reset */ + if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Clear STOP Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + + /* Clear Configuration Register 2 */ + I2C_RESET_CR2(hi2c); + + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Read an amount of data in blocking mode from a specific memory address + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param MemAddress Internal memory address + * @param MemAddSize Size of internal memory address + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param Timeout Timeout duration + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout) +{ + uint32_t tickstart; + + /* Check the parameters */ + assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + hi2c->State = HAL_I2C_STATE_BUSY_RX; + hi2c->Mode = HAL_I2C_MODE_MEM; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferISR = NULL; + + /* Send Slave Address and Memory Address */ + if (I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) != HAL_OK) + { + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + return HAL_ERROR; + } + + /* Send Slave Address */ + /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, + I2C_GENERATE_START_READ); + } + else + { + hi2c->XferSize = hi2c->XferCount; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + I2C_GENERATE_START_READ); + } + + do + { + /* Wait until RXNE flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_RXNE, RESET, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Read data from RXDR */ + *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferSize--; + hi2c->XferCount--; + + if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) + { + /* Wait until TCR flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t) hi2c->XferSize, I2C_RELOAD_MODE, + I2C_NO_STARTSTOP); + } + else + { + hi2c->XferSize = hi2c->XferCount; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + I2C_NO_STARTSTOP); + } + } + } while (hi2c->XferCount > 0U); + + /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */ + /* Wait until STOPF flag is reset */ + if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Clear STOP Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + + /* Clear Configuration Register 2 */ + I2C_RESET_CR2(hi2c); + + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} +/** + * @brief Write an amount of data in non-blocking mode with Interrupt to a specific memory address + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param MemAddress Internal memory address + * @param MemAddSize Size of internal memory address + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Mem_Write_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size) +{ + uint32_t tickstart; + uint32_t xfermode; + + /* Check the parameters */ + assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) + { + return HAL_BUSY; + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + + hi2c->State = HAL_I2C_STATE_BUSY_TX; + hi2c->Mode = HAL_I2C_MODE_MEM; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferISR = I2C_Master_ISR_IT; + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + xfermode = I2C_RELOAD_MODE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + xfermode = I2C_AUTOEND_MODE; + } + + /* Send Slave Address and Memory Address */ + if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) + != HAL_OK) + { + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + return HAL_ERROR; + } + + /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_NO_STARTSTOP); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + + /* Enable ERR, TC, STOP, NACK, TXI interrupt */ + /* possible to enable all of these */ + /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | + I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ + I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Read an amount of data in non-blocking mode with Interrupt from a specific memory address + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param MemAddress Internal memory address + * @param MemAddSize Size of internal memory address + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Mem_Read_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size) +{ + uint32_t tickstart; + uint32_t xfermode; + + /* Check the parameters */ + assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) + { + return HAL_BUSY; + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + + hi2c->State = HAL_I2C_STATE_BUSY_RX; + hi2c->Mode = HAL_I2C_MODE_MEM; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferISR = I2C_Master_ISR_IT; + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + xfermode = I2C_RELOAD_MODE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + xfermode = I2C_AUTOEND_MODE; + } + + /* Send Slave Address and Memory Address */ + if (I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) != HAL_OK) + { + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + return HAL_ERROR; + } + + /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_READ); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + + /* Enable ERR, TC, STOP, NACK, RXI interrupt */ + /* possible to enable all of these */ + /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | + I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ + I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} +/** + * @brief Write an amount of data in non-blocking mode with DMA to a specific memory address + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param MemAddress Internal memory address + * @param MemAddSize Size of internal memory address + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Mem_Write_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size) +{ + uint32_t tickstart; + uint32_t xfermode; + HAL_StatusTypeDef dmaxferstatus; + + /* Check the parameters */ + assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) + { + return HAL_BUSY; + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + + hi2c->State = HAL_I2C_STATE_BUSY_TX; + hi2c->Mode = HAL_I2C_MODE_MEM; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferISR = I2C_Master_ISR_DMA; + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + xfermode = I2C_RELOAD_MODE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + xfermode = I2C_AUTOEND_MODE; + } + + /* Send Slave Address and Memory Address */ + if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) + != HAL_OK) + { + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + return HAL_ERROR; + } + + + if (hi2c->hdmatx != NULL) + { + /* Set the I2C DMA transfer complete callback */ + hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt; + + /* Set the DMA error callback */ + hi2c->hdmatx->XferErrorCallback = I2C_DMAError; + + /* Set the unused DMA callbacks to NULL */ + hi2c->hdmatx->XferHalfCpltCallback = NULL; + hi2c->hdmatx->XferAbortCallback = NULL; + + /* Enable the DMA channel */ + dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, + hi2c->XferSize); + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + if (dmaxferstatus == HAL_OK) + { + /* Send Slave Address */ + /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_NO_STARTSTOP); + + /* Update XferCount value */ + hi2c->XferCount -= hi2c->XferSize; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR and NACK interrupts */ + I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); + + /* Enable DMA Request */ + hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Reads an amount of data in non-blocking mode with DMA from a specific memory address. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param MemAddress Internal memory address + * @param MemAddSize Size of internal memory address + * @param pData Pointer to data buffer + * @param Size Amount of data to be read + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Mem_Read_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size) +{ + uint32_t tickstart; + uint32_t xfermode; + HAL_StatusTypeDef dmaxferstatus; + + /* Check the parameters */ + assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) + { + return HAL_BUSY; + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + + hi2c->State = HAL_I2C_STATE_BUSY_RX; + hi2c->Mode = HAL_I2C_MODE_MEM; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferISR = I2C_Master_ISR_DMA; + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + xfermode = I2C_RELOAD_MODE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + xfermode = I2C_AUTOEND_MODE; + } + + /* Send Slave Address and Memory Address */ + if (I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, I2C_TIMEOUT_FLAG, tickstart) != HAL_OK) + { + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + return HAL_ERROR; + } + + if (hi2c->hdmarx != NULL) + { + /* Set the I2C DMA transfer complete callback */ + hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt; + + /* Set the DMA error callback */ + hi2c->hdmarx->XferErrorCallback = I2C_DMAError; + + /* Set the unused DMA callbacks to NULL */ + hi2c->hdmarx->XferHalfCpltCallback = NULL; + hi2c->hdmarx->XferAbortCallback = NULL; + + /* Enable the DMA channel */ + dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, + hi2c->XferSize); + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + if (dmaxferstatus == HAL_OK) + { + /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_READ); + + /* Update XferCount value */ + hi2c->XferCount -= hi2c->XferSize; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR and NACK interrupts */ + I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); + + /* Enable DMA Request */ + hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Checks if target device is ready for communication. + * @note This function is used with Memory devices + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param Trials Number of trials + * @param Timeout Timeout duration + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_IsDeviceReady(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Trials, + uint32_t Timeout) +{ + uint32_t tickstart; + + __IO uint32_t I2C_Trials = 0UL; + + FlagStatus tmp1; + FlagStatus tmp2; + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) + { + return HAL_BUSY; + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + do + { + /* Generate Start */ + hi2c->Instance->CR2 = I2C_GENERATE_START(hi2c->Init.AddressingMode, DevAddress); + + /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */ + /* Wait until STOPF flag is set or a NACK flag is set*/ + tickstart = HAL_GetTick(); + + tmp1 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF); + tmp2 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF); + + while ((tmp1 == RESET) && (tmp2 == RESET)) + { + if (Timeout != HAL_MAX_DELAY) + { + if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U)) + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + } + + tmp1 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF); + tmp2 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF); + } + + /* Check if the NACKF flag has not been set */ + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == RESET) + { + /* Wait until STOPF flag is reset */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Clear STOP Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + + /* Device is ready */ + hi2c->State = HAL_I2C_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; + } + else + { + /* Wait until STOPF flag is reset */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Clear STOP Flag, auto generated with autoend*/ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + } + + /* Check if the maximum allowed number of trials has been reached */ + if (I2C_Trials == Trials) + { + /* Generate Stop */ + hi2c->Instance->CR2 |= I2C_CR2_STOP; + + /* Wait until STOPF flag is reset */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Clear STOP Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + } + + /* Increment Trials */ + I2C_Trials++; + } while (I2C_Trials < Trials); + + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Sequential transmit in master I2C mode an amount of data in non-blocking mode with Interrupt. + * @note This interface allow to manage repeated start condition when a direction change during transfer + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t XferOptions) +{ + uint32_t xfermode; + uint32_t xferrequest = I2C_GENERATE_START_WRITE; + + /* Check the parameters */ + assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_TX; + hi2c->Mode = HAL_I2C_MODE_MASTER; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferOptions = XferOptions; + hi2c->XferISR = I2C_Master_ISR_IT; + + /* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + xfermode = I2C_RELOAD_MODE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + xfermode = hi2c->XferOptions; + } + + /* If transfer direction not change and there is no request to start another frame, + do not generate Restart Condition */ + /* Mean Previous state is same as current state */ + if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_TX) && \ + (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) + { + xferrequest = I2C_NO_STARTSTOP; + } + else + { + /* Convert OTHER_xxx XferOptions if any */ + I2C_ConvertOtherXferOptions(hi2c); + + /* Update xfermode accordingly if no reload is necessary */ + if (hi2c->XferCount <= MAX_NBYTE_SIZE) + { + xfermode = hi2c->XferOptions; + } + } + + /* Send Slave Address and set NBYTES to write */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Sequential transmit in master I2C mode an amount of data in non-blocking mode with DMA. + * @note This interface allow to manage repeated start condition when a direction change during transfer + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t XferOptions) +{ + uint32_t xfermode; + uint32_t xferrequest = I2C_GENERATE_START_WRITE; + HAL_StatusTypeDef dmaxferstatus; + + /* Check the parameters */ + assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_TX; + hi2c->Mode = HAL_I2C_MODE_MASTER; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferOptions = XferOptions; + hi2c->XferISR = I2C_Master_ISR_DMA; + + /* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + xfermode = I2C_RELOAD_MODE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + xfermode = hi2c->XferOptions; + } + + /* If transfer direction not change and there is no request to start another frame, + do not generate Restart Condition */ + /* Mean Previous state is same as current state */ + if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_TX) && \ + (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) + { + xferrequest = I2C_NO_STARTSTOP; + } + else + { + /* Convert OTHER_xxx XferOptions if any */ + I2C_ConvertOtherXferOptions(hi2c); + + /* Update xfermode accordingly if no reload is necessary */ + if (hi2c->XferCount <= MAX_NBYTE_SIZE) + { + xfermode = hi2c->XferOptions; + } + } + + if (hi2c->XferSize > 0U) + { + if (hi2c->hdmatx != NULL) + { + /* Set the I2C DMA transfer complete callback */ + hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt; + + /* Set the DMA error callback */ + hi2c->hdmatx->XferErrorCallback = I2C_DMAError; + + /* Set the unused DMA callbacks to NULL */ + hi2c->hdmatx->XferHalfCpltCallback = NULL; + hi2c->hdmatx->XferAbortCallback = NULL; + + /* Enable the DMA channel */ + dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, + hi2c->XferSize); + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + if (dmaxferstatus == HAL_OK) + { + /* Send Slave Address and set NBYTES to write */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); + + /* Update XferCount value */ + hi2c->XferCount -= hi2c->XferSize; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR and NACK interrupts */ + I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); + + /* Enable DMA Request */ + hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + } + else + { + /* Update Transfer ISR function pointer */ + hi2c->XferISR = I2C_Master_ISR_IT; + + /* Send Slave Address */ + /* Set NBYTES to write and generate START condition */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + I2C_GENERATE_START_WRITE); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR, TC, STOP, NACK, TXI interrupt */ + /* possible to enable all of these */ + /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | + I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ + I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); + } + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Sequential receive in master I2C mode an amount of data in non-blocking mode with Interrupt + * @note This interface allow to manage repeated start condition when a direction change during transfer + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t XferOptions) +{ + uint32_t xfermode; + uint32_t xferrequest = I2C_GENERATE_START_READ; + + /* Check the parameters */ + assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_RX; + hi2c->Mode = HAL_I2C_MODE_MASTER; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferOptions = XferOptions; + hi2c->XferISR = I2C_Master_ISR_IT; + + /* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + xfermode = I2C_RELOAD_MODE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + xfermode = hi2c->XferOptions; + } + + /* If transfer direction not change and there is no request to start another frame, + do not generate Restart Condition */ + /* Mean Previous state is same as current state */ + if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_RX) && \ + (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) + { + xferrequest = I2C_NO_STARTSTOP; + } + else + { + /* Convert OTHER_xxx XferOptions if any */ + I2C_ConvertOtherXferOptions(hi2c); + + /* Update xfermode accordingly if no reload is necessary */ + if (hi2c->XferCount <= MAX_NBYTE_SIZE) + { + xfermode = hi2c->XferOptions; + } + } + + /* Send Slave Address and set NBYTES to read */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Sequential receive in master I2C mode an amount of data in non-blocking mode with DMA + * @note This interface allow to manage repeated start condition when a direction change during transfer + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t XferOptions) +{ + uint32_t xfermode; + uint32_t xferrequest = I2C_GENERATE_START_READ; + HAL_StatusTypeDef dmaxferstatus; + + /* Check the parameters */ + assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_RX; + hi2c->Mode = HAL_I2C_MODE_MASTER; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferOptions = XferOptions; + hi2c->XferISR = I2C_Master_ISR_DMA; + + /* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + xfermode = I2C_RELOAD_MODE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + xfermode = hi2c->XferOptions; + } + + /* If transfer direction not change and there is no request to start another frame, + do not generate Restart Condition */ + /* Mean Previous state is same as current state */ + if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_RX) && \ + (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) + { + xferrequest = I2C_NO_STARTSTOP; + } + else + { + /* Convert OTHER_xxx XferOptions if any */ + I2C_ConvertOtherXferOptions(hi2c); + + /* Update xfermode accordingly if no reload is necessary */ + if (hi2c->XferCount <= MAX_NBYTE_SIZE) + { + xfermode = hi2c->XferOptions; + } + } + + if (hi2c->XferSize > 0U) + { + if (hi2c->hdmarx != NULL) + { + /* Set the I2C DMA transfer complete callback */ + hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt; + + /* Set the DMA error callback */ + hi2c->hdmarx->XferErrorCallback = I2C_DMAError; + + /* Set the unused DMA callbacks to NULL */ + hi2c->hdmarx->XferHalfCpltCallback = NULL; + hi2c->hdmarx->XferAbortCallback = NULL; + + /* Enable the DMA channel */ + dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, + hi2c->XferSize); + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + if (dmaxferstatus == HAL_OK) + { + /* Send Slave Address and set NBYTES to read */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); + + /* Update XferCount value */ + hi2c->XferCount -= hi2c->XferSize; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR and NACK interrupts */ + I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); + + /* Enable DMA Request */ + hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + } + else + { + /* Update Transfer ISR function pointer */ + hi2c->XferISR = I2C_Master_ISR_IT; + + /* Send Slave Address */ + /* Set NBYTES to read and generate START condition */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + I2C_GENERATE_START_READ); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR, TC, STOP, NACK, TXI interrupt */ + /* possible to enable all of these */ + /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | + I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ + I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); + } + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Sequential transmit in slave/device I2C mode an amount of data in non-blocking mode with Interrupt + * @note This interface allow to manage repeated start condition when a direction change during transfer + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, + uint32_t XferOptions) +{ + /* Check the parameters */ + assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); + + if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + + /* Disable Interrupts, to prevent preemption during treatment in case of multicall */ + I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); + + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */ + /* and then toggle the HAL slave RX state to TX state */ + if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) + { + /* Disable associated Interrupts */ + I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); + + /* Abort DMA Xfer if any */ + if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) + { + hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; + + if (hi2c->hdmarx != NULL) + { + /* Set the I2C DMA Abort callback : + will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ + hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; + + /* Abort DMA RX */ + if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) + { + /* Call Directly XferAbortCallback function in case of error */ + hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); + } + } + } + } + + hi2c->State = HAL_I2C_STATE_BUSY_TX_LISTEN; + hi2c->Mode = HAL_I2C_MODE_SLAVE; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Enable Address Acknowledge */ + hi2c->Instance->CR2 &= ~I2C_CR2_NACK; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferSize = hi2c->XferCount; + hi2c->XferOptions = XferOptions; + hi2c->XferISR = I2C_Slave_ISR_IT; + + if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) + { + /* Clear ADDR flag after prepare the transfer parameters */ + /* This action will generate an acknowledge to the Master */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); + } + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* REnable ADDR interrupt */ + I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT); + + return HAL_OK; + } + else + { + return HAL_ERROR; + } +} + +/** + * @brief Sequential transmit in slave/device I2C mode an amount of data in non-blocking mode with DMA + * @note This interface allow to manage repeated start condition when a direction change during transfer + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, + uint32_t XferOptions) +{ + HAL_StatusTypeDef dmaxferstatus; + + /* Check the parameters */ + assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); + + if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* Disable Interrupts, to prevent preemption during treatment in case of multicall */ + I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); + + /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */ + /* and then toggle the HAL slave RX state to TX state */ + if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) + { + /* Disable associated Interrupts */ + I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); + + if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) + { + /* Abort DMA Xfer if any */ + if (hi2c->hdmarx != NULL) + { + hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; + + /* Set the I2C DMA Abort callback : + will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ + hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; + + /* Abort DMA RX */ + if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) + { + /* Call Directly XferAbortCallback function in case of error */ + hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); + } + } + } + } + else if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) + { + if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) + { + hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; + + /* Abort DMA Xfer if any */ + if (hi2c->hdmatx != NULL) + { + /* Set the I2C DMA Abort callback : + will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ + hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; + + /* Abort DMA TX */ + if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) + { + /* Call Directly XferAbortCallback function in case of error */ + hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); + } + } + } + } + else + { + /* Nothing to do */ + } + + hi2c->State = HAL_I2C_STATE_BUSY_TX_LISTEN; + hi2c->Mode = HAL_I2C_MODE_SLAVE; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Enable Address Acknowledge */ + hi2c->Instance->CR2 &= ~I2C_CR2_NACK; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferSize = hi2c->XferCount; + hi2c->XferOptions = XferOptions; + hi2c->XferISR = I2C_Slave_ISR_DMA; + + if (hi2c->hdmatx != NULL) + { + /* Set the I2C DMA transfer complete callback */ + hi2c->hdmatx->XferCpltCallback = I2C_DMASlaveTransmitCplt; + + /* Set the DMA error callback */ + hi2c->hdmatx->XferErrorCallback = I2C_DMAError; + + /* Set the unused DMA callbacks to NULL */ + hi2c->hdmatx->XferHalfCpltCallback = NULL; + hi2c->hdmatx->XferAbortCallback = NULL; + + /* Enable the DMA channel */ + dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, + hi2c->XferSize); + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_LISTEN; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + if (dmaxferstatus == HAL_OK) + { + /* Update XferCount value */ + hi2c->XferCount -= hi2c->XferSize; + + /* Reset XferSize */ + hi2c->XferSize = 0; + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_LISTEN; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) + { + /* Clear ADDR flag after prepare the transfer parameters */ + /* This action will generate an acknowledge to the Master */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); + } + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR, STOP, NACK, ADDR interrupts */ + I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); + + /* Enable DMA Request */ + hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; + + return HAL_OK; + } + else + { + return HAL_ERROR; + } +} + +/** + * @brief Sequential receive in slave/device I2C mode an amount of data in non-blocking mode with Interrupt + * @note This interface allow to manage repeated start condition when a direction change during transfer + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, + uint32_t XferOptions) +{ + /* Check the parameters */ + assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); + + if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + + /* Disable Interrupts, to prevent preemption during treatment in case of multicall */ + I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); + + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */ + /* and then toggle the HAL slave TX state to RX state */ + if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) + { + /* Disable associated Interrupts */ + I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); + + if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) + { + hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; + + /* Abort DMA Xfer if any */ + if (hi2c->hdmatx != NULL) + { + /* Set the I2C DMA Abort callback : + will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ + hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; + + /* Abort DMA TX */ + if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) + { + /* Call Directly XferAbortCallback function in case of error */ + hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); + } + } + } + } + + hi2c->State = HAL_I2C_STATE_BUSY_RX_LISTEN; + hi2c->Mode = HAL_I2C_MODE_SLAVE; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Enable Address Acknowledge */ + hi2c->Instance->CR2 &= ~I2C_CR2_NACK; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferSize = hi2c->XferCount; + hi2c->XferOptions = XferOptions; + hi2c->XferISR = I2C_Slave_ISR_IT; + + if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT) + { + /* Clear ADDR flag after prepare the transfer parameters */ + /* This action will generate an acknowledge to the Master */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); + } + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* REnable ADDR interrupt */ + I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); + + return HAL_OK; + } + else + { + return HAL_ERROR; + } +} + +/** + * @brief Sequential receive in slave/device I2C mode an amount of data in non-blocking mode with DMA + * @note This interface allow to manage repeated start condition when a direction change during transfer + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, + uint32_t XferOptions) +{ + HAL_StatusTypeDef dmaxferstatus; + + /* Check the parameters */ + assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); + + if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + + /* Disable Interrupts, to prevent preemption during treatment in case of multicall */ + I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); + + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */ + /* and then toggle the HAL slave TX state to RX state */ + if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) + { + /* Disable associated Interrupts */ + I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); + + if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) + { + /* Abort DMA Xfer if any */ + if (hi2c->hdmatx != NULL) + { + hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; + + /* Set the I2C DMA Abort callback : + will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ + hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; + + /* Abort DMA TX */ + if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) + { + /* Call Directly XferAbortCallback function in case of error */ + hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); + } + } + } + } + else if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) + { + if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) + { + hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; + + /* Abort DMA Xfer if any */ + if (hi2c->hdmarx != NULL) + { + /* Set the I2C DMA Abort callback : + will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ + hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; + + /* Abort DMA RX */ + if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) + { + /* Call Directly XferAbortCallback function in case of error */ + hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); + } + } + } + } + else + { + /* Nothing to do */ + } + + hi2c->State = HAL_I2C_STATE_BUSY_RX_LISTEN; + hi2c->Mode = HAL_I2C_MODE_SLAVE; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Enable Address Acknowledge */ + hi2c->Instance->CR2 &= ~I2C_CR2_NACK; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferSize = hi2c->XferCount; + hi2c->XferOptions = XferOptions; + hi2c->XferISR = I2C_Slave_ISR_DMA; + + if (hi2c->hdmarx != NULL) + { + /* Set the I2C DMA transfer complete callback */ + hi2c->hdmarx->XferCpltCallback = I2C_DMASlaveReceiveCplt; + + /* Set the DMA error callback */ + hi2c->hdmarx->XferErrorCallback = I2C_DMAError; + + /* Set the unused DMA callbacks to NULL */ + hi2c->hdmarx->XferHalfCpltCallback = NULL; + hi2c->hdmarx->XferAbortCallback = NULL; + + /* Enable the DMA channel */ + dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, + (uint32_t)pData, hi2c->XferSize); + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_LISTEN; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + if (dmaxferstatus == HAL_OK) + { + /* Update XferCount value */ + hi2c->XferCount -= hi2c->XferSize; + + /* Reset XferSize */ + hi2c->XferSize = 0; + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_LISTEN; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT) + { + /* Clear ADDR flag after prepare the transfer parameters */ + /* This action will generate an acknowledge to the Master */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); + } + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* REnable ADDR interrupt */ + I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); + + /* Enable DMA Request */ + hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; + + return HAL_OK; + } + else + { + return HAL_ERROR; + } +} + +/** + * @brief Enable the Address listen mode with Interrupt. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_EnableListen_IT(I2C_HandleTypeDef *hi2c) +{ + if (hi2c->State == HAL_I2C_STATE_READY) + { + hi2c->State = HAL_I2C_STATE_LISTEN; + hi2c->XferISR = I2C_Slave_ISR_IT; + + /* Enable the Address Match interrupt */ + I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Disable the Address listen mode with Interrupt. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_DisableListen_IT(I2C_HandleTypeDef *hi2c) +{ + /* Declaration of tmp to prevent undefined behavior of volatile usage */ + uint32_t tmp; + + /* Disable Address listen mode only if a transfer is not ongoing */ + if (hi2c->State == HAL_I2C_STATE_LISTEN) + { + tmp = (uint32_t)(hi2c->State) & I2C_STATE_MSK; + hi2c->PreviousState = tmp | (uint32_t)(hi2c->Mode); + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + hi2c->XferISR = NULL; + + /* Disable the Address Match interrupt */ + I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Abort a master I2C IT or DMA process communication with Interrupt. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Master_Abort_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress) +{ + if (hi2c->Mode == HAL_I2C_MODE_MASTER) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* Disable Interrupts and Store Previous state */ + if (hi2c->State == HAL_I2C_STATE_BUSY_TX) + { + I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); + hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; + } + else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) + { + I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); + hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; + } + else + { + /* Do nothing */ + } + + /* Set State at HAL_I2C_STATE_ABORT */ + hi2c->State = HAL_I2C_STATE_ABORT; + + /* Set NBYTES to 1 to generate a dummy read on I2C peripheral */ + /* Set AUTOEND mode, this will generate a NACK then STOP condition to abort the current transfer */ + I2C_TransferConfig(hi2c, DevAddress, 1, I2C_AUTOEND_MODE, I2C_GENERATE_STOP); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); + + return HAL_OK; + } + else + { + /* Wrong usage of abort function */ + /* This function should be used only in case of abort monitored by master device */ + return HAL_ERROR; + } +} + +/** + * @} + */ + +/** @defgroup I2C_IRQ_Handler_and_Callbacks IRQ Handler and Callbacks + * @{ + */ + +/** + * @brief This function handles I2C event interrupt request. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +void HAL_I2C_EV_IRQHandler(I2C_HandleTypeDef *hi2c) +{ + /* Get current IT Flags and IT sources value */ + uint32_t itflags = READ_REG(hi2c->Instance->ISR); + uint32_t itsources = READ_REG(hi2c->Instance->CR1); + + /* I2C events treatment -------------------------------------*/ + if (hi2c->XferISR != NULL) + { + hi2c->XferISR(hi2c, itflags, itsources); + } +} + +/** + * @brief This function handles I2C error interrupt request. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +void HAL_I2C_ER_IRQHandler(I2C_HandleTypeDef *hi2c) +{ + uint32_t itflags = READ_REG(hi2c->Instance->ISR); + uint32_t itsources = READ_REG(hi2c->Instance->CR1); + uint32_t tmperror; + + /* I2C Bus error interrupt occurred ------------------------------------*/ + if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_BERR) != RESET) && \ + (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) + { + hi2c->ErrorCode |= HAL_I2C_ERROR_BERR; + + /* Clear BERR flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_BERR); + } + + /* I2C Over-Run/Under-Run interrupt occurred ----------------------------------------*/ + if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_OVR) != RESET) && \ + (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) + { + hi2c->ErrorCode |= HAL_I2C_ERROR_OVR; + + /* Clear OVR flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_OVR); + } + + /* I2C Arbitration Loss error interrupt occurred -------------------------------------*/ + if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_ARLO) != RESET) && \ + (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) + { + hi2c->ErrorCode |= HAL_I2C_ERROR_ARLO; + + /* Clear ARLO flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ARLO); + } + + /* Store current volatile hi2c->ErrorCode, misra rule */ + tmperror = hi2c->ErrorCode; + + /* Call the Error Callback in case of Error detected */ + if ((tmperror & (HAL_I2C_ERROR_BERR | HAL_I2C_ERROR_OVR | HAL_I2C_ERROR_ARLO)) != HAL_I2C_ERROR_NONE) + { + I2C_ITError(hi2c, tmperror); + } +} + +/** + * @brief Master Tx Transfer completed callback. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +__weak void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hi2c); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_I2C_MasterTxCpltCallback could be implemented in the user file + */ +} + +/** + * @brief Master Rx Transfer completed callback. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +__weak void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hi2c); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_I2C_MasterRxCpltCallback could be implemented in the user file + */ +} + +/** @brief Slave Tx Transfer completed callback. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +__weak void HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hi2c); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_I2C_SlaveTxCpltCallback could be implemented in the user file + */ +} + +/** + * @brief Slave Rx Transfer completed callback. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +__weak void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hi2c); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_I2C_SlaveRxCpltCallback could be implemented in the user file + */ +} + +/** + * @brief Slave Address Match callback. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param TransferDirection Master request Transfer Direction (Write/Read), value of @ref I2C_XFERDIRECTION + * @param AddrMatchCode Address Match Code + * @retval None + */ +__weak void HAL_I2C_AddrCallback(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrMatchCode) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hi2c); + UNUSED(TransferDirection); + UNUSED(AddrMatchCode); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_I2C_AddrCallback() could be implemented in the user file + */ +} + +/** + * @brief Listen Complete callback. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +__weak void HAL_I2C_ListenCpltCallback(I2C_HandleTypeDef *hi2c) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hi2c); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_I2C_ListenCpltCallback() could be implemented in the user file + */ +} + +/** + * @brief Memory Tx Transfer completed callback. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +__weak void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hi2c); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_I2C_MemTxCpltCallback could be implemented in the user file + */ +} + +/** + * @brief Memory Rx Transfer completed callback. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +__weak void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hi2c); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_I2C_MemRxCpltCallback could be implemented in the user file + */ +} + +/** + * @brief I2C error callback. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +__weak void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hi2c); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_I2C_ErrorCallback could be implemented in the user file + */ +} + +/** + * @brief I2C abort callback. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +__weak void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hi2c); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_I2C_AbortCpltCallback could be implemented in the user file + */ +} + +/** + * @} + */ + +/** @defgroup I2C_Exported_Functions_Group3 Peripheral State, Mode and Error functions + * @brief Peripheral State, Mode and Error functions + * +@verbatim + =============================================================================== + ##### Peripheral State, Mode and Error functions ##### + =============================================================================== + [..] + This subsection permit to get in run-time the status of the peripheral + and the data flow. + +@endverbatim + * @{ + */ + +/** + * @brief Return the I2C handle state. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval HAL state + */ +HAL_I2C_StateTypeDef HAL_I2C_GetState(I2C_HandleTypeDef *hi2c) +{ + /* Return I2C handle state */ + return hi2c->State; +} + +/** + * @brief Returns the I2C Master, Slave, Memory or no mode. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for I2C module + * @retval HAL mode + */ +HAL_I2C_ModeTypeDef HAL_I2C_GetMode(I2C_HandleTypeDef *hi2c) +{ + return hi2c->Mode; +} + +/** + * @brief Return the I2C error code. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval I2C Error Code + */ +uint32_t HAL_I2C_GetError(I2C_HandleTypeDef *hi2c) +{ + return hi2c->ErrorCode; +} + +/** + * @} + */ + +/** + * @} + */ + +/** @addtogroup I2C_Private_Functions + * @{ + */ + +/** + * @brief Interrupt Sub-Routine which handle the Interrupt Flags Master Mode with Interrupt. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param ITFlags Interrupt flags to handle. + * @param ITSources Interrupt sources enabled. + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_Master_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + uint32_t ITSources) +{ + uint16_t devaddress; + uint32_t tmpITFlags = ITFlags; + + /* Process Locked */ + __HAL_LOCK(hi2c); + + if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) + { + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Set corresponding Error Code */ + /* No need to generate STOP, it is automatically done */ + /* Error callback will be send during stop flag treatment */ + hi2c->ErrorCode |= HAL_I2C_ERROR_AF; + + /* Flush TX register */ + I2C_Flush_TXDR(hi2c); + } + else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET)) + { + /* Remove RXNE flag on temporary variable as read done */ + tmpITFlags &= ~I2C_FLAG_RXNE; + + /* Read data from RXDR */ + *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferSize--; + hi2c->XferCount--; + } + else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) + { + /* Write data to TXDR */ + hi2c->Instance->TXDR = *hi2c->pBuffPtr; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferSize--; + hi2c->XferCount--; + } + else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TCR) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + { + if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) + { + devaddress = (uint16_t)(hi2c->Instance->CR2 & I2C_CR2_SADD); + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTSTOP); + } + else + { + hi2c->XferSize = hi2c->XferCount; + if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) + { + I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, + hi2c->XferOptions, I2C_NO_STARTSTOP); + } + else + { + I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, + I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); + } + } + } + else + { + /* Call TxCpltCallback() if no stop mode is set */ + if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) + { + /* Call I2C Master Sequential complete process */ + I2C_ITMasterSeqCplt(hi2c); + } + else + { + /* Wrong size Status regarding TCR flag event */ + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); + } + } + } + else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TC) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + { + if (hi2c->XferCount == 0U) + { + if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) + { + /* Generate a stop condition in case of no transfer option */ + if (hi2c->XferOptions == I2C_NO_OPTION_FRAME) + { + /* Generate Stop */ + hi2c->Instance->CR2 |= I2C_CR2_STOP; + } + else + { + /* Call I2C Master Sequential complete process */ + I2C_ITMasterSeqCplt(hi2c); + } + } + } + else + { + /* Wrong size Status regarding TC flag event */ + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); + } + } + else + { + /* Nothing to do */ + } + + if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) + { + /* Call I2C Master complete process */ + I2C_ITMasterCplt(hi2c, tmpITFlags); + } + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; +} + +/** + * @brief Interrupt Sub-Routine which handle the Interrupt Flags Slave Mode with Interrupt. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param ITFlags Interrupt flags to handle. + * @param ITSources Interrupt sources enabled. + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + uint32_t ITSources) +{ + uint32_t tmpoptions = hi2c->XferOptions; + uint32_t tmpITFlags = ITFlags; + + /* Process locked */ + __HAL_LOCK(hi2c); + + /* Check if STOPF is set */ + if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) + { + /* Call I2C Slave complete process */ + I2C_ITSlaveCplt(hi2c, tmpITFlags); + } + + if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) + { + /* Check that I2C transfer finished */ + /* if yes, normal use case, a NACK is sent by the MASTER when Transfer is finished */ + /* Mean XferCount == 0*/ + /* So clear Flag NACKF only */ + if (hi2c->XferCount == 0U) + { + if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) + /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for + Warning[Pa134]: left and right operands are identical */ + { + /* Call I2C Listen complete process */ + I2C_ITListenCplt(hi2c, tmpITFlags); + } + else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME)) + { + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Flush TX register */ + I2C_Flush_TXDR(hi2c); + + /* Last Byte is Transmitted */ + /* Call I2C Slave Sequential complete process */ + I2C_ITSlaveSeqCplt(hi2c); + } + else + { + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + } + } + else + { + /* if no, error use case, a Non-Acknowledge of last Data is generated by the MASTER*/ + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Set ErrorCode corresponding to a Non-Acknowledge */ + hi2c->ErrorCode |= HAL_I2C_ERROR_AF; + + if ((tmpoptions == I2C_FIRST_FRAME) || (tmpoptions == I2C_NEXT_FRAME)) + { + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, hi2c->ErrorCode); + } + } + } + else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET)) + { + if (hi2c->XferCount > 0U) + { + /* Read data from RXDR */ + *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferSize--; + hi2c->XferCount--; + } + + if ((hi2c->XferCount == 0U) && \ + (tmpoptions != I2C_NO_OPTION_FRAME)) + { + /* Call I2C Slave Sequential complete process */ + I2C_ITSlaveSeqCplt(hi2c); + } + } + else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_ADDR) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET)) + { + I2C_ITAddrCplt(hi2c, tmpITFlags); + } + else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) + { + /* Write data to TXDR only if XferCount not reach "0" */ + /* A TXIS flag can be set, during STOP treatment */ + /* Check if all Data have already been sent */ + /* If it is the case, this last write in TXDR is not sent, correspond to a dummy TXIS event */ + if (hi2c->XferCount > 0U) + { + /* Write data to TXDR */ + hi2c->Instance->TXDR = *hi2c->pBuffPtr; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferCount--; + hi2c->XferSize--; + } + else + { + if ((tmpoptions == I2C_NEXT_FRAME) || (tmpoptions == I2C_FIRST_FRAME)) + { + /* Last Byte is Transmitted */ + /* Call I2C Slave Sequential complete process */ + I2C_ITSlaveSeqCplt(hi2c); + } + } + } + else + { + /* Nothing to do */ + } + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; +} + +/** + * @brief Interrupt Sub-Routine which handle the Interrupt Flags Master Mode with DMA. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param ITFlags Interrupt flags to handle. + * @param ITSources Interrupt sources enabled. + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_Master_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + uint32_t ITSources) +{ + uint16_t devaddress; + uint32_t xfermode; + + /* Process Locked */ + __HAL_LOCK(hi2c); + + if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) + { + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Set corresponding Error Code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_AF; + + /* No need to generate STOP, it is automatically done */ + /* But enable STOP interrupt, to treat it */ + /* Error callback will be send during stop flag treatment */ + I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); + + /* Flush TX register */ + I2C_Flush_TXDR(hi2c); + } + else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TCR) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + { + /* Disable TC interrupt */ + __HAL_I2C_DISABLE_IT(hi2c, I2C_IT_TCI); + + if (hi2c->XferCount != 0U) + { + /* Recover Slave address */ + devaddress = (uint16_t)(hi2c->Instance->CR2 & I2C_CR2_SADD); + + /* Prepare the new XferSize to transfer */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + xfermode = I2C_RELOAD_MODE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) + { + xfermode = hi2c->XferOptions; + } + else + { + xfermode = I2C_AUTOEND_MODE; + } + } + + /* Set the new XferSize in Nbytes register */ + I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, xfermode, I2C_NO_STARTSTOP); + + /* Update XferCount value */ + hi2c->XferCount -= hi2c->XferSize; + + /* Enable DMA Request */ + if (hi2c->State == HAL_I2C_STATE_BUSY_RX) + { + hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; + } + else + { + hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; + } + } + else + { + /* Call TxCpltCallback() if no stop mode is set */ + if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) + { + /* Call I2C Master Sequential complete process */ + I2C_ITMasterSeqCplt(hi2c); + } + else + { + /* Wrong size Status regarding TCR flag event */ + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); + } + } + } + else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TC) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + { + if (hi2c->XferCount == 0U) + { + if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) + { + /* Generate a stop condition in case of no transfer option */ + if (hi2c->XferOptions == I2C_NO_OPTION_FRAME) + { + /* Generate Stop */ + hi2c->Instance->CR2 |= I2C_CR2_STOP; + } + else + { + /* Call I2C Master Sequential complete process */ + I2C_ITMasterSeqCplt(hi2c); + } + } + } + else + { + /* Wrong size Status regarding TC flag event */ + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); + } + } + else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) + { + /* Call I2C Master complete process */ + I2C_ITMasterCplt(hi2c, ITFlags); + } + else + { + /* Nothing to do */ + } + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; +} + +/** + * @brief Interrupt Sub-Routine which handle the Interrupt Flags Slave Mode with DMA. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param ITFlags Interrupt flags to handle. + * @param ITSources Interrupt sources enabled. + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + uint32_t ITSources) +{ + uint32_t tmpoptions = hi2c->XferOptions; + uint32_t treatdmanack = 0U; + HAL_I2C_StateTypeDef tmpstate; + + /* Process locked */ + __HAL_LOCK(hi2c); + + /* Check if STOPF is set */ + if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) + { + /* Call I2C Slave complete process */ + I2C_ITSlaveCplt(hi2c, ITFlags); + } + + if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) + { + /* Check that I2C transfer finished */ + /* if yes, normal use case, a NACK is sent by the MASTER when Transfer is finished */ + /* Mean XferCount == 0 */ + /* So clear Flag NACKF only */ + if ((I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_TXDMAEN) != RESET) || + (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_RXDMAEN) != RESET)) + { + /* Split check of hdmarx, for MISRA compliance */ + if (hi2c->hdmarx != NULL) + { + if (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_RXDMAEN) != RESET) + { + if (__HAL_DMA_GET_COUNTER(hi2c->hdmarx) == 0U) + { + treatdmanack = 1U; + } + } + } + + /* Split check of hdmatx, for MISRA compliance */ + if (hi2c->hdmatx != NULL) + { + if (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_TXDMAEN) != RESET) + { + if (__HAL_DMA_GET_COUNTER(hi2c->hdmatx) == 0U) + { + treatdmanack = 1U; + } + } + } + + if (treatdmanack == 1U) + { + if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) + /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for + Warning[Pa134]: left and right operands are identical */ + { + /* Call I2C Listen complete process */ + I2C_ITListenCplt(hi2c, ITFlags); + } + else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME)) + { + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Flush TX register */ + I2C_Flush_TXDR(hi2c); + + /* Last Byte is Transmitted */ + /* Call I2C Slave Sequential complete process */ + I2C_ITSlaveSeqCplt(hi2c); + } + else + { + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + } + } + else + { + /* if no, error use case, a Non-Acknowledge of last Data is generated by the MASTER*/ + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Set ErrorCode corresponding to a Non-Acknowledge */ + hi2c->ErrorCode |= HAL_I2C_ERROR_AF; + + /* Store current hi2c->State, solve MISRA2012-Rule-13.5 */ + tmpstate = hi2c->State; + + if ((tmpoptions == I2C_FIRST_FRAME) || (tmpoptions == I2C_NEXT_FRAME)) + { + if ((tmpstate == HAL_I2C_STATE_BUSY_TX) || (tmpstate == HAL_I2C_STATE_BUSY_TX_LISTEN)) + { + hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; + } + else if ((tmpstate == HAL_I2C_STATE_BUSY_RX) || (tmpstate == HAL_I2C_STATE_BUSY_RX_LISTEN)) + { + hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; + } + else + { + /* Do nothing */ + } + + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, hi2c->ErrorCode); + } + } + } + else + { + /* Only Clear NACK Flag, no DMA treatment is pending */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + } + } + else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_ADDR) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET)) + { + I2C_ITAddrCplt(hi2c, ITFlags); + } + else + { + /* Nothing to do */ + } + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; +} + +/** + * @brief Master sends target device address followed by internal memory address for write request. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param MemAddress Internal memory address + * @param MemAddSize Size of internal memory address + * @param Timeout Timeout duration + * @param Tickstart Tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_RequestMemoryWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, + uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout, + uint32_t Tickstart) +{ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRITE); + + /* Wait until TXIS flag is set */ + if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* If Memory address size is 8Bit */ + if (MemAddSize == I2C_MEMADD_SIZE_8BIT) + { + /* Send Memory Address */ + hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); + } + /* If Memory address size is 16Bit */ + else + { + /* Send MSB of Memory Address */ + hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); + + /* Wait until TXIS flag is set */ + if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Send LSB of Memory Address */ + hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); + } + + /* Wait until TCR flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, Tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + return HAL_OK; +} + +/** + * @brief Master sends target device address followed by internal memory address for read request. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param MemAddress Internal memory address + * @param MemAddSize Size of internal memory address + * @param Timeout Timeout duration + * @param Tickstart Tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_RequestMemoryRead(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, + uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout, + uint32_t Tickstart) +{ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_WRITE); + + /* Wait until TXIS flag is set */ + if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* If Memory address size is 8Bit */ + if (MemAddSize == I2C_MEMADD_SIZE_8BIT) + { + /* Send Memory Address */ + hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); + } + /* If Memory address size is 16Bit */ + else + { + /* Send MSB of Memory Address */ + hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); + + /* Wait until TXIS flag is set */ + if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Send LSB of Memory Address */ + hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); + } + + /* Wait until TC flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TC, RESET, Timeout, Tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + return HAL_OK; +} + +/** + * @brief I2C Address complete process callback. + * @param hi2c I2C handle. + * @param ITFlags Interrupt flags to handle. + * @retval None + */ +static void I2C_ITAddrCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) +{ + uint8_t transferdirection; + uint16_t slaveaddrcode; + uint16_t ownadd1code; + uint16_t ownadd2code; + + /* Prevent unused argument(s) compilation warning */ + UNUSED(ITFlags); + + /* In case of Listen state, need to inform upper layer of address match code event */ + if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) + { + transferdirection = I2C_GET_DIR(hi2c); + slaveaddrcode = I2C_GET_ADDR_MATCH(hi2c); + ownadd1code = I2C_GET_OWN_ADDRESS1(hi2c); + ownadd2code = I2C_GET_OWN_ADDRESS2(hi2c); + + /* If 10bits addressing mode is selected */ + if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) + { + if ((slaveaddrcode & SLAVE_ADDR_MSK) == ((ownadd1code >> SLAVE_ADDR_SHIFT) & SLAVE_ADDR_MSK)) + { + slaveaddrcode = ownadd1code; + hi2c->AddrEventCount++; + if (hi2c->AddrEventCount == 2U) + { + /* Reset Address Event counter */ + hi2c->AddrEventCount = 0U; + + /* Clear ADDR flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call Slave Addr callback */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); +#else + HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + } + else + { + slaveaddrcode = ownadd2code; + + /* Disable ADDR Interrupts */ + I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call Slave Addr callback */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); +#else + HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + } + /* else 7 bits addressing mode is selected */ + else + { + /* Disable ADDR Interrupts */ + I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call Slave Addr callback */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); +#else + HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + } + /* Else clear address flag only */ + else + { + /* Clear ADDR flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + } +} + +/** + * @brief I2C Master sequential complete process. + * @param hi2c I2C handle. + * @retval None + */ +static void I2C_ITMasterSeqCplt(I2C_HandleTypeDef *hi2c) +{ + /* Reset I2C handle mode */ + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* No Generate Stop, to permit restart mode */ + /* The stop will be done at the end of transfer, when I2C_AUTOEND_MODE enable */ + if (hi2c->State == HAL_I2C_STATE_BUSY_TX) + { + hi2c->State = HAL_I2C_STATE_READY; + hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; + hi2c->XferISR = NULL; + + /* Disable Interrupts */ + I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the corresponding callback to inform upper layer of End of Transfer */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->MasterTxCpltCallback(hi2c); +#else + HAL_I2C_MasterTxCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + /* hi2c->State == HAL_I2C_STATE_BUSY_RX */ + else + { + hi2c->State = HAL_I2C_STATE_READY; + hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; + hi2c->XferISR = NULL; + + /* Disable Interrupts */ + I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the corresponding callback to inform upper layer of End of Transfer */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->MasterRxCpltCallback(hi2c); +#else + HAL_I2C_MasterRxCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } +} + +/** + * @brief I2C Slave sequential complete process. + * @param hi2c I2C handle. + * @retval None + */ +static void I2C_ITSlaveSeqCplt(I2C_HandleTypeDef *hi2c) +{ + uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1); + + /* Reset I2C handle mode */ + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* If a DMA is ongoing, Update handle size context */ + if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_TXDMAEN) != RESET) + { + /* Disable DMA Request */ + hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; + } + else if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_RXDMAEN) != RESET) + { + /* Disable DMA Request */ + hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; + } + else + { + /* Do nothing */ + } + + if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) + { + /* Remove HAL_I2C_STATE_SLAVE_BUSY_TX, keep only HAL_I2C_STATE_LISTEN */ + hi2c->State = HAL_I2C_STATE_LISTEN; + hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; + + /* Disable Interrupts */ + I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the corresponding callback to inform upper layer of End of Transfer */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->SlaveTxCpltCallback(hi2c); +#else + HAL_I2C_SlaveTxCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + + else if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) + { + /* Remove HAL_I2C_STATE_SLAVE_BUSY_RX, keep only HAL_I2C_STATE_LISTEN */ + hi2c->State = HAL_I2C_STATE_LISTEN; + hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; + + /* Disable Interrupts */ + I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the corresponding callback to inform upper layer of End of Transfer */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->SlaveRxCpltCallback(hi2c); +#else + HAL_I2C_SlaveRxCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + else + { + /* Nothing to do */ + } +} + +/** + * @brief I2C Master complete process. + * @param hi2c I2C handle. + * @param ITFlags Interrupt flags to handle. + * @retval None + */ +static void I2C_ITMasterCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) +{ + uint32_t tmperror; + uint32_t tmpITFlags = ITFlags; + __IO uint32_t tmpreg; + + /* Clear STOP Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + + /* Disable Interrupts and Store Previous state */ + if (hi2c->State == HAL_I2C_STATE_BUSY_TX) + { + I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); + hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; + } + else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) + { + I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); + hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; + } + else + { + /* Do nothing */ + } + + /* Clear Configuration Register 2 */ + I2C_RESET_CR2(hi2c); + + /* Reset handle parameters */ + hi2c->XferISR = NULL; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + + if (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) + { + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Set acknowledge error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_AF; + } + + /* Fetch Last receive data if any */ + if ((hi2c->State == HAL_I2C_STATE_ABORT) && (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET)) + { + /* Read data from RXDR */ + tmpreg = (uint8_t)hi2c->Instance->RXDR; + UNUSED(tmpreg); + } + + /* Flush TX register */ + I2C_Flush_TXDR(hi2c); + + /* Store current volatile hi2c->ErrorCode, misra rule */ + tmperror = hi2c->ErrorCode; + + /* Call the corresponding callback to inform upper layer of End of Transfer */ + if ((hi2c->State == HAL_I2C_STATE_ABORT) || (tmperror != HAL_I2C_ERROR_NONE)) + { + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, hi2c->ErrorCode); + } + /* hi2c->State == HAL_I2C_STATE_BUSY_TX */ + else if (hi2c->State == HAL_I2C_STATE_BUSY_TX) + { + hi2c->State = HAL_I2C_STATE_READY; + hi2c->PreviousState = I2C_STATE_NONE; + + if (hi2c->Mode == HAL_I2C_MODE_MEM) + { + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the corresponding callback to inform upper layer of End of Transfer */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->MemTxCpltCallback(hi2c); +#else + HAL_I2C_MemTxCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + else + { + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the corresponding callback to inform upper layer of End of Transfer */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->MasterTxCpltCallback(hi2c); +#else + HAL_I2C_MasterTxCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + } + /* hi2c->State == HAL_I2C_STATE_BUSY_RX */ + else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) + { + hi2c->State = HAL_I2C_STATE_READY; + hi2c->PreviousState = I2C_STATE_NONE; + + if (hi2c->Mode == HAL_I2C_MODE_MEM) + { + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the corresponding callback to inform upper layer of End of Transfer */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->MemRxCpltCallback(hi2c); +#else + HAL_I2C_MemRxCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + else + { + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the corresponding callback to inform upper layer of End of Transfer */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->MasterRxCpltCallback(hi2c); +#else + HAL_I2C_MasterRxCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + } + else + { + /* Nothing to do */ + } +} + +/** + * @brief I2C Slave complete process. + * @param hi2c I2C handle. + * @param ITFlags Interrupt flags to handle. + * @retval None + */ +static void I2C_ITSlaveCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) +{ + uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1); + uint32_t tmpITFlags = ITFlags; + HAL_I2C_StateTypeDef tmpstate = hi2c->State; + + /* Clear STOP Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + + /* Disable Interrupts and Store Previous state */ + if ((tmpstate == HAL_I2C_STATE_BUSY_TX) || (tmpstate == HAL_I2C_STATE_BUSY_TX_LISTEN)) + { + I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); + hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; + } + else if ((tmpstate == HAL_I2C_STATE_BUSY_RX) || (tmpstate == HAL_I2C_STATE_BUSY_RX_LISTEN)) + { + I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); + hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; + } + else + { + /* Do nothing */ + } + + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + + /* Clear Configuration Register 2 */ + I2C_RESET_CR2(hi2c); + + /* Flush TX register */ + I2C_Flush_TXDR(hi2c); + + /* If a DMA is ongoing, Update handle size context */ + if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_TXDMAEN) != RESET) + { + /* Disable DMA Request */ + hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; + + if (hi2c->hdmatx != NULL) + { + hi2c->XferCount = (uint16_t)__HAL_DMA_GET_COUNTER(hi2c->hdmatx); + } + } + else if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_RXDMAEN) != RESET) + { + /* Disable DMA Request */ + hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; + + if (hi2c->hdmarx != NULL) + { + hi2c->XferCount = (uint16_t)__HAL_DMA_GET_COUNTER(hi2c->hdmarx); + } + } + else + { + /* Do nothing */ + } + + /* Store Last receive data if any */ + if (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) + { + /* Remove RXNE flag on temporary variable as read done */ + tmpITFlags &= ~I2C_FLAG_RXNE; + + /* Read data from RXDR */ + *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + if ((hi2c->XferSize > 0U)) + { + hi2c->XferSize--; + hi2c->XferCount--; + } + } + + /* All data are not transferred, so set error code accordingly */ + if (hi2c->XferCount != 0U) + { + /* Set ErrorCode corresponding to a Non-Acknowledge */ + hi2c->ErrorCode |= HAL_I2C_ERROR_AF; + } + + hi2c->Mode = HAL_I2C_MODE_NONE; + hi2c->XferISR = NULL; + + if (hi2c->ErrorCode != HAL_I2C_ERROR_NONE) + { + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, hi2c->ErrorCode); + + /* Call the Listen Complete callback, to inform upper layer of the end of Listen usecase */ + if (hi2c->State == HAL_I2C_STATE_LISTEN) + { + /* Call I2C Listen complete process */ + I2C_ITListenCplt(hi2c, tmpITFlags); + } + } + else if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) + { + /* Call the Sequential Complete callback, to inform upper layer of the end of Transfer */ + I2C_ITSlaveSeqCplt(hi2c); + + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->State = HAL_I2C_STATE_READY; + hi2c->PreviousState = I2C_STATE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the Listen Complete callback, to inform upper layer of the end of Listen usecase */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->ListenCpltCallback(hi2c); +#else + HAL_I2C_ListenCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + /* Call the corresponding callback to inform upper layer of End of Transfer */ + else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) + { + hi2c->State = HAL_I2C_STATE_READY; + hi2c->PreviousState = I2C_STATE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the corresponding callback to inform upper layer of End of Transfer */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->SlaveRxCpltCallback(hi2c); +#else + HAL_I2C_SlaveRxCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + else + { + hi2c->State = HAL_I2C_STATE_READY; + hi2c->PreviousState = I2C_STATE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the corresponding callback to inform upper layer of End of Transfer */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->SlaveTxCpltCallback(hi2c); +#else + HAL_I2C_SlaveTxCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } +} + +/** + * @brief I2C Listen complete process. + * @param hi2c I2C handle. + * @param ITFlags Interrupt flags to handle. + * @retval None + */ +static void I2C_ITListenCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) +{ + /* Reset handle parameters */ + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->PreviousState = I2C_STATE_NONE; + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + hi2c->XferISR = NULL; + + /* Store Last receive data if any */ + if (I2C_CHECK_FLAG(ITFlags, I2C_FLAG_RXNE) != RESET) + { + /* Read data from RXDR */ + *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + if ((hi2c->XferSize > 0U)) + { + hi2c->XferSize--; + hi2c->XferCount--; + + /* Set ErrorCode corresponding to a Non-Acknowledge */ + hi2c->ErrorCode |= HAL_I2C_ERROR_AF; + } + } + + /* Disable all Interrupts*/ + I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT); + + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the Listen Complete callback, to inform upper layer of the end of Listen usecase */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->ListenCpltCallback(hi2c); +#else + HAL_I2C_ListenCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ +} + +/** + * @brief I2C interrupts error process. + * @param hi2c I2C handle. + * @param ErrorCode Error code to handle. + * @retval None + */ +static void I2C_ITError(I2C_HandleTypeDef *hi2c, uint32_t ErrorCode) +{ + HAL_I2C_StateTypeDef tmpstate = hi2c->State; + uint32_t tmppreviousstate; + + /* Reset handle parameters */ + hi2c->Mode = HAL_I2C_MODE_NONE; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferCount = 0U; + + /* Set new error code */ + hi2c->ErrorCode |= ErrorCode; + + /* Disable Interrupts */ + if ((tmpstate == HAL_I2C_STATE_LISTEN) || + (tmpstate == HAL_I2C_STATE_BUSY_TX_LISTEN) || + (tmpstate == HAL_I2C_STATE_BUSY_RX_LISTEN)) + { + /* Disable all interrupts, except interrupts related to LISTEN state */ + I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_TX_IT); + + /* keep HAL_I2C_STATE_LISTEN if set */ + hi2c->State = HAL_I2C_STATE_LISTEN; + hi2c->XferISR = I2C_Slave_ISR_IT; + } + else + { + /* Disable all interrupts */ + I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT); + + /* If state is an abort treatment on going, don't change state */ + /* This change will be do later */ + if (hi2c->State != HAL_I2C_STATE_ABORT) + { + /* Set HAL_I2C_STATE_READY */ + hi2c->State = HAL_I2C_STATE_READY; + } + hi2c->XferISR = NULL; + } + + /* Abort DMA TX transfer if any */ + tmppreviousstate = hi2c->PreviousState; + if ((hi2c->hdmatx != NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_TX) || \ + (tmppreviousstate == I2C_STATE_SLAVE_BUSY_TX))) + { + if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) + { + hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; + } + + if (HAL_DMA_GetState(hi2c->hdmatx) != HAL_DMA_STATE_READY) + { + /* Set the I2C DMA Abort callback : + will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ + hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Abort DMA TX */ + if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) + { + /* Call Directly XferAbortCallback function in case of error */ + hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); + } + } + else + { + I2C_TreatErrorCallback(hi2c); + } + } + /* Abort DMA RX transfer if any */ + else if ((hi2c->hdmarx != NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_RX) || \ + (tmppreviousstate == I2C_STATE_SLAVE_BUSY_RX))) + { + if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) + { + hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; + } + + if (HAL_DMA_GetState(hi2c->hdmarx) != HAL_DMA_STATE_READY) + { + /* Set the I2C DMA Abort callback : + will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ + hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Abort DMA RX */ + if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) + { + /* Call Directly hi2c->hdmarx->XferAbortCallback function in case of error */ + hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); + } + } + else + { + I2C_TreatErrorCallback(hi2c); + } + } + else + { + I2C_TreatErrorCallback(hi2c); + } +} + +/** + * @brief I2C Error callback treatment. + * @param hi2c I2C handle. + * @retval None + */ +static void I2C_TreatErrorCallback(I2C_HandleTypeDef *hi2c) +{ + if (hi2c->State == HAL_I2C_STATE_ABORT) + { + hi2c->State = HAL_I2C_STATE_READY; + hi2c->PreviousState = I2C_STATE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the corresponding callback to inform upper layer of End of Transfer */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->AbortCpltCallback(hi2c); +#else + HAL_I2C_AbortCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + else + { + hi2c->PreviousState = I2C_STATE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the corresponding callback to inform upper layer of End of Transfer */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->ErrorCallback(hi2c); +#else + HAL_I2C_ErrorCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } +} + +/** + * @brief I2C Tx data register flush process. + * @param hi2c I2C handle. + * @retval None + */ +static void I2C_Flush_TXDR(I2C_HandleTypeDef *hi2c) +{ + /* If a pending TXIS flag is set */ + /* Write a dummy data in TXDR to clear it */ + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) != RESET) + { + hi2c->Instance->TXDR = 0x00U; + } + + /* Flush TX register if not empty */ + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXE) == RESET) + { + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_TXE); + } +} + +/** + * @brief DMA I2C master transmit process complete callback. + * @param hdma DMA handle + * @retval None + */ +static void I2C_DMAMasterTransmitCplt(DMA_HandleTypeDef *hdma) +{ + /* Derogation MISRAC2012-Rule-11.5 */ + I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); + + /* Disable DMA Request */ + hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; + + /* If last transfer, enable STOP interrupt */ + if (hi2c->XferCount == 0U) + { + /* Enable STOP interrupt */ + I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); + } + /* else prepare a new DMA transfer and enable TCReload interrupt */ + else + { + /* Update Buffer pointer */ + hi2c->pBuffPtr += hi2c->XferSize; + + /* Set the XferSize to transfer */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + } + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR, + hi2c->XferSize) != HAL_OK) + { + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); + } + else + { + /* Enable TC interrupts */ + I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT); + } + } +} + +/** + * @brief DMA I2C slave transmit process complete callback. + * @param hdma DMA handle + * @retval None + */ +static void I2C_DMASlaveTransmitCplt(DMA_HandleTypeDef *hdma) +{ + /* Derogation MISRAC2012-Rule-11.5 */ + I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); + uint32_t tmpoptions = hi2c->XferOptions; + + if ((tmpoptions == I2C_NEXT_FRAME) || (tmpoptions == I2C_FIRST_FRAME)) + { + /* Disable DMA Request */ + hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; + + /* Last Byte is Transmitted */ + /* Call I2C Slave Sequential complete process */ + I2C_ITSlaveSeqCplt(hi2c); + } + else + { + /* No specific action, Master fully manage the generation of STOP condition */ + /* Mean that this generation can arrive at any time, at the end or during DMA process */ + /* So STOP condition should be manage through Interrupt treatment */ + } +} + +/** + * @brief DMA I2C master receive process complete callback. + * @param hdma DMA handle + * @retval None + */ +static void I2C_DMAMasterReceiveCplt(DMA_HandleTypeDef *hdma) +{ + /* Derogation MISRAC2012-Rule-11.5 */ + I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); + + /* Disable DMA Request */ + hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; + + /* If last transfer, enable STOP interrupt */ + if (hi2c->XferCount == 0U) + { + /* Enable STOP interrupt */ + I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); + } + /* else prepare a new DMA transfer and enable TCReload interrupt */ + else + { + /* Update Buffer pointer */ + hi2c->pBuffPtr += hi2c->XferSize; + + /* Set the XferSize to transfer */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + } + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)hi2c->pBuffPtr, + hi2c->XferSize) != HAL_OK) + { + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); + } + else + { + /* Enable TC interrupts */ + I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT); + } + } +} + +/** + * @brief DMA I2C slave receive process complete callback. + * @param hdma DMA handle + * @retval None + */ +static void I2C_DMASlaveReceiveCplt(DMA_HandleTypeDef *hdma) +{ + /* Derogation MISRAC2012-Rule-11.5 */ + I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); + uint32_t tmpoptions = hi2c->XferOptions; + + if ((__HAL_DMA_GET_COUNTER(hi2c->hdmarx) == 0U) && \ + (tmpoptions != I2C_NO_OPTION_FRAME)) + { + /* Disable DMA Request */ + hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; + + /* Call I2C Slave Sequential complete process */ + I2C_ITSlaveSeqCplt(hi2c); + } + else + { + /* No specific action, Master fully manage the generation of STOP condition */ + /* Mean that this generation can arrive at any time, at the end or during DMA process */ + /* So STOP condition should be manage through Interrupt treatment */ + } +} + +/** + * @brief DMA I2C communication error callback. + * @param hdma DMA handle + * @retval None + */ +static void I2C_DMAError(DMA_HandleTypeDef *hdma) +{ + /* Derogation MISRAC2012-Rule-11.5 */ + I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); + + /* Disable Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); +} + +/** + * @brief DMA I2C communication abort callback + * (To be called at end of DMA Abort procedure). + * @param hdma DMA handle. + * @retval None + */ +static void I2C_DMAAbort(DMA_HandleTypeDef *hdma) +{ + /* Derogation MISRAC2012-Rule-11.5 */ + I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); + + /* Reset AbortCpltCallback */ + if (hi2c->hdmatx != NULL) + { + hi2c->hdmatx->XferAbortCallback = NULL; + } + if (hi2c->hdmarx != NULL) + { + hi2c->hdmarx->XferAbortCallback = NULL; + } + + I2C_TreatErrorCallback(hi2c); +} + +/** + * @brief This function handles I2C Communication Timeout. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param Flag Specifies the I2C flag to check. + * @param Status The new Flag status (SET or RESET). + * @param Timeout Timeout duration + * @param Tickstart Tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_WaitOnFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Flag, FlagStatus Status, + uint32_t Timeout, uint32_t Tickstart) +{ + while (__HAL_I2C_GET_FLAG(hi2c, Flag) == Status) + { + /* Check for the Timeout */ + if (Timeout != HAL_MAX_DELAY) + { + if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) + { + hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + return HAL_ERROR; + } + } + } + return HAL_OK; +} + +/** + * @brief This function handles I2C Communication Timeout for specific usage of TXIS flag. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param Timeout Timeout duration + * @param Tickstart Tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_WaitOnTXISFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, + uint32_t Tickstart) +{ + while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) == RESET) + { + /* Check if a NACK is detected */ + if (I2C_IsAcknowledgeFailed(hi2c, Timeout, Tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Check for the Timeout */ + if (Timeout != HAL_MAX_DELAY) + { + if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) + { + hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + } + } + return HAL_OK; +} + +/** + * @brief This function handles I2C Communication Timeout for specific usage of STOP flag. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param Timeout Timeout duration + * @param Tickstart Tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_WaitOnSTOPFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, + uint32_t Tickstart) +{ + while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) + { + /* Check if a NACK is detected */ + if (I2C_IsAcknowledgeFailed(hi2c, Timeout, Tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Check for the Timeout */ + if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) + { + hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + } + return HAL_OK; +} + +/** + * @brief This function handles I2C Communication Timeout for specific usage of RXNE flag. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param Timeout Timeout duration + * @param Tickstart Tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_WaitOnRXNEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, + uint32_t Tickstart) +{ + while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == RESET) + { + /* Check if a NACK is detected */ + if (I2C_IsAcknowledgeFailed(hi2c, Timeout, Tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Check if a STOPF is detected */ + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == SET) + { + /* Check if an RXNE is pending */ + /* Store Last receive data if any */ + if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == SET) && (hi2c->XferSize > 0U)) + { + /* Return HAL_OK */ + /* The Reading of data from RXDR will be done in caller function */ + return HAL_OK; + } + else + { + /* Clear STOP Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + + /* Clear Configuration Register 2 */ + I2C_RESET_CR2(hi2c); + + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + } + + /* Check for the Timeout */ + if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) + { + hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; + hi2c->State = HAL_I2C_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + } + return HAL_OK; +} + +/** + * @brief This function handles Acknowledge failed detection during an I2C Communication. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param Timeout Timeout duration + * @param Tickstart Tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_IsAcknowledgeFailed(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Tickstart) +{ + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == SET) + { + /* In case of Soft End condition, generate the STOP condition */ + if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) + { + /* Generate Stop */ + hi2c->Instance->CR2 |= I2C_CR2_STOP; + } + /* Wait until STOP Flag is reset */ + /* AutoEnd should be initiate after AF */ + while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) + { + /* Check for the Timeout */ + if (Timeout != HAL_MAX_DELAY) + { + if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) + { + hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + } + } + + /* Clear NACKF Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Clear STOP Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + + /* Flush TX register */ + I2C_Flush_TXDR(hi2c); + + /* Clear Configuration Register 2 */ + I2C_RESET_CR2(hi2c); + + hi2c->ErrorCode |= HAL_I2C_ERROR_AF; + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + return HAL_OK; +} + +/** + * @brief Handles I2Cx communication when starting transfer or during transfer (TC or TCR flag are set). + * @param hi2c I2C handle. + * @param DevAddress Specifies the slave address to be programmed. + * @param Size Specifies the number of bytes to be programmed. + * This parameter must be a value between 0 and 255. + * @param Mode New state of the I2C START condition generation. + * This parameter can be one of the following values: + * @arg @ref I2C_RELOAD_MODE Enable Reload mode . + * @arg @ref I2C_AUTOEND_MODE Enable Automatic end mode. + * @arg @ref I2C_SOFTEND_MODE Enable Software end mode. + * @param Request New state of the I2C START condition generation. + * This parameter can be one of the following values: + * @arg @ref I2C_NO_STARTSTOP Don't Generate stop and start condition. + * @arg @ref I2C_GENERATE_STOP Generate stop condition (Size should be set to 0). + * @arg @ref I2C_GENERATE_START_READ Generate Restart for read request. + * @arg @ref I2C_GENERATE_START_WRITE Generate Restart for write request. + * @retval None + */ +static void I2C_TransferConfig(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t Mode, + uint32_t Request) +{ + /* Check the parameters */ + assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); + assert_param(IS_TRANSFER_MODE(Mode)); + assert_param(IS_TRANSFER_REQUEST(Request)); + + /* update CR2 register */ + MODIFY_REG(hi2c->Instance->CR2, + ((I2C_CR2_SADD | I2C_CR2_NBYTES | I2C_CR2_RELOAD | I2C_CR2_AUTOEND | \ + (I2C_CR2_RD_WRN & (uint32_t)(Request >> (31U - I2C_CR2_RD_WRN_Pos))) | \ + I2C_CR2_START | I2C_CR2_STOP)), \ + (uint32_t)(((uint32_t)DevAddress & I2C_CR2_SADD) | \ + (((uint32_t)Size << I2C_CR2_NBYTES_Pos) & I2C_CR2_NBYTES) | \ + (uint32_t)Mode | (uint32_t)Request)); +} + +/** + * @brief Manage the enabling of Interrupts. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param InterruptRequest Value of @ref I2C_Interrupt_configuration_definition. + * @retval None + */ +static void I2C_Enable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest) +{ + uint32_t tmpisr = 0U; + + if ((hi2c->XferISR == I2C_Master_ISR_DMA) || \ + (hi2c->XferISR == I2C_Slave_ISR_DMA)) + { + if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT) + { + /* Enable ERR, STOP, NACK and ADDR interrupts */ + tmpisr |= I2C_IT_ADDRI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; + } + + if (InterruptRequest == I2C_XFER_ERROR_IT) + { + /* Enable ERR and NACK interrupts */ + tmpisr |= I2C_IT_ERRI | I2C_IT_NACKI; + } + + if (InterruptRequest == I2C_XFER_CPLT_IT) + { + /* Enable STOP interrupts */ + tmpisr |= (I2C_IT_STOPI | I2C_IT_TCI); + } + + if (InterruptRequest == I2C_XFER_RELOAD_IT) + { + /* Enable TC interrupts */ + tmpisr |= I2C_IT_TCI; + } + } + else + { + if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT) + { + /* Enable ERR, STOP, NACK, and ADDR interrupts */ + tmpisr |= I2C_IT_ADDRI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; + } + + if ((InterruptRequest & I2C_XFER_TX_IT) == I2C_XFER_TX_IT) + { + /* Enable ERR, TC, STOP, NACK and RXI interrupts */ + tmpisr |= I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_TXI; + } + + if ((InterruptRequest & I2C_XFER_RX_IT) == I2C_XFER_RX_IT) + { + /* Enable ERR, TC, STOP, NACK and TXI interrupts */ + tmpisr |= I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_RXI; + } + + if (InterruptRequest == I2C_XFER_CPLT_IT) + { + /* Enable STOP interrupts */ + tmpisr |= I2C_IT_STOPI; + } + } + + /* Enable interrupts only at the end */ + /* to avoid the risk of I2C interrupt handle execution before */ + /* all interrupts requested done */ + __HAL_I2C_ENABLE_IT(hi2c, tmpisr); +} + +/** + * @brief Manage the disabling of Interrupts. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param InterruptRequest Value of @ref I2C_Interrupt_configuration_definition. + * @retval None + */ +static void I2C_Disable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest) +{ + uint32_t tmpisr = 0U; + + if ((InterruptRequest & I2C_XFER_TX_IT) == I2C_XFER_TX_IT) + { + /* Disable TC and TXI interrupts */ + tmpisr |= I2C_IT_TCI | I2C_IT_TXI; + + if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) != (uint32_t)HAL_I2C_STATE_LISTEN) + { + /* Disable NACK and STOP interrupts */ + tmpisr |= I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; + } + } + + if ((InterruptRequest & I2C_XFER_RX_IT) == I2C_XFER_RX_IT) + { + /* Disable TC and RXI interrupts */ + tmpisr |= I2C_IT_TCI | I2C_IT_RXI; + + if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) != (uint32_t)HAL_I2C_STATE_LISTEN) + { + /* Disable NACK and STOP interrupts */ + tmpisr |= I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; + } + } + + if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT) + { + /* Disable ADDR, NACK and STOP interrupts */ + tmpisr |= I2C_IT_ADDRI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; + } + + if (InterruptRequest == I2C_XFER_ERROR_IT) + { + /* Enable ERR and NACK interrupts */ + tmpisr |= I2C_IT_ERRI | I2C_IT_NACKI; + } + + if (InterruptRequest == I2C_XFER_CPLT_IT) + { + /* Enable STOP interrupts */ + tmpisr |= I2C_IT_STOPI; + } + + if (InterruptRequest == I2C_XFER_RELOAD_IT) + { + /* Enable TC interrupts */ + tmpisr |= I2C_IT_TCI; + } + + /* Disable interrupts only at the end */ + /* to avoid a breaking situation like at "t" time */ + /* all disable interrupts request are not done */ + __HAL_I2C_DISABLE_IT(hi2c, tmpisr); +} + +/** + * @brief Convert I2Cx OTHER_xxx XferOptions to functional XferOptions. + * @param hi2c I2C handle. + * @retval None + */ +static void I2C_ConvertOtherXferOptions(I2C_HandleTypeDef *hi2c) +{ + /* if user set XferOptions to I2C_OTHER_FRAME */ + /* it request implicitly to generate a restart condition */ + /* set XferOptions to I2C_FIRST_FRAME */ + if (hi2c->XferOptions == I2C_OTHER_FRAME) + { + hi2c->XferOptions = I2C_FIRST_FRAME; + } + /* else if user set XferOptions to I2C_OTHER_AND_LAST_FRAME */ + /* it request implicitly to generate a restart condition */ + /* then generate a stop condition at the end of transfer */ + /* set XferOptions to I2C_FIRST_AND_LAST_FRAME */ + else if (hi2c->XferOptions == I2C_OTHER_AND_LAST_FRAME) + { + hi2c->XferOptions = I2C_FIRST_AND_LAST_FRAME; + } + else + { + /* Nothing to do */ + } +} + +/** + * @} + */ + +#endif /* HAL_I2C_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.c b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.c new file mode 100644 index 0000000..641a44d --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.c @@ -0,0 +1,369 @@ +/** + ****************************************************************************** + * @file stm32l0xx_hal_i2c_ex.c + * @author MCD Application Team + * @brief I2C Extended HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of I2C Extended peripheral: + * + Filter Mode Functions + * + WakeUp Mode Functions + * + FastModePlus Functions + * + @verbatim + ============================================================================== + ##### I2C peripheral Extended features ##### + ============================================================================== + + [..] Comparing to other previous devices, the I2C interface for STM32L0xx + devices contains the following additional features + + (+) Possibility to disable or enable Analog Noise Filter + (+) Use of a configured Digital Noise Filter + (+) Disable or enable wakeup from Stop mode(s) + (+) Disable or enable Fast Mode Plus + + ##### How to use this driver ##### + ============================================================================== + [..] This driver provides functions to configure Noise Filter and Wake Up Feature + (#) Configure I2C Analog noise filter using the function HAL_I2CEx_ConfigAnalogFilter() + (#) Configure I2C Digital noise filter using the function HAL_I2CEx_ConfigDigitalFilter() + (#) Configure the enable or disable of I2C Wake Up Mode using the functions : + (++) HAL_I2CEx_EnableWakeUp() + (++) HAL_I2CEx_DisableWakeUp() + (#) Configure the enable or disable of fast mode plus driving capability using the functions : + (++) HAL_I2CEx_EnableFastModePlus() + (++) HAL_I2CEx_DisableFastModePlus() + @endverbatim + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal.h" + +/** @addtogroup STM32L0xx_HAL_Driver + * @{ + */ + +/** @defgroup I2CEx I2CEx + * @brief I2C Extended HAL module driver + * @{ + */ + +#ifdef HAL_I2C_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + +/** @defgroup I2CEx_Exported_Functions I2C Extended Exported Functions + * @{ + */ + +/** @defgroup I2CEx_Exported_Functions_Group1 Filter Mode Functions + * @brief Filter Mode Functions + * +@verbatim + =============================================================================== + ##### Filter Mode Functions ##### + =============================================================================== + [..] This section provides functions allowing to: + (+) Configure Noise Filters + +@endverbatim + * @{ + */ + +/** + * @brief Configure I2C Analog noise filter. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2Cx peripheral. + * @param AnalogFilter New state of the Analog filter. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2CEx_ConfigAnalogFilter(I2C_HandleTypeDef *hi2c, uint32_t AnalogFilter) +{ + /* Check the parameters */ + assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); + assert_param(IS_I2C_ANALOG_FILTER(AnalogFilter)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY; + + /* Disable the selected I2C peripheral */ + __HAL_I2C_DISABLE(hi2c); + + /* Reset I2Cx ANOFF bit */ + hi2c->Instance->CR1 &= ~(I2C_CR1_ANFOFF); + + /* Set analog filter bit*/ + hi2c->Instance->CR1 |= AnalogFilter; + + __HAL_I2C_ENABLE(hi2c); + + hi2c->State = HAL_I2C_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Configure I2C Digital noise filter. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2Cx peripheral. + * @param DigitalFilter Coefficient of digital noise filter between Min_Data=0x00 and Max_Data=0x0F. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2CEx_ConfigDigitalFilter(I2C_HandleTypeDef *hi2c, uint32_t DigitalFilter) +{ + uint32_t tmpreg; + + /* Check the parameters */ + assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); + assert_param(IS_I2C_DIGITAL_FILTER(DigitalFilter)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY; + + /* Disable the selected I2C peripheral */ + __HAL_I2C_DISABLE(hi2c); + + /* Get the old register value */ + tmpreg = hi2c->Instance->CR1; + + /* Reset I2Cx DNF bits [11:8] */ + tmpreg &= ~(I2C_CR1_DNF); + + /* Set I2Cx DNF coefficient */ + tmpreg |= DigitalFilter << 8U; + + /* Store the new register value */ + hi2c->Instance->CR1 = tmpreg; + + __HAL_I2C_ENABLE(hi2c); + + hi2c->State = HAL_I2C_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} +/** + * @} + */ + +/** @defgroup I2CEx_Exported_Functions_Group2 WakeUp Mode Functions + * @brief WakeUp Mode Functions + * +@verbatim + =============================================================================== + ##### WakeUp Mode Functions ##### + =============================================================================== + [..] This section provides functions allowing to: + (+) Configure Wake Up Feature + +@endverbatim + * @{ + */ + +/** + * @brief Enable I2C wakeup from Stop mode(s). + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2Cx peripheral. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2CEx_EnableWakeUp(I2C_HandleTypeDef *hi2c) +{ + /* Check the parameters */ + assert_param(IS_I2C_WAKEUP_FROMSTOP_INSTANCE(hi2c->Instance)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY; + + /* Disable the selected I2C peripheral */ + __HAL_I2C_DISABLE(hi2c); + + /* Enable wakeup from stop mode */ + hi2c->Instance->CR1 |= I2C_CR1_WUPEN; + + __HAL_I2C_ENABLE(hi2c); + + hi2c->State = HAL_I2C_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Disable I2C wakeup from Stop mode(s). + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2Cx peripheral. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2CEx_DisableWakeUp(I2C_HandleTypeDef *hi2c) +{ + /* Check the parameters */ + assert_param(IS_I2C_WAKEUP_FROMSTOP_INSTANCE(hi2c->Instance)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY; + + /* Disable the selected I2C peripheral */ + __HAL_I2C_DISABLE(hi2c); + + /* Enable wakeup from stop mode */ + hi2c->Instance->CR1 &= ~(I2C_CR1_WUPEN); + + __HAL_I2C_ENABLE(hi2c); + + hi2c->State = HAL_I2C_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} +/** + * @} + */ +#if (defined(SYSCFG_CFGR2_I2C_PB6_FMP) || defined(SYSCFG_CFGR2_I2C_PB7_FMP)) || (defined(SYSCFG_CFGR2_I2C_PB8_FMP) || defined(SYSCFG_CFGR2_I2C_PB9_FMP)) || (defined(SYSCFG_CFGR2_I2C1_FMP)) || defined(SYSCFG_CFGR2_I2C2_FMP) || defined(SYSCFG_CFGR2_I2C3_FMP) + +/** @defgroup I2CEx_Exported_Functions_Group3 Fast Mode Plus Functions + * @brief Fast Mode Plus Functions + * +@verbatim + =============================================================================== + ##### Fast Mode Plus Functions ##### + =============================================================================== + [..] This section provides functions allowing to: + (+) Configure Fast Mode Plus + +@endverbatim + * @{ + */ + +/** + * @brief Enable the I2C fast mode plus driving capability. + * @param ConfigFastModePlus Selects the pin. + * This parameter can be one of the @ref I2CEx_FastModePlus values + * @note For I2C1, fast mode plus driving capability can be enabled on all selected + * I2C1 pins using I2C_FASTMODEPLUS_I2C1 parameter or independently + * on each one of the following pins PB6, PB7, PB8 and PB9. + * @note For remaining I2C1 pins (PA14, PA15...) fast mode plus driving capability + * can be enabled only by using I2C_FASTMODEPLUS_I2C1 parameter. + * @note For all I2C2 pins fast mode plus driving capability can be enabled + * only by using I2C_FASTMODEPLUS_I2C2 parameter. + * @note For all I2C3 pins fast mode plus driving capability can be enabled + * only by using I2C_FASTMODEPLUS_I2C3 parameter. + * @retval None + */ +void HAL_I2CEx_EnableFastModePlus(uint32_t ConfigFastModePlus) +{ + /* Check the parameter */ + assert_param(IS_I2C_FASTMODEPLUS(ConfigFastModePlus)); + + /* Enable SYSCFG clock */ + __HAL_RCC_SYSCFG_CLK_ENABLE(); + + /* Enable fast mode plus driving capability for selected pin */ + SET_BIT(SYSCFG->CFGR2, (uint32_t)ConfigFastModePlus); +} + +/** + * @brief Disable the I2C fast mode plus driving capability. + * @param ConfigFastModePlus Selects the pin. + * This parameter can be one of the @ref I2CEx_FastModePlus values + * @note For I2C1, fast mode plus driving capability can be disabled on all selected + * I2C1 pins using I2C_FASTMODEPLUS_I2C1 parameter or independently + * on each one of the following pins PB6, PB7, PB8 and PB9. + * @note For remaining I2C1 pins (PA14, PA15...) fast mode plus driving capability + * can be disabled only by using I2C_FASTMODEPLUS_I2C1 parameter. + * @note For all I2C2 pins fast mode plus driving capability can be disabled + * only by using I2C_FASTMODEPLUS_I2C2 parameter. + * @note For all I2C3 pins fast mode plus driving capability can be disabled + * only by using I2C_FASTMODEPLUS_I2C3 parameter. + * @retval None + */ +void HAL_I2CEx_DisableFastModePlus(uint32_t ConfigFastModePlus) +{ + /* Check the parameter */ + assert_param(IS_I2C_FASTMODEPLUS(ConfigFastModePlus)); + + /* Enable SYSCFG clock */ + __HAL_RCC_SYSCFG_CLK_ENABLE(); + + /* Disable fast mode plus driving capability for selected pin */ + CLEAR_BIT(SYSCFG->CFGR2, (uint32_t)ConfigFastModePlus); +} +/** + * @} + */ +#endif /* Fast Mode Plus Availability */ +/** + * @} + */ + +#endif /* HAL_I2C_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.c b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.c new file mode 100644 index 0000000..c3564bc --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.c @@ -0,0 +1,733 @@ +/** + ****************************************************************************** + * @file stm32l0xx_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) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal.h" + +#ifdef HAL_PWR_MODULE_ENABLED +/** @addtogroup STM32L0xx_HAL_Driver + * @{ + */ + +/** @addtogroup PWR + * @{ + */ + +/** @addtogroup PWR_Private + * @{ + */ + +#if defined(PWR_PVD_SUPPORT) +/** @defgroup PWR_PVD_Mode_Mask PWR PVD Mode Mask + * @{ + */ +#define PVD_MODE_IT (0x00010000U) +#define PVD_MODE_EVT (0x00020000U) +#define PVD_RISING_EDGE (0x00000001U) +#define PVD_FALLING_EDGE (0x00000002U) +/** + * @} + */ +#endif + +/** + * @} + */ + + +/** @addtogroup PWR_Exported_Functions + * @{ + */ + +/** @addtogroup PWR_Exported_Functions_Group1 + * @brief Initialization and de-initialization functions + * +@verbatim + =============================================================================== + ##### Initialization and de-initialization functions ##### + =============================================================================== + +@endverbatim + * @{ + */ + +/** + * @brief Deinitializes the HAL PWR peripheral registers to their default reset values. + * @retval None + */ +void HAL_PWR_DeInit(void) +{ + __HAL_RCC_PWR_FORCE_RESET(); + __HAL_RCC_PWR_RELEASE_RESET(); +} + +/** + * @} + */ + +/** @addtogroup PWR_Exported_Functions_Group2 + * @brief Low Power modes configuration functions + * +@verbatim + + =============================================================================== + ##### Peripheral Control functions ##### + =============================================================================== + + *** Backup domain *** + ========================= + [..] + 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. + + *** 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. + (+) The PVD feature is not supported on L0 Value line. + + *** 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 WakeUp pins: + WakeUp Pin 1 on PA.00. + WakeUp Pin 2 on PC.13. + WakeUp Pin 3 on PE.06 . + + + [..] + *** 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 configures the two VOS bits in PWR_CR register: + (++) PWR_REGULATOR_VOLTAGE_SCALE1 (VOS bits = 01), the regulator voltage output Scale 1 mode selected and + the System frequency can go up to 32 MHz. + (++) PWR_REGULATOR_VOLTAGE_SCALE2 (VOS bits = 10), the regulator voltage output Scale 2 mode selected and + the System frequency can go up to 16 MHz. + (++) PWR_REGULATOR_VOLTAGE_SCALE3 (VOS bits = 11), the regulator voltage output Scale 3 mode selected and + 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-M0+ core stopped, peripherals kept running. + (+) Low power sleep mode: Cortex-M0+ 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 not to 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. If the WFE instruction was used to enter sleep mode, + the MCU exits Sleep mode as soon as an event occurs. + + *** 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-M0+ 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 + 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 or HSI16 RC + oscillator is selected as system clock depending the bit STOPWUCK in the RCC_CFGR + register + + *** Standby mode *** + ==================== + [..] + The Standby mode allows to achieve the lowest power consumption. It is based on the + Cortex-M0+ 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) using the EXTI_Init() function. + (+++) Enable the RTC Alarm Interrupt using the RTC_ITConfig() function + (+++) Configure the RTC to generate the RTC alarm using the RTC_SetAlarm() + and RTC_AlarmCmd() 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) using the EXTI_Init() function. + (+++) Enable the RTC Tamper or time stamp Interrupt using the RTC_ITConfig() + function. + (+++) Configure the RTC to detect the tamper or time stamp event using the + RTC_TimeStampConfig(), RTC_TamperTriggerConfig() and RTC_TamperCmd() + 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) using the EXTI_Init() function. + (+++) Enable the RTC WakeUp Interrupt using the RTC_ITConfig() function. + (+++) Configure the RTC to generate the RTC WakeUp event using the RTC_WakeUpClockConfig(), + RTC_SetWakeUpCounter() and RTC_WakeUpCmd() functions. + + (+) 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 RTC_ITConfig() function. + (+++) Configure the RTC to generate the RTC alarm using the RTC_SetAlarm() + and RTC_AlarmCmd() 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 using the RTC_ITConfig() + function. + (+++) Configure the RTC to detect the tamper or time stamp event using the + RTC_TimeStampConfig(), RTC_TamperTriggerConfig() and RTC_TamperCmd() + functions. + (++) To wake up from the Standby mode with an RTC WakeUp event, it is necessary to: + (+++) Enable the RTC WakeUp Interrupt using the RTC_ITConfig() function + (+++) Configure the RTC to generate the RTC WakeUp event using the RTC_WakeUpClockConfig(), + RTC_SetWakeUpCounter() and RTC_WakeUpCmd() 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 for comparator 1 or EXTI Line 22 for comparator 2 + to be sensitive to to the selected edges (falling, rising or falling + and rising) (Interrupt or Event modes) using the EXTI_Init() function. + (+++) Configure the comparator to generate the event. +@endverbatim + * @{ + */ + +/** + * @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 */ + SET_BIT(PWR->CR, PWR_CR_DBP); +} + +/** + * @brief Disables access to the backup domain + * @note Applies to 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 */ + CLEAR_BIT(PWR->CR, PWR_CR_DBP); +} + +#if defined(PWR_PVD_SUPPORT) +/** + * @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_FALLING_EDGE(); + __HAL_PWR_PVD_EXTI_DISABLE_RISING_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 */ + SET_BIT(PWR->CR, PWR_CR_PVDE); +} + +/** + * @brief Disables the Power Voltage Detector(PVD). + * @retval None + */ +void HAL_PWR_DisablePVD(void) +{ + /* Disable the power voltage detector */ + CLEAR_BIT(PWR->CR, PWR_CR_PVDE); +} +#endif /* PWR_PVD_SUPPORT */ + +/** + * @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 for stm32l07xxx and stm32l08xxx devices only. + * @retval None + */ +void HAL_PWR_EnableWakeUpPin(uint32_t WakeUpPinx) +{ + /* Check the parameter */ + assert_param(IS_PWR_WAKEUP_PIN(WakeUpPinx)); + /* Enable the EWUPx pin */ + SET_BIT(PWR->CSR, WakeUpPinx); +} + +/** + * @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 for stm32l07xxx and stm32l08xxx devices only. + * @retval None + */ +void HAL_PWR_DisableWakeUpPin(uint32_t WakeUpPinx) +{ + /* Check the parameter */ + assert_param(IS_PWR_WAKEUP_PIN(WakeUpPinx)); + /* Disable the EWUPx pin */ + CLEAR_BIT(PWR->CSR, WakeUpPinx); +} + +/** + * @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) +{ + uint32_t tmpreg = 0U; + uint32_t ulpbit, vrefinbit; + + /* Check the parameters */ + assert_param(IS_PWR_REGULATOR(Regulator)); + assert_param(IS_PWR_SLEEP_ENTRY(SLEEPEntry)); + + /* It is forbidden to configure both EN_VREFINT=1 and ULP=1 if the device is + in Stop mode or in Sleep/Low-power sleep mode */ + ulpbit = READ_BIT(PWR->CR, PWR_CR_ULP); + vrefinbit = READ_BIT(SYSCFG->CFGR3, SYSCFG_CFGR3_EN_VREFINT); + if((ulpbit != 0) && (vrefinbit != 0)) + { + CLEAR_BIT(PWR->CR, PWR_CR_ULP); + } + + /* Select the regulator state in Sleep mode ---------------------------------*/ + tmpreg = PWR->CR; + + /* Clear PDDS and LPDS bits */ + CLEAR_BIT(tmpreg, (PWR_CR_PDDS | PWR_CR_LPSDSR)); + + /* Set LPSDSR bit according to PWR_Regulator value */ + SET_BIT(tmpreg, Regulator); + + /* Store the new value */ + PWR->CR = tmpreg; + + /* Clear SLEEPDEEP bit of Cortex System Control Register */ + CLEAR_BIT(SCB->SCR, 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(); + } + + if((ulpbit != 0) && (vrefinbit != 0)) + { + SET_BIT(PWR->CR, PWR_CR_ULP); + } + + /* Additional NOP to ensure all pending instructions are flushed before entering low power 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 issuing an interrupt or a wakeup event, + * MSI or HSI16 RCoscillator is selected as system clock depending + * the bit STOPWUCK in the RCC_CFGR register. + * @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. + * @note Before entering in this function, it is important to ensure that the WUF + * wakeup flag is cleared. To perform this action, it is possible to call the + * following macro : __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU) + * + * @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) +{ + uint32_t tmpreg = 0U; + uint32_t ulpbit, vrefinbit; + + /* Check the parameters */ + assert_param(IS_PWR_REGULATOR(Regulator)); + assert_param(IS_PWR_STOP_ENTRY(STOPEntry)); + + /* It is forbidden to configure both EN_VREFINT=1 and ULP=1 if the device is + in Stop mode or in Sleep/Low-power sleep mode */ + ulpbit = READ_BIT(PWR->CR, PWR_CR_ULP); + vrefinbit = READ_BIT(SYSCFG->CFGR3, SYSCFG_CFGR3_EN_VREFINT); + if((ulpbit != 0) && (vrefinbit != 0)) + { + CLEAR_BIT(PWR->CR, PWR_CR_ULP); + } + + /* Select the regulator state in Stop mode ---------------------------------*/ + tmpreg = PWR->CR; + + /* Clear PDDS and LPDS bits */ + CLEAR_BIT(tmpreg, (PWR_CR_PDDS | PWR_CR_LPSDSR)); + + /* Set LPSDSR bit according to PWR_Regulator value */ + SET_BIT(tmpreg, Regulator); + + /* Store the new value */ + PWR->CR = tmpreg; + + /* Set SLEEPDEEP bit of Cortex System Control Register */ + SET_BIT(SCB->SCR, 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, SCB_SCR_SLEEPDEEP_Msk); + + if((ulpbit != 0) && (vrefinbit != 0)) + { + SET_BIT(PWR->CR, PWR_CR_ULP); + } +} + +/** + * @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. + * - RTC_AF2 pin (PC13) if configured for tamper. + * - WKUP pin 1 (PA00) if enabled. + * - WKUP pin 2 (PC13) if enabled. + * - WKUP pin 3 (PE06) if enabled, for stm32l07xxx and stm32l08xxx devices only. + * - WKUP pin 3 (PA02) if enabled, for stm32l031xx devices only. + * @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, 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 M0+ 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 M0+ 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)); +} + +#if defined(PWR_PVD_SUPPORT) +/** + * @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 /* PWR_PVD_SUPPORT */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* HAL_PWR_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.c b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.c new file mode 100644 index 0000000..f20f7f9 --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.c @@ -0,0 +1,184 @@ +/** + ****************************************************************************** + * @file stm32l0xx_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) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal.h" + +#ifdef HAL_PWR_MODULE_ENABLED +/** @addtogroup STM32L0xx_HAL_Driver + * @{ + */ + +/** @addtogroup PWREx + * @{ + */ + +/** @addtogroup PWREx_Private + * @{ + */ + +/** @defgroup PWR_Extended_TimeOut_Value PWREx Flag Setting Time Out Value + * @{ + */ +#define PWR_FLAG_SETTING_DELAY_US 50U +/** + * @} + */ + +/** + * @} + */ + + +/** @addtogroup PWREx_Exported_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 */ + SET_BIT(PWR->CR, PWR_CR_FWU); +} + +/** + * @brief Disables the Fast WakeUp from Ultra Low Power mode. + * @retval None + */ +void HAL_PWREx_DisableFastWakeUp(void) +{ + /* Disable the fast wake up */ + CLEAR_BIT(PWR->CR, PWR_CR_FWU); +} + +/** + * @brief Enables the Ultra Low Power mode + * @retval None + */ +void HAL_PWREx_EnableUltraLowPower(void) +{ + /* Enable the Ultra Low Power mode */ + SET_BIT(PWR->CR, PWR_CR_ULP); +} + +/** + * @brief Disables the Ultra Low Power mode + * @retval None + */ +void HAL_PWREx_DisableUltraLowPower(void) +{ + /* Disable the Ultra Low Power mode */ + CLEAR_BIT(PWR->CR, PWR_CR_ULP); +} + +/** + * @brief Enable 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 The frequency of the system clock must be decreased to not exceed the + * frequency of RCC_MSIRANGE_1. + * @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 */ + SET_BIT(PWR->CR, PWR_CR_LPSDSR); + SET_BIT(PWR->CR, PWR_CR_LPRUN); +} + +/** + * @brief Disable the Low Power Run mode. + * @note Before HAL_PWREx_DisableLowPowerRunMode() completion, the function checks that + * REGLPF has been properly reset (otherwise, HAL_PWREx_DisableLowPowerRunMode + * returns HAL_TIMEOUT status). The system clock frequency can then be + * increased above 2 MHz. + * @retval HAL_StatusTypeDef + */ +HAL_StatusTypeDef HAL_PWREx_DisableLowPowerRunMode(void) +{ + uint32_t wait_loop_index = 0U; + + /* Exit the Low Power Run mode */ + CLEAR_BIT(PWR->CR, PWR_CR_LPRUN); + CLEAR_BIT(PWR->CR, PWR_CR_LPSDSR); + + /* Wait until REGLPF is reset */ + wait_loop_index = (PWR_FLAG_SETTING_DELAY_US * (SystemCoreClock / 1000000U)); + + while ((wait_loop_index != 0U) && (HAL_IS_BIT_SET(PWR->CSR, PWR_CSR_REGLPF))) + { + wait_loop_index--; + } + + if (HAL_IS_BIT_SET(PWR->CSR, PWR_CSR_REGLPF)) + { + return HAL_TIMEOUT; + } + + return HAL_OK; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ +#endif /* HAL_PWR_MODULE_ENABLED */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.c b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.c new file mode 100644 index 0000000..372e962 --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.c @@ -0,0 +1,1504 @@ +/** + ****************************************************************************** + * @file stm32l0xx_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 STM32L0xxxD 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) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** +*/ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal.h" + +/** @addtogroup STM32L0xx_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 + +#define MCO2_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE() +#define MCO2_GPIO_PORT GPIOA +#define MCO2_PIN GPIO_PIN_9 + +#if defined(RCC_MCO3_SUPPORT) +#define MCO3_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() +#define MCO3_GPIO_PORT GPIOB +#define MCO3_PIN GPIO_PIN_13 +#endif /* RCC_MCO3_SUPPORT */ + +/** + * @} + */ + +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* 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-M0+ NMI + (Non-Maskable Interrupt) exception vector. + + (#) MCO1/MCO2/MCO3 (microcontroller clock output), used to output SYSCLK, HSI, LSI, MSI, LSE, + HSE, HSI48 or PLL clock (through a configurable prescaler) on PA8/PA9/PB13 pins. + + [..] 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 FS and RNG: USB FS require a frequency equal to 48 MHz to work correctly. + This clock is derived of the main PLL through PLL Multiplier or HSI48 RC oscillator. + + (+@) 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 <= 4.2 | + |---------------|------------------|-----------------|-----------------| + |1WS(2CPU cycle)| 16 < HCLK <= 32 | 8 < HCLK <= 16 | | + +----------------------------------------------------------------------+ + + 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/MCO2/MCO3 OFF + * - All interrupts disabled + * @note This function does not modify the configuration of the + * - Peripheral clocks + * - LSI, LSE and RTC clocks + * - HSI48 clock + * @retval None + */ +HAL_StatusTypeDef HAL_RCC_DeInit(void) +{ + __IO uint32_t tmpreg; + uint32_t tickstart; + uint32_t vl_mask; + 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 for MSI as system clock source */ + 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 HSE, HSI, CSS, PLL */ +#if defined(RCC_CR_CSSHSEON) && defined(RCC_CR_HSIOUTEN) + CLEAR_BIT(RCC->CR, RCC_CR_HSION| RCC_CR_HSIKERON| RCC_CR_HSIDIVEN | RCC_CR_HSIOUTEN | \ + RCC_CR_HSEON | RCC_CR_CSSHSEON | RCC_CR_PLLON); +#elif !defined(RCC_CR_CSSHSEON) && defined(RCC_CR_HSIOUTEN) + CLEAR_BIT(RCC->CR, RCC_CR_HSION| RCC_CR_HSIKERON| RCC_CR_HSIDIVEN | RCC_CR_HSIOUTEN | \ + RCC_CR_HSEON | RCC_CR_PLLON); +#elif defined(RCC_CR_CSSHSEON) && !defined(RCC_CR_HSIOUTEN) + CLEAR_BIT(RCC->CR, RCC_CR_HSION| RCC_CR_HSIKERON| RCC_CR_HSIDIVEN | \ + RCC_CR_HSEON | RCC_CR_CSSHSEON | RCC_CR_PLLON); +#endif + + /* Delay after an RCC peripheral clock */ \ + tmpreg = READ_BIT(RCC->CR, RCC_CR_HSEON); \ + UNUSED(tmpreg); + + /* 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->CIER); + + /* Clear all flags */ + vl_mask = RCC_CICR_LSIRDYC | RCC_CICR_LSERDYC | RCC_CICR_HSIRDYC | RCC_CICR_HSERDYC | RCC_CICR_PLLRDYC | RCC_CICR_MSIRDYC | RCC_CICR_CSSLSEC; +#if defined(RCC_HSI48_SUPPORT) + vl_mask |= RCC_CICR_HSI48RDYC; +#endif +#if defined(RCC_HSECSS_SUPPORT) + vl_mask |= RCC_CICR_CSSHSEC; +#endif + WRITE_REG(RCC->CICR, vl_mask); + + /* 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; + uint32_t hsi_state; + HAL_StatusTypeDef status; + uint32_t sysclk_source, pll_config; + + /* Check Null pointer */ + if(RCC_OscInitStruct == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + 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)); + + hsi_state = RCC_OscInitStruct->HSIState; + +#if defined(RCC_CR_HSIOUTEN) + if((hsi_state & RCC_HSI_OUTEN) != 0U) + { + /* HSI Output enable for timer requested */ + SET_BIT(RCC->CR, RCC_CR_HSIOUTEN); + + hsi_state &= ~RCC_CR_HSIOUTEN; + } +#endif + + /* 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) && (hsi_state == RCC_HSI_OFF)) + { + return HAL_ERROR; + } + /* Otherwise, just the calibration and HSI or HSIdiv4 are allowed */ + else + { + /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ + __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); + + /* Enable the Internal High Speed oscillator (HSI or HSIdiv4) */ + __HAL_RCC_HSI_CONFIG(hsi_state); + } + + /* 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); + if(status != HAL_OK) + { + return status; + } + } + else + { + /* Check the HSI State */ + if(hsi_state != RCC_HSI_OFF) + { + /* Enable the Internal High Speed oscillator (HSI or HSIdiv4) */ + __HAL_RCC_HSI_CONFIG(hsi_state); + + /* 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)); + + /* 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); + + + /* 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(); + } + } + +#if defined(RCC_HSI48_SUPPORT) + /*----------------------------- HSI48 Configuration --------------------------*/ + if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI48) == RCC_OSCILLATORTYPE_HSI48) + { + /* Check the parameters */ + assert_param(IS_RCC_HSI48(RCC_OscInitStruct->HSI48State)); + + /* Check the HSI48 State */ + if(RCC_OscInitStruct->HSI48State != RCC_HSI48_OFF) + { + /* Enable the Internal High Speed oscillator (HSI48). */ + __HAL_RCC_HSI48_ENABLE(); + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + + /* Wait till HSI48 is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSI48RDY) == 0U) + { + if((HAL_GetTick() - tickstart) > HSI48_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + else + { + /* Disable the Internal High Speed oscillator (HSI48). */ + __HAL_RCC_HSI48_DISABLE(); + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + + /* Wait till HSI48 is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSI48RDY) != 0U) + { + if((HAL_GetTick() - tickstart) > HSI48_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + } +#endif /* RCC_HSI48_SUPPORT */ + + /*-------------------------------- 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 ready */ + 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(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency) +{ + uint32_t tickstart; + HAL_StatusTypeDef status; + + /* Check Null pointer */ + if(RCC_ClkInitStruct == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_RCC_CLOCKTYPE(RCC_ClkInitStruct->ClockType)); + 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 polling the FLASH_ACR register */ + tickstart = HAL_GetTick(); + + while (__HAL_FLASH_GET_LATENCY() != FLatency) + { + if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + + /*-------------------------- 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 polling the FLASH_ACR register */ + tickstart = HAL_GetTick(); + + while (__HAL_FLASH_GET_LATENCY() != FLatency) + { + if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + + /*-------------------------- 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) << 3)); + } + + /* 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); + if(status != HAL_OK) + { + return status; + } + + return HAL_OK; +} + +/** + * @} + */ + +/** @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). + * @arg @ref RCC_MCO2 Clock source to output on MCO2 pin(PA9). + @if STM32L031xx + * @arg @ref RCC_MCO3 Clock source to output on MCO3 pin(PB13) + @elseif STM32L041xx + * @arg @ref RCC_MCO3 Clock source to output on MCO3 pin(PB13) + @elseif STM32L073xx + * @arg @ref RCC_MCO3 Clock source to output on MCO3 pin(PB13) + @elseif STM32L083xx + * @arg @ref RCC_MCO3 Clock source to output on MCO3 pin(PB13) + @elseif STM32L072xx + * @arg @ref RCC_MCO3 Clock source to output on MCO3 pin(PB13) + @elseif STM32L082xx + * @arg @ref RCC_MCO3 Clock source to output on MCO3 pin(PB13) + @elseif STM32L071xx + * @arg @ref RCC_MCO3 Clock source to output on MCO3 pin(PB13) + @elseif STM32L081xx + * @arg @ref RCC_MCO3 Clock source to output on MCO3 pin(PB13) + @elseif STM32L051xx + * @arg @ref RCC_MCO3 Clock source to output on MCO3 pin(PB13) + @elseif STM32L053xx + * @arg @ref RCC_MCO3 Clock source to output on MCO3 pin(PB13) + @endif + * @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 + @if STM32L052xx + * @arg @ref RCC_MCO1SOURCE_HSI48 HSI48 clock selected as MCO clock + @elseif STM32L053xx + * @arg @ref RCC_MCO1SOURCE_HSI48 HSI48 clock selected as MCO clock + @elseif STM32L062xx + * @arg @ref RCC_MCO1SOURCE_HSI48 HSI48 clock selected as MCO clock + @elseif STM32L063xx + * @arg @ref RCC_MCO1SOURCE_HSI48 HSI48 clock selected as MCO clock + @elseif STM32L072xx + * @arg @ref RCC_MCO1SOURCE_HSI48 HSI48 clock selected as MCO clock + @elseif STM32L073xx + * @arg @ref RCC_MCO1SOURCE_HSI48 HSI48 clock selected as MCO clock + @elseif STM32L082xx + * @arg @ref RCC_MCO1SOURCE_HSI48 HSI48 clock selected as MCO clock + @elseif STM32L083xx + * @arg @ref RCC_MCO1SOURCE_HSI48 HSI48 clock selected as MCO clock + @endif + * @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 = {0}; + + /* Check the parameters */ + assert_param(IS_RCC_MCO(RCC_MCOx)); + assert_param(IS_RCC_MCODIV(RCC_MCODiv)); + assert_param(IS_RCC_MCO1SOURCE(RCC_MCOSource)); + + /* Configure the MCO1 pin in alternate function mode */ + gpio.Mode = GPIO_MODE_AF_PP; + gpio.Speed = GPIO_SPEED_FREQ_HIGH; + gpio.Pull = GPIO_NOPULL; + if(RCC_MCOx == RCC_MCO1) + { + gpio.Pin = MCO1_PIN; + gpio.Alternate = GPIO_AF0_MCO; + + /* MCO1 Clock Enable */ + MCO1_CLK_ENABLE(); + HAL_GPIO_Init(MCO1_GPIO_PORT, &gpio); + } +#if defined(RCC_MCO3_SUPPORT) + else if (RCC_MCOx == RCC_MCO3) + { + gpio.Pin = MCO3_PIN; + gpio.Alternate = MCO3_GPIO_AF; + + /* MCO3 Clock Enable */ + MCO3_CLK_ENABLE(); + HAL_GPIO_Init(MCO3_GPIO_PORT, &gpio); + } +#endif /* RCC_MCO3_SUPPORT */ + else + { + gpio.Pin = MCO2_PIN; + gpio.Alternate = GPIO_AF0_MCO; + + /* MCO2 Clock Enable */ + MCO2_CLK_ENABLE(); + HAL_GPIO_Init(MCO2_GPIO_PORT, &gpio); + } + + /* Configure the MCO clock source */ + __HAL_RCC_MCO1_CONFIG(RCC_MCOSource, RCC_MCODiv); +} + +#if defined(RCC_HSECSS_SUPPORT) +/** + * @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-M0+ NMI (Non-Maskable Interrupt) exception vector. + * @retval None + */ +void HAL_RCC_EnableCSS(void) +{ + SET_BIT(RCC->CR, RCC_CR_CSSON) ; +} + +#endif /* RCC_HSECSS_SUPPORT */ +/** + * @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 stm32l0xx_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 stm32l0xx_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; /* no init needed */ + uint32_t sysclockfreq; + + tmpreg = RCC->CFGR; + + /* Get SYSCLK source -------------------------------------------------------*/ + switch (tmpreg & RCC_CFGR_SWS) + { + case RCC_SYSCLKSOURCE_STATUS_HSI: /* HSI used as system clock source */ + { + if ((RCC->CR & RCC_CR_HSIDIVF) != 0U) + { + sysclockfreq = (HSI_VALUE >> 2); + } + else + { + 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 + { + if ((RCC->CR & RCC_CR_HSIDIVF) != 0U) + { + pllvco = (uint32_t)((((uint64_t)(HSI_VALUE >> 2)) * (uint64_t)pllm) / (uint64_t)plld); + } + else + { + 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; +#if defined(RCC_HSI48_SUPPORT) + RCC_OscInitStruct->OscillatorType |= RCC_OSCILLATORTYPE_HSI48; +#endif /* RCC_HSI48_SUPPORT */ + + + /* 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) >> 8); + + /* 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; + } + +#if defined(RCC_HSI48_SUPPORT) + /* Get the HSI48 configuration if any-----------------------------------------*/ + RCC_OscInitStruct->HSI48State = __HAL_RCC_GET_HSI48_STATE(); +#endif /* RCC_HSI48_SUPPORT */ + + /* 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) >> 3); + + /* Get the Flash Wait State (Latency) configuration ------------------------*/ + *pFLatency = __HAL_FLASH_GET_LATENCY(); +} + +#if defined(RCC_HSECSS_SUPPORT) +/** + * @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 + */ +} + +#endif /* RCC_HSECSS_SUPPORT */ +/** + * @} + */ + +/** + * @} + */ + +/* Private function prototypes -----------------------------------------------*/ +/** @addtogroup RCC_Private_Functions + * @{ + */ + +/** + * @} + */ + +#endif /* HAL_RCC_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.c b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.c new file mode 100644 index 0000000..6fa35a4 --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.c @@ -0,0 +1,1214 @@ +/** + ****************************************************************************** + * @file stm32l0xx_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 + * + Extended Clock Recovery System Control functions + * + ****************************************************************************** + * @attention + * + *

© Copyright(c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal.h" + +/** @addtogroup STM32L0xx_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 + * @{ + */ +#if defined(USB) +extern const uint8_t PLLMulTable[]; +#endif /* USB */ +/** + * @} + */ + +/* 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(USART1,USART2, LPUART1, + * I2C1, I2C3, RTC, USB/RNG and LPTIM1 clocks). + * @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; + FlagStatus pwrclkchanged = RESET; + + /* 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 */ + + /* 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; + } + } + } + } + __HAL_RCC_RTC_CONFIG(PeriphClkInit->RTCClockSelection); + + /* Require to disable power clock if necessary */ + if(pwrclkchanged == SET) + { + __HAL_RCC_PWR_CLK_DISABLE(); + } + } + +#if defined (RCC_CCIPR_USART1SEL) + /*------------------------------- USART1 Configuration ------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1) + { + /* Check the parameters */ + assert_param(IS_RCC_USART1CLKSOURCE(PeriphClkInit->Usart1ClockSelection)); + + /* Configure the USART1 clock source */ + __HAL_RCC_USART1_CONFIG(PeriphClkInit->Usart1ClockSelection); + } +#endif /* RCC_CCIPR_USART1SEL */ + + /*----------------------------- USART2 Configuration --------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2) + { + /* Check the parameters */ + assert_param(IS_RCC_USART2CLKSOURCE(PeriphClkInit->Usart2ClockSelection)); + + /* Configure the USART2 clock source */ + __HAL_RCC_USART2_CONFIG(PeriphClkInit->Usart2ClockSelection); + } + + /*------------------------------ LPUART1 Configuration ------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPUART1) == RCC_PERIPHCLK_LPUART1) + { + /* Check the parameters */ + assert_param(IS_RCC_LPUART1CLKSOURCE(PeriphClkInit->Lpuart1ClockSelection)); + + /* Configure the LPUAR1 clock source */ + __HAL_RCC_LPUART1_CONFIG(PeriphClkInit->Lpuart1ClockSelection); + } + + /*------------------------------ I2C1 Configuration ------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1) + { + /* Check the parameters */ + assert_param(IS_RCC_I2C1CLKSOURCE(PeriphClkInit->I2c1ClockSelection)); + + /* Configure the I2C1 clock source */ + __HAL_RCC_I2C1_CONFIG(PeriphClkInit->I2c1ClockSelection); + } + +#if defined (RCC_CCIPR_I2C3SEL) + /*------------------------------ I2C3 Configuration ------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C3) == RCC_PERIPHCLK_I2C3) + { + /* Check the parameters */ + assert_param(IS_RCC_I2C3CLKSOURCE(PeriphClkInit->I2c3ClockSelection)); + + /* Configure the I2C3 clock source */ + __HAL_RCC_I2C3_CONFIG(PeriphClkInit->I2c3ClockSelection); + } +#endif /* RCC_CCIPR_I2C3SEL */ + +#if defined(USB) + /*---------------------------- USB and RNG configuration --------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USB) == (RCC_PERIPHCLK_USB)) + { + assert_param(IS_RCC_USBCLKSOURCE(PeriphClkInit->UsbClockSelection)); + __HAL_RCC_USB_CONFIG(PeriphClkInit->UsbClockSelection); + } +#endif /* USB */ + + /*---------------------------- LPTIM1 configuration ------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPTIM1) == (RCC_PERIPHCLK_LPTIM1)) + { + assert_param(IS_RCC_LPTIMCLK(PeriphClkInit->LptimClockSelection)); + __HAL_RCC_LPTIM1_CONFIG(PeriphClkInit->LptimClockSelection); + } + + 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(USART1,USART2, LPUART1, + * I2C1, I2C3, RTC, USB/RNG and LPTIM1 clocks). + * @retval None + */ +void HAL_RCCEx_GetPeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit) +{ + uint32_t srcclk; + + /* Set all possible values for the extended clock type parameter -----------*/ + /* Common part first */ + PeriphClkInit->PeriphClockSelection = RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_LPUART1 | \ + RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_RTC | \ + RCC_PERIPHCLK_LPTIM1; +#if defined(RCC_CCIPR_USART1SEL) + PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_USART1; +#endif /* RCC_CCIPR_USART1SEL */ +#if defined(RCC_CCIPR_I2C3SEL) + PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_I2C3; +#endif /* RCC_CCIPR_I2C3SEL */ +#if defined(USB) + PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_USB; +#endif /* USB */ +#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 */ +#if defined(RCC_CCIPR_USART1SEL) + /* Get the USART1 configuration --------------------------------------------*/ + PeriphClkInit->Usart1ClockSelection = __HAL_RCC_GET_USART1_SOURCE(); +#endif /* RCC_CCIPR_USART1SEL */ + /* Get the USART2 clock source ---------------------------------------------*/ + PeriphClkInit->Usart2ClockSelection = __HAL_RCC_GET_USART2_SOURCE(); + /* Get the LPUART1 clock source ---------------------------------------------*/ + PeriphClkInit->Lpuart1ClockSelection = __HAL_RCC_GET_LPUART1_SOURCE(); + /* Get the I2C1 clock source -----------------------------------------------*/ + PeriphClkInit->I2c1ClockSelection = __HAL_RCC_GET_I2C1_SOURCE(); +#if defined(RCC_CCIPR_I2C3SEL) +/* Get the I2C3 clock source -----------------------------------------------*/ + PeriphClkInit->I2c3ClockSelection = __HAL_RCC_GET_I2C3_SOURCE(); +#endif /* RCC_CCIPR_I2C3SEL */ + /* Get the LPTIM1 clock source -----------------------------------------------*/ + PeriphClkInit->LptimClockSelection = __HAL_RCC_GET_LPTIM1_SOURCE(); + /* Get the RTC clock source -----------------------------------------------*/ + PeriphClkInit->RTCClockSelection = __HAL_RCC_GET_RTC_SOURCE(); +#if defined(USB) + /* Get the USB/RNG clock source -----------------------------------------------*/ + PeriphClkInit->UsbClockSelection = __HAL_RCC_GET_USB_SOURCE(); +#endif /* USB */ +} + +/** + * @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 (*) + * @arg @ref RCC_PERIPHCLK_USB USB or RNG peripheral clock (*) + * @arg @ref RCC_PERIPHCLK_USART1 USART1 peripheral clock (*) + * @arg @ref RCC_PERIPHCLK_USART2 USART2 peripheral clock + * @arg @ref RCC_PERIPHCLK_LPUART1 LPUART1 peripheral clock + * @arg @ref RCC_PERIPHCLK_I2C1 I2C1 peripheral clock + * @arg @ref RCC_PERIPHCLK_I2C2 I2C2 peripheral clock (*) + * @arg @ref RCC_PERIPHCLK_I2C3 I2C3 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 = 0U; + uint32_t temp_reg, clkprediv, srcclk; /* no init needed */ +#if defined(USB) + uint32_t pllmul, plldiv, pllvco; /* no init needed */ +#endif /* USB */ + + /* 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 RCC CSR configuration ------------------------------------------------------*/ + temp_reg = RCC->CSR; + + /* 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) && (HAL_IS_BIT_SET(temp_reg, 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(temp_reg, 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 */ + clkprediv = __HAL_RCC_GET_RTC_HSE_PRESCALER(); + + switch (clkprediv) + { + 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; + } + } + } + } + /* Clock not enabled for RTC */ + else + { + frequency = 0U; + } + break; + } +#if defined(USB) + case RCC_PERIPHCLK_USB: + { + /* Get the current USB source */ + srcclk = __HAL_RCC_GET_USB_SOURCE(); + + if (srcclk == RCC_USBCLKSOURCE_PLL) + { + if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLLRDY)) + { + /* Get PLL clock source and multiplication factor ----------------------*/ + pllmul = RCC->CFGR & RCC_CFGR_PLLMUL; + plldiv = RCC->CFGR & RCC_CFGR_PLLDIV; + pllmul = PLLMulTable[(pllmul >> RCC_CFGR_PLLMUL_Pos)]; + plldiv = (plldiv >> RCC_CFGR_PLLDIV_Pos) + 1U; + + /* Compute PLL clock input */ + if(__HAL_RCC_GET_PLL_OSCSOURCE() == RCC_PLLSOURCE_HSI) + { + if (READ_BIT(RCC->CR, RCC_CR_HSIDIVF) != 0U) + { + pllvco = (HSI_VALUE >> 2U); + } + else + { + pllvco = HSI_VALUE; + } + } + else /* HSE source */ + { + pllvco = HSE_VALUE; + } + /* pllvco * pllmul / plldiv */ + pllvco = (pllvco * pllmul); + frequency = (pllvco/ plldiv); + } + } + else if (srcclk == RCC_USBCLKSOURCE_HSI48) + { + if (HAL_IS_BIT_SET(RCC->CRRCR, RCC_CRRCR_HSI48RDY)) + { + frequency = HSI48_VALUE; + } + } + else /* RCC_USBCLKSOURCE_NONE */ + { + frequency = 0U; + } + break; + } +#endif /* USB */ +#if defined(RCC_CCIPR_USART1SEL) + case RCC_PERIPHCLK_USART1: + { + /* Get the current USART1 source */ + srcclk = __HAL_RCC_GET_USART1_SOURCE(); + + /* Check if USART1 clock selection is PCLK2 */ + if (srcclk == RCC_USART1CLKSOURCE_PCLK2) + { + frequency = HAL_RCC_GetPCLK2Freq(); + } + /* Check if HSI is ready and if USART1 clock selection is HSI */ + else if (srcclk == RCC_USART1CLKSOURCE_HSI) + { + if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY)) + { + if (READ_BIT(RCC->CR, RCC_CR_HSIDIVF) != 0U) + { + frequency = (HSI_VALUE >> 2U); + } + else + { + frequency = HSI_VALUE; + } + } + } + /* Check if USART1 clock selection is SYSCLK */ + else if (srcclk == RCC_USART1CLKSOURCE_SYSCLK) + { + frequency = HAL_RCC_GetSysClockFreq(); + } + /* Check if LSE is ready and if USART1 clock selection is LSE */ + else if (srcclk == RCC_USART1CLKSOURCE_LSE) + { + if (HAL_IS_BIT_SET(RCC->CSR, RCC_CSR_LSERDY)) + { + frequency = LSE_VALUE; + } + } + /* Clock not enabled for USART1*/ + else + { + frequency = 0U; + } + break; + } +#endif /* RCC_CCIPR_USART1SEL */ + case RCC_PERIPHCLK_USART2: + { + /* Get the current USART2 source */ + srcclk = __HAL_RCC_GET_USART2_SOURCE(); + + /* Check if USART2 clock selection is PCLK1 */ + if (srcclk == RCC_USART2CLKSOURCE_PCLK1) + { + frequency = HAL_RCC_GetPCLK1Freq(); + } + /* Check if HSI is ready and if USART2 clock selection is HSI */ + else if (srcclk == RCC_USART2CLKSOURCE_HSI) + { + if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY)) + { + if (READ_BIT(RCC->CR, RCC_CR_HSIDIVF) != 0U) + { + frequency = (HSI_VALUE >> 2U); + } + else + { + frequency = HSI_VALUE; + } + } + } + /* Check if USART2 clock selection is SYSCLK */ + else if (srcclk == RCC_USART2CLKSOURCE_SYSCLK) + { + frequency = HAL_RCC_GetSysClockFreq(); + } + /* Check if LSE is ready and if USART2 clock selection is LSE */ + else if (srcclk == RCC_USART2CLKSOURCE_LSE) + { + if (HAL_IS_BIT_SET(RCC->CSR, RCC_CSR_LSERDY)) + { + frequency = LSE_VALUE; + } + } + /* Clock not enabled for USART2*/ + else + { + frequency = 0U; + } + break; + } + case RCC_PERIPHCLK_LPUART1: + { + /* Get the current LPUART1 source */ + srcclk = __HAL_RCC_GET_LPUART1_SOURCE(); + + /* Check if LPUART1 clock selection is PCLK1 */ + if (srcclk == RCC_LPUART1CLKSOURCE_PCLK1) + { + frequency = HAL_RCC_GetPCLK1Freq(); + } + /* Check if HSI is ready and if LPUART1 clock selection is HSI */ + else if (srcclk == RCC_LPUART1CLKSOURCE_HSI) + { + if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY)) + { + if (READ_BIT(RCC->CR, RCC_CR_HSIDIVF) != 0U) + { + frequency = (HSI_VALUE >> 2U); + } + else + { + frequency = HSI_VALUE; + } + } + } + /* Check if LPUART1 clock selection is SYSCLK */ + else if (srcclk == RCC_LPUART1CLKSOURCE_SYSCLK) + { + frequency = HAL_RCC_GetSysClockFreq(); + } + /* Check if LSE is ready and if LPUART1 clock selection is LSE */ + else if (srcclk == RCC_LPUART1CLKSOURCE_LSE) + { + if (HAL_IS_BIT_SET(RCC->CSR, RCC_CSR_LSERDY)) + { + frequency = LSE_VALUE; + } + } + /* Clock not enabled for LPUART1*/ + else + { + frequency = 0U; + } + break; + } + case RCC_PERIPHCLK_I2C1: + { + /* Get the current I2C1 source */ + srcclk = __HAL_RCC_GET_I2C1_SOURCE(); + + /* Check if I2C1 clock selection is PCLK1 */ + if (srcclk == RCC_I2C1CLKSOURCE_PCLK1) + { + frequency = HAL_RCC_GetPCLK1Freq(); + } + /* Check if HSI is ready and if I2C1 clock selection is HSI */ + else if (srcclk == RCC_I2C1CLKSOURCE_HSI) + { + if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY)) + { + if (READ_BIT(RCC->CR, RCC_CR_HSIDIVF) != 0U) + { + frequency = (HSI_VALUE >> 2U); + } + else + { + frequency = HSI_VALUE; + } + } + } + /* Check if I2C1 clock selection is SYSCLK */ + else if (srcclk == RCC_I2C1CLKSOURCE_SYSCLK) + { + frequency = HAL_RCC_GetSysClockFreq(); + } + /* Clock not enabled for I2C1*/ + else + { + frequency = 0U; + } + break; + } +#if defined(I2C2) + case RCC_PERIPHCLK_I2C2: + { + + /* Check if I2C2 on APB1 clock enabled*/ + if (READ_BIT(RCC->APB1ENR, (RCC_APB1ENR_I2C2EN))==RCC_APB1ENR_I2C2EN) + { + frequency = HAL_RCC_GetPCLK1Freq(); + } + else + { + frequency = 0U; + } + break; + } +#endif /* I2C2 */ + +#if defined(RCC_CCIPR_I2C3SEL) + case RCC_PERIPHCLK_I2C3: + { + /* Get the current I2C3 source */ + srcclk = __HAL_RCC_GET_I2C3_SOURCE(); + + /* Check if I2C3 clock selection is PCLK1 */ + if (srcclk == RCC_I2C3CLKSOURCE_PCLK1) + { + frequency = HAL_RCC_GetPCLK1Freq(); + } + /* Check if HSI is ready and if I2C3 clock selection is HSI */ + else if (srcclk == RCC_I2C3CLKSOURCE_HSI) + { + if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY)) + { + if (READ_BIT(RCC->CR, RCC_CR_HSIDIVF) != 0U) + { + frequency = (HSI_VALUE >> 2U); + } + else + { + frequency = HSI_VALUE; + } + } + } + /* Check if I2C3 clock selection is SYSCLK */ + else if (srcclk == RCC_I2C3CLKSOURCE_SYSCLK) + { + frequency = HAL_RCC_GetSysClockFreq(); + } + /* Clock not enabled for I2C3*/ + else + { + frequency = 0U; + } + break; + } +#endif /* RCC_CCIPR_I2C3SEL */ + default: + { + break; + } + } + return(frequency); +} + +/** + * @brief Enables the LSE Clock Security System. + * @retval None + */ +void HAL_RCCEx_EnableLSECSS(void) +{ + SET_BIT(RCC->CSR, RCC_CSR_LSECSSON) ; +} + +/** + * @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). + * @retval None + */ +void HAL_RCCEx_DisableLSECSS(void) +{ + /* Disable LSE CSS */ + CLEAR_BIT(RCC->CSR, RCC_CSR_LSECSSON) ; + + /* 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 */ + SET_BIT(RCC->CSR, RCC_CSR_LSECSSON) ; + + /* 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 + */ +} + +#if defined(SYSCFG_CFGR3_ENREF_HSI48) +/** + * @brief Enables Vrefint for the HSI48. + * @note This is functional only if the LOCK is not set + * @retval None + */ +void HAL_RCCEx_EnableHSI48_VREFINT(void) +{ + /* Enable the Buffer for the ADC by setting SYSCFG_CFGR3_ENREF_HSI48 bit in SYSCFG_CFGR3 register */ + SET_BIT (SYSCFG->CFGR3, SYSCFG_CFGR3_ENREF_HSI48); +} + +/** + * @brief Disables the Vrefint for the HSI48. + * @note This is functional only if the LOCK is not set + * @retval None + */ +void HAL_RCCEx_DisableHSI48_VREFINT(void) +{ + /* Disable the Vrefint by resetting SYSCFG_CFGR3_ENREF_HSI48 bit in SYSCFG_CFGR3 register */ + CLEAR_BIT(SYSCFG->CFGR3, SYSCFG_CFGR3_ENREF_HSI48); +} + +#endif /* SYSCFG_CFGR3_ENREF_HSI48 */ + +/** + * @} + */ + +#if defined (CRS) + +/** @defgroup RCCEx_Exported_Functions_Group3 Extended Clock Recovery System Control functions + * @brief Extended Clock Recovery System Control functions + * +@verbatim + =============================================================================== + ##### Extended Clock Recovery System Control functions ##### + =============================================================================== + [..] + For devices with Clock Recovery System feature (CRS), RCC Extention HAL driver can be used as follows: + + (#) In System clock config, HSI48 needs to be enabled + + (#) Enable CRS clock in IP MSP init which will use CRS functions + + (#) Call CRS functions as follows: + (##) Prepare synchronization configuration necessary for HSI48 calibration + (+++) Default values can be set for frequency Error Measurement (reload and error limit) + and also HSI48 oscillator smooth trimming. + (+++) Macro __HAL_RCC_CRS_RELOADVALUE_CALCULATE can be also used to calculate + directly reload value with target and synchronization frequencies values + (##) Call function HAL_RCCEx_CRSConfig which + (+++) Reset CRS registers to their default values. + (+++) Configure CRS registers with synchronization configuration + (+++) Enable automatic calibration and frequency error counter feature + Note: When using USB LPM (Link Power Management) and the device is in Sleep mode, the + periodic USB SOF will not be generated by the host. No SYNC signal will therefore be + provided to the CRS to calibrate the HSI48 on the run. To guarantee the required clock + precision after waking up from Sleep mode, the LSE or reference clock on the GPIOs + should be used as SYNC signal. + + (##) A polling function is provided to wait for complete synchronization + (+++) Call function HAL_RCCEx_CRSWaitSynchronization() + (+++) According to CRS status, user can decide to adjust again the calibration or continue + application if synchronization is OK + + (#) User can retrieve information related to synchronization in calling function + HAL_RCCEx_CRSGetSynchronizationInfo() + + (#) Regarding synchronization status and synchronization information, user can try a new calibration + in changing synchronization configuration and call again HAL_RCCEx_CRSConfig. + Note: When the SYNC event is detected during the downcounting phase (before reaching the zero value), + it means that the actual frequency is lower than the target (and so, that the TRIM value should be + incremented), while when it is detected during the upcounting phase it means that the actual frequency + is higher (and that the TRIM value should be decremented). + + (#) In interrupt mode, user can resort to the available macros (__HAL_RCC_CRS_XXX_IT). Interrupts will go + through CRS Handler (RCC_IRQn/RCC_IRQHandler) + (++) Call function HAL_RCCEx_CRSConfig() + (++) Enable RCC_IRQn (thanks to NVIC functions) + (++) Enable CRS interrupt (__HAL_RCC_CRS_ENABLE_IT) + (++) Implement CRS status management in the following user callbacks called from + HAL_RCCEx_CRS_IRQHandler(): + (+++) HAL_RCCEx_CRS_SyncOkCallback() + (+++) HAL_RCCEx_CRS_SyncWarnCallback() + (+++) HAL_RCCEx_CRS_ExpectedSyncCallback() + (+++) HAL_RCCEx_CRS_ErrorCallback() + + (#) To force a SYNC EVENT, user can use the function HAL_RCCEx_CRSSoftwareSynchronizationGenerate(). + This function can be called before calling HAL_RCCEx_CRSConfig (for instance in Systick handler) + +@endverbatim + * @{ + */ + +/** + * @brief Start automatic synchronization for polling mode + * @param pInit Pointer on RCC_CRSInitTypeDef structure + * @retval None + */ +void HAL_RCCEx_CRSConfig(RCC_CRSInitTypeDef *pInit) +{ + uint32_t value; + + /* Check the parameters */ + assert_param(IS_RCC_CRS_SYNC_DIV(pInit->Prescaler)); + assert_param(IS_RCC_CRS_SYNC_SOURCE(pInit->Source)); + assert_param(IS_RCC_CRS_SYNC_POLARITY(pInit->Polarity)); + assert_param(IS_RCC_CRS_RELOADVALUE(pInit->ReloadValue)); + assert_param(IS_RCC_CRS_ERRORLIMIT(pInit->ErrorLimitValue)); + assert_param(IS_RCC_CRS_HSI48CALIBRATION(pInit->HSI48CalibrationValue)); + + /* CONFIGURATION */ + + /* Before configuration, reset CRS registers to their default values*/ + __HAL_RCC_CRS_FORCE_RESET(); + __HAL_RCC_CRS_RELEASE_RESET(); + + /* Set the SYNCDIV[2:0] bits according to Prescaler value */ + /* Set the SYNCSRC[1:0] bits according to Source value */ + /* Set the SYNCSPOL bit according to Polarity value */ + value = (pInit->Prescaler | pInit->Source | pInit->Polarity); + /* Set the RELOAD[15:0] bits according to ReloadValue value */ + value |= pInit->ReloadValue; + /* Set the FELIM[7:0] bits according to ErrorLimitValue value */ + value |= (pInit->ErrorLimitValue << CRS_CFGR_FELIM_Pos); + WRITE_REG(CRS->CFGR, value); + + /* Adjust HSI48 oscillator smooth trimming */ + /* Set the TRIM[5:0] bits according to RCC_CRS_HSI48CalibrationValue value */ + MODIFY_REG(CRS->CR, CRS_CR_TRIM, (pInit->HSI48CalibrationValue << CRS_CR_TRIM_Pos)); + + /* START AUTOMATIC SYNCHRONIZATION*/ + + /* Enable Automatic trimming & Frequency error counter */ + SET_BIT(CRS->CR, CRS_CR_AUTOTRIMEN | CRS_CR_CEN); +} + +/** + * @brief Generate the software synchronization event + * @retval None + */ +void HAL_RCCEx_CRSSoftwareSynchronizationGenerate(void) +{ + SET_BIT(CRS->CR, CRS_CR_SWSYNC); +} + +/** + * @brief Return synchronization info + * @param pSynchroInfo Pointer on RCC_CRSSynchroInfoTypeDef structure + * @retval None + */ +void HAL_RCCEx_CRSGetSynchronizationInfo(RCC_CRSSynchroInfoTypeDef *pSynchroInfo) +{ + /* Check the parameter */ + assert_param(pSynchroInfo != (void *)NULL); + + /* Get the reload value */ + pSynchroInfo->ReloadValue = (uint32_t)(READ_BIT(CRS->CFGR, CRS_CFGR_RELOAD)); + + /* Get HSI48 oscillator smooth trimming */ + pSynchroInfo->HSI48CalibrationValue = (uint32_t)(READ_BIT(CRS->CR, CRS_CR_TRIM) >> CRS_CR_TRIM_Pos); + + /* Get Frequency error capture */ + pSynchroInfo->FreqErrorCapture = (uint32_t)(READ_BIT(CRS->ISR, CRS_ISR_FECAP) >> CRS_ISR_FECAP_Pos); + + /* Get Frequency error direction */ + pSynchroInfo->FreqErrorDirection = (uint32_t)(READ_BIT(CRS->ISR, CRS_ISR_FEDIR)); +} + +/** +* @brief Wait for CRS Synchronization status. +* @param Timeout Duration of the timeout +* @note Timeout is based on the maximum time to receive a SYNC event based on synchronization +* frequency. +* @note If Timeout set to HAL_MAX_DELAY, HAL_TIMEOUT will be never returned. +* @retval Combination of Synchronization status +* This parameter can be a combination of the following values: +* @arg @ref RCC_CRS_TIMEOUT +* @arg @ref RCC_CRS_SYNCOK +* @arg @ref RCC_CRS_SYNCWARN +* @arg @ref RCC_CRS_SYNCERR +* @arg @ref RCC_CRS_SYNCMISS +* @arg @ref RCC_CRS_TRIMOVF +*/ +uint32_t HAL_RCCEx_CRSWaitSynchronization(uint32_t Timeout) +{ + uint32_t crsstatus = RCC_CRS_NONE; + uint32_t tickstart; + + /* Get timeout */ + tickstart = HAL_GetTick(); + + /* Wait for CRS flag or timeout detection */ + do + { + if(Timeout != HAL_MAX_DELAY) + { + if(((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U)) + { + crsstatus = RCC_CRS_TIMEOUT; + } + } + /* Check CRS SYNCOK flag */ + if(__HAL_RCC_CRS_GET_FLAG(RCC_CRS_FLAG_SYNCOK)) + { + /* CRS SYNC event OK */ + crsstatus |= RCC_CRS_SYNCOK; + + /* Clear CRS SYNC event OK bit */ + __HAL_RCC_CRS_CLEAR_FLAG(RCC_CRS_FLAG_SYNCOK); + } + + /* Check CRS SYNCWARN flag */ + if(__HAL_RCC_CRS_GET_FLAG(RCC_CRS_FLAG_SYNCWARN)) + { + /* CRS SYNC warning */ + crsstatus |= RCC_CRS_SYNCWARN; + + /* Clear CRS SYNCWARN bit */ + __HAL_RCC_CRS_CLEAR_FLAG(RCC_CRS_FLAG_SYNCWARN); + } + + /* Check CRS TRIM overflow flag */ + if(__HAL_RCC_CRS_GET_FLAG(RCC_CRS_FLAG_TRIMOVF)) + { + /* CRS SYNC Error */ + crsstatus |= RCC_CRS_TRIMOVF; + + /* Clear CRS Error bit */ + __HAL_RCC_CRS_CLEAR_FLAG(RCC_CRS_FLAG_TRIMOVF); + } + + /* Check CRS Error flag */ + if(__HAL_RCC_CRS_GET_FLAG(RCC_CRS_FLAG_SYNCERR)) + { + /* CRS SYNC Error */ + crsstatus |= RCC_CRS_SYNCERR; + + /* Clear CRS Error bit */ + __HAL_RCC_CRS_CLEAR_FLAG(RCC_CRS_FLAG_SYNCERR); + } + + /* Check CRS SYNC Missed flag */ + if(__HAL_RCC_CRS_GET_FLAG(RCC_CRS_FLAG_SYNCMISS)) + { + /* CRS SYNC Missed */ + crsstatus |= RCC_CRS_SYNCMISS; + + /* Clear CRS SYNC Missed bit */ + __HAL_RCC_CRS_CLEAR_FLAG(RCC_CRS_FLAG_SYNCMISS); + } + + /* Check CRS Expected SYNC flag */ + if(__HAL_RCC_CRS_GET_FLAG(RCC_CRS_FLAG_ESYNC)) + { + /* frequency error counter reached a zero value */ + __HAL_RCC_CRS_CLEAR_FLAG(RCC_CRS_FLAG_ESYNC); + } + } while(RCC_CRS_NONE == crsstatus); + + return crsstatus; +} + +/** + * @brief Handle the Clock Recovery System interrupt request. + * @retval None + */ +void HAL_RCCEx_CRS_IRQHandler(void) +{ + uint32_t crserror = RCC_CRS_NONE; + /* Get current IT flags and IT sources values */ + uint32_t itflags = READ_REG(CRS->ISR); + uint32_t itsources = READ_REG(CRS->CR); + + /* Check CRS SYNCOK flag */ + if(((itflags & RCC_CRS_FLAG_SYNCOK) != 0U) && ((itsources & RCC_CRS_IT_SYNCOK) != 0U)) + { + /* Clear CRS SYNC event OK flag */ + WRITE_REG(CRS->ICR, CRS_ICR_SYNCOKC); + + /* user callback */ + HAL_RCCEx_CRS_SyncOkCallback(); + } + /* Check CRS SYNCWARN flag */ + else if(((itflags & RCC_CRS_FLAG_SYNCWARN) != 0U) && ((itsources & RCC_CRS_IT_SYNCWARN) != 0U)) + { + /* Clear CRS SYNCWARN flag */ + WRITE_REG(CRS->ICR, CRS_ICR_SYNCWARNC); + + /* user callback */ + HAL_RCCEx_CRS_SyncWarnCallback(); + } + /* Check CRS Expected SYNC flag */ + else if(((itflags & RCC_CRS_FLAG_ESYNC) != 0U) && ((itsources & RCC_CRS_IT_ESYNC) != 0U)) + { + /* frequency error counter reached a zero value */ + WRITE_REG(CRS->ICR, CRS_ICR_ESYNCC); + + /* user callback */ + HAL_RCCEx_CRS_ExpectedSyncCallback(); + } + /* Check CRS Error flags */ + else + { + if(((itflags & RCC_CRS_FLAG_ERR) != 0U) && ((itsources & RCC_CRS_IT_ERR) != 0U)) + { + if((itflags & RCC_CRS_FLAG_SYNCERR) != 0U) + { + crserror |= RCC_CRS_SYNCERR; + } + if((itflags & RCC_CRS_FLAG_SYNCMISS) != 0U) + { + crserror |= RCC_CRS_SYNCMISS; + } + if((itflags & RCC_CRS_FLAG_TRIMOVF) != 0U) + { + crserror |= RCC_CRS_TRIMOVF; + } + + /* Clear CRS Error flags */ + WRITE_REG(CRS->ICR, CRS_ICR_ERRC); + + /* user error callback */ + HAL_RCCEx_CRS_ErrorCallback(crserror); + } + } +} + +/** + * @brief RCCEx Clock Recovery System SYNCOK interrupt callback. + * @retval none + */ +__weak void HAL_RCCEx_CRS_SyncOkCallback(void) +{ + /* NOTE : This function should not be modified, when the callback is needed, + the @ref HAL_RCCEx_CRS_SyncOkCallback should be implemented in the user file + */ +} + +/** + * @brief RCCEx Clock Recovery System SYNCWARN interrupt callback. + * @retval none + */ +__weak void HAL_RCCEx_CRS_SyncWarnCallback(void) +{ + /* NOTE : This function should not be modified, when the callback is needed, + the @ref HAL_RCCEx_CRS_SyncWarnCallback should be implemented in the user file + */ +} + +/** + * @brief RCCEx Clock Recovery System Expected SYNC interrupt callback. + * @retval none + */ +__weak void HAL_RCCEx_CRS_ExpectedSyncCallback(void) +{ + /* NOTE : This function should not be modified, when the callback is needed, + the @ref HAL_RCCEx_CRS_ExpectedSyncCallback should be implemented in the user file + */ +} + +/** + * @brief RCCEx Clock Recovery System Error interrupt callback. + * @param Error Combination of Error status. + * This parameter can be a combination of the following values: + * @arg @ref RCC_CRS_SYNCERR + * @arg @ref RCC_CRS_SYNCMISS + * @arg @ref RCC_CRS_TRIMOVF + * @retval none + */ +__weak void HAL_RCCEx_CRS_ErrorCallback(uint32_t Error) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(Error); + + /* NOTE : This function should not be modified, when the callback is needed, + the @ref HAL_RCCEx_CRS_ErrorCallback should be implemented in the user file + */ +} + +/** + * @} + */ + +#endif /* CRS */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* HAL_RCC_MODULE_ENABLED */ +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.c b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.c new file mode 100644 index 0000000..bb92195 --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.c @@ -0,0 +1,7187 @@ +/** + ****************************************************************************** + * @file stm32l0xx_hal_tim.c + * @author MCD Application Team + * @brief TIM HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the Timer (TIM) peripheral: + * + TIM Time Base Initialization + * + TIM Time Base Start + * + TIM Time Base Start Interruption + * + TIM Time Base Start DMA + * + TIM Output Compare/PWM Initialization + * + TIM Output Compare/PWM Channel Configuration + * + TIM Output Compare/PWM Start + * + TIM Output Compare/PWM Start Interruption + * + TIM Output Compare/PWM Start DMA + * + TIM Input Capture Initialization + * + TIM Input Capture Channel Configuration + * + TIM Input Capture Start + * + TIM Input Capture Start Interruption + * + TIM Input Capture Start DMA + * + TIM One Pulse Initialization + * + TIM One Pulse Channel Configuration + * + TIM One Pulse Start + * + TIM Encoder Interface Initialization + * + TIM Encoder Interface Start + * + TIM Encoder Interface Start Interruption + * + TIM Encoder Interface Start DMA + * + Commutation Event configuration with Interruption and DMA + * + TIM OCRef clear configuration + * + TIM External Clock configuration + @verbatim + ============================================================================== + ##### TIMER Generic features ##### + ============================================================================== + [..] The Timer features include: + (#) 16-bit up, down, up/down auto-reload counter. + (#) 16-bit programmable prescaler allowing dividing (also on the fly) the + counter clock frequency either by any factor between 1 and 65536. + (#) Up to 4 independent channels for: + (++) Input Capture + (++) Output Compare + (++) PWM generation (Edge and Center-aligned Mode) + (++) One-pulse mode output + (#) Synchronization circuit to control the timer with external signals and to interconnect + several timers together. + (#) Supports incremental encoder for positioning purposes + + ##### How to use this driver ##### + ============================================================================== + [..] + (#) Initialize the TIM low level resources by implementing the following functions + depending on the selected feature: + (++) Time Base : HAL_TIM_Base_MspInit() + (++) Input Capture : HAL_TIM_IC_MspInit() + (++) Output Compare : HAL_TIM_OC_MspInit() + (++) PWM generation : HAL_TIM_PWM_MspInit() + (++) One-pulse mode output : HAL_TIM_OnePulse_MspInit() + (++) Encoder mode output : HAL_TIM_Encoder_MspInit() + + (#) Initialize the TIM low level resources : + (##) Enable the TIM interface clock using __HAL_RCC_TIMx_CLK_ENABLE(); + (##) TIM pins configuration + (+++) Enable the clock for the TIM GPIOs using the following function: + __HAL_RCC_GPIOx_CLK_ENABLE(); + (+++) Configure these TIM pins in Alternate function mode using HAL_GPIO_Init(); + + (#) The external Clock can be configured, if needed (the default clock is the + internal clock from the APBx), using the following function: + HAL_TIM_ConfigClockSource, the clock configuration should be done before + any start function. + + (#) Configure the TIM in the desired functioning mode using one of the + Initialization function of this driver: + (++) HAL_TIM_Base_Init: to use the Timer to generate a simple time base + (++) HAL_TIM_OC_Init and HAL_TIM_OC_ConfigChannel: to use the Timer to generate an + Output Compare signal. + (++) HAL_TIM_PWM_Init and HAL_TIM_PWM_ConfigChannel: to use the Timer to generate a + PWM signal. + (++) HAL_TIM_IC_Init and HAL_TIM_IC_ConfigChannel: to use the Timer to measure an + external signal. + (++) HAL_TIM_OnePulse_Init and HAL_TIM_OnePulse_ConfigChannel: to use the Timer + in One Pulse Mode. + (++) HAL_TIM_Encoder_Init: to use the Timer Encoder Interface. + + (#) Activate the TIM peripheral using one of the start functions depending from the feature used: + (++) Time Base : HAL_TIM_Base_Start(), HAL_TIM_Base_Start_DMA(), HAL_TIM_Base_Start_IT() + (++) Input Capture : HAL_TIM_IC_Start(), HAL_TIM_IC_Start_DMA(), HAL_TIM_IC_Start_IT() + (++) Output Compare : HAL_TIM_OC_Start(), HAL_TIM_OC_Start_DMA(), HAL_TIM_OC_Start_IT() + (++) PWM generation : HAL_TIM_PWM_Start(), HAL_TIM_PWM_Start_DMA(), HAL_TIM_PWM_Start_IT() + (++) One-pulse mode output : HAL_TIM_OnePulse_Start(), HAL_TIM_OnePulse_Start_IT() + (++) Encoder mode output : HAL_TIM_Encoder_Start(), HAL_TIM_Encoder_Start_DMA(), HAL_TIM_Encoder_Start_IT(). + + (#) The DMA Burst is managed with the two following functions: + HAL_TIM_DMABurst_WriteStart() + HAL_TIM_DMABurst_ReadStart() + + *** Callback registration *** + ============================================= + + [..] + The compilation define USE_HAL_TIM_REGISTER_CALLBACKS when set to 1 + allows the user to configure dynamically the driver callbacks. + + [..] + Use Function HAL_TIM_RegisterCallback() to register a callback. + HAL_TIM_RegisterCallback() takes as parameters the HAL peripheral handle, + the Callback ID and a pointer to the user callback function. + + [..] + Use function HAL_TIM_UnRegisterCallback() to reset a callback to the default + weak function. + HAL_TIM_UnRegisterCallback takes as parameters the HAL peripheral handle, + and the Callback ID. + + [..] + These functions allow to register/unregister following callbacks: + (+) Base_MspInitCallback : TIM Base Msp Init Callback. + (+) Base_MspDeInitCallback : TIM Base Msp DeInit Callback. + (+) IC_MspInitCallback : TIM IC Msp Init Callback. + (+) IC_MspDeInitCallback : TIM IC Msp DeInit Callback. + (+) OC_MspInitCallback : TIM OC Msp Init Callback. + (+) OC_MspDeInitCallback : TIM OC Msp DeInit Callback. + (+) PWM_MspInitCallback : TIM PWM Msp Init Callback. + (+) PWM_MspDeInitCallback : TIM PWM Msp DeInit Callback. + (+) OnePulse_MspInitCallback : TIM One Pulse Msp Init Callback. + (+) OnePulse_MspDeInitCallback : TIM One Pulse Msp DeInit Callback. + (+) Encoder_MspInitCallback : TIM Encoder Msp Init Callback. + (+) Encoder_MspDeInitCallback : TIM Encoder Msp DeInit Callback. + (+) PeriodElapsedCallback : TIM Period Elapsed Callback. + (+) PeriodElapsedHalfCpltCallback : TIM Period Elapsed half complete Callback. + (+) TriggerCallback : TIM Trigger Callback. + (+) TriggerHalfCpltCallback : TIM Trigger half complete Callback. + (+) IC_CaptureCallback : TIM Input Capture Callback. + (+) IC_CaptureHalfCpltCallback : TIM Input Capture half complete Callback. + (+) OC_DelayElapsedCallback : TIM Output Compare Delay Elapsed Callback. + (+) PWM_PulseFinishedCallback : TIM PWM Pulse Finished Callback. + (+) PWM_PulseFinishedHalfCpltCallback : TIM PWM Pulse Finished half complete Callback. + (+) ErrorCallback : TIM Error Callback. + + [..] +By default, after the Init and when the state is HAL_TIM_STATE_RESET +all interrupt callbacks are set to the corresponding weak functions: + examples HAL_TIM_TriggerCallback(), HAL_TIM_ErrorCallback(). + + [..] + Exception done for MspInit and MspDeInit functions that are reset to the legacy weak + functionalities in the Init / DeInit only when these callbacks are null + (not registered beforehand). If not, MspInit or MspDeInit are not null, the Init / DeInit + keep and use the user MspInit / MspDeInit callbacks(registered beforehand) + + [..] + Callbacks can be registered / unregistered in HAL_TIM_STATE_READY state only. + Exception done MspInit / MspDeInit that can be registered / unregistered + in HAL_TIM_STATE_READY or HAL_TIM_STATE_RESET state, + thus registered(user) MspInit / DeInit callbacks can be used during the Init / DeInit. + In that case first register the MspInit/MspDeInit user callbacks + using HAL_TIM_RegisterCallback() before calling DeInit or Init function. + + [..] + When The compilation define USE_HAL_TIM_REGISTER_CALLBACKS is set to 0 or + not defined, the callback registration feature is not available and all callbacks + are set to the corresponding weak functions. + + @endverbatim + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal.h" + +/** @addtogroup STM32L0xx_HAL_Driver + * @{ + */ + +/** @defgroup TIM TIM + * @brief TIM HAL module driver + * @{ + */ + +#ifdef HAL_TIM_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/** @addtogroup TIM_Private_Functions + * @{ + */ +static void TIM_Base_SetConfig(TIM_TypeDef *TIMx, TIM_Base_InitTypeDef *Structure); +static void TIM_OC1_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config); +static void TIM_OC2_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config); +static void TIM_OC3_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config); +static void TIM_OC4_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config); +static void TIM_TI1_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, + uint32_t TIM_ICFilter); +static void TIM_TI1_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter); +static void TIM_TI2_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, + uint32_t TIM_ICFilter); +static void TIM_TI2_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter); +static void TIM_TI3_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, + uint32_t TIM_ICFilter); +static void TIM_TI4_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, + uint32_t TIM_ICFilter); +static void TIM_ITRx_SetConfig(TIM_TypeDef *TIMx, uint32_t InputTriggerSource); +static void TIM_ETR_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ExtTRGPrescaler, + uint32_t TIM_ExtTRGPolarity, uint32_t ExtTRGFilter); +static void TIM_CCxChannelCmd(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ChannelState); +static void TIM_DMAPeriodElapsedCplt(DMA_HandleTypeDef *hdma); +static void TIM_DMAPeriodElapsedHalfCplt(DMA_HandleTypeDef *hdma); +static void TIM_DMADelayPulseCplt(DMA_HandleTypeDef *hdma); +static void TIM_DMADelayPulseHalfCplt(DMA_HandleTypeDef *hdma); +static void TIM_DMATriggerCplt(DMA_HandleTypeDef *hdma); +static void TIM_DMATriggerHalfCplt(DMA_HandleTypeDef *hdma); +static HAL_StatusTypeDef TIM_SlaveTimer_SetConfig(TIM_HandleTypeDef *htim, + TIM_SlaveConfigTypeDef *sSlaveConfig); +/** + * @} + */ +/* Exported functions --------------------------------------------------------*/ + +/** @defgroup TIM_Exported_Functions TIM Exported Functions + * @{ + */ + +/** @defgroup TIM_Exported_Functions_Group1 TIM Time Base functions + * @brief Time Base functions + * +@verbatim + ============================================================================== + ##### Time Base functions ##### + ============================================================================== + [..] + This section provides functions allowing to: + (+) Initialize and configure the TIM base. + (+) De-initialize the TIM base. + (+) Start the Time Base. + (+) Stop the Time Base. + (+) Start the Time Base and enable interrupt. + (+) Stop the Time Base and disable interrupt. + (+) Start the Time Base and enable DMA transfer. + (+) Stop the Time Base and disable DMA transfer. + +@endverbatim + * @{ + */ +/** + * @brief Initializes the TIM Time base Unit according to the specified + * parameters in the TIM_HandleTypeDef and initialize the associated handle. + * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse) + * requires a timer reset to avoid unexpected direction + * due to DIR bit readonly in center aligned mode. + * 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) +{ + /* Check the TIM handle allocation */ + if (htim == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + assert_param(IS_TIM_PERIOD(htim->Init.Period)); + assert_param(IS_TIM_PRESCALER(htim->Init.Prescaler)); + assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + + if (htim->State == HAL_TIM_STATE_RESET) + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + /* Reset interrupt callbacks to legacy weak callbacks */ + TIM_ResetCallback(htim); + + if (htim->Base_MspInitCallback == NULL) + { + htim->Base_MspInitCallback = HAL_TIM_Base_MspInit; + } + /* 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); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + + /* Set the Time Base configuration */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + + /* Initialize the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + + return HAL_OK; +} + +/** + * @brief DeInitializes the TIM Base peripheral + * @param htim TIM Base handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Base_DeInit(TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + + htim->State = HAL_TIM_STATE_BUSY; + + /* Disable the TIM Peripheral Clock */ + __HAL_TIM_DISABLE(htim); + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + if (htim->Base_MspDeInitCallback == NULL) + { + htim->Base_MspDeInitCallback = HAL_TIM_Base_MspDeInit; + } + /* DeInit the low level hardware */ + htim->Base_MspDeInitCallback(htim); +#else + /* DeInit the low level hardware: GPIO, CLOCK, NVIC */ + HAL_TIM_Base_MspDeInit(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + /* Change the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_RESET; + + /* Change the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + + /* Change TIM state */ + htim->State = HAL_TIM_STATE_RESET; + + /* Release Lock */ + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Initializes the TIM Base MSP. + * @param htim TIM Base handle + * @retval None + */ +__weak void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_Base_MspInit could be implemented in the user file + */ +} + +/** + * @brief DeInitializes TIM Base MSP. + * @param htim TIM Base handle + * @retval None + */ +__weak void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_Base_MspDeInit could be implemented in the user file + */ +} + + +/** + * @brief Starts the TIM Base generation. + * @param htim TIM Base handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Base_Start(TIM_HandleTypeDef *htim) +{ + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + + /* Check the TIM state */ + if (htim->State != HAL_TIM_STATE_READY) + { + return HAL_ERROR; + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM Base generation. + * @param htim TIM Base handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Base_Stop(TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_READY; + + /* Return function status */ + return HAL_OK; +} + +/** + * @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) +{ + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + + /* Check the TIM state */ + if (htim->State != HAL_TIM_STATE_READY) + { + return HAL_ERROR; + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + + /* Enable the TIM Update interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_UPDATE); + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM Base generation in interrupt mode. + * @param htim TIM Base handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Base_Stop_IT(TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + + /* Disable the TIM Update interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_UPDATE); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_READY; + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Starts the TIM Base generation in DMA mode. + * @param htim TIM Base handle + * @param pData The source Buffer address. + * @param Length The length of data to be transferred from memory to peripheral. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Base_Start_DMA(TIM_HandleTypeDef *htim, uint32_t *pData, uint16_t Length) +{ + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_DMA_INSTANCE(htim->Instance)); + + /* Set the TIM state */ + if (htim->State == HAL_TIM_STATE_BUSY) + { + return HAL_BUSY; + } + else if (htim->State == HAL_TIM_STATE_READY) + { + if ((pData == NULL) && (Length > 0U)) + { + return HAL_ERROR; + } + else + { + htim->State = HAL_TIM_STATE_BUSY; + } + } + else + { + return HAL_ERROR; + } + + /* Set the DMA Period elapsed callbacks */ + htim->hdma[TIM_DMA_ID_UPDATE]->XferCpltCallback = TIM_DMAPeriodElapsedCplt; + htim->hdma[TIM_DMA_ID_UPDATE]->XferHalfCpltCallback = TIM_DMAPeriodElapsedHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_UPDATE]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_UPDATE], (uint32_t)pData, (uint32_t)&htim->Instance->ARR, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + + /* Enable the TIM Update DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_UPDATE); + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM Base generation in DMA mode. + * @param htim TIM Base handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Base_Stop_DMA(TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_DMA_INSTANCE(htim->Instance)); + + /* Disable the TIM Update DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_UPDATE); + + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_UPDATE]); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_READY; + + /* Return function status */ + return HAL_OK; +} + +/** + * @} + */ + +/** @defgroup TIM_Exported_Functions_Group2 TIM Output Compare functions + * @brief TIM Output Compare functions + * +@verbatim + ============================================================================== + ##### TIM Output Compare functions ##### + ============================================================================== + [..] + This section provides functions allowing to: + (+) Initialize and configure the TIM Output Compare. + (+) De-initialize the TIM Output Compare. + (+) Start the TIM Output Compare. + (+) Stop the TIM Output Compare. + (+) Start the TIM Output Compare and enable interrupt. + (+) Stop the TIM Output Compare and disable interrupt. + (+) Start the TIM Output Compare and enable DMA transfer. + (+) Stop the TIM Output Compare and disable DMA transfer. + +@endverbatim + * @{ + */ +/** + * @brief Initializes the TIM Output Compare according to the specified + * parameters in the TIM_HandleTypeDef and initializes the associated handle. + * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse) + * requires a timer reset to avoid unexpected direction + * due to DIR bit readonly in center aligned mode. + * Ex: call @ref HAL_TIM_OC_DeInit() before HAL_TIM_OC_Init() + * @param htim TIM Output Compare handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OC_Init(TIM_HandleTypeDef *htim) +{ + /* Check the TIM handle allocation */ + if (htim == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + assert_param(IS_TIM_PERIOD(htim->Init.Period)); + assert_param(IS_TIM_PRESCALER(htim->Init.Prescaler)); + assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + + if (htim->State == HAL_TIM_STATE_RESET) + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + /* Reset interrupt callbacks to legacy weak callbacks */ + TIM_ResetCallback(htim); + + if (htim->OC_MspInitCallback == NULL) + { + htim->OC_MspInitCallback = HAL_TIM_OC_MspInit; + } + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + htim->OC_MspInitCallback(htim); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ + HAL_TIM_OC_MspInit(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + + /* Init the base time for the Output Compare */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + + /* Initialize the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + + return HAL_OK; +} + +/** + * @brief DeInitializes the TIM peripheral + * @param htim TIM Output Compare handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OC_DeInit(TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + + htim->State = HAL_TIM_STATE_BUSY; + + /* Disable the TIM Peripheral Clock */ + __HAL_TIM_DISABLE(htim); + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + if (htim->OC_MspDeInitCallback == NULL) + { + htim->OC_MspDeInitCallback = HAL_TIM_OC_MspDeInit; + } + /* DeInit the low level hardware */ + htim->OC_MspDeInitCallback(htim); +#else + /* DeInit the low level hardware: GPIO, CLOCK, NVIC and DMA */ + HAL_TIM_OC_MspDeInit(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + /* Change the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_RESET; + + /* Change the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + + /* Change TIM state */ + htim->State = HAL_TIM_STATE_RESET; + + /* Release Lock */ + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Initializes the TIM Output Compare MSP. + * @param htim TIM Output Compare handle + * @retval None + */ +__weak void HAL_TIM_OC_MspInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_OC_MspInit could be implemented in the user file + */ +} + +/** + * @brief DeInitializes TIM Output Compare MSP. + * @param htim TIM Output Compare handle + * @retval None + */ +__weak void HAL_TIM_OC_MspDeInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_OC_MspDeInit could be implemented in the user file + */ +} + +/** + * @brief Starts the TIM Output Compare signal generation. + * @param htim TIM Output Compare handle + * @param Channel TIM Channel to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OC_Start(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + uint32_t tmpsmcr; + + /* 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) + { + return HAL_ERROR; + } + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + + /* Enable the Output compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM Output Compare signal generation. + * @param htim TIM Output Compare handle + * @param Channel TIM Channel to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + /* Disable the Output compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Starts the TIM Output Compare signal generation in interrupt mode. + * @param htim TIM Output Compare handle + * @param Channel TIM Channel to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpsmcr; + + /* 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) + { + return HAL_ERROR; + } + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Enable the TIM Capture/Compare 1 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Enable the TIM Capture/Compare 2 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Enable the TIM Capture/Compare 3 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3); + break; + } + + case TIM_CHANNEL_4: + { + /* Enable the TIM Capture/Compare 4 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC4); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Enable the Output compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + } + + /* Return function status */ + return status; +} + +/** + * @brief Stops the TIM Output Compare signal generation in interrupt mode. + * @param htim TIM Output Compare handle + * @param Channel TIM Channel to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Disable the TIM Capture/Compare 1 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Disable the TIM Capture/Compare 2 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Disable the TIM Capture/Compare 3 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3); + break; + } + + case TIM_CHANNEL_4: + { + /* Disable the TIM Capture/Compare 4 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC4); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Disable the Output compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + } + + /* Return function status */ + return status; +} + +/** + * @brief Starts the TIM Output Compare signal generation in DMA mode. + * @param htim TIM Output Compare handle + * @param Channel TIM Channel to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @param pData The source Buffer address. + * @param Length The length of data to be transferred from memory to TIM peripheral + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + /* Set the TIM channel state */ + if (TIM_CHANNEL_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_BUSY) + { + return HAL_BUSY; + } + else if (TIM_CHANNEL_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_READY) + { + if ((pData == NULL) && (Length > 0U)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + else + { + return HAL_ERROR; + } + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMADelayPulseCplt; + htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance->CCR1, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + + /* Enable the TIM Capture/Compare 1 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMADelayPulseCplt; + htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance->CCR2, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + + /* Enable the TIM Capture/Compare 2 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMADelayPulseCplt; + htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance->CCR3, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Capture/Compare 3 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3); + break; + } + + case TIM_CHANNEL_4: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMADelayPulseCplt; + htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)pData, (uint32_t)&htim->Instance->CCR4, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Capture/Compare 4 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC4); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Enable the Output compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + } + + /* Return function status */ + return status; +} + +/** + * @brief Stops the TIM Output Compare signal generation in DMA mode. + * @param htim TIM Output Compare handle + * @param Channel TIM Channel to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Disable the TIM Capture/Compare 1 DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); + break; + } + + case TIM_CHANNEL_2: + { + /* Disable the TIM Capture/Compare 2 DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); + break; + } + + case TIM_CHANNEL_3: + { + /* Disable the TIM Capture/Compare 3 DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]); + break; + } + + case TIM_CHANNEL_4: + { + /* Disable the TIM Capture/Compare 4 interrupt */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC4); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC4]); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Disable the Output compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + } + + /* Return function status */ + return status; +} + +/** + * @} + */ + +/** @defgroup TIM_Exported_Functions_Group3 TIM PWM functions + * @brief TIM PWM functions + * +@verbatim + ============================================================================== + ##### TIM PWM functions ##### + ============================================================================== + [..] + This section provides functions allowing to: + (+) Initialize and configure the TIM PWM. + (+) De-initialize the TIM PWM. + (+) Start the TIM PWM. + (+) Stop the TIM PWM. + (+) Start the TIM PWM and enable interrupt. + (+) Stop the TIM PWM and disable interrupt. + (+) Start the TIM PWM and enable DMA transfer. + (+) Stop the TIM PWM and disable DMA transfer. + +@endverbatim + * @{ + */ +/** + * @brief Initializes the TIM PWM Time Base according to the specified + * parameters in the TIM_HandleTypeDef and initializes the associated handle. + * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse) + * requires a timer reset to avoid unexpected direction + * due to DIR bit readonly in center aligned mode. + * 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) +{ + /* Check the TIM handle allocation */ + if (htim == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + assert_param(IS_TIM_PERIOD(htim->Init.Period)); + assert_param(IS_TIM_PRESCALER(htim->Init.Prescaler)); + assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + + if (htim->State == HAL_TIM_STATE_RESET) + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + /* Reset interrupt callbacks to legacy weak callbacks */ + TIM_ResetCallback(htim); + + if (htim->PWM_MspInitCallback == NULL) + { + htim->PWM_MspInitCallback = HAL_TIM_PWM_MspInit; + } + /* 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); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + + /* Init the base time for the PWM */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + + /* Initialize the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + + return HAL_OK; +} + +/** + * @brief DeInitializes the TIM peripheral + * @param htim TIM PWM handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_DeInit(TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + + htim->State = HAL_TIM_STATE_BUSY; + + /* Disable the TIM Peripheral Clock */ + __HAL_TIM_DISABLE(htim); + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + if (htim->PWM_MspDeInitCallback == NULL) + { + htim->PWM_MspDeInitCallback = HAL_TIM_PWM_MspDeInit; + } + /* DeInit the low level hardware */ + htim->PWM_MspDeInitCallback(htim); +#else + /* DeInit the low level hardware: GPIO, CLOCK, NVIC and DMA */ + HAL_TIM_PWM_MspDeInit(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + /* Change the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_RESET; + + /* Change the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + + /* Change TIM state */ + htim->State = HAL_TIM_STATE_RESET; + + /* Release Lock */ + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Initializes the TIM PWM MSP. + * @param htim TIM PWM handle + * @retval None + */ +__weak void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + 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 + */ +} + +/** + * @brief DeInitializes TIM PWM MSP. + * @param htim TIM PWM handle + * @retval None + */ +__weak void HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_PWM_MspDeInit could be implemented in the user file + */ +} + +/** + * @brief Starts the PWM signal generation. + * @param htim TIM handle + * @param Channel TIM Channels to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @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) +{ + uint32_t tmpsmcr; + + /* 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) + { + return HAL_ERROR; + } + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + + /* Enable the Capture compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the PWM signal generation. + * @param htim TIM PWM handle + * @param Channel TIM Channels to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_Stop(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + /* Disable the Capture compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Starts the PWM signal generation in interrupt mode. + * @param htim TIM PWM handle + * @param Channel TIM Channel to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @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_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpsmcr; + + /* 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) + { + return HAL_ERROR; + } + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Enable the TIM Capture/Compare 1 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Enable the TIM Capture/Compare 2 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Enable the TIM Capture/Compare 3 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3); + break; + } + + case TIM_CHANNEL_4: + { + /* Enable the TIM Capture/Compare 4 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC4); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Enable the Capture compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + } + + /* Return function status */ + return status; +} + +/** + * @brief Stops the PWM signal generation in interrupt mode. + * @param htim TIM PWM handle + * @param Channel TIM Channels to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Disable the TIM Capture/Compare 1 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Disable the TIM Capture/Compare 2 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Disable the TIM Capture/Compare 3 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3); + break; + } + + case TIM_CHANNEL_4: + { + /* Disable the TIM Capture/Compare 4 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC4); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Disable the Capture compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + } + + /* Return function status */ + return status; +} + +/** + * @brief Starts the TIM PWM signal generation in DMA mode. + * @param htim TIM PWM handle + * @param Channel TIM Channels to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @param pData The source Buffer address. + * @param Length The length of data to be transferred from memory to TIM peripheral + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + /* Set the TIM channel state */ + if (TIM_CHANNEL_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_BUSY) + { + return HAL_BUSY; + } + else if (TIM_CHANNEL_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_READY) + { + if ((pData == NULL) && (Length > 0U)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + else + { + return HAL_ERROR; + } + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMADelayPulseCplt; + htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance->CCR1, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + + /* Enable the TIM Capture/Compare 1 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMADelayPulseCplt; + htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance->CCR2, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Capture/Compare 2 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMADelayPulseCplt; + htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance->CCR3, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Output Capture/Compare 3 request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3); + break; + } + + case TIM_CHANNEL_4: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMADelayPulseCplt; + htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)pData, (uint32_t)&htim->Instance->CCR4, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Capture/Compare 4 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC4); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Enable the Capture compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + } + + /* Return function status */ + return status; +} + +/** + * @brief Stops the TIM PWM signal generation in DMA mode. + * @param htim TIM PWM handle + * @param Channel TIM Channels to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Disable the TIM Capture/Compare 1 DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); + break; + } + + case TIM_CHANNEL_2: + { + /* Disable the TIM Capture/Compare 2 DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); + break; + } + + case TIM_CHANNEL_3: + { + /* Disable the TIM Capture/Compare 3 DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]); + break; + } + + case TIM_CHANNEL_4: + { + /* Disable the TIM Capture/Compare 4 interrupt */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC4); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC4]); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Disable the Capture compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + } + + /* Return function status */ + return status; +} + +/** + * @} + */ + +/** @defgroup TIM_Exported_Functions_Group4 TIM Input Capture functions + * @brief TIM Input Capture functions + * +@verbatim + ============================================================================== + ##### TIM Input Capture functions ##### + ============================================================================== + [..] + This section provides functions allowing to: + (+) Initialize and configure the TIM Input Capture. + (+) De-initialize the TIM Input Capture. + (+) Start the TIM Input Capture. + (+) Stop the TIM Input Capture. + (+) Start the TIM Input Capture and enable interrupt. + (+) Stop the TIM Input Capture and disable interrupt. + (+) Start the TIM Input Capture and enable DMA transfer. + (+) Stop the TIM Input Capture and disable DMA transfer. + +@endverbatim + * @{ + */ +/** + * @brief Initializes the TIM Input Capture Time base according to the specified + * parameters in the TIM_HandleTypeDef and initializes the associated handle. + * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse) + * requires a timer reset to avoid unexpected direction + * due to DIR bit readonly in center aligned mode. + * Ex: call @ref HAL_TIM_IC_DeInit() before HAL_TIM_IC_Init() + * @param htim TIM Input Capture handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_IC_Init(TIM_HandleTypeDef *htim) +{ + /* Check the TIM handle allocation */ + if (htim == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + assert_param(IS_TIM_PERIOD(htim->Init.Period)); + assert_param(IS_TIM_PRESCALER(htim->Init.Prescaler)); + assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + + if (htim->State == HAL_TIM_STATE_RESET) + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + /* Reset interrupt callbacks to legacy weak callbacks */ + TIM_ResetCallback(htim); + + if (htim->IC_MspInitCallback == NULL) + { + htim->IC_MspInitCallback = HAL_TIM_IC_MspInit; + } + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + htim->IC_MspInitCallback(htim); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ + HAL_TIM_IC_MspInit(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + + /* Init the base time for the input capture */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + + /* Initialize the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + + return HAL_OK; +} + +/** + * @brief DeInitializes the TIM peripheral + * @param htim TIM Input Capture handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_IC_DeInit(TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + + htim->State = HAL_TIM_STATE_BUSY; + + /* Disable the TIM Peripheral Clock */ + __HAL_TIM_DISABLE(htim); + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + if (htim->IC_MspDeInitCallback == NULL) + { + htim->IC_MspDeInitCallback = HAL_TIM_IC_MspDeInit; + } + /* DeInit the low level hardware */ + htim->IC_MspDeInitCallback(htim); +#else + /* DeInit the low level hardware: GPIO, CLOCK, NVIC and DMA */ + HAL_TIM_IC_MspDeInit(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + /* Change the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_RESET; + + /* Change the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + + /* Change TIM state */ + htim->State = HAL_TIM_STATE_RESET; + + /* Release Lock */ + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Initializes the TIM Input Capture MSP. + * @param htim TIM Input Capture handle + * @retval None + */ +__weak void HAL_TIM_IC_MspInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_IC_MspInit could be implemented in the user file + */ +} + +/** + * @brief DeInitializes TIM Input Capture MSP. + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIM_IC_MspDeInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_IC_MspDeInit could be implemented in the user file + */ +} + +/** + * @brief Starts the TIM Input Capture measurement. + * @param htim TIM Input Capture handle + * @param Channel TIM Channels to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_IC_Start(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + uint32_t tmpsmcr; + HAL_TIM_ChannelStateTypeDef channel_state = TIM_CHANNEL_STATE_GET(htim, Channel); + + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + /* Check the TIM channel state */ + if (channel_state != HAL_TIM_CHANNEL_STATE_READY) + { + return HAL_ERROR; + } + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + + /* Enable the Input Capture channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM Input Capture measurement. + * @param htim TIM Input Capture handle + * @param Channel TIM Channels to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_IC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + /* Disable the Input Capture channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Starts the TIM Input Capture measurement in interrupt mode. + * @param htim TIM Input Capture handle + * @param Channel TIM Channels to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_IC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpsmcr; + + HAL_TIM_ChannelStateTypeDef channel_state = TIM_CHANNEL_STATE_GET(htim, Channel); + + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + /* Check the TIM channel state */ + if (channel_state != HAL_TIM_CHANNEL_STATE_READY) + { + return HAL_ERROR; + } + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Enable the TIM Capture/Compare 1 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Enable the TIM Capture/Compare 2 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Enable the TIM Capture/Compare 3 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3); + break; + } + + case TIM_CHANNEL_4: + { + /* Enable the TIM Capture/Compare 4 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC4); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Enable the Input Capture channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + } + + /* Return function status */ + return status; +} + +/** + * @brief Stops the TIM Input Capture measurement in interrupt mode. + * @param htim TIM Input Capture handle + * @param Channel TIM Channels to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_IC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Disable the TIM Capture/Compare 1 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Disable the TIM Capture/Compare 2 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Disable the TIM Capture/Compare 3 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3); + break; + } + + case TIM_CHANNEL_4: + { + /* Disable the TIM Capture/Compare 4 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC4); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Disable the Input Capture channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + } + + /* Return function status */ + return status; +} + +/** + * @brief Starts the TIM Input Capture measurement in DMA mode. + * @param htim TIM Input Capture handle + * @param Channel TIM Channels to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @param pData The destination Buffer address. + * @param Length The length of data to be transferred from TIM peripheral to memory. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_IC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpsmcr; + + HAL_TIM_ChannelStateTypeDef channel_state = TIM_CHANNEL_STATE_GET(htim, Channel); + + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance)); + + /* Set the TIM channel state */ + if (channel_state == HAL_TIM_CHANNEL_STATE_BUSY) + { + return HAL_BUSY; + } + if (channel_state == HAL_TIM_CHANNEL_STATE_READY) + { + if ((pData == NULL) && (Length > 0U)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + else + { + return HAL_ERROR; + } + + /* Enable the Input Capture channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Set the DMA capture callbacks */ + htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t)pData, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Capture/Compare 1 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Set the DMA capture callbacks */ + htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->CCR2, (uint32_t)pData, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Capture/Compare 2 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Set the DMA capture callbacks */ + htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)&htim->Instance->CCR3, (uint32_t)pData, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Capture/Compare 3 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3); + break; + } + + case TIM_CHANNEL_4: + { + /* Set the DMA capture callbacks */ + htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)&htim->Instance->CCR4, (uint32_t)pData, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Capture/Compare 4 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC4); + break; + } + + default: + status = HAL_ERROR; + break; + } + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + + /* Return function status */ + return status; +} + +/** + * @brief Stops the TIM Input Capture measurement in DMA mode. + * @param htim TIM Input Capture handle + * @param Channel TIM Channels to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_IC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance)); + + /* Disable the Input Capture channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Disable the TIM Capture/Compare 1 DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); + break; + } + + case TIM_CHANNEL_2: + { + /* Disable the TIM Capture/Compare 2 DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); + break; + } + + case TIM_CHANNEL_3: + { + /* Disable the TIM Capture/Compare 3 DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]); + break; + } + + case TIM_CHANNEL_4: + { + /* Disable the TIM Capture/Compare 4 DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC4); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC4]); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + } + + /* Return function status */ + return status; +} +/** + * @} + */ + +/** @defgroup TIM_Exported_Functions_Group5 TIM One Pulse functions + * @brief TIM One Pulse functions + * +@verbatim + ============================================================================== + ##### TIM One Pulse functions ##### + ============================================================================== + [..] + This section provides functions allowing to: + (+) Initialize and configure the TIM One Pulse. + (+) De-initialize the TIM One Pulse. + (+) Start the TIM One Pulse. + (+) Stop the TIM One Pulse. + (+) Start the TIM One Pulse and enable interrupt. + (+) Stop the TIM One Pulse and disable interrupt. + (+) Start the TIM One Pulse and enable DMA transfer. + (+) Stop the TIM One Pulse and disable DMA transfer. + +@endverbatim + * @{ + */ +/** + * @brief Initializes the TIM One Pulse Time Base according to the specified + * parameters in the TIM_HandleTypeDef and initializes the associated handle. + * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse) + * requires a timer reset to avoid unexpected direction + * due to DIR bit readonly in center aligned mode. + * Ex: call @ref HAL_TIM_OnePulse_DeInit() before HAL_TIM_OnePulse_Init() + * @note When the timer instance is initialized in One Pulse mode, timer + * channels 1 and channel 2 are reserved and cannot be used for other + * purpose. + * @param htim TIM One Pulse handle + * @param OnePulseMode Select the One pulse mode. + * This parameter can be one of the following values: + * @arg TIM_OPMODE_SINGLE: Only one pulse will be generated. + * @arg TIM_OPMODE_REPETITIVE: Repetitive pulses will be generated. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OnePulse_Init(TIM_HandleTypeDef *htim, uint32_t OnePulseMode) +{ + /* Check the TIM handle allocation */ + if (htim == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + assert_param(IS_TIM_OPM_MODE(OnePulseMode)); + assert_param(IS_TIM_PERIOD(htim->Init.Period)); + assert_param(IS_TIM_PRESCALER(htim->Init.Prescaler)); + assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + + if (htim->State == HAL_TIM_STATE_RESET) + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + /* Reset interrupt callbacks to legacy weak callbacks */ + TIM_ResetCallback(htim); + + if (htim->OnePulse_MspInitCallback == NULL) + { + htim->OnePulse_MspInitCallback = HAL_TIM_OnePulse_MspInit; + } + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + htim->OnePulse_MspInitCallback(htim); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ + HAL_TIM_OnePulse_MspInit(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + + /* Configure the Time base in the One Pulse Mode */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + + /* Reset the OPM Bit */ + htim->Instance->CR1 &= ~TIM_CR1_OPM; + + /* Configure the OPM Mode */ + htim->Instance->CR1 |= OnePulseMode; + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + + /* Initialize the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + + return HAL_OK; +} + +/** + * @brief DeInitializes the TIM One Pulse + * @param htim TIM One Pulse handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OnePulse_DeInit(TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + + htim->State = HAL_TIM_STATE_BUSY; + + /* Disable the TIM Peripheral Clock */ + __HAL_TIM_DISABLE(htim); + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + if (htim->OnePulse_MspDeInitCallback == NULL) + { + htim->OnePulse_MspDeInitCallback = HAL_TIM_OnePulse_MspDeInit; + } + /* DeInit the low level hardware */ + htim->OnePulse_MspDeInitCallback(htim); +#else + /* DeInit the low level hardware: GPIO, CLOCK, NVIC */ + HAL_TIM_OnePulse_MspDeInit(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + /* Change the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_RESET; + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_RESET); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_RESET); + + /* Change TIM state */ + htim->State = HAL_TIM_STATE_RESET; + + /* Release Lock */ + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Initializes the TIM One Pulse MSP. + * @param htim TIM One Pulse handle + * @retval None + */ +__weak void HAL_TIM_OnePulse_MspInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_OnePulse_MspInit could be implemented in the user file + */ +} + +/** + * @brief DeInitializes TIM One Pulse MSP. + * @param htim TIM One Pulse handle + * @retval None + */ +__weak void HAL_TIM_OnePulse_MspDeInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_OnePulse_MspDeInit could be implemented in the user file + */ +} + +/** + * @brief Starts the TIM One Pulse signal generation. + * @note Though OutputChannel parameter is deprecated and ignored by the function + * it has been kept to avoid HAL_TIM API compatibility break. + * @note The pulse output channel is determined when calling + * @ref HAL_TIM_OnePulse_ConfigChannel(). + * @param htim TIM One Pulse handle + * @param OutputChannel See note above + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OnePulse_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel) +{ + HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + + /* Prevent unused argument(s) compilation warning */ + UNUSED(OutputChannel); + + /* Check the TIM channels state */ + if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) + { + return HAL_ERROR; + } + + /* Set the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + + /* Enable the Capture compare and the Input Capture channels + (in the OPM Mode the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) + if TIM_CHANNEL_1 is used as output, the TIM_CHANNEL_2 will be used as input and + if TIM_CHANNEL_1 is used as input, the TIM_CHANNEL_2 will be used as output + whatever the combination, the TIM_CHANNEL_1 and TIM_CHANNEL_2 should be enabled together + + No need to enable the counter, it's enabled automatically by hardware + (the counter starts in response to a stimulus and generate a pulse */ + + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM One Pulse signal generation. + * @note Though OutputChannel parameter is deprecated and ignored by the function + * it has been kept to avoid HAL_TIM API compatibility break. + * @note The pulse output channel is determined when calling + * @ref HAL_TIM_OnePulse_ConfigChannel(). + * @param htim TIM One Pulse handle + * @param OutputChannel See note above + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OnePulse_Stop(TIM_HandleTypeDef *htim, uint32_t OutputChannel) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(OutputChannel); + + /* Disable the Capture compare and the Input Capture channels + (in the OPM Mode the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) + if TIM_CHANNEL_1 is used as output, the TIM_CHANNEL_2 will be used as input and + if TIM_CHANNEL_1 is used as input, the TIM_CHANNEL_2 will be used as output + whatever the combination, the TIM_CHANNEL_1 and TIM_CHANNEL_2 should be disabled together */ + + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Starts the TIM One Pulse signal generation in interrupt mode. + * @note Though OutputChannel parameter is deprecated and ignored by the function + * it has been kept to avoid HAL_TIM API compatibility break. + * @note The pulse output channel is determined when calling + * @ref HAL_TIM_OnePulse_ConfigChannel(). + * @param htim TIM One Pulse handle + * @param OutputChannel See note above + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OnePulse_Start_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel) +{ + HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + + /* Prevent unused argument(s) compilation warning */ + UNUSED(OutputChannel); + + /* Check the TIM channels state */ + if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) + { + return HAL_ERROR; + } + + /* Set the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + + /* Enable the Capture compare and the Input Capture channels + (in the OPM Mode the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) + if TIM_CHANNEL_1 is used as output, the TIM_CHANNEL_2 will be used as input and + if TIM_CHANNEL_1 is used as input, the TIM_CHANNEL_2 will be used as output + whatever the combination, the TIM_CHANNEL_1 and TIM_CHANNEL_2 should be enabled together + + No need to enable the counter, it's enabled automatically by hardware + (the counter starts in response to a stimulus and generate a pulse */ + + /* Enable the TIM Capture/Compare 1 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); + + /* Enable the TIM Capture/Compare 2 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); + + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM One Pulse signal generation in interrupt mode. + * @note Though OutputChannel parameter is deprecated and ignored by the function + * it has been kept to avoid HAL_TIM API compatibility break. + * @note The pulse output channel is determined when calling + * @ref HAL_TIM_OnePulse_ConfigChannel(). + * @param htim TIM One Pulse handle + * @param OutputChannel See note above + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OnePulse_Stop_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(OutputChannel); + + /* Disable the TIM Capture/Compare 1 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1); + + /* Disable the TIM Capture/Compare 2 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2); + + /* Disable the Capture compare and the Input Capture channels + (in the OPM Mode the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) + if TIM_CHANNEL_1 is used as output, the TIM_CHANNEL_2 will be used as input and + if TIM_CHANNEL_1 is used as input, the TIM_CHANNEL_2 will be used as output + whatever the combination, the TIM_CHANNEL_1 and TIM_CHANNEL_2 should be disabled together */ + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + + /* Return function status */ + return HAL_OK; +} + +/** + * @} + */ + +/** @defgroup TIM_Exported_Functions_Group6 TIM Encoder functions + * @brief TIM Encoder functions + * +@verbatim + ============================================================================== + ##### TIM Encoder functions ##### + ============================================================================== + [..] + This section provides functions allowing to: + (+) Initialize and configure the TIM Encoder. + (+) De-initialize the TIM Encoder. + (+) Start the TIM Encoder. + (+) Stop the TIM Encoder. + (+) Start the TIM Encoder and enable interrupt. + (+) Stop the TIM Encoder and disable interrupt. + (+) Start the TIM Encoder and enable DMA transfer. + (+) Stop the TIM Encoder and disable DMA transfer. + +@endverbatim + * @{ + */ +/** + * @brief Initializes the TIM Encoder Interface and initialize the associated handle. + * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse) + * requires a timer reset to avoid unexpected direction + * due to DIR bit readonly in center aligned mode. + * Ex: call @ref HAL_TIM_Encoder_DeInit() before HAL_TIM_Encoder_Init() + * @note Encoder mode and External clock mode 2 are not compatible and must not be selected together + * Ex: A call for @ref HAL_TIM_Encoder_Init will erase the settings of @ref HAL_TIM_ConfigClockSource + * using TIM_CLOCKSOURCE_ETRMODE2 and vice versa + * @note When the timer instance is initialized in Encoder mode, timer + * channels 1 and channel 2 are reserved and cannot be used for other + * purpose. + * @param htim TIM Encoder Interface handle + * @param sConfig TIM Encoder Interface configuration structure + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Encoder_Init(TIM_HandleTypeDef *htim, TIM_Encoder_InitTypeDef *sConfig) +{ + uint32_t tmpsmcr; + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Check the TIM handle allocation */ + if (htim == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance)); + assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + assert_param(IS_TIM_ENCODER_MODE(sConfig->EncoderMode)); + assert_param(IS_TIM_IC_SELECTION(sConfig->IC1Selection)); + assert_param(IS_TIM_IC_SELECTION(sConfig->IC2Selection)); + assert_param(IS_TIM_ENCODERINPUT_POLARITY(sConfig->IC1Polarity)); + assert_param(IS_TIM_ENCODERINPUT_POLARITY(sConfig->IC2Polarity)); + assert_param(IS_TIM_IC_PRESCALER(sConfig->IC1Prescaler)); + assert_param(IS_TIM_IC_PRESCALER(sConfig->IC2Prescaler)); + assert_param(IS_TIM_IC_FILTER(sConfig->IC1Filter)); + assert_param(IS_TIM_IC_FILTER(sConfig->IC2Filter)); + assert_param(IS_TIM_PERIOD(htim->Init.Period)); + assert_param(IS_TIM_PRESCALER(htim->Init.Prescaler)); + + if (htim->State == HAL_TIM_STATE_RESET) + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + /* Reset interrupt callbacks to legacy weak callbacks */ + TIM_ResetCallback(htim); + + if (htim->Encoder_MspInitCallback == NULL) + { + htim->Encoder_MspInitCallback = HAL_TIM_Encoder_MspInit; + } + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + htim->Encoder_MspInitCallback(htim); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ + HAL_TIM_Encoder_MspInit(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + + /* Reset the SMS and ECE bits */ + htim->Instance->SMCR &= ~(TIM_SMCR_SMS | TIM_SMCR_ECE); + + /* Configure the Time base in the Encoder Mode */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + + /* Get the TIMx SMCR register value */ + tmpsmcr = htim->Instance->SMCR; + + /* Get the TIMx CCMR1 register value */ + tmpccmr1 = htim->Instance->CCMR1; + + /* Get the TIMx CCER register value */ + tmpccer = htim->Instance->CCER; + + /* Set the encoder Mode */ + tmpsmcr |= sConfig->EncoderMode; + + /* Select the Capture Compare 1 and the Capture Compare 2 as input */ + tmpccmr1 &= ~(TIM_CCMR1_CC1S | TIM_CCMR1_CC2S); + tmpccmr1 |= (sConfig->IC1Selection | (sConfig->IC2Selection << 8U)); + + /* Set the Capture Compare 1 and the Capture Compare 2 prescalers and filters */ + tmpccmr1 &= ~(TIM_CCMR1_IC1PSC | TIM_CCMR1_IC2PSC); + tmpccmr1 &= ~(TIM_CCMR1_IC1F | TIM_CCMR1_IC2F); + tmpccmr1 |= sConfig->IC1Prescaler | (sConfig->IC2Prescaler << 8U); + tmpccmr1 |= (sConfig->IC1Filter << 4U) | (sConfig->IC2Filter << 12U); + + /* Set the TI1 and the TI2 Polarities */ + tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC2P); + tmpccer &= ~(TIM_CCER_CC1NP | TIM_CCER_CC2NP); + tmpccer |= sConfig->IC1Polarity | (sConfig->IC2Polarity << 4U); + + /* Write to TIMx SMCR */ + htim->Instance->SMCR = tmpsmcr; + + /* Write to TIMx CCMR1 */ + htim->Instance->CCMR1 = tmpccmr1; + + /* Write to TIMx CCER */ + htim->Instance->CCER = tmpccer; + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + + /* Set the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + + return HAL_OK; +} + + +/** + * @brief DeInitializes the TIM Encoder interface + * @param htim TIM Encoder Interface handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Encoder_DeInit(TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + + htim->State = HAL_TIM_STATE_BUSY; + + /* Disable the TIM Peripheral Clock */ + __HAL_TIM_DISABLE(htim); + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + if (htim->Encoder_MspDeInitCallback == NULL) + { + htim->Encoder_MspDeInitCallback = HAL_TIM_Encoder_MspDeInit; + } + /* DeInit the low level hardware */ + htim->Encoder_MspDeInitCallback(htim); +#else + /* DeInit the low level hardware: GPIO, CLOCK, NVIC */ + HAL_TIM_Encoder_MspDeInit(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + /* Change the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_RESET; + + /* Set the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_RESET); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_RESET); + + /* Change TIM state */ + htim->State = HAL_TIM_STATE_RESET; + + /* Release Lock */ + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Initializes the TIM Encoder Interface MSP. + * @param htim TIM Encoder Interface handle + * @retval None + */ +__weak void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_Encoder_MspInit could be implemented in the user file + */ +} + +/** + * @brief DeInitializes TIM Encoder Interface MSP. + * @param htim TIM Encoder Interface handle + * @retval None + */ +__weak void HAL_TIM_Encoder_MspDeInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_Encoder_MspDeInit could be implemented in the user file + */ +} + +/** + * @brief Starts the TIM Encoder Interface. + * @param htim TIM Encoder Interface handle + * @param Channel TIM Channels to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Encoder_Start(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + + /* Check the parameters */ + assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance)); + + /* Set the TIM channel(s) state */ + if (Channel == TIM_CHANNEL_1) + { + if (channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + else if (Channel == TIM_CHANNEL_2) + { + if (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + else + { + if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + + /* Enable the encoder interface channels */ + switch (Channel) + { + case TIM_CHANNEL_1: + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); + break; + } + + case TIM_CHANNEL_2: + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + break; + } + + default : + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + break; + } + } + /* Enable the Peripheral */ + __HAL_TIM_ENABLE(htim); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM Encoder Interface. + * @param htim TIM Encoder Interface handle + * @param Channel TIM Channels to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Encoder_Stop(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + /* Check the parameters */ + assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance)); + + /* Disable the Input Capture channels 1 and 2 + (in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */ + switch (Channel) + { + case TIM_CHANNEL_1: + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); + break; + } + + case TIM_CHANNEL_2: + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + break; + } + + default : + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + break; + } + } + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel(s) state */ + if ((Channel == TIM_CHANNEL_1) || (Channel == TIM_CHANNEL_2)) + { + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Starts the TIM Encoder Interface in interrupt mode. + * @param htim TIM Encoder Interface handle + * @param Channel TIM Channels to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Encoder_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + + /* Check the parameters */ + assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance)); + + /* Set the TIM channel(s) state */ + if (Channel == TIM_CHANNEL_1) + { + if (channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + else if (Channel == TIM_CHANNEL_2) + { + if (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + else + { + if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + + /* Enable the encoder interface channels */ + /* Enable the capture compare Interrupts 1 and/or 2 */ + switch (Channel) + { + case TIM_CHANNEL_1: + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); + break; + } + + case TIM_CHANNEL_2: + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); + break; + } + + default : + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); + break; + } + } + + /* Enable the Peripheral */ + __HAL_TIM_ENABLE(htim); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM Encoder Interface in interrupt mode. + * @param htim TIM Encoder Interface handle + * @param Channel TIM Channels to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Encoder_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + /* Check the parameters */ + assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance)); + + /* Disable the Input Capture channels 1 and 2 + (in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */ + if (Channel == TIM_CHANNEL_1) + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); + + /* Disable the capture compare Interrupts 1 */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1); + } + else if (Channel == TIM_CHANNEL_2) + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + + /* Disable the capture compare Interrupts 2 */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2); + } + else + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + + /* Disable the capture compare Interrupts 1 and 2 */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1); + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2); + } + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel(s) state */ + if ((Channel == TIM_CHANNEL_1) || (Channel == TIM_CHANNEL_2)) + { + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Starts the TIM Encoder Interface in DMA mode. + * @param htim TIM Encoder Interface handle + * @param Channel TIM Channels to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected + * @param pData1 The destination Buffer address for IC1. + * @param pData2 The destination Buffer address for IC2. + * @param Length The length of data to be transferred from TIM peripheral to memory. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Encoder_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData1, + uint32_t *pData2, uint16_t Length) +{ + HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + + /* Check the parameters */ + assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance)); + + /* Set the TIM channel(s) state */ + if (Channel == TIM_CHANNEL_1) + { + if (channel_1_state == HAL_TIM_CHANNEL_STATE_BUSY) + { + return HAL_BUSY; + } + else if (channel_1_state == HAL_TIM_CHANNEL_STATE_READY) + { + if ((pData1 == NULL) && (Length > 0U)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + else + { + return HAL_ERROR; + } + } + else if (Channel == TIM_CHANNEL_2) + { + if (channel_2_state == HAL_TIM_CHANNEL_STATE_BUSY) + { + return HAL_BUSY; + } + else if (channel_2_state == HAL_TIM_CHANNEL_STATE_READY) + { + if ((pData2 == NULL) && (Length > 0U)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + else + { + return HAL_ERROR; + } + } + else + { + if ((channel_1_state == HAL_TIM_CHANNEL_STATE_BUSY) + || (channel_2_state == HAL_TIM_CHANNEL_STATE_BUSY)) + { + return HAL_BUSY; + } + else if ((channel_1_state == HAL_TIM_CHANNEL_STATE_READY) + && (channel_2_state == HAL_TIM_CHANNEL_STATE_READY)) + { + if ((((pData1 == NULL) || (pData2 == NULL))) && (Length > 0U)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + else + { + return HAL_ERROR; + } + } + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Set the DMA capture callbacks */ + htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t)pData1, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Input Capture DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1); + + /* Enable the Capture compare channel */ + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); + + /* Enable the Peripheral */ + __HAL_TIM_ENABLE(htim); + + break; + } + + case TIM_CHANNEL_2: + { + /* Set the DMA capture callbacks */ + htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError; + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->CCR2, (uint32_t)pData2, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Input Capture DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2); + + /* Enable the Capture compare channel */ + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + + /* Enable the Peripheral */ + __HAL_TIM_ENABLE(htim); + + break; + } + + default: + { + /* Set the DMA capture callbacks */ + htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t)pData1, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + + /* Set the DMA capture callbacks */ + htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->CCR2, (uint32_t)pData2, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + + /* Enable the TIM Input Capture DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1); + /* Enable the TIM Input Capture DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2); + + /* Enable the Capture compare channel */ + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + + /* Enable the Peripheral */ + __HAL_TIM_ENABLE(htim); + + break; + } + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM Encoder Interface in DMA mode. + * @param htim TIM Encoder Interface handle + * @param Channel TIM Channels to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Encoder_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + /* Check the parameters */ + assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance)); + + /* Disable the Input Capture channels 1 and 2 + (in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */ + if (Channel == TIM_CHANNEL_1) + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); + + /* Disable the capture compare DMA Request 1 */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); + } + else if (Channel == TIM_CHANNEL_2) + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + + /* Disable the capture compare DMA Request 2 */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); + } + else + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + + /* Disable the capture compare DMA Request 1 and 2 */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1); + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); + } + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel(s) state */ + if ((Channel == TIM_CHANNEL_1) || (Channel == TIM_CHANNEL_2)) + { + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @} + */ +/** @defgroup TIM_Exported_Functions_Group7 TIM IRQ handler management + * @brief TIM IRQ handler management + * +@verbatim + ============================================================================== + ##### IRQ handler management ##### + ============================================================================== + [..] + This section provides Timer IRQ handler function. + +@endverbatim + * @{ + */ +/** + * @brief This function handles TIM interrupts requests. + * @param htim TIM handle + * @retval None + */ +void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim) +{ + /* Capture compare 1 event */ + if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC1) != RESET) + { + if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC1) != RESET) + { + { + __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC1); + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; + + /* Input capture event */ + if ((htim->Instance->CCMR1 & TIM_CCMR1_CC1S) != 0x00U) + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->IC_CaptureCallback(htim); +#else + HAL_TIM_IC_CaptureCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + /* Output compare event */ + else + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->OC_DelayElapsedCallback(htim); + htim->PWM_PulseFinishedCallback(htim); +#else + HAL_TIM_OC_DelayElapsedCallback(htim); + HAL_TIM_PWM_PulseFinishedCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; + } + } + } + /* Capture compare 2 event */ + if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC2) != RESET) + { + if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC2) != RESET) + { + __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC2); + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; + /* Input capture event */ + if ((htim->Instance->CCMR1 & TIM_CCMR1_CC2S) != 0x00U) + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->IC_CaptureCallback(htim); +#else + HAL_TIM_IC_CaptureCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + /* Output compare event */ + else + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->OC_DelayElapsedCallback(htim); + htim->PWM_PulseFinishedCallback(htim); +#else + HAL_TIM_OC_DelayElapsedCallback(htim); + HAL_TIM_PWM_PulseFinishedCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; + } + } + /* Capture compare 3 event */ + if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC3) != RESET) + { + if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC3) != RESET) + { + __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC3); + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; + /* Input capture event */ + if ((htim->Instance->CCMR2 & TIM_CCMR2_CC3S) != 0x00U) + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->IC_CaptureCallback(htim); +#else + HAL_TIM_IC_CaptureCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + /* Output compare event */ + else + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->OC_DelayElapsedCallback(htim); + htim->PWM_PulseFinishedCallback(htim); +#else + HAL_TIM_OC_DelayElapsedCallback(htim); + HAL_TIM_PWM_PulseFinishedCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; + } + } + /* Capture compare 4 event */ + if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC4) != RESET) + { + if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC4) != RESET) + { + __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC4); + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; + /* Input capture event */ + if ((htim->Instance->CCMR2 & TIM_CCMR2_CC4S) != 0x00U) + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->IC_CaptureCallback(htim); +#else + HAL_TIM_IC_CaptureCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + /* Output compare event */ + else + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->OC_DelayElapsedCallback(htim); + htim->PWM_PulseFinishedCallback(htim); +#else + HAL_TIM_OC_DelayElapsedCallback(htim); + HAL_TIM_PWM_PulseFinishedCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; + } + } + /* TIM Update event */ + if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_UPDATE) != RESET) + { + if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_UPDATE) != RESET) + { + __HAL_TIM_CLEAR_IT(htim, TIM_IT_UPDATE); +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->PeriodElapsedCallback(htim); +#else + HAL_TIM_PeriodElapsedCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + } + /* TIM Trigger detection event */ + if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_TRIGGER) != RESET) + { + if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_TRIGGER) != RESET) + { + __HAL_TIM_CLEAR_IT(htim, TIM_IT_TRIGGER); +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->TriggerCallback(htim); +#else + HAL_TIM_TriggerCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + } +} + +/** + * @} + */ + +/** @defgroup TIM_Exported_Functions_Group8 TIM Peripheral Control functions + * @brief TIM Peripheral Control functions + * +@verbatim + ============================================================================== + ##### Peripheral Control functions ##### + ============================================================================== + [..] + This section provides functions allowing to: + (+) Configure The Input Output channels for OC, PWM, IC or One Pulse mode. + (+) Configure External Clock source. + (+) Configure Master and the Slave synchronization. + (+) Configure the DMA Burst Mode. + +@endverbatim + * @{ + */ + +/** + * @brief Initializes the TIM Output Compare Channels according to the specified + * parameters in the TIM_OC_InitTypeDef. + * @param htim TIM Output Compare handle + * @param sConfig TIM Output Compare configuration structure + * @param Channel TIM Channels to configure + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OC_ConfigChannel(TIM_HandleTypeDef *htim, + TIM_OC_InitTypeDef *sConfig, + uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_CHANNELS(Channel)); + assert_param(IS_TIM_OC_MODE(sConfig->OCMode)); + assert_param(IS_TIM_OC_POLARITY(sConfig->OCPolarity)); + + /* Process Locked */ + __HAL_LOCK(htim); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); + + /* Configure the TIM Channel 1 in Output Compare */ + TIM_OC1_SetConfig(htim->Instance, sConfig); + break; + } + + case TIM_CHANNEL_2: + { + /* Check the parameters */ + assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); + + /* Configure the TIM Channel 2 in Output Compare */ + TIM_OC2_SetConfig(htim->Instance, sConfig); + break; + } + + case TIM_CHANNEL_3: + { + /* Check the parameters */ + assert_param(IS_TIM_CC3_INSTANCE(htim->Instance)); + + /* Configure the TIM Channel 3 in Output Compare */ + TIM_OC3_SetConfig(htim->Instance, sConfig); + break; + } + + case TIM_CHANNEL_4: + { + /* Check the parameters */ + assert_param(IS_TIM_CC4_INSTANCE(htim->Instance)); + + /* Configure the TIM Channel 4 in Output Compare */ + TIM_OC4_SetConfig(htim->Instance, sConfig); + break; + } + + default: + status = HAL_ERROR; + break; + } + + __HAL_UNLOCK(htim); + + return status; +} + +/** + * @brief Initializes the TIM Input Capture Channels according to the specified + * parameters in the TIM_IC_InitTypeDef. + * @param htim TIM IC handle + * @param sConfig TIM Input Capture configuration structure + * @param Channel TIM Channel to configure + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_IC_ConfigChannel(TIM_HandleTypeDef *htim, TIM_IC_InitTypeDef *sConfig, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); + assert_param(IS_TIM_IC_POLARITY(sConfig->ICPolarity)); + assert_param(IS_TIM_IC_SELECTION(sConfig->ICSelection)); + assert_param(IS_TIM_IC_PRESCALER(sConfig->ICPrescaler)); + assert_param(IS_TIM_IC_FILTER(sConfig->ICFilter)); + + /* Process Locked */ + __HAL_LOCK(htim); + + if (Channel == TIM_CHANNEL_1) + { + /* TI1 Configuration */ + TIM_TI1_SetConfig(htim->Instance, + sConfig->ICPolarity, + sConfig->ICSelection, + sConfig->ICFilter); + + /* Reset the IC1PSC Bits */ + htim->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC; + + /* Set the IC1PSC value */ + htim->Instance->CCMR1 |= sConfig->ICPrescaler; + } + else if (Channel == TIM_CHANNEL_2) + { + /* TI2 Configuration */ + assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); + + TIM_TI2_SetConfig(htim->Instance, + sConfig->ICPolarity, + sConfig->ICSelection, + sConfig->ICFilter); + + /* Reset the IC2PSC Bits */ + htim->Instance->CCMR1 &= ~TIM_CCMR1_IC2PSC; + + /* Set the IC2PSC value */ + htim->Instance->CCMR1 |= (sConfig->ICPrescaler << 8U); + } + else if (Channel == TIM_CHANNEL_3) + { + /* TI3 Configuration */ + assert_param(IS_TIM_CC3_INSTANCE(htim->Instance)); + + TIM_TI3_SetConfig(htim->Instance, + sConfig->ICPolarity, + sConfig->ICSelection, + sConfig->ICFilter); + + /* Reset the IC3PSC Bits */ + htim->Instance->CCMR2 &= ~TIM_CCMR2_IC3PSC; + + /* Set the IC3PSC value */ + htim->Instance->CCMR2 |= sConfig->ICPrescaler; + } + else if (Channel == TIM_CHANNEL_4) + { + /* TI4 Configuration */ + assert_param(IS_TIM_CC4_INSTANCE(htim->Instance)); + + TIM_TI4_SetConfig(htim->Instance, + sConfig->ICPolarity, + sConfig->ICSelection, + sConfig->ICFilter); + + /* Reset the IC4PSC Bits */ + htim->Instance->CCMR2 &= ~TIM_CCMR2_IC4PSC; + + /* Set the IC4PSC value */ + htim->Instance->CCMR2 |= (sConfig->ICPrescaler << 8U); + } + else + { + status = HAL_ERROR; + } + + __HAL_UNLOCK(htim); + + return status; +} + +/** + * @brief Initializes the TIM PWM channels according to the specified + * parameters in the TIM_OC_InitTypeDef. + * @param htim TIM PWM handle + * @param sConfig TIM PWM configuration structure + * @param Channel TIM Channels to be configured + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, + TIM_OC_InitTypeDef *sConfig, + uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_CHANNELS(Channel)); + 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); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); + + /* Configure the Channel 1 in PWM mode */ + TIM_OC1_SetConfig(htim->Instance, sConfig); + + /* Set the Preload enable bit for channel1 */ + htim->Instance->CCMR1 |= TIM_CCMR1_OC1PE; + + /* Configure the Output Fast mode */ + htim->Instance->CCMR1 &= ~TIM_CCMR1_OC1FE; + htim->Instance->CCMR1 |= sConfig->OCFastMode; + break; + } + + case TIM_CHANNEL_2: + { + /* Check the parameters */ + assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); + + /* Configure the Channel 2 in PWM mode */ + TIM_OC2_SetConfig(htim->Instance, sConfig); + + /* Set the Preload enable bit for channel2 */ + htim->Instance->CCMR1 |= TIM_CCMR1_OC2PE; + + /* Configure the Output Fast mode */ + htim->Instance->CCMR1 &= ~TIM_CCMR1_OC2FE; + htim->Instance->CCMR1 |= sConfig->OCFastMode << 8U; + break; + } + + case TIM_CHANNEL_3: + { + /* Check the parameters */ + assert_param(IS_TIM_CC3_INSTANCE(htim->Instance)); + + /* Configure the Channel 3 in PWM mode */ + TIM_OC3_SetConfig(htim->Instance, sConfig); + + /* Set the Preload enable bit for channel3 */ + htim->Instance->CCMR2 |= TIM_CCMR2_OC3PE; + + /* Configure the Output Fast mode */ + htim->Instance->CCMR2 &= ~TIM_CCMR2_OC3FE; + htim->Instance->CCMR2 |= sConfig->OCFastMode; + break; + } + + case TIM_CHANNEL_4: + { + /* Check the parameters */ + assert_param(IS_TIM_CC4_INSTANCE(htim->Instance)); + + /* Configure the Channel 4 in PWM mode */ + TIM_OC4_SetConfig(htim->Instance, sConfig); + + /* Set the Preload enable bit for channel4 */ + htim->Instance->CCMR2 |= TIM_CCMR2_OC4PE; + + /* Configure the Output Fast mode */ + htim->Instance->CCMR2 &= ~TIM_CCMR2_OC4FE; + htim->Instance->CCMR2 |= sConfig->OCFastMode << 8U; + break; + } + + default: + status = HAL_ERROR; + break; + } + + __HAL_UNLOCK(htim); + + return status; +} + +/** + * @brief Initializes the TIM One Pulse Channels according to the specified + * parameters in the TIM_OnePulse_InitTypeDef. + * @param htim TIM One Pulse handle + * @param sConfig TIM One Pulse configuration structure + * @param OutputChannel TIM output channel to configure + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @param InputChannel TIM input Channel to configure + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @note To output a waveform with a minimum delay user can enable the fast + * mode by calling the @ref __HAL_TIM_ENABLE_OCxFAST macro. Then CCx + * output is forced in response to the edge detection on TIx input, + * without taking in account the comparison. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OnePulse_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OnePulse_InitTypeDef *sConfig, + uint32_t OutputChannel, uint32_t InputChannel) +{ + HAL_StatusTypeDef status = HAL_OK; + TIM_OC_InitTypeDef temp1; + + /* Check the parameters */ + assert_param(IS_TIM_OPM_CHANNELS(OutputChannel)); + assert_param(IS_TIM_OPM_CHANNELS(InputChannel)); + + if (OutputChannel != InputChannel) + { + /* Process Locked */ + __HAL_LOCK(htim); + + htim->State = HAL_TIM_STATE_BUSY; + + /* Extract the Output compare configuration from sConfig structure */ + temp1.OCMode = sConfig->OCMode; + temp1.Pulse = sConfig->Pulse; + temp1.OCPolarity = sConfig->OCPolarity; + + switch (OutputChannel) + { + case TIM_CHANNEL_1: + { + assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); + + TIM_OC1_SetConfig(htim->Instance, &temp1); + break; + } + + case TIM_CHANNEL_2: + { + assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); + + TIM_OC2_SetConfig(htim->Instance, &temp1); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + switch (InputChannel) + { + case TIM_CHANNEL_1: + { + assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); + + TIM_TI1_SetConfig(htim->Instance, sConfig->ICPolarity, + sConfig->ICSelection, sConfig->ICFilter); + + /* Reset the IC1PSC Bits */ + htim->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC; + + /* Select the Trigger source */ + htim->Instance->SMCR &= ~TIM_SMCR_TS; + htim->Instance->SMCR |= TIM_TS_TI1FP1; + + /* Select the Slave Mode */ + htim->Instance->SMCR &= ~TIM_SMCR_SMS; + htim->Instance->SMCR |= TIM_SLAVEMODE_TRIGGER; + break; + } + + case TIM_CHANNEL_2: + { + assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); + + TIM_TI2_SetConfig(htim->Instance, sConfig->ICPolarity, + sConfig->ICSelection, sConfig->ICFilter); + + /* Reset the IC2PSC Bits */ + htim->Instance->CCMR1 &= ~TIM_CCMR1_IC2PSC; + + /* Select the Trigger source */ + htim->Instance->SMCR &= ~TIM_SMCR_TS; + htim->Instance->SMCR |= TIM_TS_TI2FP2; + + /* Select the Slave Mode */ + htim->Instance->SMCR &= ~TIM_SMCR_SMS; + htim->Instance->SMCR |= TIM_SLAVEMODE_TRIGGER; + break; + } + + default: + status = HAL_ERROR; + break; + } + } + + htim->State = HAL_TIM_STATE_READY; + + __HAL_UNLOCK(htim); + + return status; + } + else + { + return HAL_ERROR; + } +} + +/** + * @brief Configure the DMA Burst to transfer Data from the memory to the TIM peripheral + * @param htim TIM handle + * @param BurstBaseAddress TIM Base address from where the DMA will start the Data write + * This parameter can be one of the following values: + * @arg TIM_DMABASE_CR1 + * @arg TIM_DMABASE_CR2 + * @arg TIM_DMABASE_SMCR + * @arg TIM_DMABASE_DIER + * @arg TIM_DMABASE_SR + * @arg TIM_DMABASE_EGR + * @arg TIM_DMABASE_CCMR1 + * @arg TIM_DMABASE_CCMR2 + * @arg TIM_DMABASE_CCER + * @arg TIM_DMABASE_CNT + * @arg TIM_DMABASE_PSC + * @arg TIM_DMABASE_ARR + * @arg TIM_DMABASE_CCR1 + * @arg TIM_DMABASE_CCR2 + * @arg TIM_DMABASE_CCR3 + * @arg TIM_DMABASE_CCR4 + * @arg TIM_DMABASE_OR + * @param BurstRequestSrc TIM DMA Request sources + * This parameter can be one of the following values: + * @arg TIM_DMA_UPDATE: TIM update Interrupt source + * @arg TIM_DMA_CC1: TIM Capture Compare 1 DMA source + * @arg TIM_DMA_CC2: TIM Capture Compare 2 DMA source + * @arg TIM_DMA_CC3: TIM Capture Compare 3 DMA source + * @arg TIM_DMA_CC4: TIM Capture Compare 4 DMA source + * @arg TIM_DMA_TRIGGER: TIM Trigger DMA source + * @param BurstBuffer The Buffer address. + * @param BurstLength DMA Burst length. This parameter can be one value + * between: TIM_DMABURSTLENGTH_1TRANSFER and TIM_DMABURSTLENGTH_18TRANSFERS. + * @note This function should be used only when BurstLength is equal to DMA data transfer length. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, + uint32_t BurstRequestSrc, uint32_t *BurstBuffer, uint32_t BurstLength) +{ + HAL_StatusTypeDef status = HAL_OK; + + if (status == HAL_OK) + { + status = HAL_TIM_DMABurst_MultiWriteStart(htim, BurstBaseAddress, BurstRequestSrc, BurstBuffer, BurstLength, + ((BurstLength) >> 8U) + 1U); + } + + + return status; +} + +/** + * @brief Configure the DMA Burst to transfer multiple Data from the memory to the TIM peripheral + * @param htim TIM handle + * @param BurstBaseAddress TIM Base address from where the DMA will start the Data write + * This parameter can be one of the following values: + * @arg TIM_DMABASE_CR1 + * @arg TIM_DMABASE_CR2 + * @arg TIM_DMABASE_SMCR + * @arg TIM_DMABASE_DIER + * @arg TIM_DMABASE_SR + * @arg TIM_DMABASE_EGR + * @arg TIM_DMABASE_CCMR1 + * @arg TIM_DMABASE_CCMR2 + * @arg TIM_DMABASE_CCER + * @arg TIM_DMABASE_CNT + * @arg TIM_DMABASE_PSC + * @arg TIM_DMABASE_ARR + * @arg TIM_DMABASE_CCR1 + * @arg TIM_DMABASE_CCR2 + * @arg TIM_DMABASE_CCR3 + * @arg TIM_DMABASE_CCR4 + * @arg TIM_DMABASE_OR + * @param BurstRequestSrc TIM DMA Request sources + * This parameter can be one of the following values: + * @arg TIM_DMA_UPDATE: TIM update Interrupt source + * @arg TIM_DMA_CC1: TIM Capture Compare 1 DMA source + * @arg TIM_DMA_CC2: TIM Capture Compare 2 DMA source + * @arg TIM_DMA_CC3: TIM Capture Compare 3 DMA source + * @arg TIM_DMA_CC4: TIM Capture Compare 4 DMA source + * @arg TIM_DMA_TRIGGER: TIM Trigger DMA source + * @param BurstBuffer The Buffer address. + * @param BurstLength DMA Burst length. This parameter can be one value + * between: TIM_DMABURSTLENGTH_1TRANSFER and TIM_DMABURSTLENGTH_18TRANSFERS. + * @param DataLength Data length. This parameter can be one value + * between 1 and 0xFFFF. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_DMABurst_MultiWriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, + uint32_t BurstRequestSrc, uint32_t *BurstBuffer, + uint32_t BurstLength, uint32_t DataLength) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_DMABURST_INSTANCE(htim->Instance)); + assert_param(IS_TIM_DMA_BASE(BurstBaseAddress)); + assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc)); + assert_param(IS_TIM_DMA_LENGTH(BurstLength)); + assert_param(IS_TIM_DMA_DATA_LENGTH(DataLength)); + + if (htim->DMABurstState == HAL_DMA_BURST_STATE_BUSY) + { + return HAL_BUSY; + } + else if (htim->DMABurstState == HAL_DMA_BURST_STATE_READY) + { + if ((BurstBuffer == NULL) && (BurstLength > 0U)) + { + return HAL_ERROR; + } + else + { + htim->DMABurstState = HAL_DMA_BURST_STATE_BUSY; + } + } + else + { + /* nothing to do */ + } + + switch (BurstRequestSrc) + { + case TIM_DMA_UPDATE: + { + /* Set the DMA Period elapsed callbacks */ + htim->hdma[TIM_DMA_ID_UPDATE]->XferCpltCallback = TIM_DMAPeriodElapsedCplt; + htim->hdma[TIM_DMA_ID_UPDATE]->XferHalfCpltCallback = TIM_DMAPeriodElapsedHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_UPDATE]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_UPDATE], (uint32_t)BurstBuffer, + (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + case TIM_DMA_CC1: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMADelayPulseCplt; + htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)BurstBuffer, + (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + case TIM_DMA_CC2: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMADelayPulseCplt; + htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)BurstBuffer, + (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + case TIM_DMA_CC3: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMADelayPulseCplt; + htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)BurstBuffer, + (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + case TIM_DMA_CC4: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMADelayPulseCplt; + htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)BurstBuffer, + (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + case TIM_DMA_TRIGGER: + { + /* Set the DMA trigger callbacks */ + htim->hdma[TIM_DMA_ID_TRIGGER]->XferCpltCallback = TIM_DMATriggerCplt; + htim->hdma[TIM_DMA_ID_TRIGGER]->XferHalfCpltCallback = TIM_DMATriggerHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_TRIGGER]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_TRIGGER], (uint32_t)BurstBuffer, + (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Configure the DMA Burst Mode */ + htim->Instance->DCR = (BurstBaseAddress | BurstLength); + /* Enable the TIM DMA Request */ + __HAL_TIM_ENABLE_DMA(htim, BurstRequestSrc); + } + + /* Return function status */ + return status; +} + +/** + * @brief Stops the TIM DMA Burst mode + * @param htim TIM handle + * @param BurstRequestSrc TIM DMA Request sources to disable + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc)); + + /* Abort the DMA transfer (at least disable the DMA channel) */ + switch (BurstRequestSrc) + { + case TIM_DMA_UPDATE: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_UPDATE]); + break; + } + case TIM_DMA_CC1: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); + break; + } + case TIM_DMA_CC2: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); + break; + } + case TIM_DMA_CC3: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]); + break; + } + case TIM_DMA_CC4: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC4]); + break; + } + case TIM_DMA_TRIGGER: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_TRIGGER]); + break; + } + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Disable the TIM Update DMA request */ + __HAL_TIM_DISABLE_DMA(htim, BurstRequestSrc); + + /* Change the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + } + + /* Return function status */ + return status; +} + +/** + * @brief Configure the DMA Burst to transfer Data from the TIM peripheral to the memory + * @param htim TIM handle + * @param BurstBaseAddress TIM Base address from where the DMA will start the Data read + * This parameter can be one of the following values: + * @arg TIM_DMABASE_CR1 + * @arg TIM_DMABASE_CR2 + * @arg TIM_DMABASE_SMCR + * @arg TIM_DMABASE_DIER + * @arg TIM_DMABASE_SR + * @arg TIM_DMABASE_EGR + * @arg TIM_DMABASE_CCMR1 + * @arg TIM_DMABASE_CCMR2 + * @arg TIM_DMABASE_CCER + * @arg TIM_DMABASE_CNT + * @arg TIM_DMABASE_PSC + * @arg TIM_DMABASE_ARR + * @arg TIM_DMABASE_CCR1 + * @arg TIM_DMABASE_CCR2 + * @arg TIM_DMABASE_CCR3 + * @arg TIM_DMABASE_CCR4 + * @arg TIM_DMABASE_OR + * @param BurstRequestSrc TIM DMA Request sources + * This parameter can be one of the following values: + * @arg TIM_DMA_UPDATE: TIM update Interrupt source + * @arg TIM_DMA_CC1: TIM Capture Compare 1 DMA source + * @arg TIM_DMA_CC2: TIM Capture Compare 2 DMA source + * @arg TIM_DMA_CC3: TIM Capture Compare 3 DMA source + * @arg TIM_DMA_CC4: TIM Capture Compare 4 DMA source + * @arg TIM_DMA_TRIGGER: TIM Trigger DMA source + * @param BurstBuffer The Buffer address. + * @param BurstLength DMA Burst length. This parameter can be one value + * between: TIM_DMABURSTLENGTH_1TRANSFER and TIM_DMABURSTLENGTH_18TRANSFERS. + * @note This function should be used only when BurstLength is equal to DMA data transfer length. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, + uint32_t BurstRequestSrc, uint32_t *BurstBuffer, uint32_t BurstLength) +{ + HAL_StatusTypeDef status = HAL_OK; + + if (status == HAL_OK) + { + status = HAL_TIM_DMABurst_MultiReadStart(htim, BurstBaseAddress, BurstRequestSrc, BurstBuffer, BurstLength, + ((BurstLength) >> 8U) + 1U); + } + + return status; +} + +/** + * @brief Configure the DMA Burst to transfer Data from the TIM peripheral to the memory + * @param htim TIM handle + * @param BurstBaseAddress TIM Base address from where the DMA will start the Data read + * This parameter can be one of the following values: + * @arg TIM_DMABASE_CR1 + * @arg TIM_DMABASE_CR2 + * @arg TIM_DMABASE_SMCR + * @arg TIM_DMABASE_DIER + * @arg TIM_DMABASE_SR + * @arg TIM_DMABASE_EGR + * @arg TIM_DMABASE_CCMR1 + * @arg TIM_DMABASE_CCMR2 + * @arg TIM_DMABASE_CCER + * @arg TIM_DMABASE_CNT + * @arg TIM_DMABASE_PSC + * @arg TIM_DMABASE_ARR + * @arg TIM_DMABASE_CCR1 + * @arg TIM_DMABASE_CCR2 + * @arg TIM_DMABASE_CCR3 + * @arg TIM_DMABASE_CCR4 + * @arg TIM_DMABASE_OR + * @param BurstRequestSrc TIM DMA Request sources + * This parameter can be one of the following values: + * @arg TIM_DMA_UPDATE: TIM update Interrupt source + * @arg TIM_DMA_CC1: TIM Capture Compare 1 DMA source + * @arg TIM_DMA_CC2: TIM Capture Compare 2 DMA source + * @arg TIM_DMA_CC3: TIM Capture Compare 3 DMA source + * @arg TIM_DMA_CC4: TIM Capture Compare 4 DMA source + * @arg TIM_DMA_TRIGGER: TIM Trigger DMA source + * @param BurstBuffer The Buffer address. + * @param BurstLength DMA Burst length. This parameter can be one value + * between: TIM_DMABURSTLENGTH_1TRANSFER and TIM_DMABURSTLENGTH_18TRANSFERS. + * @param DataLength Data length. This parameter can be one value + * between 1 and 0xFFFF. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_DMABurst_MultiReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, + uint32_t BurstRequestSrc, uint32_t *BurstBuffer, + uint32_t BurstLength, uint32_t DataLength) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_DMABURST_INSTANCE(htim->Instance)); + assert_param(IS_TIM_DMA_BASE(BurstBaseAddress)); + assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc)); + assert_param(IS_TIM_DMA_LENGTH(BurstLength)); + assert_param(IS_TIM_DMA_DATA_LENGTH(DataLength)); + + if (htim->DMABurstState == HAL_DMA_BURST_STATE_BUSY) + { + return HAL_BUSY; + } + else if (htim->DMABurstState == HAL_DMA_BURST_STATE_READY) + { + if ((BurstBuffer == NULL) && (BurstLength > 0U)) + { + return HAL_ERROR; + } + else + { + htim->DMABurstState = HAL_DMA_BURST_STATE_BUSY; + } + } + else + { + /* nothing to do */ + } + switch (BurstRequestSrc) + { + case TIM_DMA_UPDATE: + { + /* Set the DMA Period elapsed callbacks */ + htim->hdma[TIM_DMA_ID_UPDATE]->XferCpltCallback = TIM_DMAPeriodElapsedCplt; + htim->hdma[TIM_DMA_ID_UPDATE]->XferHalfCpltCallback = TIM_DMAPeriodElapsedHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_UPDATE]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_UPDATE], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, + DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + case TIM_DMA_CC1: + { + /* Set the DMA capture callbacks */ + htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, + DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + case TIM_DMA_CC2: + { + /* Set the DMA capture callbacks */ + htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, + DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + case TIM_DMA_CC3: + { + /* Set the DMA capture callbacks */ + htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, + DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + case TIM_DMA_CC4: + { + /* Set the DMA capture callbacks */ + htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, + DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + case TIM_DMA_TRIGGER: + { + /* Set the DMA trigger callbacks */ + htim->hdma[TIM_DMA_ID_TRIGGER]->XferCpltCallback = TIM_DMATriggerCplt; + htim->hdma[TIM_DMA_ID_TRIGGER]->XferHalfCpltCallback = TIM_DMATriggerHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_TRIGGER]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_TRIGGER], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, + DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Configure the DMA Burst Mode */ + htim->Instance->DCR = (BurstBaseAddress | BurstLength); + + /* Enable the TIM DMA Request */ + __HAL_TIM_ENABLE_DMA(htim, BurstRequestSrc); + } + + /* Return function status */ + return status; +} + +/** + * @brief Stop the DMA burst reading + * @param htim TIM handle + * @param BurstRequestSrc TIM DMA Request sources to disable. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc)); + + /* Abort the DMA transfer (at least disable the DMA channel) */ + switch (BurstRequestSrc) + { + case TIM_DMA_UPDATE: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_UPDATE]); + break; + } + case TIM_DMA_CC1: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); + break; + } + case TIM_DMA_CC2: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); + break; + } + case TIM_DMA_CC3: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]); + break; + } + case TIM_DMA_CC4: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC4]); + break; + } + case TIM_DMA_TRIGGER: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_TRIGGER]); + break; + } + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Disable the TIM Update DMA request */ + __HAL_TIM_DISABLE_DMA(htim, BurstRequestSrc); + + /* Change the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + } + + /* Return function status */ + return status; +} + +/** + * @brief Generate a software event + * @param htim TIM handle + * @param EventSource specifies the event source. + * This parameter can be one of the following values: + * @arg TIM_EVENTSOURCE_UPDATE: Timer update Event source + * @arg TIM_EVENTSOURCE_CC1: Timer Capture Compare 1 Event source + * @arg TIM_EVENTSOURCE_CC2: Timer Capture Compare 2 Event source + * @arg TIM_EVENTSOURCE_CC3: Timer Capture Compare 3 Event source + * @arg TIM_EVENTSOURCE_CC4: Timer Capture Compare 4 Event source + * @arg TIM_EVENTSOURCE_TRIGGER: Timer Trigger Event source + * @note Basic timers can only generate an update event. + * @retval HAL status + */ + +HAL_StatusTypeDef HAL_TIM_GenerateEvent(TIM_HandleTypeDef *htim, uint32_t EventSource) +{ + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + assert_param(IS_TIM_EVENT_SOURCE(EventSource)); + + /* Process Locked */ + __HAL_LOCK(htim); + + /* Change the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + + /* Set the event sources */ + htim->Instance->EGR = EventSource; + + /* Change the TIM state */ + htim->State = HAL_TIM_STATE_READY; + + __HAL_UNLOCK(htim); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Configures the OCRef clear feature + * @param htim TIM handle + * @param sClearInputConfig pointer to a TIM_ClearInputConfigTypeDef structure that + * contains the OCREF clear feature and parameters for the TIM peripheral. + * @param Channel specifies the TIM Channel + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 + * @arg TIM_CHANNEL_2: TIM Channel 2 + * @arg TIM_CHANNEL_3: TIM Channel 3 + * @arg TIM_CHANNEL_4: TIM Channel 4 + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_ConfigOCrefClear(TIM_HandleTypeDef *htim, + TIM_ClearInputConfigTypeDef *sClearInputConfig, + uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_OCXREF_CLEAR_INSTANCE(htim->Instance)); + assert_param(IS_TIM_CLEARINPUT_SOURCE(sClearInputConfig->ClearInputSource)); + + /* Process Locked */ + __HAL_LOCK(htim); + + htim->State = HAL_TIM_STATE_BUSY; + + switch (sClearInputConfig->ClearInputSource) + { + case TIM_CLEARINPUTSOURCE_NONE: + { + /* Clear the OCREF clear selection bit and the the ETR Bits */ + CLEAR_BIT(htim->Instance->SMCR, (TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP)); + break; + } + + case TIM_CLEARINPUTSOURCE_ETR: + { + /* Check the parameters */ + assert_param(IS_TIM_CLEARINPUT_POLARITY(sClearInputConfig->ClearInputPolarity)); + assert_param(IS_TIM_CLEARINPUT_PRESCALER(sClearInputConfig->ClearInputPrescaler)); + assert_param(IS_TIM_CLEARINPUT_FILTER(sClearInputConfig->ClearInputFilter)); + + /* When OCRef clear feature is used with ETR source, ETR prescaler must be off */ + if (sClearInputConfig->ClearInputPrescaler != TIM_CLEARINPUTPRESCALER_DIV1) + { + htim->State = HAL_TIM_STATE_READY; + __HAL_UNLOCK(htim); + return HAL_ERROR; + } + + TIM_ETR_SetConfig(htim->Instance, + sClearInputConfig->ClearInputPrescaler, + sClearInputConfig->ClearInputPolarity, + sClearInputConfig->ClearInputFilter); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + switch (Channel) + { + case TIM_CHANNEL_1: + { + if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE) + { + /* Enable the OCREF clear feature for Channel 1 */ + SET_BIT(htim->Instance->CCMR1, TIM_CCMR1_OC1CE); + } + else + { + /* Disable the OCREF clear feature for Channel 1 */ + CLEAR_BIT(htim->Instance->CCMR1, TIM_CCMR1_OC1CE); + } + break; + } + case TIM_CHANNEL_2: + { + if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE) + { + /* Enable the OCREF clear feature for Channel 2 */ + SET_BIT(htim->Instance->CCMR1, TIM_CCMR1_OC2CE); + } + else + { + /* Disable the OCREF clear feature for Channel 2 */ + CLEAR_BIT(htim->Instance->CCMR1, TIM_CCMR1_OC2CE); + } + break; + } + case TIM_CHANNEL_3: + { + if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE) + { + /* Enable the OCREF clear feature for Channel 3 */ + SET_BIT(htim->Instance->CCMR2, TIM_CCMR2_OC3CE); + } + else + { + /* Disable the OCREF clear feature for Channel 3 */ + CLEAR_BIT(htim->Instance->CCMR2, TIM_CCMR2_OC3CE); + } + break; + } + case TIM_CHANNEL_4: + { + if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE) + { + /* Enable the OCREF clear feature for Channel 4 */ + SET_BIT(htim->Instance->CCMR2, TIM_CCMR2_OC4CE); + } + else + { + /* Disable the OCREF clear feature for Channel 4 */ + CLEAR_BIT(htim->Instance->CCMR2, TIM_CCMR2_OC4CE); + } + break; + } + default: + break; + } + } + + htim->State = HAL_TIM_STATE_READY; + + __HAL_UNLOCK(htim); + + return status; +} + +/** + * @brief Configures the clock source to be used + * @param htim TIM handle + * @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, TIM_ClockConfigTypeDef *sClockSourceConfig) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpsmcr; + + /* Process Locked */ + __HAL_LOCK(htim); + + htim->State = HAL_TIM_STATE_BUSY; + + /* Check the parameters */ + assert_param(IS_TIM_CLOCKSOURCE(sClockSourceConfig->ClockSource)); + + /* Reset the SMS, TS, ECE, ETPS and ETRF bits */ + tmpsmcr = htim->Instance->SMCR; + tmpsmcr &= ~(TIM_SMCR_SMS | TIM_SMCR_TS); + tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); + htim->Instance->SMCR = tmpsmcr; + + switch (sClockSourceConfig->ClockSource) + { + case TIM_CLOCKSOURCE_INTERNAL: + { + assert_param(IS_TIM_INSTANCE(htim->Instance)); + break; + } + + case TIM_CLOCKSOURCE_ETRMODE1: + { + /* Check whether or not the timer instance supports external trigger input mode 1 (ETRF)*/ + assert_param(IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCE(htim->Instance)); + + /* Check ETR input conditioning related parameters */ + 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, + sClockSourceConfig->ClockPrescaler, + sClockSourceConfig->ClockPolarity, + sClockSourceConfig->ClockFilter); + + /* Select the External clock mode1 and the ETRF trigger */ + tmpsmcr = htim->Instance->SMCR; + tmpsmcr |= (TIM_SLAVEMODE_EXTERNAL1 | TIM_CLOCKSOURCE_ETRMODE1); + /* Write to TIMx SMCR */ + htim->Instance->SMCR = tmpsmcr; + break; + } + + case TIM_CLOCKSOURCE_ETRMODE2: + { + /* Check whether or not the timer instance supports external trigger input mode 2 (ETRF)*/ + assert_param(IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(htim->Instance)); + + /* Check ETR input conditioning related parameters */ + 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, + sClockSourceConfig->ClockPrescaler, + sClockSourceConfig->ClockPolarity, + sClockSourceConfig->ClockFilter); + /* Enable the External clock mode2 */ + htim->Instance->SMCR |= TIM_SMCR_ECE; + break; + } + + case TIM_CLOCKSOURCE_TI1: + { + /* Check whether or not the timer instance supports external clock mode 1 */ + assert_param(IS_TIM_CLOCKSOURCE_TIX_INSTANCE(htim->Instance)); + + /* 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, + sClockSourceConfig->ClockPolarity, + sClockSourceConfig->ClockFilter); + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1); + break; + } + + case TIM_CLOCKSOURCE_TI2: + { + /* Check whether or not the timer instance supports external clock mode 1 (ETRF)*/ + assert_param(IS_TIM_CLOCKSOURCE_TIX_INSTANCE(htim->Instance)); + + /* 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, + sClockSourceConfig->ClockPolarity, + sClockSourceConfig->ClockFilter); + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI2); + break; + } + + case TIM_CLOCKSOURCE_TI1ED: + { + /* Check whether or not the timer instance supports external clock mode 1 */ + assert_param(IS_TIM_CLOCKSOURCE_TIX_INSTANCE(htim->Instance)); + + /* 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, + sClockSourceConfig->ClockPolarity, + sClockSourceConfig->ClockFilter); + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1ED); + break; + } + + case TIM_CLOCKSOURCE_ITR0: + case TIM_CLOCKSOURCE_ITR1: + case TIM_CLOCKSOURCE_ITR2: + 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); + break; + } + + default: + status = HAL_ERROR; + break; + } + htim->State = HAL_TIM_STATE_READY; + + __HAL_UNLOCK(htim); + + return status; +} + +/** + * @brief Selects the signal connected to the TI1 input: direct from CH1_input + * or a XOR combination between CH1_input, CH2_input & CH3_input + * @param htim TIM handle. + * @param TI1_Selection Indicate whether or not channel 1 is connected to the + * output of a XOR gate. + * This parameter can be one of the following values: + * @arg TIM_TI1SELECTION_CH1: The TIMx_CH1 pin is connected to TI1 input + * @arg TIM_TI1SELECTION_XORCOMBINATION: The TIMx_CH1, CH2 and CH3 + * pins are connected to the TI1 input (XOR combination) + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_ConfigTI1Input(TIM_HandleTypeDef *htim, uint32_t TI1_Selection) +{ + uint32_t tmpcr2; + + /* Check the parameters */ + assert_param(IS_TIM_XOR_INSTANCE(htim->Instance)); + assert_param(IS_TIM_TI1SELECTION(TI1_Selection)); + + /* Get the TIMx CR2 register value */ + tmpcr2 = htim->Instance->CR2; + + /* Reset the TI1 selection */ + tmpcr2 &= ~TIM_CR2_TI1S; + + /* Set the TI1 selection */ + tmpcr2 |= TI1_Selection; + + /* Write to TIMxCR2 */ + htim->Instance->CR2 = tmpcr2; + + return HAL_OK; +} + +/** + * @brief Configures the TIM in Slave mode + * @param htim TIM handle. + * @param sSlaveConfig pointer to a TIM_SlaveConfigTypeDef structure that + * contains the selected trigger (internal trigger input, filtered + * timer input or external trigger input) and the Slave mode + * (Disable, Reset, Gated, Trigger, External clock mode 1). + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro(TIM_HandleTypeDef *htim, TIM_SlaveConfigTypeDef *sSlaveConfig) +{ + /* Check the parameters */ + assert_param(IS_TIM_SLAVE_INSTANCE(htim->Instance)); + assert_param(IS_TIM_SLAVE_MODE(sSlaveConfig->SlaveMode)); + assert_param(IS_TIM_TRIGGER_SELECTION(sSlaveConfig->InputTrigger)); + + __HAL_LOCK(htim); + + htim->State = HAL_TIM_STATE_BUSY; + + if (TIM_SlaveTimer_SetConfig(htim, sSlaveConfig) != HAL_OK) + { + htim->State = HAL_TIM_STATE_READY; + __HAL_UNLOCK(htim); + return HAL_ERROR; + } + + /* Disable Trigger Interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_TRIGGER); + + /* Disable Trigger DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_TRIGGER); + + htim->State = HAL_TIM_STATE_READY; + + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Configures the TIM in Slave mode in interrupt mode + * @param htim TIM handle. + * @param sSlaveConfig pointer to a TIM_SlaveConfigTypeDef structure that + * contains the selected trigger (internal trigger input, filtered + * timer input or external trigger input) and the Slave mode + * (Disable, Reset, Gated, Trigger, External clock mode 1). + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro_IT(TIM_HandleTypeDef *htim, + TIM_SlaveConfigTypeDef *sSlaveConfig) +{ + /* Check the parameters */ + assert_param(IS_TIM_SLAVE_INSTANCE(htim->Instance)); + assert_param(IS_TIM_SLAVE_MODE(sSlaveConfig->SlaveMode)); + assert_param(IS_TIM_TRIGGER_SELECTION(sSlaveConfig->InputTrigger)); + + __HAL_LOCK(htim); + + htim->State = HAL_TIM_STATE_BUSY; + + if (TIM_SlaveTimer_SetConfig(htim, sSlaveConfig) != HAL_OK) + { + htim->State = HAL_TIM_STATE_READY; + __HAL_UNLOCK(htim); + return HAL_ERROR; + } + + /* Enable Trigger Interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_TRIGGER); + + /* Disable Trigger DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_TRIGGER); + + htim->State = HAL_TIM_STATE_READY; + + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Read the captured value from Capture Compare unit + * @param htim TIM handle. + * @param Channel TIM Channels to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval Captured value + */ +uint32_t HAL_TIM_ReadCapturedValue(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + uint32_t tmpreg = 0U; + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); + + /* Return the capture 1 value */ + tmpreg = htim->Instance->CCR1; + + break; + } + case TIM_CHANNEL_2: + { + /* Check the parameters */ + assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); + + /* Return the capture 2 value */ + tmpreg = htim->Instance->CCR2; + + break; + } + + case TIM_CHANNEL_3: + { + /* Check the parameters */ + assert_param(IS_TIM_CC3_INSTANCE(htim->Instance)); + + /* Return the capture 3 value */ + tmpreg = htim->Instance->CCR3; + + break; + } + + case TIM_CHANNEL_4: + { + /* Check the parameters */ + assert_param(IS_TIM_CC4_INSTANCE(htim->Instance)); + + /* Return the capture 4 value */ + tmpreg = htim->Instance->CCR4; + + break; + } + + default: + break; + } + + return tmpreg; +} + +/** + * @} + */ + +/** @defgroup TIM_Exported_Functions_Group9 TIM Callbacks functions + * @brief TIM Callbacks functions + * +@verbatim + ============================================================================== + ##### TIM Callbacks functions ##### + ============================================================================== + [..] + This section provides TIM callback functions: + (+) TIM Period elapsed callback + (+) TIM Output Compare callback + (+) TIM Input capture callback + (+) TIM Trigger callback + (+) TIM Error callback + +@endverbatim + * @{ + */ + +/** + * @brief Period elapsed callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + 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 + */ +} + +/** + * @brief Period elapsed half complete callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIM_PeriodElapsedHalfCpltCallback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_PeriodElapsedHalfCpltCallback could be implemented in the user file + */ +} + +/** + * @brief Output Compare callback in non-blocking mode + * @param htim TIM OC handle + * @retval None + */ +__weak void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + 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 + */ +} + +/** + * @brief Input Capture callback in non-blocking mode + * @param htim TIM IC handle + * @retval None + */ +__weak void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + 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 + */ +} + +/** + * @brief Input Capture half complete callback in non-blocking mode + * @param htim TIM IC handle + * @retval None + */ +__weak void HAL_TIM_IC_CaptureHalfCpltCallback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_IC_CaptureHalfCpltCallback could be implemented in the user file + */ +} + +/** + * @brief PWM Pulse finished callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + 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 + */ +} + +/** + * @brief PWM Pulse finished half complete callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIM_PWM_PulseFinishedHalfCpltCallback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_PWM_PulseFinishedHalfCpltCallback could be implemented in the user file + */ +} + +/** + * @brief Hall Trigger detection callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + 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 + */ +} + +/** + * @brief Hall Trigger detection half complete callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIM_TriggerHalfCpltCallback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_TriggerHalfCpltCallback could be implemented in the user file + */ +} + +/** + * @brief Timer error callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIM_ErrorCallback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_ErrorCallback could be implemented in the user file + */ +} + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +/** + * @brief Register a User TIM callback to be used instead of the weak predefined callback + * @param htim tim handle + * @param CallbackID ID of the callback to be registered + * This parameter can be one of the following values: + * @arg @ref HAL_TIM_BASE_MSPINIT_CB_ID Base MspInit Callback ID + * @arg @ref HAL_TIM_BASE_MSPDEINIT_CB_ID Base MspDeInit Callback ID + * @arg @ref HAL_TIM_IC_MSPINIT_CB_ID IC MspInit Callback ID + * @arg @ref HAL_TIM_IC_MSPDEINIT_CB_ID IC MspDeInit Callback ID + * @arg @ref HAL_TIM_OC_MSPINIT_CB_ID OC MspInit Callback ID + * @arg @ref HAL_TIM_OC_MSPDEINIT_CB_ID OC MspDeInit Callback ID + * @arg @ref HAL_TIM_PWM_MSPINIT_CB_ID PWM MspInit Callback ID + * @arg @ref HAL_TIM_PWM_MSPDEINIT_CB_ID PWM MspDeInit Callback ID + * @arg @ref HAL_TIM_ONE_PULSE_MSPINIT_CB_ID One Pulse MspInit Callback ID + * @arg @ref HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID One Pulse MspDeInit Callback ID + * @arg @ref HAL_TIM_ENCODER_MSPINIT_CB_ID Encoder MspInit Callback ID + * @arg @ref HAL_TIM_ENCODER_MSPDEINIT_CB_ID Encoder MspDeInit Callback ID + * @arg @ref HAL_TIM_PERIOD_ELAPSED_CB_ID Period Elapsed Callback ID + * @arg @ref HAL_TIM_PERIOD_ELAPSED_HALF_CB_ID Period Elapsed half complete Callback ID + * @arg @ref HAL_TIM_TRIGGER_CB_ID Trigger Callback ID + * @arg @ref HAL_TIM_TRIGGER_HALF_CB_ID Trigger half complete Callback ID + * @arg @ref HAL_TIM_IC_CAPTURE_CB_ID Input Capture Callback ID + * @arg @ref HAL_TIM_IC_CAPTURE_HALF_CB_ID Input Capture half complete Callback ID + * @arg @ref HAL_TIM_OC_DELAY_ELAPSED_CB_ID Output Compare Delay Elapsed Callback ID + * @arg @ref HAL_TIM_PWM_PULSE_FINISHED_CB_ID PWM Pulse Finished Callback ID + * @arg @ref HAL_TIM_PWM_PULSE_FINISHED_HALF_CB_ID PWM Pulse Finished half complete Callback ID + * @arg @ref HAL_TIM_ERROR_CB_ID Error Callback ID + * @param pCallback pointer to the callback function + * @retval status + */ +HAL_StatusTypeDef HAL_TIM_RegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID, + pTIM_CallbackTypeDef pCallback) +{ + HAL_StatusTypeDef status = HAL_OK; + + if (pCallback == NULL) + { + return HAL_ERROR; + } + /* Process locked */ + __HAL_LOCK(htim); + + if (htim->State == HAL_TIM_STATE_READY) + { + switch (CallbackID) + { + case HAL_TIM_BASE_MSPINIT_CB_ID : + htim->Base_MspInitCallback = pCallback; + break; + + case HAL_TIM_BASE_MSPDEINIT_CB_ID : + htim->Base_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_IC_MSPINIT_CB_ID : + htim->IC_MspInitCallback = pCallback; + break; + + case HAL_TIM_IC_MSPDEINIT_CB_ID : + htim->IC_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_OC_MSPINIT_CB_ID : + htim->OC_MspInitCallback = pCallback; + break; + + case HAL_TIM_OC_MSPDEINIT_CB_ID : + htim->OC_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_PWM_MSPINIT_CB_ID : + htim->PWM_MspInitCallback = pCallback; + break; + + case HAL_TIM_PWM_MSPDEINIT_CB_ID : + htim->PWM_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_ONE_PULSE_MSPINIT_CB_ID : + htim->OnePulse_MspInitCallback = pCallback; + break; + + case HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID : + htim->OnePulse_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_ENCODER_MSPINIT_CB_ID : + htim->Encoder_MspInitCallback = pCallback; + break; + + case HAL_TIM_ENCODER_MSPDEINIT_CB_ID : + htim->Encoder_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_PERIOD_ELAPSED_CB_ID : + htim->PeriodElapsedCallback = pCallback; + break; + + case HAL_TIM_PERIOD_ELAPSED_HALF_CB_ID : + htim->PeriodElapsedHalfCpltCallback = pCallback; + break; + + case HAL_TIM_TRIGGER_CB_ID : + htim->TriggerCallback = pCallback; + break; + + case HAL_TIM_TRIGGER_HALF_CB_ID : + htim->TriggerHalfCpltCallback = pCallback; + break; + + case HAL_TIM_IC_CAPTURE_CB_ID : + htim->IC_CaptureCallback = pCallback; + break; + + case HAL_TIM_IC_CAPTURE_HALF_CB_ID : + htim->IC_CaptureHalfCpltCallback = pCallback; + break; + + case HAL_TIM_OC_DELAY_ELAPSED_CB_ID : + htim->OC_DelayElapsedCallback = pCallback; + break; + + case HAL_TIM_PWM_PULSE_FINISHED_CB_ID : + htim->PWM_PulseFinishedCallback = pCallback; + break; + + case HAL_TIM_PWM_PULSE_FINISHED_HALF_CB_ID : + htim->PWM_PulseFinishedHalfCpltCallback = pCallback; + break; + + case HAL_TIM_ERROR_CB_ID : + htim->ErrorCallback = pCallback; + break; + + default : + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else if (htim->State == HAL_TIM_STATE_RESET) + { + switch (CallbackID) + { + case HAL_TIM_BASE_MSPINIT_CB_ID : + htim->Base_MspInitCallback = pCallback; + break; + + case HAL_TIM_BASE_MSPDEINIT_CB_ID : + htim->Base_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_IC_MSPINIT_CB_ID : + htim->IC_MspInitCallback = pCallback; + break; + + case HAL_TIM_IC_MSPDEINIT_CB_ID : + htim->IC_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_OC_MSPINIT_CB_ID : + htim->OC_MspInitCallback = pCallback; + break; + + case HAL_TIM_OC_MSPDEINIT_CB_ID : + htim->OC_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_PWM_MSPINIT_CB_ID : + htim->PWM_MspInitCallback = pCallback; + break; + + case HAL_TIM_PWM_MSPDEINIT_CB_ID : + htim->PWM_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_ONE_PULSE_MSPINIT_CB_ID : + htim->OnePulse_MspInitCallback = pCallback; + break; + + case HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID : + htim->OnePulse_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_ENCODER_MSPINIT_CB_ID : + htim->Encoder_MspInitCallback = pCallback; + break; + + case HAL_TIM_ENCODER_MSPDEINIT_CB_ID : + htim->Encoder_MspDeInitCallback = pCallback; + break; + + default : + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else + { + /* Return error status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(htim); + + return status; +} + +/** + * @brief Unregister a TIM callback + * TIM callback is redirected to the weak predefined callback + * @param htim tim handle + * @param CallbackID ID of the callback to be unregistered + * This parameter can be one of the following values: + * @arg @ref HAL_TIM_BASE_MSPINIT_CB_ID Base MspInit Callback ID + * @arg @ref HAL_TIM_BASE_MSPDEINIT_CB_ID Base MspDeInit Callback ID + * @arg @ref HAL_TIM_IC_MSPINIT_CB_ID IC MspInit Callback ID + * @arg @ref HAL_TIM_IC_MSPDEINIT_CB_ID IC MspDeInit Callback ID + * @arg @ref HAL_TIM_OC_MSPINIT_CB_ID OC MspInit Callback ID + * @arg @ref HAL_TIM_OC_MSPDEINIT_CB_ID OC MspDeInit Callback ID + * @arg @ref HAL_TIM_PWM_MSPINIT_CB_ID PWM MspInit Callback ID + * @arg @ref HAL_TIM_PWM_MSPDEINIT_CB_ID PWM MspDeInit Callback ID + * @arg @ref HAL_TIM_ONE_PULSE_MSPINIT_CB_ID One Pulse MspInit Callback ID + * @arg @ref HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID One Pulse MspDeInit Callback ID + * @arg @ref HAL_TIM_ENCODER_MSPINIT_CB_ID Encoder MspInit Callback ID + * @arg @ref HAL_TIM_ENCODER_MSPDEINIT_CB_ID Encoder MspDeInit Callback ID + * @arg @ref HAL_TIM_PERIOD_ELAPSED_CB_ID Period Elapsed Callback ID + * @arg @ref HAL_TIM_PERIOD_ELAPSED_HALF_CB_ID Period Elapsed half complete Callback ID + * @arg @ref HAL_TIM_TRIGGER_CB_ID Trigger Callback ID + * @arg @ref HAL_TIM_TRIGGER_HALF_CB_ID Trigger half complete Callback ID + * @arg @ref HAL_TIM_IC_CAPTURE_CB_ID Input Capture Callback ID + * @arg @ref HAL_TIM_IC_CAPTURE_HALF_CB_ID Input Capture half complete Callback ID + * @arg @ref HAL_TIM_OC_DELAY_ELAPSED_CB_ID Output Compare Delay Elapsed Callback ID + * @arg @ref HAL_TIM_PWM_PULSE_FINISHED_CB_ID PWM Pulse Finished Callback ID + * @arg @ref HAL_TIM_PWM_PULSE_FINISHED_HALF_CB_ID PWM Pulse Finished half complete Callback ID + * @arg @ref HAL_TIM_ERROR_CB_ID Error Callback ID + * @retval status + */ +HAL_StatusTypeDef HAL_TIM_UnRegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Process locked */ + __HAL_LOCK(htim); + + if (htim->State == HAL_TIM_STATE_READY) + { + switch (CallbackID) + { + case HAL_TIM_BASE_MSPINIT_CB_ID : + /* Legacy weak Base MspInit Callback */ + htim->Base_MspInitCallback = HAL_TIM_Base_MspInit; + break; + + case HAL_TIM_BASE_MSPDEINIT_CB_ID : + /* Legacy weak Base Msp DeInit Callback */ + htim->Base_MspDeInitCallback = HAL_TIM_Base_MspDeInit; + break; + + case HAL_TIM_IC_MSPINIT_CB_ID : + /* Legacy weak IC Msp Init Callback */ + htim->IC_MspInitCallback = HAL_TIM_IC_MspInit; + break; + + case HAL_TIM_IC_MSPDEINIT_CB_ID : + /* Legacy weak IC Msp DeInit Callback */ + htim->IC_MspDeInitCallback = HAL_TIM_IC_MspDeInit; + break; + + case HAL_TIM_OC_MSPINIT_CB_ID : + /* Legacy weak OC Msp Init Callback */ + htim->OC_MspInitCallback = HAL_TIM_OC_MspInit; + break; + + case HAL_TIM_OC_MSPDEINIT_CB_ID : + /* Legacy weak OC Msp DeInit Callback */ + htim->OC_MspDeInitCallback = HAL_TIM_OC_MspDeInit; + break; + + case HAL_TIM_PWM_MSPINIT_CB_ID : + /* Legacy weak PWM Msp Init Callback */ + htim->PWM_MspInitCallback = HAL_TIM_PWM_MspInit; + break; + + case HAL_TIM_PWM_MSPDEINIT_CB_ID : + /* Legacy weak PWM Msp DeInit Callback */ + htim->PWM_MspDeInitCallback = HAL_TIM_PWM_MspDeInit; + break; + + case HAL_TIM_ONE_PULSE_MSPINIT_CB_ID : + /* Legacy weak One Pulse Msp Init Callback */ + htim->OnePulse_MspInitCallback = HAL_TIM_OnePulse_MspInit; + break; + + case HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID : + /* Legacy weak One Pulse Msp DeInit Callback */ + htim->OnePulse_MspDeInitCallback = HAL_TIM_OnePulse_MspDeInit; + break; + + case HAL_TIM_ENCODER_MSPINIT_CB_ID : + /* Legacy weak Encoder Msp Init Callback */ + htim->Encoder_MspInitCallback = HAL_TIM_Encoder_MspInit; + break; + + case HAL_TIM_ENCODER_MSPDEINIT_CB_ID : + /* Legacy weak Encoder Msp DeInit Callback */ + htim->Encoder_MspDeInitCallback = HAL_TIM_Encoder_MspDeInit; + break; + + case HAL_TIM_PERIOD_ELAPSED_CB_ID : + /* Legacy weak Period Elapsed Callback */ + htim->PeriodElapsedCallback = HAL_TIM_PeriodElapsedCallback; + break; + + case HAL_TIM_PERIOD_ELAPSED_HALF_CB_ID : + /* Legacy weak Period Elapsed half complete Callback */ + htim->PeriodElapsedHalfCpltCallback = HAL_TIM_PeriodElapsedHalfCpltCallback; + break; + + case HAL_TIM_TRIGGER_CB_ID : + /* Legacy weak Trigger Callback */ + htim->TriggerCallback = HAL_TIM_TriggerCallback; + break; + + case HAL_TIM_TRIGGER_HALF_CB_ID : + /* Legacy weak Trigger half complete Callback */ + htim->TriggerHalfCpltCallback = HAL_TIM_TriggerHalfCpltCallback; + break; + + case HAL_TIM_IC_CAPTURE_CB_ID : + /* Legacy weak IC Capture Callback */ + htim->IC_CaptureCallback = HAL_TIM_IC_CaptureCallback; + break; + + case HAL_TIM_IC_CAPTURE_HALF_CB_ID : + /* Legacy weak IC Capture half complete Callback */ + htim->IC_CaptureHalfCpltCallback = HAL_TIM_IC_CaptureHalfCpltCallback; + break; + + case HAL_TIM_OC_DELAY_ELAPSED_CB_ID : + /* Legacy weak OC Delay Elapsed Callback */ + htim->OC_DelayElapsedCallback = HAL_TIM_OC_DelayElapsedCallback; + break; + + case HAL_TIM_PWM_PULSE_FINISHED_CB_ID : + /* Legacy weak PWM Pulse Finished Callback */ + htim->PWM_PulseFinishedCallback = HAL_TIM_PWM_PulseFinishedCallback; + break; + + case HAL_TIM_PWM_PULSE_FINISHED_HALF_CB_ID : + /* Legacy weak PWM Pulse Finished half complete Callback */ + htim->PWM_PulseFinishedHalfCpltCallback = HAL_TIM_PWM_PulseFinishedHalfCpltCallback; + break; + + case HAL_TIM_ERROR_CB_ID : + /* Legacy weak Error Callback */ + htim->ErrorCallback = HAL_TIM_ErrorCallback; + break; + + default : + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else if (htim->State == HAL_TIM_STATE_RESET) + { + switch (CallbackID) + { + case HAL_TIM_BASE_MSPINIT_CB_ID : + /* Legacy weak Base MspInit Callback */ + htim->Base_MspInitCallback = HAL_TIM_Base_MspInit; + break; + + case HAL_TIM_BASE_MSPDEINIT_CB_ID : + /* Legacy weak Base Msp DeInit Callback */ + htim->Base_MspDeInitCallback = HAL_TIM_Base_MspDeInit; + break; + + case HAL_TIM_IC_MSPINIT_CB_ID : + /* Legacy weak IC Msp Init Callback */ + htim->IC_MspInitCallback = HAL_TIM_IC_MspInit; + break; + + case HAL_TIM_IC_MSPDEINIT_CB_ID : + /* Legacy weak IC Msp DeInit Callback */ + htim->IC_MspDeInitCallback = HAL_TIM_IC_MspDeInit; + break; + + case HAL_TIM_OC_MSPINIT_CB_ID : + /* Legacy weak OC Msp Init Callback */ + htim->OC_MspInitCallback = HAL_TIM_OC_MspInit; + break; + + case HAL_TIM_OC_MSPDEINIT_CB_ID : + /* Legacy weak OC Msp DeInit Callback */ + htim->OC_MspDeInitCallback = HAL_TIM_OC_MspDeInit; + break; + + case HAL_TIM_PWM_MSPINIT_CB_ID : + /* Legacy weak PWM Msp Init Callback */ + htim->PWM_MspInitCallback = HAL_TIM_PWM_MspInit; + break; + + case HAL_TIM_PWM_MSPDEINIT_CB_ID : + /* Legacy weak PWM Msp DeInit Callback */ + htim->PWM_MspDeInitCallback = HAL_TIM_PWM_MspDeInit; + break; + + case HAL_TIM_ONE_PULSE_MSPINIT_CB_ID : + /* Legacy weak One Pulse Msp Init Callback */ + htim->OnePulse_MspInitCallback = HAL_TIM_OnePulse_MspInit; + break; + + case HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID : + /* Legacy weak One Pulse Msp DeInit Callback */ + htim->OnePulse_MspDeInitCallback = HAL_TIM_OnePulse_MspDeInit; + break; + + case HAL_TIM_ENCODER_MSPINIT_CB_ID : + /* Legacy weak Encoder Msp Init Callback */ + htim->Encoder_MspInitCallback = HAL_TIM_Encoder_MspInit; + break; + + case HAL_TIM_ENCODER_MSPDEINIT_CB_ID : + /* Legacy weak Encoder Msp DeInit Callback */ + htim->Encoder_MspDeInitCallback = HAL_TIM_Encoder_MspDeInit; + break; + + default : + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else + { + /* Return error status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(htim); + + return status; +} +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + +/** + * @} + */ + +/** @defgroup TIM_Exported_Functions_Group10 TIM Peripheral State functions + * @brief TIM Peripheral State functions + * +@verbatim + ============================================================================== + ##### Peripheral State functions ##### + ============================================================================== + [..] + This subsection permits to get in run-time the status of the peripheral + and the data flow. + +@endverbatim + * @{ + */ + +/** + * @brief Return the TIM Base handle state. + * @param htim TIM Base handle + * @retval HAL state + */ +HAL_TIM_StateTypeDef HAL_TIM_Base_GetState(TIM_HandleTypeDef *htim) +{ + return htim->State; +} + +/** + * @brief Return the TIM OC handle state. + * @param htim TIM Output Compare handle + * @retval HAL state + */ +HAL_TIM_StateTypeDef HAL_TIM_OC_GetState(TIM_HandleTypeDef *htim) +{ + return htim->State; +} + +/** + * @brief Return the TIM PWM handle state. + * @param htim TIM handle + * @retval HAL state + */ +HAL_TIM_StateTypeDef HAL_TIM_PWM_GetState(TIM_HandleTypeDef *htim) +{ + return htim->State; +} + +/** + * @brief Return the TIM Input Capture handle state. + * @param htim TIM IC handle + * @retval HAL state + */ +HAL_TIM_StateTypeDef HAL_TIM_IC_GetState(TIM_HandleTypeDef *htim) +{ + return htim->State; +} + +/** + * @brief Return the TIM One Pulse Mode handle state. + * @param htim TIM OPM handle + * @retval HAL state + */ +HAL_TIM_StateTypeDef HAL_TIM_OnePulse_GetState(TIM_HandleTypeDef *htim) +{ + return htim->State; +} + +/** + * @brief Return the TIM Encoder Mode handle state. + * @param htim TIM Encoder Interface handle + * @retval HAL state + */ +HAL_TIM_StateTypeDef HAL_TIM_Encoder_GetState(TIM_HandleTypeDef *htim) +{ + return htim->State; +} + +/** + * @brief Return the TIM Encoder Mode handle state. + * @param htim TIM handle + * @retval Active channel + */ +HAL_TIM_ActiveChannel HAL_TIM_GetActiveChannel(TIM_HandleTypeDef *htim) +{ + return htim->Channel; +} + +/** + * @brief Return actual state of the TIM channel. + * @param htim TIM handle + * @param Channel TIM Channel + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 + * @arg TIM_CHANNEL_2: TIM Channel 2 + * @arg TIM_CHANNEL_3: TIM Channel 3 + * @arg TIM_CHANNEL_4: TIM Channel 4 + * @arg TIM_CHANNEL_5: TIM Channel 5 + * @arg TIM_CHANNEL_6: TIM Channel 6 + * @retval TIM Channel state + */ +HAL_TIM_ChannelStateTypeDef HAL_TIM_GetChannelState(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_TIM_ChannelStateTypeDef channel_state; + + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + channel_state = TIM_CHANNEL_STATE_GET(htim, Channel); + + return channel_state; +} + +/** + * @brief Return actual state of a DMA burst operation. + * @param htim TIM handle + * @retval DMA burst state + */ +HAL_TIM_DMABurstStateTypeDef HAL_TIM_DMABurstState(TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_DMABURST_INSTANCE(htim->Instance)); + + return htim->DMABurstState; +} + +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup TIM_Private_Functions TIM Private Functions + * @{ + */ + +/** + * @brief TIM DMA error callback + * @param hdma pointer to DMA handle. + * @retval None + */ +void TIM_DMAError(DMA_HandleTypeDef *hdma) +{ + TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + + if (hdma == htim->hdma[TIM_DMA_ID_CC1]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC2]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC3]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_3, HAL_TIM_CHANNEL_STATE_READY); + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC4]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_4, HAL_TIM_CHANNEL_STATE_READY); + } + else + { + htim->State = HAL_TIM_STATE_READY; + } + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->ErrorCallback(htim); +#else + HAL_TIM_ErrorCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; +} + +/** + * @brief TIM DMA Delay Pulse complete callback. + * @param hdma pointer to DMA handle. + * @retval None + */ +static void TIM_DMADelayPulseCplt(DMA_HandleTypeDef *hdma) +{ + TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + + if (hdma == htim->hdma[TIM_DMA_ID_CC1]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; + + if (hdma->Init.Mode == DMA_NORMAL) + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + } + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC2]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; + + if (hdma->Init.Mode == DMA_NORMAL) + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + } + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC3]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; + + if (hdma->Init.Mode == DMA_NORMAL) + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_3, HAL_TIM_CHANNEL_STATE_READY); + } + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC4]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; + + if (hdma->Init.Mode == DMA_NORMAL) + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_4, HAL_TIM_CHANNEL_STATE_READY); + } + } + else + { + /* nothing to do */ + } + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->PWM_PulseFinishedCallback(htim); +#else + HAL_TIM_PWM_PulseFinishedCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; +} + +/** + * @brief TIM DMA Delay Pulse half complete callback. + * @param hdma pointer to DMA handle. + * @retval None + */ +static void TIM_DMADelayPulseHalfCplt(DMA_HandleTypeDef *hdma) +{ + TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + + if (hdma == htim->hdma[TIM_DMA_ID_CC1]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC2]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC3]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC4]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; + } + else + { + /* nothing to do */ + } + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->PWM_PulseFinishedHalfCpltCallback(htim); +#else + HAL_TIM_PWM_PulseFinishedHalfCpltCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; +} + +/** + * @brief TIM DMA Capture complete callback. + * @param hdma pointer to DMA handle. + * @retval None + */ +void TIM_DMACaptureCplt(DMA_HandleTypeDef *hdma) +{ + TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + + if (hdma == htim->hdma[TIM_DMA_ID_CC1]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; + + if (hdma->Init.Mode == DMA_NORMAL) + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + } + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC2]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; + + if (hdma->Init.Mode == DMA_NORMAL) + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + } + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC3]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; + + if (hdma->Init.Mode == DMA_NORMAL) + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_3, HAL_TIM_CHANNEL_STATE_READY); + } + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC4]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; + + if (hdma->Init.Mode == DMA_NORMAL) + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_4, HAL_TIM_CHANNEL_STATE_READY); + } + } + else + { + /* nothing to do */ + } + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->IC_CaptureCallback(htim); +#else + HAL_TIM_IC_CaptureCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; +} + +/** + * @brief TIM DMA Capture half complete callback. + * @param hdma pointer to DMA handle. + * @retval None + */ +void TIM_DMACaptureHalfCplt(DMA_HandleTypeDef *hdma) +{ + TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + + if (hdma == htim->hdma[TIM_DMA_ID_CC1]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC2]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC3]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC4]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; + } + else + { + /* nothing to do */ + } + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->IC_CaptureHalfCpltCallback(htim); +#else + HAL_TIM_IC_CaptureHalfCpltCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; +} + +/** + * @brief TIM DMA Period Elapse complete callback. + * @param hdma pointer to DMA handle. + * @retval None + */ +static void TIM_DMAPeriodElapsedCplt(DMA_HandleTypeDef *hdma) +{ + TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + + if (htim->hdma[TIM_DMA_ID_UPDATE]->Init.Mode == DMA_NORMAL) + { + htim->State = HAL_TIM_STATE_READY; + } + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->PeriodElapsedCallback(htim); +#else + HAL_TIM_PeriodElapsedCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +} + +/** + * @brief TIM DMA Period Elapse half complete callback. + * @param hdma pointer to DMA handle. + * @retval None + */ +static void TIM_DMAPeriodElapsedHalfCplt(DMA_HandleTypeDef *hdma) +{ + TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->PeriodElapsedHalfCpltCallback(htim); +#else + HAL_TIM_PeriodElapsedHalfCpltCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +} + +/** + * @brief TIM DMA Trigger callback. + * @param hdma pointer to DMA handle. + * @retval None + */ +static void TIM_DMATriggerCplt(DMA_HandleTypeDef *hdma) +{ + TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + + if (htim->hdma[TIM_DMA_ID_TRIGGER]->Init.Mode == DMA_NORMAL) + { + htim->State = HAL_TIM_STATE_READY; + } + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->TriggerCallback(htim); +#else + HAL_TIM_TriggerCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +} + +/** + * @brief TIM DMA Trigger half complete callback. + * @param hdma pointer to DMA handle. + * @retval None + */ +static void TIM_DMATriggerHalfCplt(DMA_HandleTypeDef *hdma) +{ + TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->TriggerHalfCpltCallback(htim); +#else + HAL_TIM_TriggerHalfCpltCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +} + +/** + * @brief Time Base configuration + * @param TIMx TIM peripheral + * @param Structure TIM Base configuration structure + * @retval None + */ +static void TIM_Base_SetConfig(TIM_TypeDef *TIMx, TIM_Base_InitTypeDef *Structure) +{ + uint32_t tmpcr1; + tmpcr1 = TIMx->CR1; + + /* Set TIM Time Base Unit parameters ---------------------------------------*/ + if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx)) + { + /* Select the Counter Mode */ + tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS); + tmpcr1 |= Structure->CounterMode; + } + + if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx)) + { + /* Set the clock division */ + tmpcr1 &= ~TIM_CR1_CKD; + tmpcr1 |= (uint32_t)Structure->ClockDivision; + } + + /* Set the auto-reload preload */ + MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload); + + TIMx->CR1 = tmpcr1; + + /* Set the Autoreload value */ + TIMx->ARR = (uint32_t)Structure->Period ; + + /* Set the Prescaler value */ + TIMx->PSC = Structure->Prescaler; + + /* Generate an update event to reload the Prescaler + and the repetition counter (only for advanced timer) value immediately */ + TIMx->EGR = TIM_EGR_UG; +} + +/** + * @brief Timer Output Compare 1 configuration + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC1_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config) +{ + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Disable the Channel 1: Reset the CC1E Bit */ + TIMx->CCER &= ~TIM_CCER_CC1E; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + + /* Get the TIMx CCMR1 register value */ + tmpccmrx = TIMx->CCMR1; + + /* Reset the Output Compare Mode Bits */ + tmpccmrx &= ~TIM_CCMR1_OC1M; + tmpccmrx &= ~TIM_CCMR1_CC1S; + /* Select the Output Compare Mode */ + tmpccmrx |= OC_Config->OCMode; + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC1P; + /* Set the Output Compare Polarity */ + tmpccer |= OC_Config->OCPolarity; + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + + /* Write to TIMx CCMR1 */ + TIMx->CCMR1 = tmpccmrx; + + /* Set the Capture Compare Register value */ + TIMx->CCR1 = OC_Config->Pulse; + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; +} + +/** + * @brief Timer Output Compare 2 configuration + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC2_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config) +{ + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Disable the Channel 2: Reset the CC2E Bit */ + TIMx->CCER &= ~TIM_CCER_CC2E; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + + /* Get the TIMx CCMR1 register value */ + tmpccmrx = TIMx->CCMR1; + + /* Reset the Output Compare mode and Capture/Compare selection Bits */ + tmpccmrx &= ~TIM_CCMR1_OC2M; + tmpccmrx &= ~TIM_CCMR1_CC2S; + + /* Select the Output Compare Mode */ + tmpccmrx |= (OC_Config->OCMode << 8U); + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC2P; + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 4U); + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + + /* Write to TIMx CCMR1 */ + TIMx->CCMR1 = tmpccmrx; + + /* Set the Capture Compare Register value */ + TIMx->CCR2 = OC_Config->Pulse; + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; +} + +/** + * @brief Timer Output Compare 3 configuration + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC3_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config) +{ + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Disable the Channel 3: Reset the CC2E Bit */ + TIMx->CCER &= ~TIM_CCER_CC3E; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + + /* Get the TIMx CCMR2 register value */ + tmpccmrx = TIMx->CCMR2; + + /* Reset the Output Compare mode and Capture/Compare selection Bits */ + tmpccmrx &= ~TIM_CCMR2_OC3M; + tmpccmrx &= ~TIM_CCMR2_CC3S; + /* Select the Output Compare Mode */ + tmpccmrx |= OC_Config->OCMode; + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC3P; + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 8U); + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + + /* Write to TIMx CCMR2 */ + TIMx->CCMR2 = tmpccmrx; + + /* Set the Capture Compare Register value */ + TIMx->CCR3 = OC_Config->Pulse; + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; +} + +/** + * @brief Timer Output Compare 4 configuration + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC4_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config) +{ + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Disable the Channel 4: Reset the CC4E Bit */ + TIMx->CCER &= ~TIM_CCER_CC4E; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + + /* Get the TIMx CCMR2 register value */ + tmpccmrx = TIMx->CCMR2; + + /* Reset the Output Compare mode and Capture/Compare selection Bits */ + tmpccmrx &= ~TIM_CCMR2_OC4M; + tmpccmrx &= ~TIM_CCMR2_CC4S; + + /* Select the Output Compare Mode */ + tmpccmrx |= (OC_Config->OCMode << 8U); + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC4P; + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 12U); + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + + /* Write to TIMx CCMR2 */ + TIMx->CCMR2 = tmpccmrx; + + /* Set the Capture Compare Register value */ + TIMx->CCR4 = OC_Config->Pulse; + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; +} + +/** + * @brief Slave Timer configuration function + * @param htim TIM handle + * @param sSlaveConfig Slave timer configuration + * @retval None + */ +static HAL_StatusTypeDef TIM_SlaveTimer_SetConfig(TIM_HandleTypeDef *htim, + TIM_SlaveConfigTypeDef *sSlaveConfig) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpsmcr; + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Get the TIMx SMCR register value */ + tmpsmcr = htim->Instance->SMCR; + + /* Reset the Trigger Selection Bits */ + tmpsmcr &= ~TIM_SMCR_TS; + /* Set the Input Trigger source */ + tmpsmcr |= sSlaveConfig->InputTrigger; + + /* Reset the slave mode Bits */ + tmpsmcr &= ~TIM_SMCR_SMS; + /* Set the slave mode */ + tmpsmcr |= sSlaveConfig->SlaveMode; + + /* Write to TIMx SMCR */ + htim->Instance->SMCR = tmpsmcr; + + /* Configure the trigger prescaler, filter, and polarity */ + switch (sSlaveConfig->InputTrigger) + { + case TIM_TS_ETRF: + { + /* Check the parameters */ + assert_param(IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCE(htim->Instance)); + assert_param(IS_TIM_TRIGGERPRESCALER(sSlaveConfig->TriggerPrescaler)); + assert_param(IS_TIM_TRIGGERPOLARITY(sSlaveConfig->TriggerPolarity)); + assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter)); + /* Configure the ETR Trigger source */ + TIM_ETR_SetConfig(htim->Instance, + sSlaveConfig->TriggerPrescaler, + sSlaveConfig->TriggerPolarity, + sSlaveConfig->TriggerFilter); + break; + } + + case TIM_TS_TI1F_ED: + { + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); + assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter)); + + if (sSlaveConfig->SlaveMode == TIM_SLAVEMODE_GATED) + { + return HAL_ERROR; + } + + /* Disable the Channel 1: Reset the CC1E Bit */ + tmpccer = htim->Instance->CCER; + htim->Instance->CCER &= ~TIM_CCER_CC1E; + tmpccmr1 = htim->Instance->CCMR1; + + /* Set the filter */ + tmpccmr1 &= ~TIM_CCMR1_IC1F; + tmpccmr1 |= ((sSlaveConfig->TriggerFilter) << 4U); + + /* Write to TIMx CCMR1 and CCER registers */ + htim->Instance->CCMR1 = tmpccmr1; + htim->Instance->CCER = tmpccer; + break; + } + + case TIM_TS_TI1FP1: + { + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); + assert_param(IS_TIM_TRIGGERPOLARITY(sSlaveConfig->TriggerPolarity)); + assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter)); + + /* Configure TI1 Filter and Polarity */ + TIM_TI1_ConfigInputStage(htim->Instance, + sSlaveConfig->TriggerPolarity, + sSlaveConfig->TriggerFilter); + break; + } + + case TIM_TS_TI2FP2: + { + /* Check the parameters */ + assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); + assert_param(IS_TIM_TRIGGERPOLARITY(sSlaveConfig->TriggerPolarity)); + assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter)); + + /* Configure TI2 Filter and Polarity */ + TIM_TI2_ConfigInputStage(htim->Instance, + sSlaveConfig->TriggerPolarity, + sSlaveConfig->TriggerFilter); + break; + } + + case TIM_TS_ITR0: + case TIM_TS_ITR1: + case TIM_TS_ITR2: + case TIM_TS_ITR3: + { + /* Check the parameter */ + assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); + break; + } + + default: + status = HAL_ERROR; + break; + } + + return status; +} + +/** + * @brief Configure the TI1 as Input. + * @param TIMx to select the TIM peripheral. + * @param TIM_ICPolarity The Input Polarity. + * This parameter can be one of the following values: + * @arg TIM_ICPOLARITY_RISING + * @arg TIM_ICPOLARITY_FALLING + * @arg TIM_ICPOLARITY_BOTHEDGE + * @param TIM_ICSelection specifies the input to be used. + * This parameter can be one of the following values: + * @arg TIM_ICSELECTION_DIRECTTI: TIM Input 1 is selected to be connected to IC1. + * @arg TIM_ICSELECTION_INDIRECTTI: TIM Input 1 is selected to be connected to IC2. + * @arg TIM_ICSELECTION_TRC: TIM Input 1 is selected to be connected to TRC. + * @param TIM_ICFilter Specifies the Input Capture Filter. + * This parameter must be a value between 0x00 and 0x0F. + * @retval None + * @note TIM_ICFilter and TIM_ICPolarity are not used in INDIRECT mode as TI2FP1 + * (on channel2 path) is used as the input signal. Therefore CCMR1 must be + * protected against un-initialized filter and polarity values. + */ +static void TIM_TI1_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, + uint32_t TIM_ICFilter) +{ + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Disable the Channel 1: Reset the CC1E Bit */ + TIMx->CCER &= ~TIM_CCER_CC1E; + tmpccmr1 = TIMx->CCMR1; + tmpccer = TIMx->CCER; + + /* Select the Input */ + if (IS_TIM_CC2_INSTANCE(TIMx) != RESET) + { + tmpccmr1 &= ~TIM_CCMR1_CC1S; + tmpccmr1 |= TIM_ICSelection; + } + else + { + tmpccmr1 |= TIM_CCMR1_CC1S_0; + } + + /* Set the filter */ + tmpccmr1 &= ~TIM_CCMR1_IC1F; + tmpccmr1 |= ((TIM_ICFilter << 4U) & TIM_CCMR1_IC1F); + + /* Select the Polarity and set the CC1E Bit */ + tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP); + tmpccer |= (TIM_ICPolarity & (TIM_CCER_CC1P | TIM_CCER_CC1NP)); + + /* Write to TIMx CCMR1 and CCER registers */ + TIMx->CCMR1 = tmpccmr1; + TIMx->CCER = tmpccer; +} + +/** + * @brief Configure the Polarity and Filter for TI1. + * @param TIMx to select the TIM peripheral. + * @param TIM_ICPolarity The Input Polarity. + * This parameter can be one of the following values: + * @arg TIM_ICPOLARITY_RISING + * @arg TIM_ICPOLARITY_FALLING + * @arg TIM_ICPOLARITY_BOTHEDGE + * @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) +{ + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Disable the Channel 1: Reset the CC1E Bit */ + tmpccer = TIMx->CCER; + TIMx->CCER &= ~TIM_CCER_CC1E; + tmpccmr1 = TIMx->CCMR1; + + /* Set the filter */ + tmpccmr1 &= ~TIM_CCMR1_IC1F; + tmpccmr1 |= (TIM_ICFilter << 4U); + + /* Select the Polarity and set the CC1E Bit */ + tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP); + tmpccer |= TIM_ICPolarity; + + /* Write to TIMx CCMR1 and CCER registers */ + TIMx->CCMR1 = tmpccmr1; + TIMx->CCER = tmpccer; +} + +/** + * @brief Configure the TI2 as Input. + * @param TIMx to select the TIM peripheral + * @param TIM_ICPolarity The Input Polarity. + * This parameter can be one of the following values: + * @arg TIM_ICPOLARITY_RISING + * @arg TIM_ICPOLARITY_FALLING + * @arg TIM_ICPOLARITY_BOTHEDGE + * @param TIM_ICSelection specifies the input to be used. + * This parameter can be one of the following values: + * @arg TIM_ICSELECTION_DIRECTTI: TIM Input 2 is selected to be connected to IC2. + * @arg TIM_ICSELECTION_INDIRECTTI: TIM Input 2 is selected to be connected to IC1. + * @arg TIM_ICSELECTION_TRC: TIM Input 2 is selected to be connected to TRC. + * @param TIM_ICFilter Specifies the Input Capture Filter. + * This parameter must be a value between 0x00 and 0x0F. + * @retval None + * @note TIM_ICFilter and TIM_ICPolarity are not used in INDIRECT mode as TI1FP2 + * (on channel1 path) is used as the input signal. Therefore CCMR1 must be + * protected against un-initialized filter and polarity values. + */ +static void TIM_TI2_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, + uint32_t TIM_ICFilter) +{ + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Disable the Channel 2: Reset the CC2E Bit */ + TIMx->CCER &= ~TIM_CCER_CC2E; + tmpccmr1 = TIMx->CCMR1; + tmpccer = TIMx->CCER; + + /* Select the Input */ + tmpccmr1 &= ~TIM_CCMR1_CC2S; + tmpccmr1 |= (TIM_ICSelection << 8U); + + /* Set the filter */ + tmpccmr1 &= ~TIM_CCMR1_IC2F; + tmpccmr1 |= ((TIM_ICFilter << 12U) & TIM_CCMR1_IC2F); + + /* Select the Polarity and set the CC2E Bit */ + tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP); + tmpccer |= ((TIM_ICPolarity << 4U) & (TIM_CCER_CC2P | TIM_CCER_CC2NP)); + + /* Write to TIMx CCMR1 and CCER registers */ + TIMx->CCMR1 = tmpccmr1 ; + TIMx->CCER = tmpccer; +} + +/** + * @brief Configure the Polarity and Filter for TI2. + * @param TIMx to select the TIM peripheral. + * @param TIM_ICPolarity The Input Polarity. + * This parameter can be one of the following values: + * @arg TIM_ICPOLARITY_RISING + * @arg TIM_ICPOLARITY_FALLING + * @arg TIM_ICPOLARITY_BOTHEDGE + * @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) +{ + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Disable the Channel 2: Reset the CC2E Bit */ + TIMx->CCER &= ~TIM_CCER_CC2E; + tmpccmr1 = TIMx->CCMR1; + tmpccer = TIMx->CCER; + + /* Set the filter */ + tmpccmr1 &= ~TIM_CCMR1_IC2F; + tmpccmr1 |= (TIM_ICFilter << 12U); + + /* Select the Polarity and set the CC2E Bit */ + tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP); + tmpccer |= (TIM_ICPolarity << 4U); + + /* Write to TIMx CCMR1 and CCER registers */ + TIMx->CCMR1 = tmpccmr1 ; + TIMx->CCER = tmpccer; +} + +/** + * @brief Configure the TI3 as Input. + * @param TIMx to select the TIM peripheral + * @param TIM_ICPolarity The Input Polarity. + * This parameter can be one of the following values: + * @arg TIM_ICPOLARITY_RISING + * @arg TIM_ICPOLARITY_FALLING + * @arg TIM_ICPOLARITY_BOTHEDGE + * @param TIM_ICSelection specifies the input to be used. + * This parameter can be one of the following values: + * @arg TIM_ICSELECTION_DIRECTTI: TIM Input 3 is selected to be connected to IC3. + * @arg TIM_ICSELECTION_INDIRECTTI: TIM Input 3 is selected to be connected to IC4. + * @arg TIM_ICSELECTION_TRC: TIM Input 3 is selected to be connected to TRC. + * @param TIM_ICFilter Specifies the Input Capture Filter. + * This parameter must be a value between 0x00 and 0x0F. + * @retval None + * @note TIM_ICFilter and TIM_ICPolarity are not used in INDIRECT mode as TI3FP4 + * (on channel1 path) is used as the input signal. Therefore CCMR2 must be + * protected against un-initialized filter and polarity values. + */ +static void TIM_TI3_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, + uint32_t TIM_ICFilter) +{ + uint32_t tmpccmr2; + uint32_t tmpccer; + + /* Disable the Channel 3: Reset the CC3E Bit */ + TIMx->CCER &= ~TIM_CCER_CC3E; + tmpccmr2 = TIMx->CCMR2; + tmpccer = TIMx->CCER; + + /* Select the Input */ + tmpccmr2 &= ~TIM_CCMR2_CC3S; + tmpccmr2 |= TIM_ICSelection; + + /* Set the filter */ + tmpccmr2 &= ~TIM_CCMR2_IC3F; + tmpccmr2 |= ((TIM_ICFilter << 4U) & TIM_CCMR2_IC3F); + + /* Select the Polarity and set the CC3E Bit */ + tmpccer &= ~(TIM_CCER_CC3P | TIM_CCER_CC3NP); + tmpccer |= ((TIM_ICPolarity << 8U) & (TIM_CCER_CC3P | TIM_CCER_CC3NP)); + + /* Write to TIMx CCMR2 and CCER registers */ + TIMx->CCMR2 = tmpccmr2; + TIMx->CCER = tmpccer; +} + +/** + * @brief Configure the TI4 as Input. + * @param TIMx to select the TIM peripheral + * @param TIM_ICPolarity The Input Polarity. + * This parameter can be one of the following values: + * @arg TIM_ICPOLARITY_RISING + * @arg TIM_ICPOLARITY_FALLING + * @arg TIM_ICPOLARITY_BOTHEDGE + * @param TIM_ICSelection specifies the input to be used. + * This parameter can be one of the following values: + * @arg TIM_ICSELECTION_DIRECTTI: TIM Input 4 is selected to be connected to IC4. + * @arg TIM_ICSELECTION_INDIRECTTI: TIM Input 4 is selected to be connected to IC3. + * @arg TIM_ICSELECTION_TRC: TIM Input 4 is selected to be connected to TRC. + * @param TIM_ICFilter Specifies the Input Capture Filter. + * This parameter must be a value between 0x00 and 0x0F. + * @note TIM_ICFilter and TIM_ICPolarity are not used in INDIRECT mode as TI4FP3 + * (on channel1 path) is used as the input signal. Therefore CCMR2 must be + * protected against un-initialized filter and polarity values. + * @retval None + */ +static void TIM_TI4_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, + uint32_t TIM_ICFilter) +{ + uint32_t tmpccmr2; + uint32_t tmpccer; + + /* Disable the Channel 4: Reset the CC4E Bit */ + TIMx->CCER &= ~TIM_CCER_CC4E; + tmpccmr2 = TIMx->CCMR2; + tmpccer = TIMx->CCER; + + /* Select the Input */ + tmpccmr2 &= ~TIM_CCMR2_CC4S; + tmpccmr2 |= (TIM_ICSelection << 8U); + + /* Set the filter */ + tmpccmr2 &= ~TIM_CCMR2_IC4F; + tmpccmr2 |= ((TIM_ICFilter << 12U) & TIM_CCMR2_IC4F); + + /* Select the Polarity and set the CC4E Bit */ + tmpccer &= ~(TIM_CCER_CC4P | TIM_CCER_CC4NP); + tmpccer |= ((TIM_ICPolarity << 12U) & (TIM_CCER_CC4P | TIM_CCER_CC4NP)); + + /* Write to TIMx CCMR2 and CCER registers */ + TIMx->CCMR2 = tmpccmr2; + TIMx->CCER = tmpccer ; +} + +/** + * @brief Selects the Input Trigger source + * @param TIMx to select the TIM peripheral + * @param InputTriggerSource The Input Trigger source. + * This parameter can be one of the following values: + * @arg TIM_TS_ITR0: Internal Trigger 0 + * @arg TIM_TS_ITR1: Internal Trigger 1 + * @arg TIM_TS_ITR2: Internal Trigger 2 + * @arg TIM_TS_ITR3: Internal Trigger 3 + * @arg TIM_TS_TI1F_ED: TI1 Edge Detector + * @arg TIM_TS_TI1FP1: Filtered Timer Input 1 + * @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) +{ + uint32_t tmpsmcr; + + /* Get the TIMx SMCR register value */ + tmpsmcr = TIMx->SMCR; + /* Reset the TS Bits */ + tmpsmcr &= ~TIM_SMCR_TS; + /* Set the Input Trigger source and the slave mode*/ + tmpsmcr |= (InputTriggerSource | TIM_SLAVEMODE_EXTERNAL1); + /* Write to TIMx SMCR */ + TIMx->SMCR = tmpsmcr; +} +/** + * @brief Configures the TIMx External Trigger (ETR). + * @param TIMx to select the TIM peripheral + * @param TIM_ExtTRGPrescaler The external Trigger Prescaler. + * This parameter can be one of the following values: + * @arg TIM_ETRPRESCALER_DIV1: ETRP Prescaler OFF. + * @arg TIM_ETRPRESCALER_DIV2: ETRP frequency divided by 2. + * @arg TIM_ETRPRESCALER_DIV4: ETRP frequency divided by 4. + * @arg TIM_ETRPRESCALER_DIV8: ETRP frequency divided by 8. + * @param TIM_ExtTRGPolarity The external Trigger Polarity. + * This parameter can be one of the following values: + * @arg TIM_ETRPOLARITY_INVERTED: active low or falling edge active. + * @arg TIM_ETRPOLARITY_NONINVERTED: active high or rising edge active. + * @param ExtTRGFilter External Trigger Filter. + * 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) +{ + uint32_t tmpsmcr; + + tmpsmcr = TIMx->SMCR; + + /* Reset the ETR Bits */ + tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); + + /* Set the Prescaler, the Filter value and the Polarity */ + tmpsmcr |= (uint32_t)(TIM_ExtTRGPrescaler | (TIM_ExtTRGPolarity | (ExtTRGFilter << 8U))); + + /* Write to TIMx SMCR */ + TIMx->SMCR = tmpsmcr; +} + +/** + * @brief Enables or disables the TIM Capture Compare Channel x. + * @param TIMx to select the TIM peripheral + * @param Channel specifies the TIM Channel + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 + * @arg TIM_CHANNEL_2: TIM Channel 2 + * @arg TIM_CHANNEL_3: TIM Channel 3 + * @arg TIM_CHANNEL_4: TIM Channel 4 + * @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) +{ + uint32_t tmp; + + /* 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 */ + + /* Reset the CCxE Bit */ + TIMx->CCER &= ~tmp; + + /* Set or reset the CCxE Bit */ + TIMx->CCER |= (uint32_t)(ChannelState << (Channel & 0x1FU)); /* 0x1FU = 31 bits max shift */ +} + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +/** + * @brief Reset interrupt callbacks to the legacy weak callbacks. + * @param htim pointer to a TIM_HandleTypeDef structure that contains + * the configuration information for TIM module. + * @retval None + */ +void TIM_ResetCallback(TIM_HandleTypeDef *htim) +{ + /* Reset the TIM callback to the legacy weak callbacks */ + htim->PeriodElapsedCallback = HAL_TIM_PeriodElapsedCallback; + htim->PeriodElapsedHalfCpltCallback = HAL_TIM_PeriodElapsedHalfCpltCallback; + htim->TriggerCallback = HAL_TIM_TriggerCallback; + htim->TriggerHalfCpltCallback = HAL_TIM_TriggerHalfCpltCallback; + htim->IC_CaptureCallback = HAL_TIM_IC_CaptureCallback; + htim->IC_CaptureHalfCpltCallback = HAL_TIM_IC_CaptureHalfCpltCallback; + htim->OC_DelayElapsedCallback = HAL_TIM_OC_DelayElapsedCallback; + htim->PWM_PulseFinishedCallback = HAL_TIM_PWM_PulseFinishedCallback; + htim->PWM_PulseFinishedHalfCpltCallback = HAL_TIM_PWM_PulseFinishedHalfCpltCallback; + htim->ErrorCallback = HAL_TIM_ErrorCallback; +} +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + +/** + * @} + */ + +#endif /* HAL_TIM_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.c b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.c new file mode 100644 index 0000000..1751a3e --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.c @@ -0,0 +1,427 @@ +/** + ****************************************************************************** + * @file stm32l0xx_hal_tim_ex.c + * @author MCD Application Team + * @brief TIM HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the Timer Extended peripheral: + * + Time Master and Slave synchronization configuration + * + Timer remapping capabilities configuration + @verbatim + ============================================================================== + ##### TIMER Extended features ##### + ============================================================================== + [..] + The Timer Extended features include: + (#) Synchronization circuit to control the timer with external signals and to + interconnect several timers together. + + @endverbatim + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal.h" + +/** @addtogroup STM32L0xx_HAL_Driver + * @{ + */ + +/** @defgroup TIMEx TIMEx + * @brief TIM Extended HAL module driver + * @{ + */ + +#ifdef HAL_TIM_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup TIMEx_Exported_Functions TIM Extended Exported Functions + * @{ + */ +/** @defgroup TIMEx_Exported_Functions_Group5 Extended Peripheral Control functions + * @brief Peripheral Control functions + * +@verbatim + ============================================================================== + ##### Peripheral Control functions ##### + ============================================================================== + [..] + This section provides functions allowing to: + (+) Configure Master synchronization. + (+) Configure timer remapping capabilities. + +@endverbatim + * @{ + */ + +/** + * @brief Configures the TIM in master mode. + * @param htim TIM handle. + * @param sMasterConfig pointer to a TIM_MasterConfigTypeDef structure that + * contains the selected trigger output (TRGO) and the Master/Slave + * mode. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, + TIM_MasterConfigTypeDef *sMasterConfig) +{ + uint32_t tmpcr2; + uint32_t tmpsmcr; + + /* Check the parameters */ + 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); + + /* Change the handler state */ + htim->State = HAL_TIM_STATE_BUSY; + + /* Get the TIMx CR2 register value */ + tmpcr2 = htim->Instance->CR2; + + /* Get the TIMx SMCR register value */ + tmpsmcr = htim->Instance->SMCR; + + /* Reset the MMS Bits */ + tmpcr2 &= ~TIM_CR2_MMS; + /* Select the TRGO source */ + tmpcr2 |= sMasterConfig->MasterOutputTrigger; + + /* Update TIMx CR2 */ + htim->Instance->CR2 = tmpcr2; + + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + /* Reset the MSM Bit */ + tmpsmcr &= ~TIM_SMCR_MSM; + /* Set master mode */ + tmpsmcr |= sMasterConfig->MasterSlaveMode; + + /* Update TIMx SMCR */ + htim->Instance->SMCR = tmpsmcr; + } + + /* Change the htim state */ + htim->State = HAL_TIM_STATE_READY; + + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Configures the TIMx Remapping input capabilities. + @if STM32L073xx + * @note It is not possible to connect TIM2 and TIM21 on PB5(AF4) at the same time. + * When selecting TIM3_TI2_GPIOB5_AF4, Channel2 of TIM3 will be + * connected to PB5(AF4) and Channel2 of TIM21 will be connected to + * some other GPIOs. (refer to alternate functions for more details) + * When selecting TIM3_TI2_GPIO_DEF, Channel2 of Timer 3 will be + * connected an GPIO (other than PB5(AF4)) and Channel2 of TIM21 + * will be connected to PB5(AF4). + * @note When TIM2 ETR is fed with HSI48, this ETR must be prescaled internally + * to the TIMER2 because the maximum system frequency is 32 MHz + @endif + * @param htim TIM handle. + * @param Remap specifies the TIM remapping source. + @if STM32L073xx + * For TIM2, the parameter is a combination of 2 fields (field1 | field2): + * + * field1 can have the following values: + * @arg TIM2_ETR_GPIO: TIM2 ETR connected to GPIO (default): + * PA0(AF5) or PA5(AF2) or PA15(AF2) or PE9(AF2) + * @arg TIM2_ETR_HSI48: TIM2 ETR connected to HSI48 + * @arg TIM2_ETR_HSI16: TIM2 ETR connected to HSI16 + * @arg TIM2_ETR_LSE: TIM2 ETR connected to LSE + * @arg TIM2_ETR_COMP2_OUT: TIM2 ETR connected to COMP2 output + * @arg TIM2_ETR_COMP1_OUT: TIM2 ETR connected to COMP1 output + * + * field2 can have the following values: + * @arg TIM2_TI4_GPIO : TIM2 TI4 connected to GPIO1(default): + * PA3(AF2) or PB11(AF2) or PE12(AF0) + * @arg TIM2_TI4_COMP1: TIM2 TI4 connected to COMP1 + * @arg TIM2_TI4_COMP2: TIM2 TI4 connected to COMP2 + @endif + @if STM32L031xx + * For TIM2, the parameter is a combination of 2 fields (field1 | field2): + * + * field1 can have the following values: + * @arg TIM2_ETR_GPIO: TIM2 ETR connected to GPIO (default): + * PA0(AF5) or PA5(AF2) or PA15(AF2) + * @arg TIM2_ETR_HSI16: TIM2 ETR connected to HS16 (HSIOUT) + * @arg TIM2_ETR_LSE: TIM2 ETR connected to LSE + * @arg TIM2_ETR_COMP2_OUT: TIM2 ETR connected to COMP2 output + * @arg TIM2_ETR_COMP1_OUT: TIM2 ETR connected to COMP1 output + * + * field2 can have the following values: + * @arg TIM2_TI4_GPIO : TIM2 TI4 connected to GPIO (default): + * PA3(AF2) or PB11(AF2) or PB1(AF5) + * @arg TIM2_TI4_COMP1_OUT: TIM2 TI4 connected to COMP1 output + * @arg TIM2_TI4_COMP2_OUT: TIM2 TI4 connected to COMP2 output + @endif + @if STM32L011xx + * For TIM2, the parameter is a combination of 2 fields (field1 | field2): + * + * field1 can have the following values: + * @arg TIM2_ETR_GPIO: TIM2 ETR connected to GPIO (default): + * PA0(AF5) or PA5(AF2) or PA15(AF2) + * @arg TIM2_ETR_HSI16: TIM2 ETR connected to HS16 (HSIOUT) + * @arg TIM2_ETR_LSE: TIM2 ETR connected to LSE + * @arg TIM2_ETR_COMP2_OUT: TIM2 ETR connected to COMP2 output + * @arg TIM2_ETR_COMP1_OUT: TIM2 ETR connected to COMP1 output + * + * field2 can have the following values: + * @arg TIM2_TI4_GPIO : TIM2 TI4 connected to GPIO (default): + * PA3(AF2) or PB11(AF2) or PB1(AF5) + * @arg TIM2_TI4_COMP1_OUT: TIM2 TI4 connected to COMP1 output + * @arg TIM2_TI4_COMP2_OUT: TIM2 TI4 connected to COMP2 output + @endif + @if STM32L051xx + * For TIM2, the parameter is a combination of 2 fields (field1 | field2): + * + * field1 can have the following values: + * @arg TIM2_ETR_GPIO: TIM2 ETR connected to GPIO (default): + * PA0(AF5) or PA5(AF2) or PA15(AF2) or PE9(AF2) + * @arg TIM2_ETR_HSI48: TIM2 ETR connected to HSI48 + * @arg TIM2_ETR_LSE: TIM2 ETR connected to LSE + * @arg TIM2_ETR_COMP2_OUT: TIM2 ETR connected to COMP2 output + * @arg TIM2_ETR_COMP1_OUT: TIM2 ETR connected to COMP1 output + * + * field2 can have the following values: + * @arg TIM2_TI4_GPIO: TIM2 TI4 connected to GPIO1(default): + * PA3(AF2) or PB11(AF2) or PE12(AF0) + * @arg TIM2_TI4_COMP1: TIM2 TI4 connected to COMP1 + * @arg TIM2_TI4_COMP2: TIM2 TI4 connected to COMP2 + * @arg TIM2_TI4_GPIO2: TIM2 TI4 connected to GPIO2 : + * PA3(AF2) or PB11(AF2) or PE12(AF0) + @endif + @if STM32L073xx + * + * For TIM3, the parameter is a combination of 4 fields (field1 | field2 | field3 | field4): + * + * field1 can have the following values: + * @arg TIM3_ETR_GPIO: TIM3 ETR connected to GPIO (default): + * PE2(AF2) or PD2(AF2) or PE2(AF2) + * @arg TIM3_ETR_HSI: TIM3 ETR connected to HSI + * + * field2 can have the following values: + * @arg TIM3_TI1_USB_SOF: TIM3 TI1 connected to USB_SOF (default) + * @arg TIM3_TI1_GPIO: TIM3 TI1 connected to GPIO : + * PE3(AF2) or PA6(AF2) or PC6(AF2) or PB4(AF2) + * + * field3 can have the following values: + * @arg TIM3_TI2_GPIOB5_AF4:TIM3 TI3 connected to P5(AF4) + * (refer to note) + * @arg TIM3_TI2_GPIO_DEF: TIM3 TI3 connected to GPIO (default): + * PA7(AF2) or PB5(AF4) or PC7(AF2) or PE7(AF2) + * + * field4 can have the following values: + * @arg TIM3_TI4_GPIO_DEF: TIM3 TI4 connected to GPIO: + * PB1(AF2) or PE6(AF2) + * @arg TIM3_TI4_GPIOC9_AF2:TIM3 TI4 connected to PC9(AF)2 + @endif + @if STM32L073xx + * For TIM21, the parameter is a combination of 3 fields (field1 | field2 | field3): + * + * field1 can have the following values: + * @arg TIM21_ETR_GPIO: TIM21 ETR connected to GPIO(default) : + * PC9(AF0) or PA1(AF5) + * @arg TIM21_ETR_COMP2_OUT:TIM21 ETR connected to COMP2 output + * @arg TIM21_ETR_COMP1_OUT:TIM21 ETR connected to COMP1 output + * @arg TIM21_ETR_LSE: TIM21 ETR connected to LSE + * + * field2 can have the following values: + * @arg TIM21_TI1_MCO: TIM21 TI1 connected to MCO + * @arg TIM21_TI1_RTC_WKUT_IT: TIM21 TI1 connected to RTC WAKEUP interrupt + * @arg TIM21_TI1_HSE_RTC: TIM21 TI1 connected to HSE_RTC + * @arg TIM21_TI1_MSI: TIM21 TI1 connected to MSI clock + * @arg TIM21_TI1_LSE: TIM21 TI1 connected to LSE + * @arg TIM21_TI1_LSI: TIM21 TI1 connected to LSI + * @arg TIM21_TI1_COMP1_OUT:TIM21 TI1 connected to COMP1_OUT + * @arg TIM21_TI1_GPIO: TIM21 TI1 connected to GPIO(default): + * PA2(AF0) or PB13(AF6) or PE5(AF0) or PD0(AF0) + * + * field3 can have the following values: + * @arg TIM21_TI2_GPIO: TIM21 TI2 connected to GPIO(default): + * PA3(AF0) or PB14(AF6) or PE6(AF0) or PD7(AF1) + * @arg TIM21_TI2_COMP2_OUT:TIM21 TI2 connected to COMP2 output + @endif + @if STM32L031xx + * For TIM21, the parameter is a combination of 3 fields (field1 | field2 | field3): + * + * field1 can have the following values: + * @arg TIM21_ETR_GPIO: TIM21 ETR connected to GPIO(default) : + * PA1(AF5) + * @arg TIM21_ETR_COMP2_OUT:TIM21 ETR connected to COMP2 output + * @arg TIM21_ETR_COMP1_OUT:TIM21 ETR connected to COMP1 output + * @arg TIM21_ETR_LSE: TIM21 ETR connected to LSE + * + * field2 can have the following values: + * @arg TIM21_TI1_MCO: TIM21 TI1 connected to MCO + * @arg TIM21_TI1_RTC_WKUT_IT: TIM21 TI1 connected to RTC WAKEUP interrupt + * @arg TIM21_TI1_HSE_RTC: TIM21 TI1 connected to HSE_RTC + * @arg TIM21_TI1_MSI: TIM21 TI1 connected to MSI clock + * @arg TIM21_TI1_LSE: TIM21 TI1 connected to LSE + * @arg TIM21_TI1_LSI: TIM21 TI1 connected to LSI + * @arg TIM21_TI1_COMP1_OUT:TIM21 TI1 connected to COMP1_OUT + * + * field3 can have the following values: + * @arg TIM21_TI2_GPIO: TIM21 TI2 connected to GPIO(default): + * PA3(AF0) or PB14(AF6) + * @arg TIM21_TI2_COMP2_OUT:TIM21 TI2 connected to COMP2 output + @endif + @if STM32L011xx + * For TIM21, the parameter is a combination of 3 fields (field1 | field2 | field3): + * + * field1 can have the following values: + * @arg TIM21_ETR_GPIO: TIM21 ETR connected to GPIO(default) : + * PA1(AF5) + * @arg TIM21_ETR_COMP2_OUT:TIM21 ETR connected to COMP2 output + * @arg TIM21_ETR_COMP1_OUT:TIM21 ETR connected to COMP1 output + * @arg TIM21_ETR_LSE: TIM21 ETR connected to LSE + * + * field2 can have the following values: + * @arg TIM21_TI1_MCO: TIM21 TI1 connected to MCO + * @arg TIM21_TI1_RTC_WKUT_IT: TIM21 TI1 connected to RTC WAKEUP interrupt + * @arg TIM21_TI1_HSE_RTC: TIM21 TI1 connected to HSE_RTC + * @arg TIM21_TI1_MSI: TIM21 TI1 connected to MSI clock + * @arg TIM21_TI1_LSE: TIM21 TI1 connected to LSE + * @arg TIM21_TI1_LSI: TIM21 TI1 connected to LSI + * @arg TIM21_TI1_COMP1_OUT:TIM21 TI1 connected to COMP1_OUT + * + * field3 can have the following values: + * @arg TIM21_TI2_GPIO: TIM21 TI2 connected to GPIO(default): + * PA3(AF0) or PB14(AF6) + * @arg TIM21_TI2_COMP2_OUT:TIM21 TI2 connected to COMP2 output + @endif + @if STM32L051xx + * For TIM21, the parameter is a combination of 3 fields (field1 | field2 | field3): + * + * field1 can have the following values: + * @arg TIM21_ETR_GPIO: TIM21 ETR connected to GPIO(default) : + * PC9(AF0) or PA1(AF5) + * @arg TIM21_ETR_COMP2_OUT:TIM21 ETR connected to COMP2 output + * @arg TIM21_ETR_COMP1_OUT:TIM21 ETR connected to COMP1 output + * @arg TIM21_ETR_LSE: TIM21 ETR connected to LSE + * + * field2 can have the following values: + * @arg TIM21_TI1_MCO: TIM21 TI1 connected to MCO + * @arg TIM21_TI1_RTC_WKUT_IT: TIM21 TI1 connected to RTC WAKEUP interrupt + * @arg TIM21_TI1_HSE_RTC: TIM21 TI1 connected to HSE_RTC + * @arg TIM21_TI1_MSI: TIM21 TI1 connected to MSI clock + * @arg TIM21_TI1_LSE: TIM21 TI1 connected to LSE + * @arg TIM21_TI1_LSI: TIM21 TI1 connected to LSI + * @arg TIM21_TI1_COMP1_OUT:TIM21 TI1 connected to COMP1_OUT + * @arg TIM21_TI1_GPIO: TIM21 TI1 connected to GPIO(default): + * PA2(AF0) or PB13(AF6) or PE5(AF0) or PD0(AF0) + * + * field3 can have the following values: + * @arg TIM21_TI2_GPIO: TIM21 TI2 connected to GPIO(default): + * PA3(AF0) or PB14(AF6) or PE6(AF0) or PD7(AF1) + * @arg TIM21_TI2_COMP2_OUT:TIM21 TI2 connected to COMP2 output + @endif + @if STM32L073xx + * + * For TIM22, the parameter can have the following values: + * @arg TIM22_ETR_LSE: TIM22 ETR connected to LSE + * @arg TIM22_ETR_COMP2_OUT:TIM22 ETR connected to COMP2 output + * @arg TIM22_ETR_COMP1_OUT:TIM22 ETR connected to COMP1 output + * @arg TIM22_ETR_GPIO: TIM22 ETR connected to GPIO(default): + * PC8(AF0) or PA4(AF5) + * @arg TIM22_TI1_GPIO: TIM22 TI1 connected to GPIO(default): + * PC6(AF0) or PA6(AF5) or PB4(AF4) or PE0(AF3) + * @arg TIM22_TI1_COMP2_OUT:TIM22 TI1 connected to COMP2 output + * @arg TIM22_TI1_COMP1_OUT:TIM22 TI1 connected to COMP1 output + @endif + @if STM32L031xx + * + * For TIM22, the parameter is a combination of 2 fields (field1 | field2): + * + * field1 can have the following values: + * @arg TIM22_ETR_LSE: TIM22 ETR connected to LSE + * @arg TIM22_ETR_COMP2_OUT:TIM22 ETR connected to COMP2 output + * @arg TIM22_ETR_COMP1_OUT:TIM22 ETR connected to COMP1 output + * @arg TIM22_ETR_GPIO: TIM22 ETR connected to GPIO(default): + * PA4(AF5) + * + * field2 can have the following values: + * @arg TIM22_TI1_GPIO: TIM22 TI1 connected to GPIO(default): + * PC0(AF6) or PA5(AF6) or PB4(AF4) + * @arg TIM22_TI1_COMP2_OUT:TIM22 TI1 connected to COMP2 output + * @arg TIM22_TI1_COMP1_OUT:TIM22 TI1 connected to COMP1 output + * + @endif + @if STM32L051xx + * + * For TIM22, the parameter is a combination of 2 fields (field1 | field2): + * + * field1 can have the following values: + * @arg TIM22_ETR_LSE: TIM22 ETR connected to LSE + * @arg TIM22_ETR_COMP2_OUT:TIM22 ETR connected to COMP2 output + * @arg TIM22_ETR_COMP1_OUT:TIM22 ETR connected to COMP1 output + * @arg TIM22_ETR_GPIO: TIM22 ETR connected to GPIO(default): + * PC8(AF0) or PA4(AF5) + * + * field2 can have the following values: + * @arg TIM22_TI1_GPIO: TIM22 TI1 connected to GPIO(default): + * PC6(AF0) or PA6(AF5) or PB4(AF4) or PE0(AF3) + * @arg TIM22_TI1_COMP2_OUT:TIM22 TI1 connected to COMP2 output + * @arg TIM22_TI1_COMP1_OUT:TIM22 TI1 connected to COMP1 output + @endif + * + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_RemapConfig(TIM_HandleTypeDef *htim, uint32_t Remap) +{ + __HAL_LOCK(htim); + + /* Check parameters */ + assert_param(IS_TIM_REMAP(htim->Instance, Remap)); + + /* Set the Timer remapping configuration */ + WRITE_REG(htim->Instance->OR, Remap); + + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @} + */ + +/** + * @} + */ + + +#endif /* HAL_TIM_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c new file mode 100644 index 0000000..2a51c0c --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c @@ -0,0 +1,4161 @@ +/** + ****************************************************************************** + * @file stm32l0xx_hal_uart.c + * @author MCD Application Team + * @brief UART HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the Universal Asynchronous Receiver Transmitter Peripheral (UART). + * + Initialization and de-initialization functions + * + IO operation functions + * + Peripheral Control functions + * + * + @verbatim + =============================================================================== + ##### How to use this driver ##### + =============================================================================== + [..] + The UART HAL driver can be used as follows: + + (#) Declare a UART_HandleTypeDef handle structure (eg. UART_HandleTypeDef huart). + (#) Initialize the UART low level resources by implementing the HAL_UART_MspInit() API: + (++) Enable the USARTx interface clock. + (++) UART pins configuration: + (+++) Enable the clock for the UART GPIOs. + (+++) Configure these UART pins as alternate function pull-up. + (++) NVIC configuration if you need to use interrupt process (HAL_UART_Transmit_IT() + and HAL_UART_Receive_IT() APIs): + (+++) Configure the USARTx interrupt priority. + (+++) Enable the NVIC USART IRQ handle. + (++) UART interrupts handling: + -@@- The specific UART interrupts (Transmission complete interrupt, + RXNE interrupt, RX/TX FIFOs related interrupts and Error Interrupts) + are managed using the macros __HAL_UART_ENABLE_IT() and __HAL_UART_DISABLE_IT() + inside the transmit and receive processes. + (++) DMA Configuration if you need to use DMA process (HAL_UART_Transmit_DMA() + and HAL_UART_Receive_DMA() APIs): + (+++) Declare a DMA handle structure for the Tx/Rx channel. + (+++) Enable the DMAx interface clock. + (+++) Configure the declared DMA handle structure with the required Tx/Rx parameters. + (+++) Configure the DMA Tx/Rx channel. + (+++) Associate the initialized DMA handle to the UART DMA Tx/Rx handle. + (+++) Configure the priority and enable the NVIC for the transfer complete + interrupt on the DMA Tx/Rx channel. + + (#) Program the Baud Rate, Word Length, Stop Bit, Parity, Hardware + flow control and Mode (Receiver/Transmitter) in the huart handle Init structure. + + (#) If required, program UART advanced features (TX/RX pins swap, auto Baud rate detection,...) + in the huart handle AdvancedInit structure. + + (#) For the UART asynchronous mode, initialize the UART registers by calling + the HAL_UART_Init() API. + + (#) For the UART Half duplex mode, initialize the UART registers by calling + the HAL_HalfDuplex_Init() API. + + (#) For the UART LIN (Local Interconnection Network) mode, initialize the UART registers + by calling the HAL_LIN_Init() API. + + (#) For the UART Multiprocessor mode, initialize the UART registers + by calling the HAL_MultiProcessor_Init() API. + + (#) For the UART RS485 Driver Enabled mode, initialize the UART registers + by calling the HAL_RS485Ex_Init() API. + + [..] + (@) These API's (HAL_UART_Init(), HAL_HalfDuplex_Init(), HAL_LIN_Init(), HAL_MultiProcessor_Init(), + also configure the low level Hardware GPIO, CLOCK, CORTEX...etc) by + calling the customized HAL_UART_MspInit() API. + + ##### Callback registration ##### + ================================== + + [..] + The compilation define USE_HAL_UART_REGISTER_CALLBACKS when set to 1 + allows the user to configure dynamically the driver callbacks. + + [..] + Use Function HAL_UART_RegisterCallback() to register a user callback. + Function HAL_UART_RegisterCallback() allows to register following callbacks: + (+) TxHalfCpltCallback : Tx Half Complete Callback. + (+) TxCpltCallback : Tx Complete Callback. + (+) RxHalfCpltCallback : Rx Half Complete Callback. + (+) RxCpltCallback : Rx Complete Callback. + (+) ErrorCallback : Error Callback. + (+) AbortCpltCallback : Abort Complete Callback. + (+) AbortTransmitCpltCallback : Abort Transmit Complete Callback. + (+) AbortReceiveCpltCallback : Abort Receive Complete Callback. + (+) WakeupCallback : Wakeup Callback. + (+) MspInitCallback : UART MspInit. + (+) MspDeInitCallback : UART MspDeInit. + This function takes as parameters the HAL peripheral handle, the Callback ID + and a pointer to the user callback function. + + [..] + Use function HAL_UART_UnRegisterCallback() to reset a callback to the default + weak (surcharged) function. + HAL_UART_UnRegisterCallback() takes as parameters the HAL peripheral handle, + and the Callback ID. + This function allows to reset following callbacks: + (+) TxHalfCpltCallback : Tx Half Complete Callback. + (+) TxCpltCallback : Tx Complete Callback. + (+) RxHalfCpltCallback : Rx Half Complete Callback. + (+) RxCpltCallback : Rx Complete Callback. + (+) ErrorCallback : Error Callback. + (+) AbortCpltCallback : Abort Complete Callback. + (+) AbortTransmitCpltCallback : Abort Transmit Complete Callback. + (+) AbortReceiveCpltCallback : Abort Receive Complete Callback. + (+) WakeupCallback : Wakeup Callback. + (+) MspInitCallback : UART MspInit. + (+) MspDeInitCallback : UART MspDeInit. + + [..] + For specific callback RxEventCallback, use dedicated registration/reset functions: + respectively HAL_UART_RegisterRxEventCallback() , HAL_UART_UnRegisterRxEventCallback(). + + [..] + By default, after the HAL_UART_Init() and when the state is HAL_UART_STATE_RESET + all callbacks are set to the corresponding weak (surcharged) functions: + examples HAL_UART_TxCpltCallback(), HAL_UART_RxHalfCpltCallback(). + Exception done for MspInit and MspDeInit functions that are respectively + reset to the legacy weak (surcharged) functions in the HAL_UART_Init() + and HAL_UART_DeInit() only when these callbacks are null (not registered beforehand). + If not, MspInit or MspDeInit are not null, the HAL_UART_Init() and HAL_UART_DeInit() + keep and use the user MspInit/MspDeInit callbacks (registered beforehand). + + [..] + Callbacks can be registered/unregistered in HAL_UART_STATE_READY state only. + Exception done MspInit/MspDeInit that can be registered/unregistered + in HAL_UART_STATE_READY or HAL_UART_STATE_RESET state, thus registered (user) + MspInit/DeInit callbacks can be used during the Init/DeInit. + In that case first register the MspInit/MspDeInit user callbacks + using HAL_UART_RegisterCallback() before calling HAL_UART_DeInit() + or HAL_UART_Init() function. + + [..] + When The compilation define USE_HAL_UART_REGISTER_CALLBACKS is set to 0 or + not defined, the callback registration feature is not available + and weak (surcharged) callbacks are used. + + + @endverbatim + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal.h" + +/** @addtogroup STM32L0xx_HAL_Driver + * @{ + */ + +/** @defgroup UART UART + * @brief HAL UART module driver + * @{ + */ + +#ifdef HAL_UART_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/** @defgroup UART_Private_Constants UART Private Constants + * @{ + */ +#define USART_CR1_FIELDS ((uint32_t)(USART_CR1_M | USART_CR1_PCE | USART_CR1_PS | USART_CR1_TE | USART_CR1_RE | \ + USART_CR1_OVER8)) /*!< UART or USART CR1 fields of parameters set by UART_SetConfig API */ + +#define USART_CR3_FIELDS ((uint32_t)(USART_CR3_RTSE | USART_CR3_CTSE |\ + USART_CR3_ONEBIT)) /*!< UART or USART CR3 fields of parameters set by UART_SetConfig API */ + +#define LPUART_BRR_MIN 0x00000300U /* LPUART BRR minimum authorized value */ +#define LPUART_BRR_MAX 0x000FFFFFU /* LPUART BRR maximum authorized value */ + +#define UART_BRR_MIN 0x10U /* UART BRR minimum authorized value */ +#define UART_BRR_MAX 0x0000FFFFU /* UART BRR maximum authorized value */ +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/** @addtogroup UART_Private_Functions + * @{ + */ +static void UART_EndTxTransfer(UART_HandleTypeDef *huart); +static void UART_EndRxTransfer(UART_HandleTypeDef *huart); +static void UART_DMATransmitCplt(DMA_HandleTypeDef *hdma); +static void UART_DMAReceiveCplt(DMA_HandleTypeDef *hdma); +static void UART_DMARxHalfCplt(DMA_HandleTypeDef *hdma); +static void UART_DMATxHalfCplt(DMA_HandleTypeDef *hdma); +static void UART_DMAError(DMA_HandleTypeDef *hdma); +static void UART_DMAAbortOnError(DMA_HandleTypeDef *hdma); +static void UART_DMATxAbortCallback(DMA_HandleTypeDef *hdma); +static void UART_DMARxAbortCallback(DMA_HandleTypeDef *hdma); +static void UART_DMATxOnlyAbortCallback(DMA_HandleTypeDef *hdma); +static void UART_DMARxOnlyAbortCallback(DMA_HandleTypeDef *hdma); +static void UART_TxISR_8BIT(UART_HandleTypeDef *huart); +static void UART_TxISR_16BIT(UART_HandleTypeDef *huart); +static void UART_EndTransmit_IT(UART_HandleTypeDef *huart); +static void UART_RxISR_8BIT(UART_HandleTypeDef *huart); +static void UART_RxISR_16BIT(UART_HandleTypeDef *huart); +/** + * @} + */ + +/* Private variables ---------------------------------------------------------*/ +/* Exported Constants --------------------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ + +/** @defgroup UART_Exported_Functions UART Exported Functions + * @{ + */ + +/** @defgroup UART_Exported_Functions_Group1 Initialization and de-initialization functions + * @brief Initialization and Configuration functions + * +@verbatim +=============================================================================== + ##### Initialization and Configuration functions ##### + =============================================================================== + [..] + This subsection provides a set of functions allowing to initialize the USARTx or the UARTy + in asynchronous mode. + (+) For the asynchronous mode the parameters below can be configured: + (++) Baud Rate + (++) Word Length + (++) Stop Bit + (++) Parity: If the parity is enabled, then the MSB bit of the data written + in the data register is transmitted but is changed by the parity bit. + (++) Hardware flow control + (++) Receiver/transmitter modes + (++) Over Sampling Method + (++) One-Bit Sampling Method + (+) For the asynchronous mode, the following advanced features can be configured as well: + (++) TX and/or RX pin level inversion + (++) data logical level inversion + (++) RX and TX pins swap + (++) RX overrun detection disabling + (++) DMA disabling on RX error + (++) MSB first on communication line + (++) auto Baud rate detection + [..] + The HAL_UART_Init(), HAL_HalfDuplex_Init(), HAL_LIN_Init()and HAL_MultiProcessor_Init()API + follow respectively the UART asynchronous, UART Half duplex, UART LIN mode + and UART multiprocessor mode configuration procedures (details for the procedures + are available in reference manual). + +@endverbatim + + Depending on the frame length defined by the M1 and M0 bits (7-bit, + 8-bit or 9-bit), the possible UART formats are listed in the + following table. + + Table 1. UART frame format. + +-----------------------------------------------------------------------+ + | M1 bit | M0 bit | PCE bit | UART frame | + |---------|---------|-----------|---------------------------------------| + | 0 | 0 | 0 | | SB | 8 bit data | STB | | + |---------|---------|-----------|---------------------------------------| + | 0 | 0 | 1 | | SB | 7 bit data | PB | STB | | + |---------|---------|-----------|---------------------------------------| + | 0 | 1 | 0 | | SB | 9 bit data | STB | | + |---------|---------|-----------|---------------------------------------| + | 0 | 1 | 1 | | SB | 8 bit data | PB | STB | | + |---------|---------|-----------|---------------------------------------| + | 1 | 0 | 0 | | SB | 7 bit data | STB | | + |---------|---------|-----------|---------------------------------------| + | 1 | 0 | 1 | | SB | 6 bit data | PB | STB | | + +-----------------------------------------------------------------------+ + + * @{ + */ + +/** + * @brief Initialize the UART mode according to the specified + * parameters in the UART_InitTypeDef and initialize the associated handle. + * @param huart UART handle. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart) +{ + /* Check the UART handle allocation */ + if (huart == NULL) + { + return HAL_ERROR; + } + + if (huart->Init.HwFlowCtl != UART_HWCONTROL_NONE) + { + /* Check the parameters */ + assert_param(IS_UART_HWFLOW_INSTANCE(huart->Instance)); + } + else + { + /* Check the parameters */ + assert_param((IS_UART_INSTANCE(huart->Instance)) || (IS_LPUART_INSTANCE(huart->Instance))); + } + + if (huart->gState == HAL_UART_STATE_RESET) + { + /* Allocate lock resource and initialize it */ + huart->Lock = HAL_UNLOCKED; + +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) + UART_InitCallbacksToDefault(huart); + + if (huart->MspInitCallback == NULL) + { + huart->MspInitCallback = HAL_UART_MspInit; + } + + /* Init the low level hardware */ + huart->MspInitCallback(huart); +#else + /* Init the low level hardware : GPIO, CLOCK */ + HAL_UART_MspInit(huart); +#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */ + } + + huart->gState = HAL_UART_STATE_BUSY; + + __HAL_UART_DISABLE(huart); + + /* Set the UART Communication parameters */ + if (UART_SetConfig(huart) == HAL_ERROR) + { + return HAL_ERROR; + } + + if (huart->AdvancedInit.AdvFeatureInit != UART_ADVFEATURE_NO_INIT) + { + UART_AdvFeatureConfig(huart); + } + + /* In asynchronous mode, the following bits must be kept cleared: + - LINEN and CLKEN bits in the USART_CR2 register, + - SCEN, HDSEL and IREN bits in the USART_CR3 register.*/ + CLEAR_BIT(huart->Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN)); + CLEAR_BIT(huart->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN)); + + __HAL_UART_ENABLE(huart); + + /* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */ + return (UART_CheckIdleState(huart)); +} + +/** + * @brief Initialize the half-duplex mode according to the specified + * parameters in the UART_InitTypeDef and creates the associated handle. + * @param huart UART handle. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_HalfDuplex_Init(UART_HandleTypeDef *huart) +{ + /* Check the UART handle allocation */ + if (huart == NULL) + { + return HAL_ERROR; + } + + /* Check UART instance */ + assert_param(IS_UART_HALFDUPLEX_INSTANCE(huart->Instance)); + + if (huart->gState == HAL_UART_STATE_RESET) + { + /* Allocate lock resource and initialize it */ + huart->Lock = HAL_UNLOCKED; + +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) + UART_InitCallbacksToDefault(huart); + + if (huart->MspInitCallback == NULL) + { + huart->MspInitCallback = HAL_UART_MspInit; + } + + /* Init the low level hardware */ + huart->MspInitCallback(huart); +#else + /* Init the low level hardware : GPIO, CLOCK */ + HAL_UART_MspInit(huart); +#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */ + } + + huart->gState = HAL_UART_STATE_BUSY; + + __HAL_UART_DISABLE(huart); + + /* Set the UART Communication parameters */ + if (UART_SetConfig(huart) == HAL_ERROR) + { + return HAL_ERROR; + } + + if (huart->AdvancedInit.AdvFeatureInit != UART_ADVFEATURE_NO_INIT) + { + UART_AdvFeatureConfig(huart); + } + + /* In half-duplex mode, the following bits must be kept cleared: + - LINEN and CLKEN bits in the USART_CR2 register, + - SCEN and IREN bits in the USART_CR3 register.*/ + CLEAR_BIT(huart->Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN)); + CLEAR_BIT(huart->Instance->CR3, (USART_CR3_IREN | USART_CR3_SCEN)); + + /* Enable the Half-Duplex mode by setting the HDSEL bit in the CR3 register */ + SET_BIT(huart->Instance->CR3, USART_CR3_HDSEL); + + __HAL_UART_ENABLE(huart); + + /* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */ + return (UART_CheckIdleState(huart)); +} + + +/** + * @brief Initialize the LIN mode according to the specified + * parameters in the UART_InitTypeDef and creates the associated handle. + * @param huart UART handle. + * @param BreakDetectLength Specifies the LIN break detection length. + * This parameter can be one of the following values: + * @arg @ref UART_LINBREAKDETECTLENGTH_10B 10-bit break detection + * @arg @ref UART_LINBREAKDETECTLENGTH_11B 11-bit break detection + * @retval HAL status + */ +HAL_StatusTypeDef HAL_LIN_Init(UART_HandleTypeDef *huart, uint32_t BreakDetectLength) +{ + /* Check the UART handle allocation */ + if (huart == NULL) + { + return HAL_ERROR; + } + + /* Check the LIN UART instance */ + assert_param(IS_UART_LIN_INSTANCE(huart->Instance)); + /* Check the Break detection length parameter */ + assert_param(IS_UART_LIN_BREAK_DETECT_LENGTH(BreakDetectLength)); + + /* LIN mode limited to 16-bit oversampling only */ + if (huart->Init.OverSampling == UART_OVERSAMPLING_8) + { + return HAL_ERROR; + } + /* LIN mode limited to 8-bit data length */ + if (huart->Init.WordLength != UART_WORDLENGTH_8B) + { + return HAL_ERROR; + } + + if (huart->gState == HAL_UART_STATE_RESET) + { + /* Allocate lock resource and initialize it */ + huart->Lock = HAL_UNLOCKED; + +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) + UART_InitCallbacksToDefault(huart); + + if (huart->MspInitCallback == NULL) + { + huart->MspInitCallback = HAL_UART_MspInit; + } + + /* Init the low level hardware */ + huart->MspInitCallback(huart); +#else + /* Init the low level hardware : GPIO, CLOCK */ + HAL_UART_MspInit(huart); +#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */ + } + + huart->gState = HAL_UART_STATE_BUSY; + + __HAL_UART_DISABLE(huart); + + /* Set the UART Communication parameters */ + if (UART_SetConfig(huart) == HAL_ERROR) + { + return HAL_ERROR; + } + + if (huart->AdvancedInit.AdvFeatureInit != UART_ADVFEATURE_NO_INIT) + { + UART_AdvFeatureConfig(huart); + } + + /* In LIN mode, the following bits must be kept cleared: + - LINEN and CLKEN bits in the USART_CR2 register, + - SCEN and IREN bits in the USART_CR3 register.*/ + CLEAR_BIT(huart->Instance->CR2, USART_CR2_CLKEN); + CLEAR_BIT(huart->Instance->CR3, (USART_CR3_HDSEL | USART_CR3_IREN | USART_CR3_SCEN)); + + /* Enable the LIN mode by setting the LINEN bit in the CR2 register */ + SET_BIT(huart->Instance->CR2, USART_CR2_LINEN); + + /* Set the USART LIN Break detection length. */ + MODIFY_REG(huart->Instance->CR2, USART_CR2_LBDL, BreakDetectLength); + + __HAL_UART_ENABLE(huart); + + /* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */ + return (UART_CheckIdleState(huart)); +} + + +/** + * @brief Initialize the multiprocessor mode according to the specified + * parameters in the UART_InitTypeDef and initialize the associated handle. + * @param huart UART handle. + * @param Address UART node address (4-, 6-, 7- or 8-bit long). + * @param WakeUpMethod Specifies the UART wakeup method. + * This parameter can be one of the following values: + * @arg @ref UART_WAKEUPMETHOD_IDLELINE WakeUp by an idle line detection + * @arg @ref UART_WAKEUPMETHOD_ADDRESSMARK WakeUp by an address mark + * @note If the user resorts to idle line detection wake up, the Address parameter + * is useless and ignored by the initialization function. + * @note If the user resorts to address mark wake up, the address length detection + * is configured by default to 4 bits only. For the UART to be able to + * manage 6-, 7- or 8-bit long addresses detection, the API + * HAL_MultiProcessorEx_AddressLength_Set() must be called after + * HAL_MultiProcessor_Init(). + * @retval HAL status + */ +HAL_StatusTypeDef HAL_MultiProcessor_Init(UART_HandleTypeDef *huart, uint8_t Address, uint32_t WakeUpMethod) +{ + /* Check the UART handle allocation */ + if (huart == NULL) + { + return HAL_ERROR; + } + + /* Check the wake up method parameter */ + assert_param(IS_UART_WAKEUPMETHOD(WakeUpMethod)); + + if (huart->gState == HAL_UART_STATE_RESET) + { + /* Allocate lock resource and initialize it */ + huart->Lock = HAL_UNLOCKED; + +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) + UART_InitCallbacksToDefault(huart); + + if (huart->MspInitCallback == NULL) + { + huart->MspInitCallback = HAL_UART_MspInit; + } + + /* Init the low level hardware */ + huart->MspInitCallback(huart); +#else + /* Init the low level hardware : GPIO, CLOCK */ + HAL_UART_MspInit(huart); +#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */ + } + + huart->gState = HAL_UART_STATE_BUSY; + + __HAL_UART_DISABLE(huart); + + /* Set the UART Communication parameters */ + if (UART_SetConfig(huart) == HAL_ERROR) + { + return HAL_ERROR; + } + + if (huart->AdvancedInit.AdvFeatureInit != UART_ADVFEATURE_NO_INIT) + { + UART_AdvFeatureConfig(huart); + } + + /* In multiprocessor mode, the following bits must be kept cleared: + - LINEN and CLKEN bits in the USART_CR2 register, + - SCEN, HDSEL and IREN bits in the USART_CR3 register. */ + CLEAR_BIT(huart->Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN)); + CLEAR_BIT(huart->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN)); + + if (WakeUpMethod == UART_WAKEUPMETHOD_ADDRESSMARK) + { + /* If address mark wake up method is chosen, set the USART address node */ + MODIFY_REG(huart->Instance->CR2, USART_CR2_ADD, ((uint32_t)Address << UART_CR2_ADDRESS_LSB_POS)); + } + + /* Set the wake up method by setting the WAKE bit in the CR1 register */ + MODIFY_REG(huart->Instance->CR1, USART_CR1_WAKE, WakeUpMethod); + + __HAL_UART_ENABLE(huart); + + /* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */ + return (UART_CheckIdleState(huart)); +} + + +/** + * @brief DeInitialize the UART peripheral. + * @param huart UART handle. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_UART_DeInit(UART_HandleTypeDef *huart) +{ + /* Check the UART handle allocation */ + if (huart == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param((IS_UART_INSTANCE(huart->Instance)) || (IS_LPUART_INSTANCE(huart->Instance))); + + huart->gState = HAL_UART_STATE_BUSY; + + __HAL_UART_DISABLE(huart); + + huart->Instance->CR1 = 0x0U; + huart->Instance->CR2 = 0x0U; + huart->Instance->CR3 = 0x0U; + +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) + if (huart->MspDeInitCallback == NULL) + { + huart->MspDeInitCallback = HAL_UART_MspDeInit; + } + /* DeInit the low level hardware */ + huart->MspDeInitCallback(huart); +#else + /* DeInit the low level hardware */ + HAL_UART_MspDeInit(huart); +#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */ + + huart->ErrorCode = HAL_UART_ERROR_NONE; + huart->gState = HAL_UART_STATE_RESET; + huart->RxState = HAL_UART_STATE_RESET; + huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; + + __HAL_UNLOCK(huart); + + return HAL_OK; +} + +/** + * @brief Initialize the UART MSP. + * @param huart UART handle. + * @retval None + */ +__weak void HAL_UART_MspInit(UART_HandleTypeDef *huart) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(huart); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_UART_MspInit can be implemented in the user file + */ +} + +/** + * @brief DeInitialize the UART MSP. + * @param huart UART handle. + * @retval None + */ +__weak void HAL_UART_MspDeInit(UART_HandleTypeDef *huart) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(huart); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_UART_MspDeInit can be implemented in the user file + */ +} + +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) +/** + * @brief Register a User UART Callback + * To be used instead of the weak predefined callback + * @param huart uart handle + * @param CallbackID ID of the callback to be registered + * This parameter can be one of the following values: + * @arg @ref HAL_UART_TX_HALFCOMPLETE_CB_ID Tx Half Complete Callback ID + * @arg @ref HAL_UART_TX_COMPLETE_CB_ID Tx Complete Callback ID + * @arg @ref HAL_UART_RX_HALFCOMPLETE_CB_ID Rx Half Complete Callback ID + * @arg @ref HAL_UART_RX_COMPLETE_CB_ID Rx Complete Callback ID + * @arg @ref HAL_UART_ERROR_CB_ID Error Callback ID + * @arg @ref HAL_UART_ABORT_COMPLETE_CB_ID Abort Complete Callback ID + * @arg @ref HAL_UART_ABORT_TRANSMIT_COMPLETE_CB_ID Abort Transmit Complete Callback ID + * @arg @ref HAL_UART_ABORT_RECEIVE_COMPLETE_CB_ID Abort Receive Complete Callback ID + * @arg @ref HAL_UART_WAKEUP_CB_ID Wakeup Callback ID + * @arg @ref HAL_UART_MSPINIT_CB_ID MspInit Callback ID + * @arg @ref HAL_UART_MSPDEINIT_CB_ID MspDeInit Callback ID + * @param pCallback pointer to the Callback function + * @retval HAL status + */ +HAL_StatusTypeDef HAL_UART_RegisterCallback(UART_HandleTypeDef *huart, HAL_UART_CallbackIDTypeDef CallbackID, + pUART_CallbackTypeDef pCallback) +{ + HAL_StatusTypeDef status = HAL_OK; + + if (pCallback == NULL) + { + huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK; + + return HAL_ERROR; + } + + __HAL_LOCK(huart); + + if (huart->gState == HAL_UART_STATE_READY) + { + switch (CallbackID) + { + case HAL_UART_TX_HALFCOMPLETE_CB_ID : + huart->TxHalfCpltCallback = pCallback; + break; + + case HAL_UART_TX_COMPLETE_CB_ID : + huart->TxCpltCallback = pCallback; + break; + + case HAL_UART_RX_HALFCOMPLETE_CB_ID : + huart->RxHalfCpltCallback = pCallback; + break; + + case HAL_UART_RX_COMPLETE_CB_ID : + huart->RxCpltCallback = pCallback; + break; + + case HAL_UART_ERROR_CB_ID : + huart->ErrorCallback = pCallback; + break; + + case HAL_UART_ABORT_COMPLETE_CB_ID : + huart->AbortCpltCallback = pCallback; + break; + + case HAL_UART_ABORT_TRANSMIT_COMPLETE_CB_ID : + huart->AbortTransmitCpltCallback = pCallback; + break; + + case HAL_UART_ABORT_RECEIVE_COMPLETE_CB_ID : + huart->AbortReceiveCpltCallback = pCallback; + break; + + case HAL_UART_WAKEUP_CB_ID : + huart->WakeupCallback = pCallback; + break; + + + case HAL_UART_MSPINIT_CB_ID : + huart->MspInitCallback = pCallback; + break; + + case HAL_UART_MSPDEINIT_CB_ID : + huart->MspDeInitCallback = pCallback; + break; + + default : + huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK; + + status = HAL_ERROR; + break; + } + } + else if (huart->gState == HAL_UART_STATE_RESET) + { + switch (CallbackID) + { + case HAL_UART_MSPINIT_CB_ID : + huart->MspInitCallback = pCallback; + break; + + case HAL_UART_MSPDEINIT_CB_ID : + huart->MspDeInitCallback = pCallback; + break; + + default : + huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK; + + status = HAL_ERROR; + break; + } + } + else + { + huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK; + + status = HAL_ERROR; + } + + __HAL_UNLOCK(huart); + + return status; +} + +/** + * @brief Unregister an UART Callback + * UART callaback is redirected to the weak predefined callback + * @param huart uart handle + * @param CallbackID ID of the callback to be unregistered + * This parameter can be one of the following values: + * @arg @ref HAL_UART_TX_HALFCOMPLETE_CB_ID Tx Half Complete Callback ID + * @arg @ref HAL_UART_TX_COMPLETE_CB_ID Tx Complete Callback ID + * @arg @ref HAL_UART_RX_HALFCOMPLETE_CB_ID Rx Half Complete Callback ID + * @arg @ref HAL_UART_RX_COMPLETE_CB_ID Rx Complete Callback ID + * @arg @ref HAL_UART_ERROR_CB_ID Error Callback ID + * @arg @ref HAL_UART_ABORT_COMPLETE_CB_ID Abort Complete Callback ID + * @arg @ref HAL_UART_ABORT_TRANSMIT_COMPLETE_CB_ID Abort Transmit Complete Callback ID + * @arg @ref HAL_UART_ABORT_RECEIVE_COMPLETE_CB_ID Abort Receive Complete Callback ID + * @arg @ref HAL_UART_WAKEUP_CB_ID Wakeup Callback ID + * @arg @ref HAL_UART_MSPINIT_CB_ID MspInit Callback ID + * @arg @ref HAL_UART_MSPDEINIT_CB_ID MspDeInit Callback ID + * @retval HAL status + */ +HAL_StatusTypeDef HAL_UART_UnRegisterCallback(UART_HandleTypeDef *huart, HAL_UART_CallbackIDTypeDef CallbackID) +{ + HAL_StatusTypeDef status = HAL_OK; + + __HAL_LOCK(huart); + + if (HAL_UART_STATE_READY == huart->gState) + { + switch (CallbackID) + { + case HAL_UART_TX_HALFCOMPLETE_CB_ID : + huart->TxHalfCpltCallback = HAL_UART_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback */ + break; + + case HAL_UART_TX_COMPLETE_CB_ID : + huart->TxCpltCallback = HAL_UART_TxCpltCallback; /* Legacy weak TxCpltCallback */ + break; + + case HAL_UART_RX_HALFCOMPLETE_CB_ID : + huart->RxHalfCpltCallback = HAL_UART_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback */ + break; + + case HAL_UART_RX_COMPLETE_CB_ID : + huart->RxCpltCallback = HAL_UART_RxCpltCallback; /* Legacy weak RxCpltCallback */ + break; + + case HAL_UART_ERROR_CB_ID : + huart->ErrorCallback = HAL_UART_ErrorCallback; /* Legacy weak ErrorCallback */ + break; + + case HAL_UART_ABORT_COMPLETE_CB_ID : + huart->AbortCpltCallback = HAL_UART_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ + break; + + case HAL_UART_ABORT_TRANSMIT_COMPLETE_CB_ID : + huart->AbortTransmitCpltCallback = HAL_UART_AbortTransmitCpltCallback; /* Legacy weak + AbortTransmitCpltCallback */ + break; + + case HAL_UART_ABORT_RECEIVE_COMPLETE_CB_ID : + huart->AbortReceiveCpltCallback = HAL_UART_AbortReceiveCpltCallback; /* Legacy weak + AbortReceiveCpltCallback */ + break; + + case HAL_UART_WAKEUP_CB_ID : + huart->WakeupCallback = HAL_UARTEx_WakeupCallback; /* Legacy weak WakeupCallback */ + break; + + case HAL_UART_MSPINIT_CB_ID : + huart->MspInitCallback = HAL_UART_MspInit; /* Legacy weak MspInitCallback */ + break; + + case HAL_UART_MSPDEINIT_CB_ID : + huart->MspDeInitCallback = HAL_UART_MspDeInit; /* Legacy weak MspDeInitCallback */ + break; + + default : + huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK; + + status = HAL_ERROR; + break; + } + } + else if (HAL_UART_STATE_RESET == huart->gState) + { + switch (CallbackID) + { + case HAL_UART_MSPINIT_CB_ID : + huart->MspInitCallback = HAL_UART_MspInit; + break; + + case HAL_UART_MSPDEINIT_CB_ID : + huart->MspDeInitCallback = HAL_UART_MspDeInit; + break; + + default : + huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK; + + status = HAL_ERROR; + break; + } + } + else + { + huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK; + + status = HAL_ERROR; + } + + __HAL_UNLOCK(huart); + + return status; +} + +/** + * @brief Register a User UART Rx Event Callback + * To be used instead of the weak predefined callback + * @param huart Uart handle + * @param pCallback Pointer to the Rx Event Callback function + * @retval HAL status + */ +HAL_StatusTypeDef HAL_UART_RegisterRxEventCallback(UART_HandleTypeDef *huart, pUART_RxEventCallbackTypeDef pCallback) +{ + HAL_StatusTypeDef status = HAL_OK; + + if (pCallback == NULL) + { + huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK; + + return HAL_ERROR; + } + + /* Process locked */ + __HAL_LOCK(huart); + + if (huart->gState == HAL_UART_STATE_READY) + { + huart->RxEventCallback = pCallback; + } + else + { + huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK; + + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(huart); + + return status; +} + +/** + * @brief UnRegister the UART Rx Event Callback + * UART Rx Event Callback is redirected to the weak HAL_UARTEx_RxEventCallback() predefined callback + * @param huart Uart handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_UART_UnRegisterRxEventCallback(UART_HandleTypeDef *huart) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Process locked */ + __HAL_LOCK(huart); + + if (huart->gState == HAL_UART_STATE_READY) + { + huart->RxEventCallback = HAL_UARTEx_RxEventCallback; /* Legacy weak UART Rx Event Callback */ + } + else + { + huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK; + + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(huart); + return status; +} + +#endif /* USE_HAL_UART_REGISTER_CALLBACKS */ + +/** + * @} + */ + +/** @defgroup UART_Exported_Functions_Group2 IO operation functions + * @brief UART Transmit/Receive functions + * +@verbatim + =============================================================================== + ##### IO operation functions ##### + =============================================================================== + This subsection provides a set of functions allowing to manage the UART asynchronous + and Half duplex data transfers. + + (#) There are two mode 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. + (+) Non-Blocking mode: The communication is performed using Interrupts + or DMA, These API's return the HAL status. + The end of the data processing will be indicated through the + dedicated UART IRQ when using Interrupt mode or the DMA IRQ when + using DMA mode. + The HAL_UART_TxCpltCallback(), HAL_UART_RxCpltCallback() user callbacks + will be executed respectively at the end of the transmit or Receive process + The HAL_UART_ErrorCallback()user callback will be executed when a communication error is detected + + (#) Blocking mode API's are : + (+) HAL_UART_Transmit() + (+) HAL_UART_Receive() + + (#) Non-Blocking mode API's with Interrupt are : + (+) HAL_UART_Transmit_IT() + (+) HAL_UART_Receive_IT() + (+) HAL_UART_IRQHandler() + + (#) Non-Blocking mode API's with DMA are : + (+) HAL_UART_Transmit_DMA() + (+) HAL_UART_Receive_DMA() + (+) HAL_UART_DMAPause() + (+) HAL_UART_DMAResume() + (+) HAL_UART_DMAStop() + + (#) A set of Transfer Complete Callbacks are provided in Non_Blocking mode: + (+) HAL_UART_TxHalfCpltCallback() + (+) HAL_UART_TxCpltCallback() + (+) HAL_UART_RxHalfCpltCallback() + (+) HAL_UART_RxCpltCallback() + (+) HAL_UART_ErrorCallback() + + (#) Non-Blocking mode transfers could be aborted using Abort API's : + (+) HAL_UART_Abort() + (+) HAL_UART_AbortTransmit() + (+) HAL_UART_AbortReceive() + (+) HAL_UART_Abort_IT() + (+) HAL_UART_AbortTransmit_IT() + (+) HAL_UART_AbortReceive_IT() + + (#) For Abort services based on interrupts (HAL_UART_Abortxxx_IT), a set of Abort Complete Callbacks are provided: + (+) HAL_UART_AbortCpltCallback() + (+) HAL_UART_AbortTransmitCpltCallback() + (+) HAL_UART_AbortReceiveCpltCallback() + + (#) A Rx Event Reception Callback (Rx event notification) is available for Non_Blocking modes of enhanced + reception services: + (+) HAL_UARTEx_RxEventCallback() + + (#) In Non-Blocking mode transfers, possible errors are split into 2 categories. + Errors are handled as follows : + (+) Error is considered as Recoverable and non blocking : Transfer could go till end, but error severity is + to be evaluated by user : this concerns Frame Error, Parity Error or Noise Error + in Interrupt mode reception . + Received character is then retrieved and stored in Rx buffer, Error code is set to allow user + to identify error type, and HAL_UART_ErrorCallback() user callback is executed. + Transfer is kept ongoing on UART side. + If user wants to abort it, Abort services should be called by user. + (+) Error is considered as Blocking : Transfer could not be completed properly and is aborted. + This concerns Overrun Error In Interrupt mode reception and all errors in DMA mode. + Error code is set to allow user to identify error type, and HAL_UART_ErrorCallback() + user callback is executed. + + -@- In the Half duplex communication, it is forbidden to run the transmit + and receive process in parallel, the UART state HAL_UART_STATE_BUSY_TX_RX can't be useful. + +@endverbatim + * @{ + */ + +/** + * @brief Send an amount of data in blocking mode. + * @note When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1-M0 = 01), + * the sent data is handled as a set of u16. In this case, Size must indicate the number + * of u16 provided through pData. + * @note When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1-M0 = 01), + * address of user data buffer containing data to be sent, should be aligned on a half word frontier (16 bits) + * (as sent data will be handled using u16 pointer cast). Depending on compilation chain, + * use of specific alignment compilation directives or pragmas might be required + * to ensure proper alignment for pData. + * @param huart UART handle. + * @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. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout) +{ + uint8_t *pdata8bits; + uint16_t *pdata16bits; + uint32_t tickstart; + + /* Check that a Tx process is not already ongoing */ + if (huart->gState == HAL_UART_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + return HAL_ERROR; + } + + /* In case of 9bits/No Parity transfer, pData buffer provided as input parameter + should be aligned on a u16 frontier, as data to be filled into TDR will be + handled through a u16 cast. */ + if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE)) + { + if ((((uint32_t)pData) & 1U) != 0U) + { + return HAL_ERROR; + } + } + + __HAL_LOCK(huart); + + huart->ErrorCode = HAL_UART_ERROR_NONE; + huart->gState = HAL_UART_STATE_BUSY_TX; + + /* Init tickstart for timeout management */ + tickstart = HAL_GetTick(); + + huart->TxXferSize = Size; + huart->TxXferCount = Size; + + /* In case of 9bits/No Parity transfer, pData needs to be handled as a uint16_t pointer */ + if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE)) + { + pdata8bits = NULL; + pdata16bits = (uint16_t *) pData; + } + else + { + pdata8bits = pData; + pdata16bits = NULL; + } + + __HAL_UNLOCK(huart); + + while (huart->TxXferCount > 0U) + { + if (UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK) + { + return HAL_TIMEOUT; + } + if (pdata8bits == NULL) + { + huart->Instance->TDR = (uint16_t)(*pdata16bits & 0x01FFU); + pdata16bits++; + } + else + { + huart->Instance->TDR = (uint8_t)(*pdata8bits & 0xFFU); + pdata8bits++; + } + huart->TxXferCount--; + } + + if (UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_TC, RESET, tickstart, Timeout) != HAL_OK) + { + return HAL_TIMEOUT; + } + + /* At end of Tx process, restore huart->gState to Ready */ + huart->gState = HAL_UART_STATE_READY; + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Receive an amount of data in blocking mode. + * @note When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1-M0 = 01), + * the received data is handled as a set of u16. In this case, Size must indicate the number + * of u16 available through pData. + * @note When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1-M0 = 01), + * address of user data buffer for storing data to be received, should be aligned on a half word frontier + * (16 bits) (as received data will be handled using u16 pointer cast). Depending on compilation chain, + * use of specific alignment compilation directives or pragmas might be required + * to ensure proper alignment for pData. + * @param huart UART handle. + * @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. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout) +{ + uint8_t *pdata8bits; + uint16_t *pdata16bits; + uint16_t uhMask; + uint32_t tickstart; + + /* Check that a Rx process is not already ongoing */ + if (huart->RxState == HAL_UART_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + return HAL_ERROR; + } + + /* In case of 9bits/No Parity transfer, pData buffer provided as input parameter + should be aligned on a u16 frontier, as data to be received from RDR will be + handled through a u16 cast. */ + if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE)) + { + if ((((uint32_t)pData) & 1U) != 0U) + { + return HAL_ERROR; + } + } + + __HAL_LOCK(huart); + + huart->ErrorCode = HAL_UART_ERROR_NONE; + huart->RxState = HAL_UART_STATE_BUSY_RX; + huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; + + /* Init tickstart for timeout management */ + tickstart = HAL_GetTick(); + + huart->RxXferSize = Size; + huart->RxXferCount = Size; + + /* Computation of UART mask to apply to RDR register */ + UART_MASK_COMPUTATION(huart); + uhMask = huart->Mask; + + /* In case of 9bits/No Parity transfer, pRxData needs to be handled as a uint16_t pointer */ + if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE)) + { + pdata8bits = NULL; + pdata16bits = (uint16_t *) pData; + } + else + { + pdata8bits = pData; + pdata16bits = NULL; + } + + __HAL_UNLOCK(huart); + + /* as long as data have to be received */ + while (huart->RxXferCount > 0U) + { + if (UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_RXNE, RESET, tickstart, Timeout) != HAL_OK) + { + return HAL_TIMEOUT; + } + if (pdata8bits == NULL) + { + *pdata16bits = (uint16_t)(huart->Instance->RDR & uhMask); + pdata16bits++; + } + else + { + *pdata8bits = (uint8_t)(huart->Instance->RDR & (uint8_t)uhMask); + pdata8bits++; + } + huart->RxXferCount--; + } + + /* At end of Rx process, restore huart->RxState to Ready */ + huart->RxState = HAL_UART_STATE_READY; + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Send an amount of data in interrupt mode. + * @note When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1-M0 = 01), + * the sent data is handled as a set of u16. In this case, Size must indicate the number + * of u16 provided through pData. + * @note When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1-M0 = 01), + * address of user data buffer containing data to be sent, should be aligned on a half word frontier (16 bits) + * (as sent data will be handled using u16 pointer cast). Depending on compilation chain, + * use of specific alignment compilation directives or pragmas might be required + * to ensure proper alignment for pData. + * @param huart UART handle. + * @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_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size) +{ + /* Check that a Tx process is not already ongoing */ + if (huart->gState == HAL_UART_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + return HAL_ERROR; + } + + /* In case of 9bits/No Parity transfer, pData buffer provided as input parameter + should be aligned on a u16 frontier, as data to be filled into TDR will be + handled through a u16 cast. */ + if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE)) + { + if ((((uint32_t)pData) & 1U) != 0U) + { + return HAL_ERROR; + } + } + + __HAL_LOCK(huart); + + huart->pTxBuffPtr = pData; + huart->TxXferSize = Size; + huart->TxXferCount = Size; + huart->TxISR = NULL; + + huart->ErrorCode = HAL_UART_ERROR_NONE; + huart->gState = HAL_UART_STATE_BUSY_TX; + + /* Set the Tx ISR function pointer according to the data word length */ + if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE)) + { + huart->TxISR = UART_TxISR_16BIT; + } + else + { + huart->TxISR = UART_TxISR_8BIT; + } + + __HAL_UNLOCK(huart); + + /* Enable the Transmit Data Register Empty interrupt */ + ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_TXEIE); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Receive an amount of data in interrupt mode. + * @note When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1-M0 = 01), + * the received data is handled as a set of u16. In this case, Size must indicate the number + * of u16 available through pData. + * @note When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1-M0 = 01), + * address of user data buffer for storing data to be received, should be aligned on a half word frontier + * (16 bits) (as received data will be handled using u16 pointer cast). Depending on compilation chain, + * use of specific alignment compilation directives or pragmas might be required + * to ensure proper alignment for pData. + * @param huart UART handle. + * @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_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size) +{ + /* Check that a Rx process is not already ongoing */ + if (huart->RxState == HAL_UART_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + return HAL_ERROR; + } + + /* In case of 9bits/No Parity transfer, pData buffer provided as input parameter + should be aligned on a u16 frontier, as data to be received from RDR will be + handled through a u16 cast. */ + if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE)) + { + if ((((uint32_t)pData) & 1U) != 0U) + { + return HAL_ERROR; + } + } + + __HAL_LOCK(huart); + + /* Set Reception type to Standard reception */ + huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; + + if (!(IS_LPUART_INSTANCE(huart->Instance))) + { + /* Check that USART RTOEN bit is set */ + if (READ_BIT(huart->Instance->CR2, USART_CR2_RTOEN) != 0U) + { + /* Enable the UART Receiver Timeout Interrupt */ + ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_RTOIE); + } + } + + return (UART_Start_Receive_IT(huart, pData, Size)); + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Send an amount of data in DMA mode. + * @note When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1-M0 = 01), + * the sent data is handled as a set of u16. In this case, Size must indicate the number + * of u16 provided through pData. + * @note When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1-M0 = 01), + * address of user data buffer containing data to be sent, should be aligned on a half word frontier (16 bits) + * (as sent data will be handled by DMA from halfword frontier). Depending on compilation chain, + * use of specific alignment compilation directives or pragmas might be required + * to ensure proper alignment for pData. + * @param huart UART handle. + * @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_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size) +{ + /* Check that a Tx process is not already ongoing */ + if (huart->gState == HAL_UART_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + return HAL_ERROR; + } + + /* In case of 9bits/No Parity transfer, pData buffer provided as input parameter + should be aligned on a u16 frontier, as data copy into TDR will be + handled by DMA from a u16 frontier. */ + if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE)) + { + if ((((uint32_t)pData) & 1U) != 0U) + { + return HAL_ERROR; + } + } + + __HAL_LOCK(huart); + + huart->pTxBuffPtr = pData; + huart->TxXferSize = Size; + huart->TxXferCount = Size; + + huart->ErrorCode = HAL_UART_ERROR_NONE; + huart->gState = HAL_UART_STATE_BUSY_TX; + + if (huart->hdmatx != NULL) + { + /* Set the UART DMA transfer complete callback */ + huart->hdmatx->XferCpltCallback = UART_DMATransmitCplt; + + /* Set the UART DMA Half transfer complete callback */ + huart->hdmatx->XferHalfCpltCallback = UART_DMATxHalfCplt; + + /* Set the DMA error callback */ + huart->hdmatx->XferErrorCallback = UART_DMAError; + + /* Set the DMA abort callback */ + huart->hdmatx->XferAbortCallback = NULL; + + /* Enable the UART transmit DMA channel */ + if (HAL_DMA_Start_IT(huart->hdmatx, (uint32_t)huart->pTxBuffPtr, (uint32_t)&huart->Instance->TDR, Size) != HAL_OK) + { + /* Set error code to DMA */ + huart->ErrorCode = HAL_UART_ERROR_DMA; + + __HAL_UNLOCK(huart); + + /* Restore huart->gState to ready */ + huart->gState = HAL_UART_STATE_READY; + + return HAL_ERROR; + } + } + /* Clear the TC flag in the ICR register */ + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_TCF); + + __HAL_UNLOCK(huart); + + /* Enable the DMA transfer for transmit request by setting the DMAT bit + in the UART CR3 register */ + ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_DMAT); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Receive an amount of data in DMA mode. + * @note When the UART parity is enabled (PCE = 1), the received data contain + * the parity bit (MSB position). + * @note When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1-M0 = 01), + * the received data is handled as a set of u16. In this case, Size must indicate the number + * of u16 available through pData. + * @note When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1-M0 = 01), + * address of user data buffer for storing data to be received, should be aligned on a half word frontier + * (16 bits) (as received data will be handled by DMA from halfword frontier). Depending on compilation chain, + * use of specific alignment compilation directives or pragmas might be required + * to ensure proper alignment for pData. + * @param huart UART handle. + * @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_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size) +{ + /* Check that a Rx process is not already ongoing */ + if (huart->RxState == HAL_UART_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + return HAL_ERROR; + } + + /* In case of 9bits/No Parity transfer, pData buffer provided as input parameter + should be aligned on a u16 frontier, as data copy from RDR will be + handled by DMA from a u16 frontier. */ + if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE)) + { + if ((((uint32_t)pData) & 1U) != 0U) + { + return HAL_ERROR; + } + } + + __HAL_LOCK(huart); + + /* Set Reception type to Standard reception */ + huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; + + if (!(IS_LPUART_INSTANCE(huart->Instance))) + { + /* Check that USART RTOEN bit is set */ + if (READ_BIT(huart->Instance->CR2, USART_CR2_RTOEN) != 0U) + { + /* Enable the UART Receiver Timeout Interrupt */ + ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_RTOIE); + } + } + + return (UART_Start_Receive_DMA(huart, pData, Size)); + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Pause the DMA Transfer. + * @param huart UART handle. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_UART_DMAPause(UART_HandleTypeDef *huart) +{ + const HAL_UART_StateTypeDef gstate = huart->gState; + const HAL_UART_StateTypeDef rxstate = huart->RxState; + + __HAL_LOCK(huart); + + if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT)) && + (gstate == HAL_UART_STATE_BUSY_TX)) + { + /* Disable the UART DMA Tx request */ + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT); + } + if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) && + (rxstate == HAL_UART_STATE_BUSY_RX)) + { + /* Disable PE and ERR (Frame error, noise error, overrun error) interrupts */ + ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_PEIE); + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); + + /* Disable the UART DMA Rx request */ + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR); + } + + __HAL_UNLOCK(huart); + + return HAL_OK; +} + +/** + * @brief Resume the DMA Transfer. + * @param huart UART handle. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_UART_DMAResume(UART_HandleTypeDef *huart) +{ + __HAL_LOCK(huart); + + if (huart->gState == HAL_UART_STATE_BUSY_TX) + { + /* Enable the UART DMA Tx request */ + ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_DMAT); + } + if (huart->RxState == HAL_UART_STATE_BUSY_RX) + { + /* Clear the Overrun flag before resuming the Rx transfer */ + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF); + + /* Re-enable PE and ERR (Frame error, noise error, overrun error) interrupts */ + ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_PEIE); + ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_EIE); + + /* Enable the UART DMA Rx request */ + ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_DMAR); + } + + __HAL_UNLOCK(huart); + + return HAL_OK; +} + +/** + * @brief Stop the DMA Transfer. + * @param huart UART handle. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_UART_DMAStop(UART_HandleTypeDef *huart) +{ + /* The Lock is not implemented on this API to allow the user application + to call the HAL UART API under callbacks HAL_UART_TxCpltCallback() / HAL_UART_RxCpltCallback() / + HAL_UART_TxHalfCpltCallback / HAL_UART_RxHalfCpltCallback: + indeed, when HAL_DMA_Abort() API is called, the DMA TX/RX Transfer or Half Transfer complete + interrupt is generated if the DMA transfer interruption occurs at the middle or at the end of + the stream and the corresponding call back is executed. */ + + const HAL_UART_StateTypeDef gstate = huart->gState; + const HAL_UART_StateTypeDef rxstate = huart->RxState; + + /* Stop UART DMA Tx request if ongoing */ + if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT)) && + (gstate == HAL_UART_STATE_BUSY_TX)) + { + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT); + + /* Abort the UART DMA Tx channel */ + if (huart->hdmatx != NULL) + { + if (HAL_DMA_Abort(huart->hdmatx) != HAL_OK) + { + if (HAL_DMA_GetError(huart->hdmatx) == HAL_DMA_ERROR_TIMEOUT) + { + /* Set error code to DMA */ + huart->ErrorCode = HAL_UART_ERROR_DMA; + + return HAL_TIMEOUT; + } + } + } + + UART_EndTxTransfer(huart); + } + + /* Stop UART DMA Rx request if ongoing */ + if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) && + (rxstate == HAL_UART_STATE_BUSY_RX)) + { + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR); + + /* Abort the UART DMA Rx channel */ + if (huart->hdmarx != NULL) + { + if (HAL_DMA_Abort(huart->hdmarx) != HAL_OK) + { + if (HAL_DMA_GetError(huart->hdmarx) == HAL_DMA_ERROR_TIMEOUT) + { + /* Set error code to DMA */ + huart->ErrorCode = HAL_UART_ERROR_DMA; + + return HAL_TIMEOUT; + } + } + } + + UART_EndRxTransfer(huart); + } + + return HAL_OK; +} + +/** + * @brief Abort ongoing transfers (blocking mode). + * @param huart UART handle. + * @note This procedure could be used for aborting any ongoing transfer started in Interrupt or DMA mode. + * This procedure performs following operations : + * - Disable UART Interrupts (Tx and Rx) + * - 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_UART_Abort(UART_HandleTypeDef *huart) +{ + /* Disable TXEIE, TCIE, RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */ + ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE | USART_CR1_TCIE)); + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); + + /* If Reception till IDLE event was ongoing, disable IDLEIE interrupt */ + if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) + { + ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_IDLEIE)); + } + + /* Disable the UART DMA Tx request if enabled */ + if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT)) + { + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT); + + /* Abort the UART DMA Tx channel : use blocking DMA Abort API (no callback) */ + if (huart->hdmatx != NULL) + { + /* Set the UART DMA Abort callback to Null. + No call back execution at end of DMA abort procedure */ + huart->hdmatx->XferAbortCallback = NULL; + + if (HAL_DMA_Abort(huart->hdmatx) != HAL_OK) + { + if (HAL_DMA_GetError(huart->hdmatx) == HAL_DMA_ERROR_TIMEOUT) + { + /* Set error code to DMA */ + huart->ErrorCode = HAL_UART_ERROR_DMA; + + return HAL_TIMEOUT; + } + } + } + } + + /* Disable the UART DMA Rx request if enabled */ + if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) + { + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR); + + /* Abort the UART DMA Rx channel : use blocking DMA Abort API (no callback) */ + if (huart->hdmarx != NULL) + { + /* Set the UART DMA Abort callback to Null. + No call back execution at end of DMA abort procedure */ + huart->hdmarx->XferAbortCallback = NULL; + + if (HAL_DMA_Abort(huart->hdmarx) != HAL_OK) + { + if (HAL_DMA_GetError(huart->hdmarx) == HAL_DMA_ERROR_TIMEOUT) + { + /* Set error code to DMA */ + huart->ErrorCode = HAL_UART_ERROR_DMA; + + return HAL_TIMEOUT; + } + } + } + } + + /* Reset Tx and Rx transfer counters */ + huart->TxXferCount = 0U; + huart->RxXferCount = 0U; + + /* Clear the Error flags in the ICR register */ + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_FEF); + + + /* Discard the received data */ + __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST); + + /* Restore huart->gState and huart->RxState to Ready */ + huart->gState = HAL_UART_STATE_READY; + huart->RxState = HAL_UART_STATE_READY; + huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; + + huart->ErrorCode = HAL_UART_ERROR_NONE; + + return HAL_OK; +} + +/** + * @brief Abort ongoing Transmit transfer (blocking mode). + * @param huart UART handle. + * @note This procedure could be used for aborting any ongoing Tx transfer started in Interrupt or DMA mode. + * This procedure performs following operations : + * - Disable UART Interrupts (Tx) + * - 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_UART_AbortTransmit(UART_HandleTypeDef *huart) +{ + /* Disable TXEIE and TCIE interrupts */ + ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE)); + + /* Disable the UART DMA Tx request if enabled */ + if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT)) + { + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT); + + /* Abort the UART DMA Tx channel : use blocking DMA Abort API (no callback) */ + if (huart->hdmatx != NULL) + { + /* Set the UART DMA Abort callback to Null. + No call back execution at end of DMA abort procedure */ + huart->hdmatx->XferAbortCallback = NULL; + + if (HAL_DMA_Abort(huart->hdmatx) != HAL_OK) + { + if (HAL_DMA_GetError(huart->hdmatx) == HAL_DMA_ERROR_TIMEOUT) + { + /* Set error code to DMA */ + huart->ErrorCode = HAL_UART_ERROR_DMA; + + return HAL_TIMEOUT; + } + } + } + } + + /* Reset Tx transfer counter */ + huart->TxXferCount = 0U; + + + /* Restore huart->gState to Ready */ + huart->gState = HAL_UART_STATE_READY; + + return HAL_OK; +} + +/** + * @brief Abort ongoing Receive transfer (blocking mode). + * @param huart UART handle. + * @note This procedure could be used for aborting any ongoing Rx transfer started in Interrupt or DMA mode. + * This procedure performs following operations : + * - Disable UART Interrupts (Rx) + * - 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_UART_AbortReceive(UART_HandleTypeDef *huart) +{ + /* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */ + ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); + + /* If Reception till IDLE event was ongoing, disable IDLEIE interrupt */ + if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) + { + ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_IDLEIE)); + } + + /* Disable the UART DMA Rx request if enabled */ + if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) + { + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR); + + /* Abort the UART DMA Rx channel : use blocking DMA Abort API (no callback) */ + if (huart->hdmarx != NULL) + { + /* Set the UART DMA Abort callback to Null. + No call back execution at end of DMA abort procedure */ + huart->hdmarx->XferAbortCallback = NULL; + + if (HAL_DMA_Abort(huart->hdmarx) != HAL_OK) + { + if (HAL_DMA_GetError(huart->hdmarx) == HAL_DMA_ERROR_TIMEOUT) + { + /* Set error code to DMA */ + huart->ErrorCode = HAL_UART_ERROR_DMA; + + return HAL_TIMEOUT; + } + } + } + } + + /* Reset Rx transfer counter */ + huart->RxXferCount = 0U; + + /* Clear the Error flags in the ICR register */ + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_FEF); + + /* Discard the received data */ + __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST); + + /* Restore huart->RxState to Ready */ + huart->RxState = HAL_UART_STATE_READY; + huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; + + return HAL_OK; +} + +/** + * @brief Abort ongoing transfers (Interrupt mode). + * @param huart UART handle. + * @note This procedure could be used for aborting any ongoing transfer started in Interrupt or DMA mode. + * This procedure performs following operations : + * - Disable UART Interrupts (Tx and Rx) + * - 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_UART_Abort_IT(UART_HandleTypeDef *huart) +{ + uint32_t abortcplt = 1U; + + /* Disable interrupts */ + ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE | USART_CR1_TCIE)); + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); + + /* If Reception till IDLE event was ongoing, disable IDLEIE interrupt */ + if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) + { + ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_IDLEIE)); + } + + /* If DMA Tx and/or DMA Rx Handles are associated to UART Handle, DMA Abort complete callbacks should be initialised + before any call to DMA Abort functions */ + /* DMA Tx Handle is valid */ + if (huart->hdmatx != NULL) + { + /* Set DMA Abort Complete callback if UART DMA Tx request if enabled. + Otherwise, set it to NULL */ + if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT)) + { + huart->hdmatx->XferAbortCallback = UART_DMATxAbortCallback; + } + else + { + huart->hdmatx->XferAbortCallback = NULL; + } + } + /* DMA Rx Handle is valid */ + if (huart->hdmarx != NULL) + { + /* Set DMA Abort Complete callback if UART DMA Rx request if enabled. + Otherwise, set it to NULL */ + if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) + { + huart->hdmarx->XferAbortCallback = UART_DMARxAbortCallback; + } + else + { + huart->hdmarx->XferAbortCallback = NULL; + } + } + + /* Disable the UART DMA Tx request if enabled */ + if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT)) + { + /* Disable DMA Tx at UART level */ + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT); + + /* Abort the UART DMA Tx channel : use non blocking DMA Abort API (callback) */ + if (huart->hdmatx != NULL) + { + /* UART Tx DMA Abort callback has already been initialised : + will lead to call HAL_UART_AbortCpltCallback() at end of DMA abort procedure */ + + /* Abort DMA TX */ + if (HAL_DMA_Abort_IT(huart->hdmatx) != HAL_OK) + { + huart->hdmatx->XferAbortCallback = NULL; + } + else + { + abortcplt = 0U; + } + } + } + + /* Disable the UART DMA Rx request if enabled */ + if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) + { + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR); + + /* Abort the UART DMA Rx channel : use non blocking DMA Abort API (callback) */ + if (huart->hdmarx != NULL) + { + /* UART Rx DMA Abort callback has already been initialised : + will lead to call HAL_UART_AbortCpltCallback() at end of DMA abort procedure */ + + /* Abort DMA RX */ + if (HAL_DMA_Abort_IT(huart->hdmarx) != HAL_OK) + { + huart->hdmarx->XferAbortCallback = NULL; + abortcplt = 1U; + } + else + { + abortcplt = 0U; + } + } + } + + /* if no DMA abort complete callback execution is required => call user Abort Complete callback */ + if (abortcplt == 1U) + { + /* Reset Tx and Rx transfer counters */ + huart->TxXferCount = 0U; + huart->RxXferCount = 0U; + + /* Clear ISR function pointers */ + huart->RxISR = NULL; + huart->TxISR = NULL; + + /* Reset errorCode */ + huart->ErrorCode = HAL_UART_ERROR_NONE; + + /* Clear the Error flags in the ICR register */ + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_FEF); + + + /* Discard the received data */ + __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST); + + /* Restore huart->gState and huart->RxState to Ready */ + huart->gState = HAL_UART_STATE_READY; + huart->RxState = HAL_UART_STATE_READY; + huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; + + /* As no DMA to be aborted, call directly user Abort complete callback */ +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) + /* Call registered Abort complete callback */ + huart->AbortCpltCallback(huart); +#else + /* Call legacy weak Abort complete callback */ + HAL_UART_AbortCpltCallback(huart); +#endif /* USE_HAL_UART_REGISTER_CALLBACKS */ + } + + return HAL_OK; +} + +/** + * @brief Abort ongoing Transmit transfer (Interrupt mode). + * @param huart UART handle. + * @note This procedure could be used for aborting any ongoing Tx transfer started in Interrupt or DMA mode. + * This procedure performs following operations : + * - Disable UART Interrupts (Tx) + * - 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_UART_AbortTransmit_IT(UART_HandleTypeDef *huart) +{ + /* Disable interrupts */ + ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE)); + + /* Disable the UART DMA Tx request if enabled */ + if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT)) + { + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT); + + /* Abort the UART DMA Tx channel : use non blocking DMA Abort API (callback) */ + if (huart->hdmatx != NULL) + { + /* Set the UART DMA Abort callback : + will lead to call HAL_UART_AbortCpltCallback() at end of DMA abort procedure */ + huart->hdmatx->XferAbortCallback = UART_DMATxOnlyAbortCallback; + + /* Abort DMA TX */ + if (HAL_DMA_Abort_IT(huart->hdmatx) != HAL_OK) + { + /* Call Directly huart->hdmatx->XferAbortCallback function in case of error */ + huart->hdmatx->XferAbortCallback(huart->hdmatx); + } + } + else + { + /* Reset Tx transfer counter */ + huart->TxXferCount = 0U; + + /* Clear TxISR function pointers */ + huart->TxISR = NULL; + + /* Restore huart->gState to Ready */ + huart->gState = HAL_UART_STATE_READY; + + /* As no DMA to be aborted, call directly user Abort complete callback */ +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) + /* Call registered Abort Transmit Complete Callback */ + huart->AbortTransmitCpltCallback(huart); +#else + /* Call legacy weak Abort Transmit Complete Callback */ + HAL_UART_AbortTransmitCpltCallback(huart); +#endif /* USE_HAL_UART_REGISTER_CALLBACKS */ + } + } + else + { + /* Reset Tx transfer counter */ + huart->TxXferCount = 0U; + + /* Clear TxISR function pointers */ + huart->TxISR = NULL; + + + /* Restore huart->gState to Ready */ + huart->gState = HAL_UART_STATE_READY; + + /* As no DMA to be aborted, call directly user Abort complete callback */ +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) + /* Call registered Abort Transmit Complete Callback */ + huart->AbortTransmitCpltCallback(huart); +#else + /* Call legacy weak Abort Transmit Complete Callback */ + HAL_UART_AbortTransmitCpltCallback(huart); +#endif /* USE_HAL_UART_REGISTER_CALLBACKS */ + } + + return HAL_OK; +} + +/** + * @brief Abort ongoing Receive transfer (Interrupt mode). + * @param huart UART handle. + * @note This procedure could be used for aborting any ongoing Rx transfer started in Interrupt or DMA mode. + * This procedure performs following operations : + * - Disable UART Interrupts (Rx) + * - 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_UART_AbortReceive_IT(UART_HandleTypeDef *huart) +{ + /* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */ + ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); + + /* If Reception till IDLE event was ongoing, disable IDLEIE interrupt */ + if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) + { + ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_IDLEIE)); + } + + /* Disable the UART DMA Rx request if enabled */ + if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) + { + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR); + + /* Abort the UART DMA Rx channel : use non blocking DMA Abort API (callback) */ + if (huart->hdmarx != NULL) + { + /* Set the UART DMA Abort callback : + will lead to call HAL_UART_AbortCpltCallback() at end of DMA abort procedure */ + huart->hdmarx->XferAbortCallback = UART_DMARxOnlyAbortCallback; + + /* Abort DMA RX */ + if (HAL_DMA_Abort_IT(huart->hdmarx) != HAL_OK) + { + /* Call Directly huart->hdmarx->XferAbortCallback function in case of error */ + huart->hdmarx->XferAbortCallback(huart->hdmarx); + } + } + else + { + /* Reset Rx transfer counter */ + huart->RxXferCount = 0U; + + /* Clear RxISR function pointer */ + huart->pRxBuffPtr = NULL; + + /* Clear the Error flags in the ICR register */ + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_FEF); + + /* Discard the received data */ + __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST); + + /* Restore huart->RxState to Ready */ + huart->RxState = HAL_UART_STATE_READY; + huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; + + /* As no DMA to be aborted, call directly user Abort complete callback */ +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) + /* Call registered Abort Receive Complete Callback */ + huart->AbortReceiveCpltCallback(huart); +#else + /* Call legacy weak Abort Receive Complete Callback */ + HAL_UART_AbortReceiveCpltCallback(huart); +#endif /* USE_HAL_UART_REGISTER_CALLBACKS */ + } + } + else + { + /* Reset Rx transfer counter */ + huart->RxXferCount = 0U; + + /* Clear RxISR function pointer */ + huart->pRxBuffPtr = NULL; + + /* Clear the Error flags in the ICR register */ + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_FEF); + + /* Restore huart->RxState to Ready */ + huart->RxState = HAL_UART_STATE_READY; + huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; + + /* As no DMA to be aborted, call directly user Abort complete callback */ +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) + /* Call registered Abort Receive Complete Callback */ + huart->AbortReceiveCpltCallback(huart); +#else + /* Call legacy weak Abort Receive Complete Callback */ + HAL_UART_AbortReceiveCpltCallback(huart); +#endif /* USE_HAL_UART_REGISTER_CALLBACKS */ + } + + return HAL_OK; +} + +/** + * @brief Handle UART interrupt request. + * @param huart UART handle. + * @retval None + */ +void HAL_UART_IRQHandler(UART_HandleTypeDef *huart) +{ + uint32_t isrflags = READ_REG(huart->Instance->ISR); + uint32_t cr1its = READ_REG(huart->Instance->CR1); + uint32_t cr3its = READ_REG(huart->Instance->CR3); + + uint32_t errorflags; + uint32_t errorcode; + + /* If no error occurs */ + errorflags = (isrflags & (uint32_t)(USART_ISR_PE | USART_ISR_FE | USART_ISR_ORE | USART_ISR_NE | USART_ISR_RTOF)); + if (errorflags == 0U) + { + /* UART in mode Receiver ---------------------------------------------------*/ + if (((isrflags & USART_ISR_RXNE) != 0U) + && ((cr1its & USART_CR1_RXNEIE) != 0U)) + { + if (huart->RxISR != NULL) + { + huart->RxISR(huart); + } + return; + } + } + + /* If some errors occur */ + if ((errorflags != 0U) + && (((cr3its & USART_CR3_EIE) != 0U) + || ((cr1its & (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_RTOIE)) != 0U))) + { + /* UART parity error interrupt occurred -------------------------------------*/ + if (((isrflags & USART_ISR_PE) != 0U) && ((cr1its & USART_CR1_PEIE) != 0U)) + { + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_PEF); + + huart->ErrorCode |= HAL_UART_ERROR_PE; + } + + /* UART frame error interrupt occurred --------------------------------------*/ + if (((isrflags & USART_ISR_FE) != 0U) && ((cr3its & USART_CR3_EIE) != 0U)) + { + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_FEF); + + huart->ErrorCode |= HAL_UART_ERROR_FE; + } + + /* UART noise error interrupt occurred --------------------------------------*/ + if (((isrflags & USART_ISR_NE) != 0U) && ((cr3its & USART_CR3_EIE) != 0U)) + { + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_NEF); + + huart->ErrorCode |= HAL_UART_ERROR_NE; + } + + /* UART Over-Run interrupt occurred -----------------------------------------*/ + if (((isrflags & USART_ISR_ORE) != 0U) + && (((cr1its & USART_CR1_RXNEIE) != 0U) || + ((cr3its & USART_CR3_EIE) != 0U))) + { + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF); + + huart->ErrorCode |= HAL_UART_ERROR_ORE; + } + + /* UART Receiver Timeout interrupt occurred ---------------------------------*/ + if (((isrflags & USART_ISR_RTOF) != 0U) && ((cr1its & USART_CR1_RTOIE) != 0U)) + { + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_RTOF); + + huart->ErrorCode |= HAL_UART_ERROR_RTO; + } + + /* Call UART Error Call back function if need be ----------------------------*/ + if (huart->ErrorCode != HAL_UART_ERROR_NONE) + { + /* UART in mode Receiver --------------------------------------------------*/ + if (((isrflags & USART_ISR_RXNE) != 0U) + && ((cr1its & USART_CR1_RXNEIE) != 0U)) + { + if (huart->RxISR != NULL) + { + huart->RxISR(huart); + } + } + + /* If Error is to be considered as blocking : + - Receiver Timeout error in Reception + - Overrun error in Reception + - any error occurs in DMA mode reception + */ + errorcode = huart->ErrorCode; + if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) || + ((errorcode & (HAL_UART_ERROR_RTO | HAL_UART_ERROR_ORE)) != 0U)) + { + /* Blocking error : transfer is aborted + Set the UART state ready to be able to start again the process, + Disable Rx Interrupts, and disable Rx DMA request, if ongoing */ + UART_EndRxTransfer(huart); + + /* Disable the UART DMA Rx request if enabled */ + if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) + { + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR); + + /* Abort the UART DMA Rx channel */ + if (huart->hdmarx != NULL) + { + /* Set the UART DMA Abort callback : + will lead to call HAL_UART_ErrorCallback() at end of DMA abort procedure */ + huart->hdmarx->XferAbortCallback = UART_DMAAbortOnError; + + /* Abort DMA RX */ + if (HAL_DMA_Abort_IT(huart->hdmarx) != HAL_OK) + { + /* Call Directly huart->hdmarx->XferAbortCallback function in case of error */ + huart->hdmarx->XferAbortCallback(huart->hdmarx); + } + } + else + { + /* Call user error callback */ +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) + /*Call registered error callback*/ + huart->ErrorCallback(huart); +#else + /*Call legacy weak error callback*/ + HAL_UART_ErrorCallback(huart); +#endif /* USE_HAL_UART_REGISTER_CALLBACKS */ + + } + } + else + { + /* Call user error callback */ +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) + /*Call registered error callback*/ + huart->ErrorCallback(huart); +#else + /*Call legacy weak error callback*/ + HAL_UART_ErrorCallback(huart); +#endif /* USE_HAL_UART_REGISTER_CALLBACKS */ + } + } + else + { + /* Non Blocking error : transfer could go on. + Error is notified to user through user error callback */ +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) + /*Call registered error callback*/ + huart->ErrorCallback(huart); +#else + /*Call legacy weak error callback*/ + HAL_UART_ErrorCallback(huart); +#endif /* USE_HAL_UART_REGISTER_CALLBACKS */ + huart->ErrorCode = HAL_UART_ERROR_NONE; + } + } + return; + + } /* End if some error occurs */ + + /* Check current reception Mode : + If Reception till IDLE event has been selected : */ + if ((huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) + && ((isrflags & USART_ISR_IDLE) != 0U) + && ((cr1its & USART_ISR_IDLE) != 0U)) + { + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_IDLEF); + + /* Check if DMA mode is enabled in UART */ + if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) + { + /* DMA mode enabled */ + /* Check received length : If all expected data are received, do nothing, + (DMA cplt callback will be called). + Otherwise, if at least one data has already been received, IDLE event is to be notified to user */ + uint16_t nb_remaining_rx_data = (uint16_t) __HAL_DMA_GET_COUNTER(huart->hdmarx); + if ((nb_remaining_rx_data > 0U) + && (nb_remaining_rx_data < huart->RxXferSize)) + { + /* Reception is not complete */ + huart->RxXferCount = nb_remaining_rx_data; + + /* In Normal mode, end DMA xfer and HAL UART Rx process*/ + if (HAL_IS_BIT_CLR(huart->hdmarx->Instance->CCR, DMA_CCR_CIRC)) + { + /* Disable PE and ERR (Frame error, noise error, overrun error) interrupts */ + ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_PEIE); + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); + + /* Disable the DMA transfer for the receiver request by resetting the DMAR bit + in the UART CR3 register */ + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR); + + /* At end of Rx process, restore huart->RxState to Ready */ + huart->RxState = HAL_UART_STATE_READY; + huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; + + ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); + + /* Last bytes received, so no need as the abort is immediate */ + (void)HAL_DMA_Abort(huart->hdmarx); + } +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) + /*Call registered Rx Event callback*/ + huart->RxEventCallback(huart, (huart->RxXferSize - huart->RxXferCount)); +#else + /*Call legacy weak Rx Event callback*/ + HAL_UARTEx_RxEventCallback(huart, (huart->RxXferSize - huart->RxXferCount)); +#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */ + } + return; + } + else + { + /* DMA mode not enabled */ + /* Check received length : If all expected data are received, do nothing. + Otherwise, if at least one data has already been received, IDLE event is to be notified to user */ + uint16_t nb_rx_data = huart->RxXferSize - huart->RxXferCount; + if ((huart->RxXferCount > 0U) + && (nb_rx_data > 0U)) + { + /* Disable the UART Parity Error Interrupt and RXNE interrupts */ + ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); + + /* Disable the UART Error Interrupt: (Frame error, noise error, overrun error) */ + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); + + /* Rx process is completed, restore huart->RxState to Ready */ + huart->RxState = HAL_UART_STATE_READY; + huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; + + /* Clear RxISR function pointer */ + huart->RxISR = NULL; + + ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) + /*Call registered Rx complete callback*/ + huart->RxEventCallback(huart, nb_rx_data); +#else + /*Call legacy weak Rx Event callback*/ + HAL_UARTEx_RxEventCallback(huart, nb_rx_data); +#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */ + } + return; + } + } + + /* UART wakeup from Stop mode interrupt occurred ---------------------------*/ + if (((isrflags & USART_ISR_WUF) != 0U) && ((cr3its & USART_CR3_WUFIE) != 0U)) + { + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_WUF); + + /* UART Rx state is not reset as a reception process might be ongoing. + If UART handle state fields need to be reset to READY, this could be done in Wakeup callback */ + +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) + /* Call registered Wakeup Callback */ + huart->WakeupCallback(huart); +#else + /* Call legacy weak Wakeup Callback */ + HAL_UARTEx_WakeupCallback(huart); +#endif /* USE_HAL_UART_REGISTER_CALLBACKS */ + return; + } + + /* UART in mode Transmitter ------------------------------------------------*/ + if (((isrflags & USART_ISR_TXE) != 0U) + && ((cr1its & USART_CR1_TXEIE) != 0U)) + { + if (huart->TxISR != NULL) + { + huart->TxISR(huart); + } + return; + } + + /* UART in mode Transmitter (transmission end) -----------------------------*/ + if (((isrflags & USART_ISR_TC) != 0U) && ((cr1its & USART_CR1_TCIE) != 0U)) + { + UART_EndTransmit_IT(huart); + return; + } + +} + +/** + * @brief Tx Transfer completed callback. + * @param huart UART handle. + * @retval None + */ +__weak void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(huart); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_UART_TxCpltCallback can be implemented in the user file. + */ +} + +/** + * @brief Tx Half Transfer completed callback. + * @param huart UART handle. + * @retval None + */ +__weak void HAL_UART_TxHalfCpltCallback(UART_HandleTypeDef *huart) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(huart); + + /* NOTE: This function should not be modified, when the callback is needed, + the HAL_UART_TxHalfCpltCallback can be implemented in the user file. + */ +} + +/** + * @brief Rx Transfer completed callback. + * @param huart UART handle. + * @retval None + */ +__weak void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(huart); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_UART_RxCpltCallback can be implemented in the user file. + */ +} + +/** + * @brief Rx Half Transfer completed callback. + * @param huart UART handle. + * @retval None + */ +__weak void HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(huart); + + /* NOTE: This function should not be modified, when the callback is needed, + the HAL_UART_RxHalfCpltCallback can be implemented in the user file. + */ +} + +/** + * @brief UART error callback. + * @param huart UART handle. + * @retval None + */ +__weak void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(huart); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_UART_ErrorCallback can be implemented in the user file. + */ +} + +/** + * @brief UART Abort Complete callback. + * @param huart UART handle. + * @retval None + */ +__weak void HAL_UART_AbortCpltCallback(UART_HandleTypeDef *huart) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(huart); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_UART_AbortCpltCallback can be implemented in the user file. + */ +} + +/** + * @brief UART Abort Complete callback. + * @param huart UART handle. + * @retval None + */ +__weak void HAL_UART_AbortTransmitCpltCallback(UART_HandleTypeDef *huart) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(huart); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_UART_AbortTransmitCpltCallback can be implemented in the user file. + */ +} + +/** + * @brief UART Abort Receive Complete callback. + * @param huart UART handle. + * @retval None + */ +__weak void HAL_UART_AbortReceiveCpltCallback(UART_HandleTypeDef *huart) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(huart); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_UART_AbortReceiveCpltCallback can be implemented in the user file. + */ +} + +/** + * @brief Reception Event Callback (Rx event notification called after use of advanced reception service). + * @param huart UART handle + * @param Size Number of data available in application reception buffer (indicates a position in + * reception buffer until which, data are available) + * @retval None + */ +__weak void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(huart); + UNUSED(Size); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_UARTEx_RxEventCallback can be implemented in the user file. + */ +} + +/** + * @} + */ + +/** @defgroup UART_Exported_Functions_Group3 Peripheral Control functions + * @brief UART control functions + * +@verbatim + =============================================================================== + ##### Peripheral Control functions ##### + =============================================================================== + [..] + This subsection provides a set of functions allowing to control the UART. + (+) HAL_UART_ReceiverTimeout_Config() API allows to configure the receiver timeout value on the fly + (+) HAL_UART_EnableReceiverTimeout() API enables the receiver timeout feature + (+) HAL_UART_DisableReceiverTimeout() API disables the receiver timeout feature + (+) HAL_MultiProcessor_EnableMuteMode() API enables mute mode + (+) HAL_MultiProcessor_DisableMuteMode() API disables mute mode + (+) HAL_MultiProcessor_EnterMuteMode() API enters mute mode + (+) UART_SetConfig() API configures the UART peripheral + (+) UART_AdvFeatureConfig() API optionally configures the UART advanced features + (+) UART_CheckIdleState() API ensures that TEACK and/or REACK are set after initialization + (+) HAL_HalfDuplex_EnableTransmitter() API disables receiver and enables transmitter + (+) HAL_HalfDuplex_EnableReceiver() API disables transmitter and enables receiver + (+) HAL_LIN_SendBreak() API transmits the break characters +@endverbatim + * @{ + */ + +/** + * @brief Update on the fly the receiver timeout value in RTOR register. + * @param huart Pointer to a UART_HandleTypeDef structure that contains + * the configuration information for the specified UART module. + * @param TimeoutValue receiver timeout value in number of baud blocks. The timeout + * value must be less or equal to 0x0FFFFFFFF. + * @retval None + */ +void HAL_UART_ReceiverTimeout_Config(UART_HandleTypeDef *huart, uint32_t TimeoutValue) +{ + if (!(IS_LPUART_INSTANCE(huart->Instance))) + { + assert_param(IS_UART_RECEIVER_TIMEOUT_VALUE(TimeoutValue)); + MODIFY_REG(huart->Instance->RTOR, USART_RTOR_RTO, TimeoutValue); + } +} + +/** + * @brief Enable the UART receiver timeout feature. + * @param huart Pointer to a UART_HandleTypeDef structure that contains + * the configuration information for the specified UART module. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_UART_EnableReceiverTimeout(UART_HandleTypeDef *huart) +{ + if (!(IS_LPUART_INSTANCE(huart->Instance))) + { + if (huart->gState == HAL_UART_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(huart); + + huart->gState = HAL_UART_STATE_BUSY; + + /* Set the USART RTOEN bit */ + SET_BIT(huart->Instance->CR2, USART_CR2_RTOEN); + + huart->gState = HAL_UART_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(huart); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } + } + else + { + return HAL_ERROR; + } +} + +/** + * @brief Disable the UART receiver timeout feature. + * @param huart Pointer to a UART_HandleTypeDef structure that contains + * the configuration information for the specified UART module. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_UART_DisableReceiverTimeout(UART_HandleTypeDef *huart) +{ + if (!(IS_LPUART_INSTANCE(huart->Instance))) + { + if (huart->gState == HAL_UART_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(huart); + + huart->gState = HAL_UART_STATE_BUSY; + + /* Clear the USART RTOEN bit */ + CLEAR_BIT(huart->Instance->CR2, USART_CR2_RTOEN); + + huart->gState = HAL_UART_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(huart); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } + } + else + { + return HAL_ERROR; + } +} + +/** + * @brief Enable UART in mute mode (does not mean UART enters mute mode; + * to enter mute mode, HAL_MultiProcessor_EnterMuteMode() API must be called). + * @param huart UART handle. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_MultiProcessor_EnableMuteMode(UART_HandleTypeDef *huart) +{ + __HAL_LOCK(huart); + + huart->gState = HAL_UART_STATE_BUSY; + + /* Enable USART mute mode by setting the MME bit in the CR1 register */ + ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_MME); + + huart->gState = HAL_UART_STATE_READY; + + return (UART_CheckIdleState(huart)); +} + +/** + * @brief Disable UART mute mode (does not mean the UART actually exits mute mode + * as it may not have been in mute mode at this very moment). + * @param huart UART handle. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_MultiProcessor_DisableMuteMode(UART_HandleTypeDef *huart) +{ + __HAL_LOCK(huart); + + huart->gState = HAL_UART_STATE_BUSY; + + /* Disable USART mute mode by clearing the MME bit in the CR1 register */ + ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_MME); + + huart->gState = HAL_UART_STATE_READY; + + return (UART_CheckIdleState(huart)); +} + +/** + * @brief Enter UART mute mode (means UART actually enters mute mode). + * @note To exit from mute mode, HAL_MultiProcessor_DisableMuteMode() API must be called. + * @param huart UART handle. + * @retval None + */ +void HAL_MultiProcessor_EnterMuteMode(UART_HandleTypeDef *huart) +{ + __HAL_UART_SEND_REQ(huart, UART_MUTE_MODE_REQUEST); +} + +/** + * @brief Enable the UART transmitter and disable the UART receiver. + * @param huart UART handle. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_HalfDuplex_EnableTransmitter(UART_HandleTypeDef *huart) +{ + __HAL_LOCK(huart); + huart->gState = HAL_UART_STATE_BUSY; + + /* Clear TE and RE bits */ + ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TE | USART_CR1_RE)); + + /* Enable the USART's transmit interface by setting the TE bit in the USART CR1 register */ + ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_TE); + + huart->gState = HAL_UART_STATE_READY; + + __HAL_UNLOCK(huart); + + return HAL_OK; +} + +/** + * @brief Enable the UART receiver and disable the UART transmitter. + * @param huart UART handle. + * @retval HAL status. + */ +HAL_StatusTypeDef HAL_HalfDuplex_EnableReceiver(UART_HandleTypeDef *huart) +{ + __HAL_LOCK(huart); + huart->gState = HAL_UART_STATE_BUSY; + + /* Clear TE and RE bits */ + ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TE | USART_CR1_RE)); + + /* Enable the USART's receive interface by setting the RE bit in the USART CR1 register */ + ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_RE); + + huart->gState = HAL_UART_STATE_READY; + + __HAL_UNLOCK(huart); + + return HAL_OK; +} + + +/** + * @brief Transmit break characters. + * @param huart UART handle. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_LIN_SendBreak(UART_HandleTypeDef *huart) +{ + /* Check the parameters */ + assert_param(IS_UART_LIN_INSTANCE(huart->Instance)); + + __HAL_LOCK(huart); + + huart->gState = HAL_UART_STATE_BUSY; + + /* Send break characters */ + __HAL_UART_SEND_REQ(huart, UART_SENDBREAK_REQUEST); + + huart->gState = HAL_UART_STATE_READY; + + __HAL_UNLOCK(huart); + + return HAL_OK; +} + +/** + * @} + */ + +/** @defgroup UART_Exported_Functions_Group4 Peripheral State and Error functions + * @brief UART Peripheral State functions + * +@verbatim + ============================================================================== + ##### Peripheral State and Error functions ##### + ============================================================================== + [..] + This subsection provides functions allowing to : + (+) Return the UART handle state. + (+) Return the UART handle error code + +@endverbatim + * @{ + */ + +/** + * @brief Return the UART handle state. + * @param huart Pointer to a UART_HandleTypeDef structure that contains + * the configuration information for the specified UART. + * @retval HAL state + */ +HAL_UART_StateTypeDef HAL_UART_GetState(UART_HandleTypeDef *huart) +{ + uint32_t temp1; + uint32_t temp2; + temp1 = huart->gState; + temp2 = huart->RxState; + + return (HAL_UART_StateTypeDef)(temp1 | temp2); +} + +/** + * @brief Return the UART handle error code. + * @param huart Pointer to a UART_HandleTypeDef structure that contains + * the configuration information for the specified UART. + * @retval UART Error Code + */ +uint32_t HAL_UART_GetError(UART_HandleTypeDef *huart) +{ + return huart->ErrorCode; +} +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup UART_Private_Functions UART Private Functions + * @{ + */ + +/** + * @brief Initialize the callbacks to their default values. + * @param huart UART handle. + * @retval none + */ +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) +void UART_InitCallbacksToDefault(UART_HandleTypeDef *huart) +{ + /* Init the UART Callback settings */ + huart->TxHalfCpltCallback = HAL_UART_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback */ + huart->TxCpltCallback = HAL_UART_TxCpltCallback; /* Legacy weak TxCpltCallback */ + huart->RxHalfCpltCallback = HAL_UART_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback */ + huart->RxCpltCallback = HAL_UART_RxCpltCallback; /* Legacy weak RxCpltCallback */ + huart->ErrorCallback = HAL_UART_ErrorCallback; /* Legacy weak ErrorCallback */ + huart->AbortCpltCallback = HAL_UART_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ + huart->AbortTransmitCpltCallback = HAL_UART_AbortTransmitCpltCallback; /* Legacy weak AbortTransmitCpltCallback */ + huart->AbortReceiveCpltCallback = HAL_UART_AbortReceiveCpltCallback; /* Legacy weak AbortReceiveCpltCallback */ + huart->WakeupCallback = HAL_UARTEx_WakeupCallback; /* Legacy weak WakeupCallback */ + huart->RxEventCallback = HAL_UARTEx_RxEventCallback; /* Legacy weak RxEventCallback */ + +} +#endif /* USE_HAL_UART_REGISTER_CALLBACKS */ + +/** + * @brief Configure the UART peripheral. + * @param huart UART handle. + * @retval HAL status + */ +HAL_StatusTypeDef UART_SetConfig(UART_HandleTypeDef *huart) +{ + uint32_t tmpreg; + uint16_t brrtemp; + UART_ClockSourceTypeDef clocksource; + uint32_t usartdiv; + HAL_StatusTypeDef ret = HAL_OK; + uint32_t pclk; + + /* Check the parameters */ + assert_param(IS_UART_BAUDRATE(huart->Init.BaudRate)); + assert_param(IS_UART_WORD_LENGTH(huart->Init.WordLength)); + if (UART_INSTANCE_LOWPOWER(huart)) + { + assert_param(IS_LPUART_STOPBITS(huart->Init.StopBits)); + } + else + { + assert_param(IS_UART_STOPBITS(huart->Init.StopBits)); + assert_param(IS_UART_ONE_BIT_SAMPLE(huart->Init.OneBitSampling)); + } + + assert_param(IS_UART_PARITY(huart->Init.Parity)); + assert_param(IS_UART_MODE(huart->Init.Mode)); + assert_param(IS_UART_HARDWARE_FLOW_CONTROL(huart->Init.HwFlowCtl)); + assert_param(IS_UART_OVERSAMPLING(huart->Init.OverSampling)); + + /*-------------------------- USART CR1 Configuration -----------------------*/ + /* Clear M, PCE, PS, TE, RE and OVER8 bits and configure + * the UART Word Length, Parity, Mode and oversampling: + * set the M bits according to huart->Init.WordLength value + * set PCE and PS bits according to huart->Init.Parity value + * set TE and RE bits according to huart->Init.Mode value + * set OVER8 bit according to huart->Init.OverSampling value */ + tmpreg = (uint32_t)huart->Init.WordLength | huart->Init.Parity | huart->Init.Mode | huart->Init.OverSampling ; + MODIFY_REG(huart->Instance->CR1, USART_CR1_FIELDS, tmpreg); + + /*-------------------------- USART CR2 Configuration -----------------------*/ + /* Configure the UART Stop Bits: Set STOP[13:12] bits according + * to huart->Init.StopBits value */ + MODIFY_REG(huart->Instance->CR2, USART_CR2_STOP, huart->Init.StopBits); + + /*-------------------------- USART CR3 Configuration -----------------------*/ + /* Configure + * - UART HardWare Flow Control: set CTSE and RTSE bits according + * to huart->Init.HwFlowCtl value + * - one-bit sampling method versus three samples' majority rule according + * to huart->Init.OneBitSampling (not applicable to LPUART) */ + tmpreg = (uint32_t)huart->Init.HwFlowCtl; + + if (!(UART_INSTANCE_LOWPOWER(huart))) + { + tmpreg |= huart->Init.OneBitSampling; + } + MODIFY_REG(huart->Instance->CR3, USART_CR3_FIELDS, tmpreg); + + + /*-------------------------- USART BRR Configuration -----------------------*/ + UART_GETCLOCKSOURCE(huart, clocksource); + + /* Check LPUART instance */ + if (UART_INSTANCE_LOWPOWER(huart)) + { + /* Retrieve frequency clock */ + switch (clocksource) + { + case UART_CLOCKSOURCE_PCLK1: + pclk = HAL_RCC_GetPCLK1Freq(); + break; + case UART_CLOCKSOURCE_HSI: + if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIDIV) != 0U) + { + pclk = (uint32_t)(HSI_VALUE >> 2U); + } + else + { + pclk = (uint32_t) HSI_VALUE; + } + break; + case UART_CLOCKSOURCE_SYSCLK: + pclk = HAL_RCC_GetSysClockFreq(); + break; + case UART_CLOCKSOURCE_LSE: + pclk = (uint32_t) LSE_VALUE; + break; + default: + pclk = 0U; + ret = HAL_ERROR; + break; + } + + /* If proper clock source reported */ + if (pclk != 0U) + { + /* No Prescaler applicable */ + /* Ensure that Frequency clock is in the range [3 * baudrate, 4096 * baudrate] */ + if ((pclk < (3U * huart->Init.BaudRate)) || + (pclk > (4096U * huart->Init.BaudRate))) + { + ret = HAL_ERROR; + } + else + { + usartdiv = (uint32_t)(UART_DIV_LPUART(pclk, huart->Init.BaudRate)); + if ((usartdiv >= LPUART_BRR_MIN) && (usartdiv <= LPUART_BRR_MAX)) + { + huart->Instance->BRR = usartdiv; + } + else + { + ret = HAL_ERROR; + } + } /* if ( (pclk < (3 * huart->Init.BaudRate) ) || (pclk > (4096 * huart->Init.BaudRate) )) */ + } /* if (pclk != 0) */ + } + /* Check UART Over Sampling to set Baud Rate Register */ + else if (huart->Init.OverSampling == UART_OVERSAMPLING_8) + { + switch (clocksource) + { + case UART_CLOCKSOURCE_PCLK1: + pclk = HAL_RCC_GetPCLK1Freq(); + break; + case UART_CLOCKSOURCE_PCLK2: + pclk = HAL_RCC_GetPCLK2Freq(); + break; + case UART_CLOCKSOURCE_HSI: + if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIDIV) != 0U) + { + pclk = (uint32_t)(HSI_VALUE >> 2U); + } + else + { + pclk = (uint32_t) HSI_VALUE; + } + break; + case UART_CLOCKSOURCE_SYSCLK: + pclk = HAL_RCC_GetSysClockFreq(); + break; + case UART_CLOCKSOURCE_LSE: + pclk = (uint32_t) LSE_VALUE; + break; + default: + pclk = 0U; + ret = HAL_ERROR; + break; + } + + /* USARTDIV must be greater than or equal to 0d16 */ + if (pclk != 0U) + { + usartdiv = (uint16_t)(UART_DIV_SAMPLING8(pclk, huart->Init.BaudRate)); + if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX)) + { + brrtemp = (uint16_t)(usartdiv & 0xFFF0U); + brrtemp |= (uint16_t)((usartdiv & (uint16_t)0x000FU) >> 1U); + huart->Instance->BRR = brrtemp; + } + else + { + ret = HAL_ERROR; + } + } + } + else + { + switch (clocksource) + { + case UART_CLOCKSOURCE_PCLK1: + pclk = HAL_RCC_GetPCLK1Freq(); + break; + case UART_CLOCKSOURCE_PCLK2: + pclk = HAL_RCC_GetPCLK2Freq(); + break; + case UART_CLOCKSOURCE_HSI: + if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIDIV) != 0U) + { + pclk = (uint32_t)(HSI_VALUE >> 2U); + } + else + { + pclk = (uint32_t) HSI_VALUE; + } + break; + case UART_CLOCKSOURCE_SYSCLK: + pclk = HAL_RCC_GetSysClockFreq(); + break; + case UART_CLOCKSOURCE_LSE: + pclk = (uint32_t) LSE_VALUE; + break; + default: + pclk = 0U; + ret = HAL_ERROR; + break; + } + + if (pclk != 0U) + { + /* USARTDIV must be greater than or equal to 0d16 */ + usartdiv = (uint16_t)(UART_DIV_SAMPLING16(pclk, huart->Init.BaudRate)); + if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX)) + { + huart->Instance->BRR = usartdiv; + } + else + { + ret = HAL_ERROR; + } + } + } + + + /* Clear ISR function pointers */ + huart->RxISR = NULL; + huart->TxISR = NULL; + + return ret; +} + +/** + * @brief Configure the UART peripheral advanced features. + * @param huart UART handle. + * @retval None + */ +void UART_AdvFeatureConfig(UART_HandleTypeDef *huart) +{ + /* Check whether the set of advanced features to configure is properly set */ + assert_param(IS_UART_ADVFEATURE_INIT(huart->AdvancedInit.AdvFeatureInit)); + + /* if required, configure TX pin active level inversion */ + if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_TXINVERT_INIT)) + { + assert_param(IS_UART_ADVFEATURE_TXINV(huart->AdvancedInit.TxPinLevelInvert)); + MODIFY_REG(huart->Instance->CR2, USART_CR2_TXINV, huart->AdvancedInit.TxPinLevelInvert); + } + + /* if required, configure RX pin active level inversion */ + if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_RXINVERT_INIT)) + { + assert_param(IS_UART_ADVFEATURE_RXINV(huart->AdvancedInit.RxPinLevelInvert)); + MODIFY_REG(huart->Instance->CR2, USART_CR2_RXINV, huart->AdvancedInit.RxPinLevelInvert); + } + + /* if required, configure data inversion */ + if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_DATAINVERT_INIT)) + { + assert_param(IS_UART_ADVFEATURE_DATAINV(huart->AdvancedInit.DataInvert)); + MODIFY_REG(huart->Instance->CR2, USART_CR2_DATAINV, huart->AdvancedInit.DataInvert); + } + + /* if required, configure RX/TX pins swap */ + if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_SWAP_INIT)) + { + assert_param(IS_UART_ADVFEATURE_SWAP(huart->AdvancedInit.Swap)); + MODIFY_REG(huart->Instance->CR2, USART_CR2_SWAP, huart->AdvancedInit.Swap); + } + + /* if required, configure RX overrun detection disabling */ + if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_RXOVERRUNDISABLE_INIT)) + { + assert_param(IS_UART_OVERRUN(huart->AdvancedInit.OverrunDisable)); + MODIFY_REG(huart->Instance->CR3, USART_CR3_OVRDIS, huart->AdvancedInit.OverrunDisable); + } + + /* if required, configure DMA disabling on reception error */ + if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_DMADISABLEONERROR_INIT)) + { + assert_param(IS_UART_ADVFEATURE_DMAONRXERROR(huart->AdvancedInit.DMADisableonRxError)); + MODIFY_REG(huart->Instance->CR3, USART_CR3_DDRE, huart->AdvancedInit.DMADisableonRxError); + } + + /* if required, configure auto Baud rate detection scheme */ + if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_AUTOBAUDRATE_INIT)) + { + assert_param(IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(huart->Instance)); + assert_param(IS_UART_ADVFEATURE_AUTOBAUDRATE(huart->AdvancedInit.AutoBaudRateEnable)); + MODIFY_REG(huart->Instance->CR2, USART_CR2_ABREN, huart->AdvancedInit.AutoBaudRateEnable); + /* set auto Baudrate detection parameters if detection is enabled */ + if (huart->AdvancedInit.AutoBaudRateEnable == UART_ADVFEATURE_AUTOBAUDRATE_ENABLE) + { + assert_param(IS_UART_ADVFEATURE_AUTOBAUDRATEMODE(huart->AdvancedInit.AutoBaudRateMode)); + MODIFY_REG(huart->Instance->CR2, USART_CR2_ABRMODE, huart->AdvancedInit.AutoBaudRateMode); + } + } + + /* if required, configure MSB first on communication line */ + if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_MSBFIRST_INIT)) + { + assert_param(IS_UART_ADVFEATURE_MSBFIRST(huart->AdvancedInit.MSBFirst)); + MODIFY_REG(huart->Instance->CR2, USART_CR2_MSBFIRST, huart->AdvancedInit.MSBFirst); + } +} + +/** + * @brief Check the UART Idle State. + * @param huart UART handle. + * @retval HAL status + */ +HAL_StatusTypeDef UART_CheckIdleState(UART_HandleTypeDef *huart) +{ + uint32_t tickstart; + + /* Initialize the UART ErrorCode */ + huart->ErrorCode = HAL_UART_ERROR_NONE; + + /* Init tickstart for timeout management */ + tickstart = HAL_GetTick(); + + /* Check if the Transmitter is enabled */ + if ((huart->Instance->CR1 & USART_CR1_TE) == USART_CR1_TE) + { + /* Wait until TEACK flag is set */ + if (UART_WaitOnFlagUntilTimeout(huart, USART_ISR_TEACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK) + { + /* Timeout occurred */ + return HAL_TIMEOUT; + } + } + + /* Check if the Receiver is enabled */ + if ((huart->Instance->CR1 & USART_CR1_RE) == USART_CR1_RE) + { + /* Wait until REACK flag is set */ + if (UART_WaitOnFlagUntilTimeout(huart, USART_ISR_REACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK) + { + /* Timeout occurred */ + return HAL_TIMEOUT; + } + } + + /* Initialize the UART State */ + huart->gState = HAL_UART_STATE_READY; + huart->RxState = HAL_UART_STATE_READY; + huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; + + __HAL_UNLOCK(huart); + + return HAL_OK; +} + +/** + * @brief Handle UART Communication Timeout. + * @param huart UART handle. + * @param Flag Specifies the UART flag to check + * @param Status Flag status (SET or RESET) + * @param Tickstart Tick start value + * @param Timeout Timeout duration + * @retval HAL status + */ +HAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(UART_HandleTypeDef *huart, uint32_t Flag, FlagStatus Status, + uint32_t Tickstart, uint32_t Timeout) +{ + /* Wait until flag is set */ + while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status) + { + /* Check for the Timeout */ + if (Timeout != HAL_MAX_DELAY) + { + if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) + { + /* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error) + interrupts for the interrupt process */ + ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE)); + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); + + huart->gState = HAL_UART_STATE_READY; + huart->RxState = HAL_UART_STATE_READY; + + __HAL_UNLOCK(huart); + + return HAL_TIMEOUT; + } + + if (READ_BIT(huart->Instance->CR1, USART_CR1_RE) != 0U) + { + if (__HAL_UART_GET_FLAG(huart, UART_FLAG_RTOF) == SET) + { + /* Clear Receiver Timeout flag*/ + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_RTOF); + + /* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error) + interrupts for the interrupt process */ + ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE)); + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); + + huart->gState = HAL_UART_STATE_READY; + huart->RxState = HAL_UART_STATE_READY; + huart->ErrorCode = HAL_UART_ERROR_RTO; + + /* Process Unlocked */ + __HAL_UNLOCK(huart); + + return HAL_TIMEOUT; + } + } + } + } + return HAL_OK; +} + +/** + * @brief Start Receive operation in interrupt mode. + * @note This function could be called by all HAL UART API providing reception in Interrupt mode. + * @note When calling this function, parameters validity is considered as already checked, + * i.e. Rx State, buffer address, ... + * UART Handle is assumed as Locked. + * @param huart UART handle. + * @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 UART_Start_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size) +{ + huart->pRxBuffPtr = pData; + huart->RxXferSize = Size; + huart->RxXferCount = Size; + huart->RxISR = NULL; + + /* Computation of UART mask to apply to RDR register */ + UART_MASK_COMPUTATION(huart); + + huart->ErrorCode = HAL_UART_ERROR_NONE; + huart->RxState = HAL_UART_STATE_BUSY_RX; + + /* Enable the UART Error Interrupt: (Frame error, noise error, overrun error) */ + ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_EIE); + + /* Set the Rx ISR function pointer according to the data word length */ + if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE)) + { + huart->RxISR = UART_RxISR_16BIT; + } + else + { + huart->RxISR = UART_RxISR_8BIT; + } + + __HAL_UNLOCK(huart); + + /* Enable the UART Parity Error interrupt and Data Register Not Empty interrupt */ + ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE); + return HAL_OK; +} + +/** + * @brief Start Receive operation in DMA mode. + * @note This function could be called by all HAL UART API providing reception in DMA mode. + * @note When calling this function, parameters validity is considered as already checked, + * i.e. Rx State, buffer address, ... + * UART Handle is assumed as Locked. + * @param huart UART handle. + * @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 UART_Start_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size) +{ + huart->pRxBuffPtr = pData; + huart->RxXferSize = Size; + + huart->ErrorCode = HAL_UART_ERROR_NONE; + huart->RxState = HAL_UART_STATE_BUSY_RX; + + if (huart->hdmarx != NULL) + { + /* Set the UART DMA transfer complete callback */ + huart->hdmarx->XferCpltCallback = UART_DMAReceiveCplt; + + /* Set the UART DMA Half transfer complete callback */ + huart->hdmarx->XferHalfCpltCallback = UART_DMARxHalfCplt; + + /* Set the DMA error callback */ + huart->hdmarx->XferErrorCallback = UART_DMAError; + + /* Set the DMA abort callback */ + huart->hdmarx->XferAbortCallback = NULL; + + /* Enable the DMA channel */ + if (HAL_DMA_Start_IT(huart->hdmarx, (uint32_t)&huart->Instance->RDR, (uint32_t)huart->pRxBuffPtr, Size) != HAL_OK) + { + /* Set error code to DMA */ + huart->ErrorCode = HAL_UART_ERROR_DMA; + + __HAL_UNLOCK(huart); + + /* Restore huart->RxState to ready */ + huart->RxState = HAL_UART_STATE_READY; + + return HAL_ERROR; + } + } + __HAL_UNLOCK(huart); + + /* Enable the UART Parity Error Interrupt */ + ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_PEIE); + + /* Enable the UART Error Interrupt: (Frame error, noise error, overrun error) */ + ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_EIE); + + /* Enable the DMA transfer for the receiver request by setting the DMAR bit + in the UART CR3 register */ + ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_DMAR); + + return HAL_OK; +} + + +/** + * @brief End ongoing Tx transfer on UART peripheral (following error detection or Transmit completion). + * @param huart UART handle. + * @retval None + */ +static void UART_EndTxTransfer(UART_HandleTypeDef *huart) +{ + /* Disable TXEIE and TCIE interrupts */ + ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TXEIE | USART_CR1_TCIE)); + + /* At end of Tx process, restore huart->gState to Ready */ + huart->gState = HAL_UART_STATE_READY; +} + + +/** + * @brief End ongoing Rx transfer on UART peripheral (following error detection or Reception completion). + * @param huart UART handle. + * @retval None + */ +static void UART_EndRxTransfer(UART_HandleTypeDef *huart) +{ + /* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */ + ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); + + /* In case of reception waiting for IDLE event, disable also the IDLE IE interrupt source */ + if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) + { + ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); + } + + /* At end of Rx process, restore huart->RxState to Ready */ + huart->RxState = HAL_UART_STATE_READY; + huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; + + /* Reset RxIsr function pointer */ + huart->RxISR = NULL; +} + + +/** + * @brief DMA UART transmit process complete callback. + * @param hdma DMA handle. + * @retval None + */ +static void UART_DMATransmitCplt(DMA_HandleTypeDef *hdma) +{ + UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent); + + /* DMA Normal mode */ + if (HAL_IS_BIT_CLR(hdma->Instance->CCR, DMA_CCR_CIRC)) + { + huart->TxXferCount = 0U; + + /* Disable the DMA transfer for transmit request by resetting the DMAT bit + in the UART CR3 register */ + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT); + + /* Enable the UART Transmit Complete Interrupt */ + ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_TCIE); + } + /* DMA Circular mode */ + else + { +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) + /*Call registered Tx complete callback*/ + huart->TxCpltCallback(huart); +#else + /*Call legacy weak Tx complete callback*/ + HAL_UART_TxCpltCallback(huart); +#endif /* USE_HAL_UART_REGISTER_CALLBACKS */ + } +} + +/** + * @brief DMA UART transmit process half complete callback. + * @param hdma DMA handle. + * @retval None + */ +static void UART_DMATxHalfCplt(DMA_HandleTypeDef *hdma) +{ + UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent); + +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) + /*Call registered Tx Half complete callback*/ + huart->TxHalfCpltCallback(huart); +#else + /*Call legacy weak Tx Half complete callback*/ + HAL_UART_TxHalfCpltCallback(huart); +#endif /* USE_HAL_UART_REGISTER_CALLBACKS */ +} + +/** + * @brief DMA UART receive process complete callback. + * @param hdma DMA handle. + * @retval None + */ +static void UART_DMAReceiveCplt(DMA_HandleTypeDef *hdma) +{ + UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent); + + /* DMA Normal mode */ + if (HAL_IS_BIT_CLR(hdma->Instance->CCR, DMA_CCR_CIRC)) + { + huart->RxXferCount = 0U; + + /* Disable PE and ERR (Frame error, noise error, overrun error) interrupts */ + ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_PEIE); + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); + + /* Disable the DMA transfer for the receiver request by resetting the DMAR bit + in the UART CR3 register */ + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR); + + /* At end of Rx process, restore huart->RxState to Ready */ + huart->RxState = HAL_UART_STATE_READY; + + /* If Reception till IDLE event has been selected, Disable IDLE Interrupt */ + if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) + { + ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); + } + } + + /* Check current reception Mode : + If Reception till IDLE event has been selected : use Rx Event callback */ + if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) + { +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) + /*Call registered Rx Event callback*/ + huart->RxEventCallback(huart, huart->RxXferSize); +#else + /*Call legacy weak Rx Event callback*/ + HAL_UARTEx_RxEventCallback(huart, huart->RxXferSize); +#endif /* USE_HAL_UART_REGISTER_CALLBACKS */ + } + else + { + /* In other cases : use Rx Complete callback */ +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) + /*Call registered Rx complete callback*/ + huart->RxCpltCallback(huart); +#else + /*Call legacy weak Rx complete callback*/ + HAL_UART_RxCpltCallback(huart); +#endif /* USE_HAL_UART_REGISTER_CALLBACKS */ + } +} + +/** + * @brief DMA UART receive process half complete callback. + * @param hdma DMA handle. + * @retval None + */ +static void UART_DMARxHalfCplt(DMA_HandleTypeDef *hdma) +{ + UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent); + + /* Check current reception Mode : + If Reception till IDLE event has been selected : use Rx Event callback */ + if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) + { +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) + /*Call registered Rx Event callback*/ + huart->RxEventCallback(huart, huart->RxXferSize / 2U); +#else + /*Call legacy weak Rx Event callback*/ + HAL_UARTEx_RxEventCallback(huart, huart->RxXferSize / 2U); +#endif /* USE_HAL_UART_REGISTER_CALLBACKS */ + } + else + { + /* In other cases : use Rx Half Complete callback */ +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) + /*Call registered Rx Half complete callback*/ + huart->RxHalfCpltCallback(huart); +#else + /*Call legacy weak Rx Half complete callback*/ + HAL_UART_RxHalfCpltCallback(huart); +#endif /* USE_HAL_UART_REGISTER_CALLBACKS */ + } +} + +/** + * @brief DMA UART communication error callback. + * @param hdma DMA handle. + * @retval None + */ +static void UART_DMAError(DMA_HandleTypeDef *hdma) +{ + UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent); + + const HAL_UART_StateTypeDef gstate = huart->gState; + const HAL_UART_StateTypeDef rxstate = huart->RxState; + + /* Stop UART DMA Tx request if ongoing */ + if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT)) && + (gstate == HAL_UART_STATE_BUSY_TX)) + { + huart->TxXferCount = 0U; + UART_EndTxTransfer(huart); + } + + /* Stop UART DMA Rx request if ongoing */ + if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) && + (rxstate == HAL_UART_STATE_BUSY_RX)) + { + huart->RxXferCount = 0U; + UART_EndRxTransfer(huart); + } + + huart->ErrorCode |= HAL_UART_ERROR_DMA; + +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) + /*Call registered error callback*/ + huart->ErrorCallback(huart); +#else + /*Call legacy weak error callback*/ + HAL_UART_ErrorCallback(huart); +#endif /* USE_HAL_UART_REGISTER_CALLBACKS */ +} + +/** + * @brief DMA UART 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 UART_DMAAbortOnError(DMA_HandleTypeDef *hdma) +{ + UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent); + huart->RxXferCount = 0U; + huart->TxXferCount = 0U; + +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) + /*Call registered error callback*/ + huart->ErrorCallback(huart); +#else + /*Call legacy weak error callback*/ + HAL_UART_ErrorCallback(huart); +#endif /* USE_HAL_UART_REGISTER_CALLBACKS */ +} + +/** + * @brief DMA UART 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 UART_DMATxAbortCallback(DMA_HandleTypeDef *hdma) +{ + UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent); + + huart->hdmatx->XferAbortCallback = NULL; + + /* Check if an Abort process is still ongoing */ + if (huart->hdmarx != NULL) + { + if (huart->hdmarx->XferAbortCallback != NULL) + { + return; + } + } + + /* No Abort process still ongoing : All DMA channels are aborted, call user Abort Complete callback */ + huart->TxXferCount = 0U; + huart->RxXferCount = 0U; + + /* Reset errorCode */ + huart->ErrorCode = HAL_UART_ERROR_NONE; + + /* Clear the Error flags in the ICR register */ + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_FEF); + + + /* Restore huart->gState and huart->RxState to Ready */ + huart->gState = HAL_UART_STATE_READY; + huart->RxState = HAL_UART_STATE_READY; + huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; + + /* Call user Abort complete callback */ +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) + /* Call registered Abort complete callback */ + huart->AbortCpltCallback(huart); +#else + /* Call legacy weak Abort complete callback */ + HAL_UART_AbortCpltCallback(huart); +#endif /* USE_HAL_UART_REGISTER_CALLBACKS */ +} + + +/** + * @brief DMA UART 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 UART_DMARxAbortCallback(DMA_HandleTypeDef *hdma) +{ + UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent); + + huart->hdmarx->XferAbortCallback = NULL; + + /* Check if an Abort process is still ongoing */ + if (huart->hdmatx != NULL) + { + if (huart->hdmatx->XferAbortCallback != NULL) + { + return; + } + } + + /* No Abort process still ongoing : All DMA channels are aborted, call user Abort Complete callback */ + huart->TxXferCount = 0U; + huart->RxXferCount = 0U; + + /* Reset errorCode */ + huart->ErrorCode = HAL_UART_ERROR_NONE; + + /* Clear the Error flags in the ICR register */ + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_FEF); + + /* Discard the received data */ + __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST); + + /* Restore huart->gState and huart->RxState to Ready */ + huart->gState = HAL_UART_STATE_READY; + huart->RxState = HAL_UART_STATE_READY; + huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; + + /* Call user Abort complete callback */ +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) + /* Call registered Abort complete callback */ + huart->AbortCpltCallback(huart); +#else + /* Call legacy weak Abort complete callback */ + HAL_UART_AbortCpltCallback(huart); +#endif /* USE_HAL_UART_REGISTER_CALLBACKS */ +} + + +/** + * @brief DMA UART Tx communication abort callback, when initiated by user by a call to + * HAL_UART_AbortTransmit_IT API (Abort only Tx transfer) + * (This callback is executed at end of DMA Tx Abort procedure following user abort request, + * and leads to user Tx Abort Complete callback execution). + * @param hdma DMA handle. + * @retval None + */ +static void UART_DMATxOnlyAbortCallback(DMA_HandleTypeDef *hdma) +{ + UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent); + + huart->TxXferCount = 0U; + + + /* Restore huart->gState to Ready */ + huart->gState = HAL_UART_STATE_READY; + + /* Call user Abort complete callback */ +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) + /* Call registered Abort Transmit Complete Callback */ + huart->AbortTransmitCpltCallback(huart); +#else + /* Call legacy weak Abort Transmit Complete Callback */ + HAL_UART_AbortTransmitCpltCallback(huart); +#endif /* USE_HAL_UART_REGISTER_CALLBACKS */ +} + +/** + * @brief DMA UART Rx communication abort callback, when initiated by user by a call to + * HAL_UART_AbortReceive_IT API (Abort only Rx transfer) + * (This callback is executed at end of DMA Rx Abort procedure following user abort request, + * and leads to user Rx Abort Complete callback execution). + * @param hdma DMA handle. + * @retval None + */ +static void UART_DMARxOnlyAbortCallback(DMA_HandleTypeDef *hdma) +{ + UART_HandleTypeDef *huart = (UART_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + + huart->RxXferCount = 0U; + + /* Clear the Error flags in the ICR register */ + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF | UART_CLEAR_NEF | UART_CLEAR_PEF | UART_CLEAR_FEF); + + /* Discard the received data */ + __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST); + + /* Restore huart->RxState to Ready */ + huart->RxState = HAL_UART_STATE_READY; + huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; + + /* Call user Abort complete callback */ +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) + /* Call registered Abort Receive Complete Callback */ + huart->AbortReceiveCpltCallback(huart); +#else + /* Call legacy weak Abort Receive Complete Callback */ + HAL_UART_AbortReceiveCpltCallback(huart); +#endif /* USE_HAL_UART_REGISTER_CALLBACKS */ +} + +/** + * @brief TX interrupt handler for 7 or 8 bits data word length . + * @note Function is called under interruption only, once + * interruptions have been enabled by HAL_UART_Transmit_IT(). + * @param huart UART handle. + * @retval None + */ +static void UART_TxISR_8BIT(UART_HandleTypeDef *huart) +{ + /* Check that a Tx process is ongoing */ + if (huart->gState == HAL_UART_STATE_BUSY_TX) + { + if (huart->TxXferCount == 0U) + { + /* Disable the UART Transmit Data Register Empty Interrupt */ + ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_TXEIE); + + /* Enable the UART Transmit Complete Interrupt */ + ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_TCIE); + } + else + { + huart->Instance->TDR = (uint8_t)(*huart->pTxBuffPtr & (uint8_t)0xFF); + huart->pTxBuffPtr++; + huart->TxXferCount--; + } + } +} + +/** + * @brief TX interrupt handler for 9 bits data word length. + * @note Function is called under interruption only, once + * interruptions have been enabled by HAL_UART_Transmit_IT(). + * @param huart UART handle. + * @retval None + */ +static void UART_TxISR_16BIT(UART_HandleTypeDef *huart) +{ + uint16_t *tmp; + + /* Check that a Tx process is ongoing */ + if (huart->gState == HAL_UART_STATE_BUSY_TX) + { + if (huart->TxXferCount == 0U) + { + /* Disable the UART Transmit Data Register Empty Interrupt */ + ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_TXEIE); + + /* Enable the UART Transmit Complete Interrupt */ + ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_TCIE); + } + else + { + tmp = (uint16_t *) huart->pTxBuffPtr; + huart->Instance->TDR = (((uint32_t)(*tmp)) & 0x01FFUL); + huart->pTxBuffPtr += 2U; + huart->TxXferCount--; + } + } +} + + +/** + * @brief Wrap up transmission in non-blocking mode. + * @param huart pointer to a UART_HandleTypeDef structure that contains + * the configuration information for the specified UART module. + * @retval None + */ +static void UART_EndTransmit_IT(UART_HandleTypeDef *huart) +{ + /* Disable the UART Transmit Complete Interrupt */ + ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_TCIE); + + /* Tx process is ended, restore huart->gState to Ready */ + huart->gState = HAL_UART_STATE_READY; + + /* Cleat TxISR function pointer */ + huart->TxISR = NULL; + +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) + /*Call registered Tx complete callback*/ + huart->TxCpltCallback(huart); +#else + /*Call legacy weak Tx complete callback*/ + HAL_UART_TxCpltCallback(huart); +#endif /* USE_HAL_UART_REGISTER_CALLBACKS */ +} + +/** + * @brief RX interrupt handler for 7 or 8 bits data word length . + * @param huart UART handle. + * @retval None + */ +static void UART_RxISR_8BIT(UART_HandleTypeDef *huart) +{ + uint16_t uhMask = huart->Mask; + uint16_t uhdata; + + /* Check that a Rx process is ongoing */ + if (huart->RxState == HAL_UART_STATE_BUSY_RX) + { + uhdata = (uint16_t) READ_REG(huart->Instance->RDR); + *huart->pRxBuffPtr = (uint8_t)(uhdata & (uint8_t)uhMask); + huart->pRxBuffPtr++; + huart->RxXferCount--; + + if (huart->RxXferCount == 0U) + { + /* Disable the UART Parity Error Interrupt and RXNE interrupts */ + ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); + + /* Disable the UART Error Interrupt: (Frame error, noise error, overrun error) */ + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); + + /* Rx process is completed, restore huart->RxState to Ready */ + huart->RxState = HAL_UART_STATE_READY; + + /* Clear RxISR function pointer */ + huart->RxISR = NULL; + + /* Check current reception Mode : + If Reception till IDLE event has been selected : */ + if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) + { + /* Set reception type to Standard */ + huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; + + /* Disable IDLE interrupt */ + ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); + + if (__HAL_UART_GET_FLAG(huart, UART_FLAG_IDLE) == SET) + { + /* Clear IDLE Flag */ + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_IDLEF); + } +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) + /*Call registered Rx Event callback*/ + huart->RxEventCallback(huart, huart->RxXferSize); +#else + /*Call legacy weak Rx Event callback*/ + HAL_UARTEx_RxEventCallback(huart, huart->RxXferSize); +#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */ + } + else + { + /* Standard reception API called */ +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) + /*Call registered Rx complete callback*/ + huart->RxCpltCallback(huart); +#else + /*Call legacy weak Rx complete callback*/ + HAL_UART_RxCpltCallback(huart); +#endif /* USE_HAL_UART_REGISTER_CALLBACKS */ + } + } + } + else + { + /* Clear RXNE interrupt flag */ + __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST); + } +} + +/** + * @brief RX interrupt handler for 9 bits data word length . + * @note Function is called under interruption only, once + * interruptions have been enabled by HAL_UART_Receive_IT() + * @param huart UART handle. + * @retval None + */ +static void UART_RxISR_16BIT(UART_HandleTypeDef *huart) +{ + uint16_t *tmp; + uint16_t uhMask = huart->Mask; + uint16_t uhdata; + + /* Check that a Rx process is ongoing */ + if (huart->RxState == HAL_UART_STATE_BUSY_RX) + { + uhdata = (uint16_t) READ_REG(huart->Instance->RDR); + tmp = (uint16_t *) huart->pRxBuffPtr ; + *tmp = (uint16_t)(uhdata & uhMask); + huart->pRxBuffPtr += 2U; + huart->RxXferCount--; + + if (huart->RxXferCount == 0U) + { + /* Disable the UART Parity Error Interrupt and RXNE interrupt*/ + ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE)); + + /* Disable the UART Error Interrupt: (Frame error, noise error, overrun error) */ + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); + + /* Rx process is completed, restore huart->RxState to Ready */ + huart->RxState = HAL_UART_STATE_READY; + + /* Clear RxISR function pointer */ + huart->RxISR = NULL; + + /* Check current reception Mode : + If Reception till IDLE event has been selected : */ + if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) + { + /* Set reception type to Standard */ + huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; + + /* Disable IDLE interrupt */ + ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); + + if (__HAL_UART_GET_FLAG(huart, UART_FLAG_IDLE) == SET) + { + /* Clear IDLE Flag */ + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_IDLEF); + } +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) + /*Call registered Rx Event callback*/ + huart->RxEventCallback(huart, huart->RxXferSize); +#else + /*Call legacy weak Rx Event callback*/ + HAL_UARTEx_RxEventCallback(huart, huart->RxXferSize); +#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */ + } + else + { + /* Standard reception API called */ +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) + /*Call registered Rx complete callback*/ + huart->RxCpltCallback(huart); +#else + /*Call legacy weak Rx complete callback*/ + HAL_UART_RxCpltCallback(huart); +#endif /* USE_HAL_UART_REGISTER_CALLBACKS */ + } + } + } + else + { + /* Clear RXNE interrupt flag */ + __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST); + } +} + + +/** + * @} + */ + +#endif /* HAL_UART_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.c b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.c new file mode 100644 index 0000000..13c7445 --- /dev/null +++ b/fw_hal/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.c @@ -0,0 +1,842 @@ +/** + ****************************************************************************** + * @file stm32l0xx_hal_uart_ex.c + * @author MCD Application Team + * @brief Extended UART HAL module driver. + * This file provides firmware functions to manage the following extended + * functionalities of the Universal Asynchronous Receiver Transmitter Peripheral (UART). + * + Initialization and de-initialization functions + * + Peripheral Control functions + * + * + @verbatim + ============================================================================== + ##### UART peripheral extended features ##### + ============================================================================== + + (#) Declare a UART_HandleTypeDef handle structure. + + (#) For the UART RS485 Driver Enable mode, initialize the UART registers + by calling the HAL_RS485Ex_Init() API. + + @endverbatim + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l0xx_hal.h" + +/** @addtogroup STM32L0xx_HAL_Driver + * @{ + */ + +/** @defgroup UARTEx UARTEx + * @brief UART Extended HAL module driver + * @{ + */ + +#ifdef HAL_UART_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ + +/* Private macros ------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/** @defgroup UARTEx_Private_Functions UARTEx Private Functions + * @{ + */ +static void UARTEx_Wakeup_AddressConfig(UART_HandleTypeDef *huart, UART_WakeUpTypeDef WakeUpSelection); +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ + +/** @defgroup UARTEx_Exported_Functions UARTEx Exported Functions + * @{ + */ + +/** @defgroup UARTEx_Exported_Functions_Group1 Initialization and de-initialization functions + * @brief Extended Initialization and Configuration Functions + * +@verbatim +=============================================================================== + ##### Initialization and Configuration functions ##### + =============================================================================== + [..] + This subsection provides a set of functions allowing to initialize the USARTx or the UARTy + in asynchronous mode. + (+) For the asynchronous mode the parameters below can be configured: + (++) Baud Rate + (++) Word Length + (++) Stop Bit + (++) Parity: If the parity is enabled, then the MSB bit of the data written + in the data register is transmitted but is changed by the parity bit. + (++) Hardware flow control + (++) Receiver/transmitter modes + (++) Over Sampling Method + (++) One-Bit Sampling Method + (+) For the asynchronous mode, the following advanced features can be configured as well: + (++) TX and/or RX pin level inversion + (++) data logical level inversion + (++) RX and TX pins swap + (++) RX overrun detection disabling + (++) DMA disabling on RX error + (++) MSB first on communication line + (++) auto Baud rate detection + [..] + The HAL_RS485Ex_Init() API follows the UART RS485 mode configuration + procedures (details for the procedures are available in reference manual). + +@endverbatim + + Depending on the frame length defined by the M1 and M0 bits (7-bit, + 8-bit or 9-bit), the possible UART formats are listed in the + following table. + + Table 1. UART frame format. + +-----------------------------------------------------------------------+ + | M1 bit | M0 bit | PCE bit | UART frame | + |---------|---------|-----------|---------------------------------------| + | 0 | 0 | 0 | | SB | 8 bit data | STB | | + |---------|---------|-----------|---------------------------------------| + | 0 | 0 | 1 | | SB | 7 bit data | PB | STB | | + |---------|---------|-----------|---------------------------------------| + | 0 | 1 | 0 | | SB | 9 bit data | STB | | + |---------|---------|-----------|---------------------------------------| + | 0 | 1 | 1 | | SB | 8 bit data | PB | STB | | + |---------|---------|-----------|---------------------------------------| + | 1 | 0 | 0 | | SB | 7 bit data | STB | | + |---------|---------|-----------|---------------------------------------| + | 1 | 0 | 1 | | SB | 6 bit data | PB | STB | | + +-----------------------------------------------------------------------+ + + * @{ + */ + +/** + * @brief Initialize the RS485 Driver enable feature according to the specified + * parameters in the UART_InitTypeDef and creates the associated handle. + * @param huart UART handle. + * @param Polarity Select the driver enable polarity. + * This parameter can be one of the following values: + * @arg @ref UART_DE_POLARITY_HIGH DE signal is active high + * @arg @ref UART_DE_POLARITY_LOW DE signal is active low + * @param AssertionTime Driver Enable assertion time: + * 5-bit value defining the time between the activation of the DE (Driver Enable) + * signal and the beginning of the start bit. It is expressed in sample time + * units (1/8 or 1/16 bit time, depending on the oversampling rate) + * @param DeassertionTime Driver Enable deassertion time: + * 5-bit value defining the time between the end of the last stop bit, in a + * transmitted message, and the de-activation of the DE (Driver Enable) signal. + * It is expressed in sample time units (1/8 or 1/16 bit time, depending on the + * oversampling rate). + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RS485Ex_Init(UART_HandleTypeDef *huart, uint32_t Polarity, uint32_t AssertionTime, + uint32_t DeassertionTime) +{ + uint32_t temp; + + /* Check the UART handle allocation */ + if (huart == NULL) + { + return HAL_ERROR; + } + /* Check the Driver Enable UART instance */ + assert_param(IS_UART_DRIVER_ENABLE_INSTANCE(huart->Instance)); + + /* Check the Driver Enable polarity */ + assert_param(IS_UART_DE_POLARITY(Polarity)); + + /* Check the Driver Enable assertion time */ + assert_param(IS_UART_ASSERTIONTIME(AssertionTime)); + + /* Check the Driver Enable deassertion time */ + assert_param(IS_UART_DEASSERTIONTIME(DeassertionTime)); + + if (huart->gState == HAL_UART_STATE_RESET) + { + /* Allocate lock resource and initialize it */ + huart->Lock = HAL_UNLOCKED; + +#if (USE_HAL_UART_REGISTER_CALLBACKS == 1) + UART_InitCallbacksToDefault(huart); + + if (huart->MspInitCallback == NULL) + { + huart->MspInitCallback = HAL_UART_MspInit; + } + + /* Init the low level hardware */ + huart->MspInitCallback(huart); +#else + /* Init the low level hardware : GPIO, CLOCK, CORTEX */ + HAL_UART_MspInit(huart); +#endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */ + } + + huart->gState = HAL_UART_STATE_BUSY; + + /* Disable the Peripheral */ + __HAL_UART_DISABLE(huart); + + /* Set the UART Communication parameters */ + if (UART_SetConfig(huart) == HAL_ERROR) + { + return HAL_ERROR; + } + + if (huart->AdvancedInit.AdvFeatureInit != UART_ADVFEATURE_NO_INIT) + { + UART_AdvFeatureConfig(huart); + } + + /* Enable the Driver Enable mode by setting the DEM bit in the CR3 register */ + SET_BIT(huart->Instance->CR3, USART_CR3_DEM); + + /* Set the Driver Enable polarity */ + MODIFY_REG(huart->Instance->CR3, USART_CR3_DEP, Polarity); + + /* Set the Driver Enable assertion and deassertion times */ + temp = (AssertionTime << UART_CR1_DEAT_ADDRESS_LSB_POS); + temp |= (DeassertionTime << UART_CR1_DEDT_ADDRESS_LSB_POS); + MODIFY_REG(huart->Instance->CR1, (USART_CR1_DEDT | USART_CR1_DEAT), temp); + + /* Enable the Peripheral */ + __HAL_UART_ENABLE(huart); + + /* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */ + return (UART_CheckIdleState(huart)); +} + +/** + * @} + */ + +/** @defgroup UARTEx_Exported_Functions_Group2 IO operation functions + * @brief Extended functions + * +@verbatim + =============================================================================== + ##### IO operation functions ##### + =============================================================================== + This subsection provides a set of Wakeup and FIFO mode related callback functions. + + (#) Wakeup from Stop mode Callback: + (+) HAL_UARTEx_WakeupCallback() + +@endverbatim + * @{ + */ + +/** + * @brief UART wakeup from Stop mode callback. + * @param huart UART handle. + * @retval None + */ +__weak void HAL_UARTEx_WakeupCallback(UART_HandleTypeDef *huart) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(huart); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_UARTEx_WakeupCallback can be implemented in the user file. + */ +} + + +/** + * @} + */ + +/** @defgroup UARTEx_Exported_Functions_Group3 Peripheral Control functions + * @brief Extended Peripheral Control functions + * +@verbatim + =============================================================================== + ##### Peripheral Control functions ##### + =============================================================================== + [..] This section provides the following functions: + (+) HAL_UARTEx_EnableClockStopMode() API enables the UART clock (HSI or LSE only) during stop mode + (+) HAL_UARTEx_DisableClockStopMode() API disables the above functionality + (+) HAL_MultiProcessorEx_AddressLength_Set() API optionally sets the UART node address + detection length to more than 4 bits for multiprocessor address mark wake up. + (+) HAL_UARTEx_StopModeWakeUpSourceConfig() API defines the wake-up from stop mode + trigger: address match, Start Bit detection or RXNE bit status. + (+) HAL_UARTEx_EnableStopMode() API enables the UART to wake up the MCU from stop mode + (+) HAL_UARTEx_DisableStopMode() API disables the above functionality + + [..] This subsection also provides a set of additional functions providing enhanced reception + services to user. (For example, these functions allow application to handle use cases + where number of data to be received is unknown). + + (#) Compared to standard reception services which only consider number of received + data elements as reception completion criteria, these functions also consider additional events + as triggers for updating reception status to caller : + (+) Detection of inactivity period (RX line has not been active for a given period). + (++) RX inactivity detected by IDLE event, i.e. RX line has been in idle state (normally high state) + for 1 frame time, after last received byte. + (++) RX inactivity detected by RTO, i.e. line has been in idle state + for a programmable time, after last received byte. + (+) Detection that a specific character has been received. + + (#) There are two mode of transfer: + (+) Blocking mode: The reception is performed in polling mode, until either expected number of data is received, + or till IDLE event occurs. Reception is handled only during function execution. + When function exits, no data reception could occur. HAL status and number of actually received data elements, + are returned by function after finishing transfer. + (+) Non-Blocking mode: The reception is performed using Interrupts or DMA. + These API's return the HAL status. + The end of the data processing will be indicated through the + dedicated UART IRQ when using Interrupt mode or the DMA IRQ when using DMA mode. + The HAL_UARTEx_RxEventCallback() user callback will be executed during Receive process + The HAL_UART_ErrorCallback()user callback will be executed when a reception error is detected. + + (#) Blocking mode API: + (+) HAL_UARTEx_ReceiveToIdle() + + (#) Non-Blocking mode API with Interrupt: + (+) HAL_UARTEx_ReceiveToIdle_IT() + + (#) Non-Blocking mode API with DMA: + (+) HAL_UARTEx_ReceiveToIdle_DMA() + +@endverbatim + * @{ + */ + +/** + * @brief Keep UART Clock enabled when in Stop Mode. + * @note When the USART clock source is configured to be LSE or HSI, it is possible to keep enabled + * this clock during STOP mode by setting the UCESM bit in USART_CR3 control register. + * @note When LPUART is used to wakeup from stop with LSE is selected as LPUART clock source, + * and desired baud rate is 9600 baud, the bit UCESM bit in LPUART_CR3 control register must be set. + * @param huart UART handle. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_UARTEx_EnableClockStopMode(UART_HandleTypeDef *huart) +{ + /* Process Locked */ + __HAL_LOCK(huart); + + /* Set UCESM bit */ + ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_UCESM); + + /* Process Unlocked */ + __HAL_UNLOCK(huart); + + return HAL_OK; +} + +/** + * @brief Disable UART Clock when in Stop Mode. + * @param huart UART handle. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_UARTEx_DisableClockStopMode(UART_HandleTypeDef *huart) +{ + /* Process Locked */ + __HAL_LOCK(huart); + + /* Clear UCESM bit */ + ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_UCESM); + + /* Process Unlocked */ + __HAL_UNLOCK(huart); + + return HAL_OK; +} + +/** + * @brief By default in multiprocessor mode, when the wake up method is set + * to address mark, the UART handles only 4-bit long addresses detection; + * this API allows to enable longer addresses detection (6-, 7- or 8-bit + * long). + * @note Addresses detection lengths are: 6-bit address detection in 7-bit data mode, + * 7-bit address detection in 8-bit data mode, 8-bit address detection in 9-bit data mode. + * @param huart UART handle. + * @param AddressLength This parameter can be one of the following values: + * @arg @ref UART_ADDRESS_DETECT_4B 4-bit long address + * @arg @ref UART_ADDRESS_DETECT_7B 6-, 7- or 8-bit long address + * @retval HAL status + */ +HAL_StatusTypeDef HAL_MultiProcessorEx_AddressLength_Set(UART_HandleTypeDef *huart, uint32_t AddressLength) +{ + /* Check the UART handle allocation */ + if (huart == NULL) + { + return HAL_ERROR; + } + + /* Check the address length parameter */ + assert_param(IS_UART_ADDRESSLENGTH_DETECT(AddressLength)); + + huart->gState = HAL_UART_STATE_BUSY; + + /* Disable the Peripheral */ + __HAL_UART_DISABLE(huart); + + /* Set the address length */ + MODIFY_REG(huart->Instance->CR2, USART_CR2_ADDM7, AddressLength); + + /* Enable the Peripheral */ + __HAL_UART_ENABLE(huart); + + /* TEACK and/or REACK to check before moving huart->gState to Ready */ + return (UART_CheckIdleState(huart)); +} + +/** + * @brief Set Wakeup from Stop mode interrupt flag selection. + * @note It is the application responsibility to enable the interrupt used as + * usart_wkup interrupt source before entering low-power mode. + * @param huart UART handle. + * @param WakeUpSelection Address match, Start Bit detection or RXNE/RXFNE bit status. + * This parameter can be one of the following values: + * @arg @ref UART_WAKEUP_ON_ADDRESS + * @arg @ref UART_WAKEUP_ON_STARTBIT + * @arg @ref UART_WAKEUP_ON_READDATA_NONEMPTY + * @retval HAL status + */ +HAL_StatusTypeDef HAL_UARTEx_StopModeWakeUpSourceConfig(UART_HandleTypeDef *huart, UART_WakeUpTypeDef WakeUpSelection) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tickstart; + + /* check the wake-up from stop mode UART instance */ + assert_param(IS_UART_WAKEUP_FROMSTOP_INSTANCE(huart->Instance)); + /* check the wake-up selection parameter */ + assert_param(IS_UART_WAKEUP_SELECTION(WakeUpSelection.WakeUpEvent)); + + /* Process Locked */ + __HAL_LOCK(huart); + + huart->gState = HAL_UART_STATE_BUSY; + + /* Disable the Peripheral */ + __HAL_UART_DISABLE(huart); + + /* Set the wake-up selection scheme */ + MODIFY_REG(huart->Instance->CR3, USART_CR3_WUS, WakeUpSelection.WakeUpEvent); + + if (WakeUpSelection.WakeUpEvent == UART_WAKEUP_ON_ADDRESS) + { + UARTEx_Wakeup_AddressConfig(huart, WakeUpSelection); + } + + /* Enable the Peripheral */ + __HAL_UART_ENABLE(huart); + + /* Init tickstart for timeout management */ + tickstart = HAL_GetTick(); + + /* Wait until REACK flag is set */ + if (UART_WaitOnFlagUntilTimeout(huart, USART_ISR_REACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK) + { + status = HAL_TIMEOUT; + } + else + { + /* Initialize the UART State */ + huart->gState = HAL_UART_STATE_READY; + } + + /* Process Unlocked */ + __HAL_UNLOCK(huart); + + return status; +} + +/** + * @brief Enable UART Stop Mode. + * @note The UART is able to wake up the MCU from Stop 1 mode as long as UART clock is HSI or LSE. + * @param huart UART handle. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_UARTEx_EnableStopMode(UART_HandleTypeDef *huart) +{ + /* Process Locked */ + __HAL_LOCK(huart); + + /* Set UESM bit */ + ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_UESM); + + /* Process Unlocked */ + __HAL_UNLOCK(huart); + + return HAL_OK; +} + +/** + * @brief Disable UART Stop Mode. + * @param huart UART handle. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_UARTEx_DisableStopMode(UART_HandleTypeDef *huart) +{ + /* Process Locked */ + __HAL_LOCK(huart); + + /* Clear UESM bit */ + ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_UESM); + + /* Process Unlocked */ + __HAL_UNLOCK(huart); + + return HAL_OK; +} + +/** + * @brief Receive an amount of data in blocking mode till either the expected number of data + * is received or an IDLE event occurs. + * @note HAL_OK is returned if reception is completed (expected number of data has been received) + * or if reception is stopped after IDLE event (less than the expected number of data has been received) + * In this case, RxLen output parameter indicates number of data available in reception buffer. + * @note When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1-M0 = 01), + * the received data is handled as a set of uint16_t. In this case, Size must indicate the number + * of uint16_t available through pData. + * @note When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1-M0 = 01), + * address of user data buffer for storing data to be received, should be aligned on a half word frontier + * (16 bits) (as received data will be handled using uint16_t pointer cast). Depending on compilation chain, + * use of specific alignment compilation directives or pragmas might be required to ensure proper + * alignment for pData. + * @param huart UART handle. + * @param pData Pointer to data buffer (uint8_t or uint16_t data elements). + * @param Size Amount of data elements (uint8_t or uint16_t) to be received. + * @param RxLen Number of data elements finally received + * (could be lower than Size, in case reception ends on IDLE event) + * @param Timeout Timeout duration expressed in ms (covers the whole reception sequence). + * @retval HAL status + */ +HAL_StatusTypeDef HAL_UARTEx_ReceiveToIdle(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint16_t *RxLen, + uint32_t Timeout) +{ + uint8_t *pdata8bits; + uint16_t *pdata16bits; + uint16_t uhMask; + uint32_t tickstart; + + /* Check that a Rx process is not already ongoing */ + if (huart->RxState == HAL_UART_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + return HAL_ERROR; + } + + /* In case of 9bits/No Parity transfer, pData buffer provided as input parameter + should be aligned on a uint16_t frontier, as data to be received from RDR will be + handled through a uint16_t cast. */ + if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE)) + { + if ((((uint32_t)pData) & 1U) != 0U) + { + return HAL_ERROR; + } + } + + __HAL_LOCK(huart); + + huart->ErrorCode = HAL_UART_ERROR_NONE; + huart->RxState = HAL_UART_STATE_BUSY_RX; + huart->ReceptionType = HAL_UART_RECEPTION_TOIDLE; + + /* Init tickstart for timeout management */ + tickstart = HAL_GetTick(); + + huart->RxXferSize = Size; + huart->RxXferCount = Size; + + /* Computation of UART mask to apply to RDR register */ + UART_MASK_COMPUTATION(huart); + uhMask = huart->Mask; + + /* In case of 9bits/No Parity transfer, pRxData needs to be handled as a uint16_t pointer */ + if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE)) + { + pdata8bits = NULL; + pdata16bits = (uint16_t *) pData; + } + else + { + pdata8bits = pData; + pdata16bits = NULL; + } + + __HAL_UNLOCK(huart); + + /* Initialize output number of received elements */ + *RxLen = 0U; + + /* as long as data have to be received */ + while (huart->RxXferCount > 0U) + { + /* Check if IDLE flag is set */ + if (__HAL_UART_GET_FLAG(huart, UART_FLAG_IDLE)) + { + /* Clear IDLE flag in ISR */ + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_IDLEF); + + /* If Set, but no data ever received, clear flag without exiting loop */ + /* If Set, and data has already been received, this means Idle Event is valid : End reception */ + if (*RxLen > 0U) + { + huart->RxState = HAL_UART_STATE_READY; + + return HAL_OK; + } + } + + /* Check if RXNE flag is set */ + if (__HAL_UART_GET_FLAG(huart, UART_FLAG_RXNE)) + { + if (pdata8bits == NULL) + { + *pdata16bits = (uint16_t)(huart->Instance->RDR & uhMask); + pdata16bits++; + } + else + { + *pdata8bits = (uint8_t)(huart->Instance->RDR & (uint8_t)uhMask); + pdata8bits++; + } + /* Increment number of received elements */ + *RxLen += 1U; + huart->RxXferCount--; + } + + /* Check for the Timeout */ + if (Timeout != HAL_MAX_DELAY) + { + if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U)) + { + huart->RxState = HAL_UART_STATE_READY; + + return HAL_TIMEOUT; + } + } + } + + /* Set number of received elements in output parameter : RxLen */ + *RxLen = huart->RxXferSize - huart->RxXferCount; + /* At end of Rx process, restore huart->RxState to Ready */ + huart->RxState = HAL_UART_STATE_READY; + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Receive an amount of data in interrupt mode till either the expected number of data + * is received or an IDLE event occurs. + * @note Reception is initiated by this function call. Further progress of reception is achieved thanks + * to UART interrupts raised by RXNE and IDLE events. Callback is called at end of reception indicating + * number of received data elements. + * @note When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1-M0 = 01), + * the received data is handled as a set of uint16_t. In this case, Size must indicate the number + * of uint16_t available through pData. + * @note When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1-M0 = 01), + * address of user data buffer for storing data to be received, should be aligned on a half word frontier + * (16 bits) (as received data will be handled using uint16_t pointer cast). Depending on compilation chain, + * use of specific alignment compilation directives or pragmas might be required + * to ensure proper alignment for pData. + * @param huart UART handle. + * @param pData Pointer to data buffer (uint8_t or uint16_t data elements). + * @param Size Amount of data elements (uint8_t or uint16_t) to be received. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_UARTEx_ReceiveToIdle_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size) +{ + HAL_StatusTypeDef status; + + /* Check that a Rx process is not already ongoing */ + if (huart->RxState == HAL_UART_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + return HAL_ERROR; + } + + /* In case of 9bits/No Parity transfer, pData buffer provided as input parameter + should be aligned on a uint16_t frontier, as data to be received from RDR will be + handled through a uint16_t cast. */ + if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE)) + { + if ((((uint32_t)pData) & 1U) != 0U) + { + return HAL_ERROR; + } + } + + __HAL_LOCK(huart); + + /* Set Reception type to reception till IDLE Event*/ + huart->ReceptionType = HAL_UART_RECEPTION_TOIDLE; + + status = UART_Start_Receive_IT(huart, pData, Size); + + /* Check Rx process has been successfully started */ + if (status == HAL_OK) + { + if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) + { + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_IDLEF); + ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); + } + else + { + /* In case of errors already pending when reception is started, + Interrupts may have already been raised and lead to reception abortion. + (Overrun error for instance). + In such case Reception Type has been reset to HAL_UART_RECEPTION_STANDARD. */ + status = HAL_ERROR; + } + } + + return status; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Receive an amount of data in DMA mode till either the expected number + * of data is received or an IDLE event occurs. + * @note Reception is initiated by this function call. Further progress of reception is achieved thanks + * to DMA services, transferring automatically received data elements in user reception buffer and + * calling registered callbacks at half/end of reception. UART IDLE events are also used to consider + * reception phase as ended. In all cases, callback execution will indicate number of received data elements. + * @note When the UART parity is enabled (PCE = 1), the received data contain + * the parity bit (MSB position). + * @note When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1-M0 = 01), + * the received data is handled as a set of uint16_t. In this case, Size must indicate the number + * of uint16_t available through pData. + * @note When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1-M0 = 01), + * address of user data buffer for storing data to be received, should be aligned on a half word frontier + * (16 bits) (as received data will be handled by DMA from halfword frontier). Depending on compilation chain, + * use of specific alignment compilation directives or pragmas might be required + * to ensure proper alignment for pData. + * @param huart UART handle. + * @param pData Pointer to data buffer (uint8_t or uint16_t data elements). + * @param Size Amount of data elements (uint8_t or uint16_t) to be received. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_UARTEx_ReceiveToIdle_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size) +{ + HAL_StatusTypeDef status; + + /* Check that a Rx process is not already ongoing */ + if (huart->RxState == HAL_UART_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + return HAL_ERROR; + } + + /* In case of 9bits/No Parity transfer, pData buffer provided as input parameter + should be aligned on a uint16_t frontier, as data copy from RDR will be + handled by DMA from a uint16_t frontier. */ + if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE)) + { + if ((((uint32_t)pData) & 1U) != 0U) + { + return HAL_ERROR; + } + } + + __HAL_LOCK(huart); + + /* Set Reception type to reception till IDLE Event*/ + huart->ReceptionType = HAL_UART_RECEPTION_TOIDLE; + + status = UART_Start_Receive_DMA(huart, pData, Size); + + /* Check Rx process has been successfully started */ + if (status == HAL_OK) + { + if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) + { + __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_IDLEF); + ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); + } + else + { + /* In case of errors already pending when reception is started, + Interrupts may have already been raised and lead to reception abortion. + (Overrun error for instance). + In such case Reception Type has been reset to HAL_UART_RECEPTION_STANDARD. */ + status = HAL_ERROR; + } + } + + return status; + } + else + { + return HAL_BUSY; + } +} + +/** + * @} + */ + +/** + * @} + */ + +/** @addtogroup UARTEx_Private_Functions + * @{ + */ + +/** + * @brief Initialize the UART wake-up from stop mode parameters when triggered by address detection. + * @param huart UART handle. + * @param WakeUpSelection UART wake up from stop mode parameters. + * @retval None + */ +static void UARTEx_Wakeup_AddressConfig(UART_HandleTypeDef *huart, UART_WakeUpTypeDef WakeUpSelection) +{ + assert_param(IS_UART_ADDRESSLENGTH_DETECT(WakeUpSelection.AddressLength)); + + /* Set the USART address length */ + MODIFY_REG(huart->Instance->CR2, USART_CR2_ADDM7, WakeUpSelection.AddressLength); + + /* Set the USART address node */ + MODIFY_REG(huart->Instance->CR2, USART_CR2_ADD, ((uint32_t)WakeUpSelection.Address << UART_CR2_ADDRESS_LSB_POS)); +} + +/** + * @} + */ + +#endif /* HAL_UART_MODULE_ENABLED */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/fw_hal/STM32L031G6UX_FLASH.ld b/fw_hal/STM32L031G6UX_FLASH.ld new file mode 100644 index 0000000..1c2e4da --- /dev/null +++ b/fw_hal/STM32L031G6UX_FLASH.ld @@ -0,0 +1,186 @@ +/* +****************************************************************************** +** +** @file : LinkerScript.ld +** +** @author : Auto-generated by STM32CubeIDE +** +** @brief : Linker script for STM32L031G6Ux Device from STM32L0 series +** 32Kbytes FLASH +** 8Kbytes 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) 2021 STMicroelectronics. +** All rights reserved.

+** +** This software component is licensed by ST under BSD 3-Clause license, +** the "License"; You may not use this file except in compliance with the +** License. You may obtain a copy of the License at: +** opensource.org/licenses/BSD-3-Clause +** +****************************************************************************** +*/ + +/* 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 = 8K + FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 32K +} + +/* 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 : { + . = ALIGN(4); + *(.ARM.extab* .gnu.linkonce.armextab.*) + . = ALIGN(4); + } >FLASH + + .ARM : { + . = ALIGN(4); + __exidx_start = .; + *(.ARM.exidx*) + __exidx_end = .; + . = ALIGN(4); + } >FLASH + + .preinit_array : + { + . = ALIGN(4); + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + . = ALIGN(4); + } >FLASH + + .init_array : + { + . = ALIGN(4); + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + . = ALIGN(4); + } >FLASH + + .fini_array : + { + . = 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/fw_hal/iaq_wired_sensor_hal Debug.cfg b/fw_hal/iaq_wired_sensor_hal Debug.cfg new file mode 100644 index 0000000..dd9476b --- /dev/null +++ b/fw_hal/iaq_wired_sensor_hal Debug.cfg @@ -0,0 +1,42 @@ +# This is an genericBoard board with a single STM32L031G6Ux chip +# +# Generated by STM32CubeIDE +# Take care that such file, as generated, may be overridden without any early notice. Please have a look to debug launch configuration setup(s) + +source [find interface/stlink-dap.cfg] + + +set WORKAREASIZE 0x2000 + +transport select "dapdirect_swd" + +set CHIPNAME STM32L031G6Ux +set BOARDNAME genericBoard + +# Enable debug when in low power modes +set ENABLE_LOW_POWER 1 + +# Stop Watchdog counters when halt +set STOP_WATCHDOG 1 + +# STlink Debug clock frequency +set CLOCK_FREQ 8000 + +# Reset configuration +# use hardware reset, connect under reset +# connect_assert_srst needed if low power mode application running (WFI...) +reset_config srst_only srst_nogate connect_assert_srst +set CONNECT_UNDER_RESET 1 +set CORE_RESET 0 + +# ACCESS PORT NUMBER +set AP_NUM 0 +# GDB PORT +set GDB_PORT 3333 + + + +# BCTM CPU variables + +source [find target/stm32l0x.cfg] + diff --git a/fw_hal/iaq_wired_sensor_hal Debug.launch b/fw_hal/iaq_wired_sensor_hal Debug.launch new file mode 100644 index 0000000..ac7b107 --- /dev/null +++ b/fw_hal/iaq_wired_sensor_hal Debug.launch @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fw_hal/iaq_wired_sensor_hal.ioc b/fw_hal/iaq_wired_sensor_hal.ioc new file mode 100644 index 0000000..62cf5df --- /dev/null +++ b/fw_hal/iaq_wired_sensor_hal.ioc @@ -0,0 +1,167 @@ +#MicroXplorer Configuration settings - do not modify +File.Version=6 +I2C1.IPParameters=Timing +I2C1.Timing=0x40000A0B +KeepUserPlacement=false +Mcu.Family=STM32L0 +Mcu.IP0=I2C1 +Mcu.IP1=NVIC +Mcu.IP2=RCC +Mcu.IP3=SYS +Mcu.IP4=TIM2 +Mcu.IP5=TIM21 +Mcu.IP6=TIM22 +Mcu.IP7=USART2 +Mcu.IPNb=8 +Mcu.Name=STM32L031G(4-6)Ux +Mcu.Package=UFQFPN28 +Mcu.Pin0=PA1 +Mcu.Pin1=PA2 +Mcu.Pin10=VP_SYS_VS_Systick +Mcu.Pin11=VP_TIM2_VS_ClockSourceINT +Mcu.Pin12=VP_TIM21_VS_ClockSourceINT +Mcu.Pin13=VP_TIM22_VS_ClockSourceINT +Mcu.Pin2=PA3 +Mcu.Pin3=PA5 +Mcu.Pin4=PA6 +Mcu.Pin5=PA7 +Mcu.Pin6=PA9 +Mcu.Pin7=PA10 +Mcu.Pin8=PA13 +Mcu.Pin9=PA14 +Mcu.PinsNb=14 +Mcu.ThirdPartyNb=0 +Mcu.UserConstants= +Mcu.UserName=STM32L031G6Ux +MxCube.Version=6.3.0 +MxDb.Version=DB.6.0.30 +NVIC.ForceEnableDMAVector=true +NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.SVC_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.SysTick_IRQn=true\:3\:0\:false\:false\:true\:false\:true +PA1.Mode=Hardware Flow Control (RS485) +PA1.Signal=USART2_DE +PA10.GPIOParameters=GPIO_Pu +PA10.GPIO_Pu=GPIO_PULLUP +PA10.Mode=I2C +PA10.Signal=I2C1_SDA +PA13.Mode=Serial_Wire +PA13.Signal=SYS_SWDIO +PA14.Mode=Serial_Wire +PA14.Signal=SYS_SWCLK +PA2.Mode=Asynchronous +PA2.Signal=USART2_TX +PA3.Mode=Asynchronous +PA3.Signal=USART2_RX +PA5.Locked=true +PA5.Signal=S_TIM2_CH1 +PA6.Signal=S_TIM22_CH1 +PA7.Signal=S_TIM22_CH2 +PA9.GPIOParameters=GPIO_Pu +PA9.GPIO_Pu=GPIO_PULLUP +PA9.Mode=I2C +PA9.Signal=I2C1_SCL +PinOutPanel.RotationAngle=0 +ProjectManager.AskForMigrate=true +ProjectManager.BackupPrevious=false +ProjectManager.CompilerOptimize=6 +ProjectManager.ComputerToolchain=false +ProjectManager.CoupleFile=false +ProjectManager.CustomerFirmwarePackage= +ProjectManager.DefaultFWLocation=true +ProjectManager.DeletePrevious=true +ProjectManager.DeviceId=STM32L031G6Ux +ProjectManager.FirmwarePackage=STM32Cube FW_L0 V1.12.1 +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=iaq_wired_sensor_hal.ioc +ProjectManager.ProjectName=iaq_wired_sensor_hal +ProjectManager.RegisterCallBack= +ProjectManager.StackSize=0x400 +ProjectManager.TargetToolchain=STM32CubeIDE +ProjectManager.ToolChainLocation= +ProjectManager.UnderRoot=true +ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_I2C1_Init-I2C1-false-HAL-true,4-MX_TIM2_Init-TIM2-false-HAL-true,5-MX_TIM21_Init-TIM21-false-HAL-true,6-MX_TIM22_Init-TIM22-false-HAL-true,7-MX_USART2_UART_Init-USART2-false-HAL-true +RCC.AHBCLKDivider=RCC_SYSCLK_DIV2 +RCC.AHBFreq_Value=12000000 +RCC.APB1Freq_Value=12000000 +RCC.APB1TimFreq_Value=12000000 +RCC.APB2Freq_Value=12000000 +RCC.APB2TimFreq_Value=12000000 +RCC.FCLKCortexFreq_Value=12000000 +RCC.FamilyName=M +RCC.HCLKFreq_Value=12000000 +RCC.HSE_VALUE=8000000 +RCC.HSI16_VALUE=16000000 +RCC.HSI_VALUE=16000000 +RCC.I2C1Freq_Value=12000000 +RCC.IPParameters=AHBCLKDivider,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI16_VALUE,HSI_VALUE,I2C1Freq_Value,LPTIMFreq_Value,LPUARTFreq_Value,LSE_VALUE,LSI_VALUE,MCOPinFreq_Value,MSI_VALUE,PLLCLKFreq_Value,PWRFreq_Value,RTCFreq_Value,RTCHSEDivFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,TIMFreq_Value,TimerFreq_Value,USART2Freq_Value,VCOOutputFreq_Value,WatchDogFreq_Value +RCC.LPTIMFreq_Value=12000000 +RCC.LPUARTFreq_Value=12000000 +RCC.LSE_VALUE=32768 +RCC.LSI_VALUE=37000 +RCC.MCOPinFreq_Value=24000000 +RCC.MSI_VALUE=2097000 +RCC.PLLCLKFreq_Value=24000000 +RCC.PWRFreq_Value=24000000 +RCC.RTCFreq_Value=37000 +RCC.RTCHSEDivFreq_Value=4000000 +RCC.SYSCLKFreq_VALUE=24000000 +RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK +RCC.TIMFreq_Value=12000000 +RCC.TimerFreq_Value=12000000 +RCC.USART2Freq_Value=12000000 +RCC.VCOOutputFreq_Value=48000000 +RCC.WatchDogFreq_Value=37000 +SH.S_TIM22_CH1.0=TIM22_CH1,PWM Generation1 CH1 +SH.S_TIM22_CH1.ConfNb=1 +SH.S_TIM22_CH2.0=TIM22_CH2,PWM Generation2 CH2 +SH.S_TIM22_CH2.ConfNb=1 +SH.S_TIM2_CH1.0=TIM2_CH1,PWM Generation1 CH1 +SH.S_TIM2_CH1.ConfNb=1 +TIM2.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE +TIM2.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1 +TIM2.IPParameters=Channel-PWM Generation1 CH1,Period,Prescaler,Pulse-PWM Generation1 CH1,AutoReloadPreload +TIM2.IPParametersWithoutCheck=Pulse-PWM Generation1 CH1,Prescaler,Period +TIM2.Period=led_pwm_period +TIM2.Prescaler=led_pwm_prescaler +TIM2.Pulse-PWM\ Generation1\ CH1=led_pwm_pulse_b +TIM21.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE +TIM21.IPParameters=Prescaler,Period,AutoReloadPreload +TIM21.IPParametersWithoutCheck=Prescaler,Period +TIM21.Period=tim21_period +TIM21.Prescaler=tim21_prescaler +TIM22.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE +TIM22.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1 +TIM22.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2 +TIM22.IPParameters=Channel-PWM Generation1 CH1,Channel-PWM Generation2 CH2,Prescaler,Period,AutoReloadPreload,Pulse-PWM Generation1 CH1,Pulse-PWM Generation2 CH2 +TIM22.IPParametersWithoutCheck=Pulse-PWM Generation1 CH1,Pulse-PWM Generation2 CH2,Prescaler,Period +TIM22.Period=led_pwm_period +TIM22.Prescaler=led_pwm_prescaler +TIM22.Pulse-PWM\ Generation1\ CH1=led_pwm_pulse_g +TIM22.Pulse-PWM\ Generation2\ CH2=led_pwm_pulse_r +USART2.IPParameters=VirtualMode-Asynchronous,VirtualMode-Hardware Flow Control (RS485),Parity,WordLength +USART2.Parity=PARITY_EVEN +USART2.VirtualMode-Asynchronous=VM_ASYNC +USART2.VirtualMode-Hardware\ Flow\ Control\ (RS485)=VM_ASYNC +USART2.WordLength=WORDLENGTH_9B +VP_SYS_VS_Systick.Mode=SysTick +VP_SYS_VS_Systick.Signal=SYS_VS_Systick +VP_TIM21_VS_ClockSourceINT.Mode=Internal +VP_TIM21_VS_ClockSourceINT.Signal=TIM21_VS_ClockSourceINT +VP_TIM22_VS_ClockSourceINT.Mode=Internal +VP_TIM22_VS_ClockSourceINT.Signal=TIM22_VS_ClockSourceINT +VP_TIM2_VS_ClockSourceINT.Mode=Internal +VP_TIM2_VS_ClockSourceINT.Signal=TIM2_VS_ClockSourceINT +board=custom +isbadioc=false

G9L@G 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 z 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 w;C{*kbC4@s1j-P1;daCv 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 z z_I>LwN8>q1puP6XC9>?=sYc`PuV>Fe@^8f`;?slGvFDOabl`z@Rw zLC!M1GMREK_#*Yt!YaP!S72PjJ1I`Ij=zh3BFdIYl$-gMbeU!gznUU z1t|9MrzmHzpRe#M*bnfR8-ns6zhDc1xSO>X#W{ZRdjOv2KcO{nfp1EAF4h%Q> zIsSN$Tm0`71h~!rmrmQqeBGbXI_#igz&+)!C4=u7|E3yR?KzvxiwEG{K)zKb}T;)-3x|29O?O&m?1m39|9oI#g*h_ya}lmTLw z=D-aURo{bsq&RpvfTP6Mf1;Quwt5fkO%ls|2br_P%+BDOEoK}?ZLzpK3%DiXiLL;y z5x0|>v{r0HS9!LG!IT!?Dyr$$&K~hk@)-7szuX4janVZYfD_`=05Dt-JCHATQEd4c zfH%bz4FP;8)_RQEBe91ae2+zQAJpE6iBo{Xj~SBz*F#!H$HG7E zv7_12hpA|Nj#TC}NN`#W2XLM=sVyjRJa+0&yAXy@f zqWsfRX%F>tne?~}fXk)vqwr!Yq+JxNTq$*?aNjEY>k6P;EgdAyvqoA@>4~+7tO2)9 z3jPtrdTAi-y(7|E(&R_+TPt8VCf%gO_Hn5U-GewG&7s9`QhIO-l&7R|3sE~QnOZ{F z8R^J$0MANKgVF4H>A$2zFG^W45PeB1zaF*AQY@|A+ft2mFx-){D297iin|WrJ!!~p z2)i#;3jo6dDQ*%N9!m9}1NcZbpURfe=YJlHu`rM2KK}LAD%&R*MDU^*kAdtpw4#=u+WV44A}QOI?+EM ziu{wI0oVTm$>adTXaJW5oUo&|Bj9ErYNrAQF95^cfYGt2JqdVD8MxO0?{|iP{eXUk!v#mTv?i&(QzJT8(!y?#}stQtjEb&I(G_EirWiDIa_DXE|_ z>X|e-Q`G6L(B2$%+p?%FSEr_+wpG2p0ovQ6j_L#UBkC|(b!XHZeN%Ep{bM93@2H<7 z0{2w?(U$H0u!rXCakMZ%Q~PriBQz_YK*|Kost4|{Y3$T7NyB%Zt1e1omP!0y!Z3t6_EV634pdQW*tAW}aZgw~%%;nnbgy_FHjv^GhxwKH=4sl6EAnPz! zm;BsQoT@D-Pjk@=QM<$~p~T{4uH|0TUU3^MqJ`Joln4O3@|M~ty79l!RjIzbzCVh7 z{PZ}qFqr@0HW-HUn=&Cfmp?}%H-&GRf#PpIk^VJ+L;U1k==^DZ)A&kz6O!on(9+GPHc(I&f+GdUqLB0ju*dskd^yi0~w za<)nLtJJD>PNi)6{}z!E>1`WlWH!lgnZl}snJTr;YTGQcWp<_XRxQG^bMXHPMHooJ zTBNrP%V?jI(WYfuR!*x{S=nLDTDGmoo+>tN)utk&4y#@X6fnqX0>`)B$ijE^78**>vN$i(0j<=HAR);Gn%EP!*5_~KZ`b7 z^Rz5ioAh*7M*FaI+LEp&8BNpLX63kYer=tR9oF0r8`zbd()6)M$8Q$9d}Dr*pJfDQW1BgMNP1u=yYr?+ZJLZDR&2$9Ltu@+tFEyAHB=so<2 zP(nb8ib!bMssvsFv5g2aXQ&u-fq6;PzN$j;36!b7wS zf*xv}nU&E-Zcc__ak*Q^h_Uy~VzU4!6eId1j|S_LGNz0Qx+@bj1xBe^>&#Z~g3~k> z!qTKgT47*}P)^|tO|#Onn-|8y5btP3#toFBNSdl@`=Ssd$+5NnNQL7;8#~7^z~I zq^>Cyizj@^1gUfs5%|YTF@C(r)s*T}5hi^k*8;zkB7hB(w4u^_c&Oc0QfEr<86}NL zQhzOd@Uc`pK`QZ)6atB1Qt4V!iSknM29hKcF_Hk)K>QW9Oa4@-CVnG*AiUp{dLV_B zm0$)Hd=d=fWa!6|dZNUA$m?--=Z(b-o|8UHl8OrN*Ob&4jk;3VZ>5MNsZs-}Y?xGD z04(%tseHH;+Q9ucD({(#6^8roK!`U5-ctaBni#kCHr}t(g)$-DHkS{5WY1sPyT)U~A#YC+z|UqjvxkXK78ipN?~@vkM_M?eIINjl+2Fw*Ro z5Ly{!`VvH+BhxpKKKMrRw@9V_L(RPRsqzNCa?$nwB^N>jk6h40Zv4CC22uOX<@d*9 zxTn7*slRQgzZl07LOb*qa_h;R6KWcTiygv*0bH0+F--V041-eJNYh=)XMV0poFr6| zxVF6H1Ahd#7%mB!64#6m@IiG}$*6XjZHdo!zJ~y*3YVm>O(uz}l~3pt6&Jw^5ax2( zQyngId|j8t=8TSsw;El{Ky;YR`7wUB2(!!VFu9@=W0PWIjlNY^LiSI7@%Cg}g3D%g zxU3D5lO47?Hml3tD%%(uky6etHa^-J=W^PhaEXy#NAcXp5j;-TxC76?()_7OAF*LlrDJ9-mv!*dW4lS4SBWss> z>dZ>}CBx;+__=LH%bZM{%8rcm44B3)OG31<0FgJ=FWN%y?TWTIlkN1HUQPO-SbNTf zPV|r7-$r9aWu(h)CZ2Ho7lHrbHJs5lS5iu{Jtf)Vu+_J^tcf)C7GvRX_7W-4j%1hB z;Yf105|a|GZh<5e0_)gqNv`PFaF?~dH8B~YjiI4!ai~^v<&>kAL1K28UA9D9viyfl z3xPeOW{;0gz(D4!vw3y7%vOv6R*BqEuSMdE@N>~g?rNHrodX*`hpZh~?M;j(Kc8`l zWaCoZJ(#ib{1r;V1{G`4ft6))*__^M)#BBU!U_CRoHT4S6E;h{)n+y32e9{3fbmIY z&pxoYDZPPgu%hiTCTD^*(Lw8qJ-Oe*YaJFs#NLGVhuNHf{v?@AvDSQ?`LT>e-Zyb+ zSxxO}%`)t5S~Y_Wz?Lk-SmDw6;{0gQxg5z(2mY8$`P#^bbdN8#3C%nfv}cr^@m8zd ztrskz<&2>YYqZ4`V@nPNX~kN2#|SnM6@VdLcb!QgOgZD1Um9tV;l(1b8IqxDk`nBA zc`Q&FhUH9PM}pmD!faWY_8}sVesGzib4V@8`i@54k&&H|V>8=fs-~yG%&ec5)i#5=DL3N+3hkjcR!9Bl z_!O%=&US~(Zi_WlHL`(q*VwXhxoFc?cCT9ZCePEbg`wrGY)`RUAQ*qEy5}!a-X(0O zd!yM5Dtjk38oo)A#cGdFak}g=RgDUqRAvOzg8;f>6YO~H`1okEIVHhmwL5L`Nr^6( z5t`IqG13$tUl(YaQ5y9WdTDDi#vtAb_3Sm+g<$=hb{pGm3C?7P(YwM1gw!RS4oUSL z*or)Vs!mD7VXzdUNO4yzRh2qq=UWr?YiU`|mwBv)Ksc=;f4xZ+Y= zku>Mklv9F^7Y6knIGQ}OBZ}!IQ-qhoCY_De-LC>Anh09Yt0{HXdp0vROqSnv#OlM&nW`}0Y>;uZ{T8zWtigCEA=52s# zv^Q}8Vuj+cHDehYeQJ!?Ei&F|wK(d#OvE0cjHS|=f?}`0-YDK&*WtpSaCri$8Moq% za5+<>?QZRgRY_IWkgVwBjhgDP=czd5*aJ*{Wjg=kuq>gQ>YE~}<-L!E8uC7q*&6dc zyGau%3fN{g*_~z|3!(s$y%B>Zr6j^uVKZe(N=;;HfsPf6&EdyPD7>%TX>mG?J~j4Y zo-wuBVk7cKm}(xpnamwJporLAVc5J*C7B}<6kCYaq_57!3T1~8TLO8i*bQc)lrRo=Hs?uL`AL>4atEuRe_p!BV$g!&;ZbB(;k02o-IjnY zonWe}41HC+nmmwXSISD=g)`BoXEs_bjudR_lWu}%vHO`aUNr#>i?f>X?Ox4Lzk>Uo>hQ4dxxv_?HzJYGsm z-pYAcHeFu2o4TIgI4=av*w}8xhK5^_l1y$zegIpzr25D*h;>;~?D5tHZmWb%7Mm+f zmPePuJAkr{^ifp>kgRp4+en?j_{I48aOB4^2CoHCE#Ij4pct{YLQ70a{>JJ^DxlO9 zIHu5IHN$33u+d3uvQ~_&7HP2nj17RLSE%isAEhWa=u{|>2w6qpfz{YBvMwqnipj@d zVOFBDAlUT50gJbiZXgY3HN%^WPDB(t*_M=Ol;`pv$cW0l{i#jQ$y(VxW`&vj%IRB~ z_L=*5JSD)Ks0&UyFycpv9(6zdszv(fR61RT6^$v%gTFNP7rV6@;chJ}rmA|n)+ z*>1&qL7Tvt_T7i_`tm|EAzsSZ6r~JA6dQ>Y#p09K81gSEu=L!AQyp7uRnOT(6}DpJ z_`ti}E;{V;VcEH4w>oV0I2KnRZNv_xd@z$A7)iaG$;Fb@73vKz?9SxqM6)&2{Xp8? zs{)?_Y!T&*zyA(I9+3h!m4kjK4=9#Apx9(n-eREE@V+r=*%`7C!1f41VA;wLkDU_f zf~gN{FWF6D%$Gz_+KS!kS$ykk zaIVM{vbz=gO$DREK}WnR_8VHtG>Q>0q>_{Dia8gH6=RM|_84?|^?ZF-gn4;WXq(Pk zA1}`VYu?MrqpGrn@QC4NOU`ZcMHqdntVO24se_Q~beUY0jiFu!A>h~=zk5bneixU? z%Q%Ixq?i^Fkyy-3In#bOJDspT5v-yx6CKSILZL(5nS-oDHuH^R+h%34&HM zqQeAAD4rCrIRPw%`jh!lvWBIpu_YpS0}lmH$qlh&>suYk2;k5Pqw_gGg4R0hS1jyg zD=Y=(KgyMi~~Y)V)J3x-nG!)Fq=(qwAf+bsWL649H^GM)`rZ@4UaNaj;Inz zYQ^icwxk$+YK#?!2)fZct!2xMtf~l{z!wi?F!uPl$54gK9q+BAaniaEY4YjlJhj)i z$et3+0C@;pv6u#BC}8cH@ITtsOwT4IH^jk;BgSQla(lw$z5uUySF!~r$6OH(w8yx~ zNDjRkR)G&(sc z!Nyi=bOR{WaM`Daf?>{{ptd%4?>{W`3%ZeC7#q_hQzCFVDE}ShX!q1fg8xP75 zPLtIPU5>_Nm4nf?x=e^0u^!Su<9LE+XlW~_6ynHxOt4gT#b&n5%x=!i`Z&sOasw5zfin8;$gQ~5N4!9CNDxqD}}}@##h<+m^7e)i=JfnvMZFD%qm+IO#e_Y zi|G)j-HO>M1jgQ)Hl$b5$durA0jgnv(@u8>-6IfmmwW79`po}T(n)XwWo!gl%=9WS zvy^DR>^jiiV2ZskM7{~IBSP)F-t%UFaBK>w5f-sasE^t7sxV>l7H98Ho18tEl!HBj zf-G!63NCzGQe}CpqSl|Ej74<(ed`! ze6N-ttE?}1_feC0YGAi0+c6K|M_v}it>I+BF)@Z#lpQZOD7pcBp^8S>f;5duW?A>A zCO|=Z&#NiH6@e|94+Jjfui43&>Ck1N%9AS@S8t5vVdlyhSy{UsPKxQl9(?!2F{JWx z6kK!fP9=Zpy>|;kvxG!UinAfpX>|Nplg!>}Qa0mmTN*>+qlWV#SvTmFS%fUwo}A*a zx=l}5BHocQJSQSXOi?p8g~wtsyOAtk!-i0Sz-+0Fk;@b18(K3Xdn?DUykwR$e!*DY zEfvRp z9r-Ljjs25{QamjxC&K1I$cuu&m`MumGHurYmVoar^g*%V@v*cb zSQZIZoyX83n+*!o1sB~y>dxB09@@Sf>~G`8AGgQ0kEId~b#MHi*2bP$`VlMJ=L*Y;0U_CJ)dP(ai*2^A2N8PiZ zAEks#$P-UZF~=$%yt~SJ@5?OvX7a+px@pqN_#4E-yrSC*%7EgB6q5CJw^eY)y zIoQa|1_iHd5!jGOMSF%^$r)xc@vgh$UB50X!r|Q;coN6 zjb-h6N15r+ED&NQplm^7s=->9t$yz`j63G;K{CP27@?_z%kQu>RAMaTrO*bTG$^^> z32=1SRTCCd2qhF!#Ywm*K+WJtCWtdBHrbjegRr-lg<(Zn#hO5;zRwZoi&I9{z5HmO z!Av$MCC1w7VCTzqC9VJsfF^CR4bg!*@)ZS|Bqee|%iNiYC{_V3Ib}$D9Y=9=JaaER zHMWG=NRR+`*0HiF!tF$bhsTm7>5j$1b)<+j74pR^L7B_ zaq@&l&C!YfBXUm^K8vfe95YgunjBKXI3gsg_*8{hZG~X{EKReUv@mD2O8?23k(H62 zgNw^X1~d5r{SfQMv?e-RXJj;C8WfQsqZ>#bj2o!TT#_B3RA?giV)4{{*PY^?cryI7 z7V}_?wm^zZapl}PBhnRTK~hecAc`~4u|d;_mBnV0ouEJFQ-Pd9xmTc`wU4 zm*jBY>7p%*nnwg;q0k|6XxL*HVFMs~OWMLJKYA_O)Km)=Hk6FF1(tv5dYr$! zsJP-K5<9#4BnNrSi59#K{>XWKca6OS?JDN_(L;pnUfQt4S$|Cw;DL$cNPu~Uh&66I z#M+@O>HZNC0~B_SOMtav_RG#}Mpx`Ur|2gv1=^?idT-1-f(s{Lu9XrRi*!39)B)@g z1hEiyu_aNQJJkKaGBSA;s0eQ|SA0^cQL(k&O_X4@*isVyCs~}WPTc<_LiD|%i&4rZ zIIYMO-)t_7ZyCyt6kJb%igsC2qm4G2aH_a(0hp~$ytaHDR$i-isB}t?v4yKt*c4)X z*uG0h!TkYRPS_;u*<+0o0u_u9BaF7xcTXqLu@$H^m1ms(3m$oM<0z$*BoQ|vaCBuC8LON5=v*qYu!L{eHTpo&dtiHY~J z2~FV%I!j>*H>r?^H^=3O%VYcMefuQnH9JlHkANkYVAM@b*=kG9AI9BXwcN$tIg(5R-r6#<1N*u^`xu zW(0)u9+k1B?vknpQ$&H_3A+3)PttS6l=M1d_PSq+eMp^9@&lgRF<60~XU`h+fnXID z#z+aByp+wq<;ct8{9BH^#LmCvsD?dHJ*IdjG`%^>>2s+dABxRJA%-JD*-e%IQrLmX zTt6}+arH62uAKaU*NXqxBC{tsk(ih5Y~1%^I|Q?*+zCaA0F>_@$&Y3FgRDf{7<0&G zgQvz;Mhs4T+*dZ^z>bMw2fq)5jv`rKD26Uf1Pj`AVvdz3&kTFjYq_-yrD4h$%fhPh zWvFQkmBlJ~8o5GWBTzVpPBj}#o_pPn%&U7XX?FkIRVO2d8HAoY#LA#3SZgvHXU|;A z=dR~M0<1uqKQv06!Q@&Ue)8$WPAlc4l20!3BWQ0WleOebaqmdwUX3?KSp&51$j@^o z*m3L3^Mtu{T2PatP6gFnK_oax7WFj6;W;QVs-B=38)Hw+=Q5tdRQAh1*dle9h#e+| z`;ra(NALJAyLdyeyZ|see%-e^!riZ|_|o~1?5(~0BIZiPG)%TCr;ay@z-$*_^6S86 zB+E1J^9i^_SgCL+VJcdz4JeXV8AlacqJ&}eEZu+wlh3B34+<1rsdTdt0=cWo#M9N3 zButR^LO|V*Z81b!kr6Pp_*m`KkO8>m%W3$;?h`oRwj7)Wg2X2l0wv zB-Mw3#@bizbkl04<2?d5%YpI?sCUw*;7E9584K;2n7a0G2RpUc6Ad8SXQ)Ma;88dj z0e8m%W1!LG6PX6W<7I#d7NKXIdf(qCgd5G8W~-NdvXSgCRhJD-_ZJ-1F}9dFQ}uV4 z3k7g;7vyVbZg+x=c{vx8KShd6N}&i_5`B#_&hKrOb+hKL$D>DO>JT~OND|<)W%yki2S8f=x5E}z9em1Z%PP)bJba`^! zln!Uh&uv&F*kZj0%F7CZ*#Q$ME`~fzx8o+)pm|~eRnFEt1?-6OB<|6QZ+4!2X;pZF zp1$&u{Wo`~>QQslcdvGVOh+;b#t!OklszJ_~Ev~FeHgsVQN$AS-|g^Or; zomW~W8!tZ!)N}(1JDt(n5-H6N`m~&!Hkpmv=47~Bp`mG6?b3eD#&=}+sfY|@WN?u? zCo|nB*S+1CDoXA-g67{H=73R>oaA<4S%#FIh1hI~g?DB7a(tg z!OOrvkeA_!Rx3sY+kf6@CYohy>5z8ckgXCWJI!wOr8MTLvZmY`8`r*5Ed}D-`LRkv zzTf!C!|9!GEfg=W7@Nb4+pi9$cIfL0GXOr_jPU4bZ+k-NG?012=yp8iF?841Tag=r zizt|LJFXU{*x72g8UbdDupmk{;pD}M7L1|tNy;X@@;@G>(8~o0*p~HZFI-*qoY2)_ z=HqlzZXzc*>$>j{C}F1LSR1~nAitl!0hTZEu@y#lHj&xMZ^qE>_QkUSf^|R6Z=5S%!3k(Ww6ktLTcR*LdpGvV;K{T1@Le-`M{F;# zNDgdS`Kyn-fj70Kx5l8*yL)aP;FivBL&|G<#Ai zWLoQB`6lCINnF3D*ewQ8{@e&EHAVi8FYi`&-Td(a_dW2u?s~RYhQO@xjL?cf<)yI|oM&9*{2|4mTX{FP6=}89vBF->yZbMX6rDnH7Bg?GWGO5{&zhDm>`*ks>)s7M zoA9YC(JnVdUWCgHkt5Y!0$q7At#{Ml#tr)v(KN%3|6r9_$de+$J9{g)C!=@Ext%%I-~`lShNE;`~#vv>pC`A-il z@9gn_4K9w zA_5i@qW5$~$Md@?IJ(G=Mlgi^t_nNRa4u5vmkQWd>=jLP?}F?Sd4e(3?q3%o$1z1V z8NK=P4L||8vYSlzMkpDYm_$P+f6yEj6>f^CUM;E$e4D6hrmCilicytgeH~Wh5c3=- z3;Bf9H%pwu6ydPIceT|?wBq_b?o#063m-5+-RnfoyRzG+>_Zm$P3hWNA=fEl6Wljq zXqAzDm+vDfA9D;e|McAgU0G2=h-~*L7ACU>v4Ze9ChMa+azj3n_boi?fj3TGPqL>0 z50|}%obsi}JibkhLv}NX9Cu^Ys?1)1`-FQf@Szj%lNxq2zF#3L!Usyf9VNSm?mOmn zjm)g|RN2B}hNg0D%KL{87~JD5dOqj&j+uC2*&E2SNWPmXoMMY{_z@wPX>?bU-3=@N zWxrGf^ACaGhLnh70R*o)>!2)^DGM(@!<}@3#ewih-zA~@HVMv@7?|xziBOr&x~@e0J}n#C!f>7e&im5GBoDC{!0R2@Y$f0-2(GZi z;xkI4{A!Bfm>(<8T|OVg6RGpgF%+O-v%wY^oMI;hW#l}oFUV(0Lh0r0$e0x0FUsWm zUCO~hfh)E+Sbi?qp_sx-wyv7I@a4;-WS%RRNy$1_{3860m6HCET^nWhd(CjHm39@T z$TOA7P@Pc)l_wm?iu0*BZ+URf-6CAy#INw-+ibd4lwG|_PAgM{ z*RKb$w4bs}Y3k_;2$kW+!ho!6bYM^dn*I=gLMm0|;EoT9y{U3Z#b!Y`2|q(&t&bm8 zlC>ZO{FNbBuHDg~=V|-Agb-UAajDq3$qxLS6k_P^n_b?E1pd%(M&+Z!Jm=e+!Z(Q> ziB+Ziuv{d`wBiDJe(KDeu()=yS*_ZcbFz$Ozcl{g`QY8d;xWbWI`RpO_zQG8-IZ2s zt~`J|e)5Nro)7e`bt*umD*l{Xiy2$D$!w994gX1bfQoaunq}nBJwDQ3q3Ev5g&#Zf z08D_mh2jEEopMNzk>CP^ibTLYozKg?L?SwA1)JC4$N<)N3R|+kFV1SHy3|-3%|81u z!Z#^iz(+5DR?ZbOu6yERt#I~rTO97QCgN8o%tmJ8*=>oi5tQGw^n}4-)3}qi^fPYB z>;Pic9o1Mj<@;Lj^f6R0KA4wps_N%VK;8#GeHk5}R0l^c;=FF@_|?XD;_~hTq}mcG zL@a-lN7n|J!IqlfN45-p?99q~kK7n?s_ge2-EdZ8s~!1UcBPD&DRK13bc_d#2L|=L zBF=t{lrfZjyeDfY6XiZhrO`Fpyv;L)5`2t1&yK>2Re5?QlF7%|sw~yW?Q(*x)`SVESG-3&yWQTHfQ%UDk zl}{=qb>s890O$5$V>Rh+MT`LS%SSfAzIxzhnin86e}WC6ELoKoO2fEau6pcsaY5O=H}ekK{3y2QS=Z#N?rgPt)!9tZ zQkI>aC~|hl*7mM58WxSm;*NB|x~_doCR7j@cHDbw_Ip$GYRRg=6XB)9>)^3&&RZM{HHam1kbFDKC12NRK?T zW*e5LjD?Si^pU(YJl}s{d?HD8{i~m=^H9p#5Kd788yjJ=Qt+(&dZ(fhqGVM_`+->u zUe~mf8^{-CkRkfNXnPmtHjXS!R6hmV6VV~vvD*YlO4Q7BZ-5{`qD2re0E$xIxPeeh zw5@1a^626A?DpN?zTfwqbMjRMN_Ou$x zUtBb;IaS+5)R?$uU$|~6Ygpj>4>coH>FfSayoZESXh(+?khQpP^*?@W2@=?Z?hz*+8on_B-PymS42 zE*!8#@Ycv*;h#cksHz*%2whIk$CKxtsl(?|CMu9bNgW6koPdf$1+h#n9?Jd0v?FD6 z|Cx_m*D)LD*@y}R`R+$Szk|jqoO`r3B*j?H=^Bh9k1fy=^na5h8DPr}NGMOe4>&+b zh)7m!;x&DyVEFHCP4fDu_a8o9-oE|*;}5&x!|nSQZ$Es85*s9l@+gM0?e=ndb&f1{ z=w>#**>t^ee8WNXU9Nn`)Ck-|PL-}>Hm&13T{N0rW29Vze7W@T4(Rv2h0 z?W=e1cb=AHf&x6Rzh}yG5{c~wezXg@Du$C7A1BG!K8Z|18_WrOEY{U5D|xV(5ecBo zm0^3KUbPw5k)lJH6Qdbo84hv)sg_a*o44N-u8vGnEHiz~aGxC1`sdu&5Z55_tJfM3iYlAU(7Zt`JaF7$5|irGO=On69+ zEbv!8jY@b}beRb#yVjQ{JH$-LTgmG_aUw-@GR_UGX;eZOh#Z~lrf=!zfBNY=kf`0{ z$5;1X{`gA55dIDx{PB;jf&_3nR6#pz_dr^}{fy#+%M$?W--;2gKW>JAbEvc%PbV;g ziL>j~Zm3&Fy>P0ccCWYue^aZ%Ex8)P@=~FX1C;u}7jr$R4Nd-NRI@VuWU!$0)ZN^u z!HA_C2|HqFthF?(P>_{uN86{#x9jFgbu1c_3|l^dbiwa|2TJ7te&~_(t|h@u6*DZP zllt^ZU|;6q>vsijyF_dwXs|rnB)HM;k0l8K*OWwvF4*oFA=H@y5XgEIK8)6`SI7{a z!n#^MrR|N6ttu*NJwR-@;coFgIvJ$nU?$n|h ztJC7YpgZspYDkf^d%A}YB*X9N4dua}?!!B84(-97n~(3jIn)PxZl?agkn99;yq=ub z;}p58iEjE)7<&YP22_#@F3CuveC|txfhPEOp&PEw;qgf*Ga)T^c*E4w;nNcX#8ee zX)TO90CDAyU!Zwz8+^s^(T_sjHzZy<==bzGiwag4QaKHSc4icEw~XluoNDRC%AVFdkj(F;jwD+ToIS-#0_$6b*pa#a z_hyJ4LXjNK$e>Y6Q~=Uv5XXtTYYhADT+p`qfz*dT+{=gdb=zA!%o85xp(eCAE6CIG zkyrp@4TqztdkM)H0U`+AM6>mvJjIqKAE4o*MyOCxnSz>9%TI-{N~&!bU0k%<$F>hho-}uOaF_+i2%W^bi*1gh zWU}{Ta2L+^c@dC((KH@%SatIlbD08jBBk&Jteo}{OkS@*8_47OEB+(>4(o;PP*N~I zz5OGYuLPMwAh9xkSVh<8>q{qS)X3yxi+riYx%JGdqWQiQMs)HebG;$ zB-3WV2#sV4+PwZGyM2{`y~wcdsm4k1H7Z`tKoDgkjdN zKVE(M@vpbs04Y>KeF_1Szoe z;t;DXW6)EiqZ%V7!bL z5g42l^#bX6+;;~)<_fLE*W4Zlf=Ljt8o+_bEeKQJb3}Kz2%JcHX(n|4ACKZqxXG^t zi%5x}yyP?*Z4RNMd{$&Xwg&7#t|o3AAx=Ntx2U-!I%ZTcT_%SI&=!+)$u%Hv9EhL` z#|Ef9$~L;CMZA0Aq=sgoUJ_AH{dE*UGc=spWDF$NpWd$C{r&d+*}K2L6*s8Pq?0MT z9i)H}q#gw66Mk0e4Df&1bq_A$;jr|e^4QC+R+e@y4=Xt+Orll5D>{=hAAw%*Fe#iVrT78Nr{CEuifk@0Ac4Cw z&3yMZ9LdilpsHWP@u9hC-U!~T|M{V;`O@)BJ!K39x9+O8a$HI0oz%yBs8DZzBTh|I z0+fVzhmXbSStcfA3<+azDcNNfr{pU3GC+=*lTNY2n)MG59cPs7+4OS!oJt%2@A{tI z0L^WiU}Y5vR=R!6v0|uP3OpDFaU^yuFbPEqbKHgznq(S763Shnq|xEV5cBfz_&;g!SwO86kC8J+&qd1tPxp zaq~UB*_o5duMspbbWf)`Z%HLOTb(0Z1TBGSbj(3!XnlI;xBb}C)>OH5>7(&+++;fo3@2MtSNDeUIWl) znnm-k@k}UXhcAkiYAcxiL1v^venSqcVnBnOhVCtzQPW6=2e{wPf-CNrPhh&9jZx(z zC0mXk6rJ;Lpl99b1unQ?k^C*Q+b7rJ)8M_1f?Ef<9oFF*Xl@p@W_EZZ&KF4L{OTH( ziS-l`IkN2h_~NS{Uo!)J(agpHT0@jck{4_`*)9E8RN?g3HxEc1l#lo+Tsjj zask*L6Oha&uqLwCA8$&fT(^4ohvDPV!Q;`%G(6ibh&S4#K8`~m`ra44_| zdYw1e-bDsFpo44~OO+pq?O`8d785|3JYJK-ts}I$PqQTOS&qi#o^oLlwHlA|p1yw@f23-v-M z0jl?a2+xTT*)ZI}2{v?>h7S2rq)+71!m|Nsofv6a0D4I9BujjRxx5RLuWrQ})*Jv7vOd(n#_K!Eal`RRJS*-l}Pn37PaE%Q$0486eFenxRz$xm>{)L`< z3`z`45xjfA(2q1dx0dzT*{OM}hmxyg}e{lcpJI})A`Jcf(B7S&|Fc#OL+Ld0l z?@$>$Py-5e)%x4X>R{j(+r>2G2|ReZJWWnCeyQg=W>I+H_pd*`cr$zbhQ=!QkILQF zaQ3oi-6V8Eg>V_;G#vpYr9TnkF}4 zEXM6ii`RBxG}aSgVM!Y4dN}kCz@1<;NTEcfz!*G=lt2Dg6;2U+v@LUs;C<%nk!dK9 z0DxLKe|kXL^~}(YOA?-%F0S--8z{LKXF#)1QYwMl^#%nTnl`xbVCe~a zrBm4PXWhnVp}`74E=pV7;mdpbh0U=I$S#ERmIjl7X3>nJuaF5YY^10n2F_i=G(rav zP}Ev2n@-(8l8$vwdAWc=I@Gj(OnzSx_1xoqUiIpxf-bn6Pg@@m4(ZGWj#I^N2S}5> z_sMcSy#|)~amIm<)+Ze*E@N}>va>&hT7 zImVuVw}Gjzu5=V$(J-vBcta$p)+J;gs7+x4$Qt+jD7j68qe0298R|B%^gIg`@bzw& zf+Oh^9FL%^FfUl|XA6_#%p!8dQ)2^xFhd3D>_a|pIf1YOhfI@N%U-=Mx{WFkjpO4$ zmRggp*v+zAYil4095`hRyKE=GBqHE)SAZ7QXm?x*$mr+Esyr?V7MJAlY+>Bp&OD`^ zSR0Rp^~n+BL}g$93I5|>$(cl$O}^KN?Mk*TtPcv~)r^_38#-(I94fn=m>WV6CzES1 z#;eU73B|CLqU(pC2~Sd?P1w20MC&XM#wLonR%p}KZM8l}RTODdhKEB`LYB`(ft`oF zN;>xm6+(S*FDF8LSR_TsO{4*ybS5BvhN!!HYF^BGH{FnNL_Z>k(qF{r`N zmW%YNiUtIw;%KHvHSIBMn+^^^oI4@M6?Kk?W5;=JsCGCk9qxqnnr?szA2u!sT$kP4 zGeUBHt}U}+rs*+qwaF;h)6T*(f*5D9dZWowpAKyneCWr~mN0I6b&H*TYz$? zv&j{_x^`qYZ%(xTe%v_oSypx7La{qL=q4j##&B5i&&!@G_$WCnUTE za|`kW0tP-k3i8=i@^Tavg!bi^~|{v3S{ zG;!itV4&z0-Z=ZqV#g8o&@L-V2 zD=c3zuH!SD?rO%_i4~ahb24WOyk-O*$AUdh?aKi?8ngLw54vc(L{U_Z6MBB6=)gm* zCMUm)lm@YzV5&Xl+%y!%+G4q}8CVO7@9>H*s%#VuX837r&9EmMCoT7Io(jYo(a6k~ zf~`B>onN{x5s!i;eZ&Rl9)%zTvjLWwvac&p{U;(6?n@aI1D|-fo(mee*^^{;+KJIS zjg-2qlur2o03hqU5w@Ypxn7~D=~TciN2TjX-r$VGuw@c->T{>SH_kGsW~>mXdQ(s>dhZkx#jVxpVsTp(vuFEGJ^1?WY!nXGr@1?)n;~ z1%hufbe^k7xDiRRg%}&4?X`-DyeZt->2sNTF%^l;AK5)o!L&iAWJ#NHtCoG?N$GG(b z$HP$+d?~S=f00x|%x&^^h%5cQT8biy8|J!_iD|eyNA~8^6H-PG%7;^@i(P~~`grP6 zUY?S>m{{64+w5J_l|4FrlK%N2q$2ogPkdFi=!>MjZ&2cJcjVEcUCfyK+}#ntK&-q5 zh)Z3-$);1}A*}!ozKrzJS)RTT71D{sX#P}_?hz4bdSK@w^P)FBJ~u%vYef|Kcy$>9 z1SZe?c6~ey4<`FGtNbD{+12j)G5t-O``>JHvwj6cC!BF@*NGIkSUR?F>aHBD``?+F z2zME_dy8~1)T?DC+N_KSsNcs#+t=qwj<2`Nn=vp-w+Tpri2EGuTz^rLo?c;067K2E z_3E$yqx^WFMJ!9{H`MlNn}j``Nj?}8~`yLead17?eD`ym8Xn+f}weJY4zB~ijwpSLW3nuur=agptaFAhg>Hh6+*1V zW*vgl6pvIYN_h}u9z2W;Gxt)|v+Z?@jVd#O(og^CM64ztIz zD;|UTGDDW%1nOAhM?qTd)FTNyr%3PiL|n8dgHgzoIEwx*4;U*B)p2#k+asqG+!VLp zvQ+$s*Z<>oSCpH%?(9wJ^2UV&?%r+Qy!iQcSA=b@Z(rWNMibCkXACMtM(5$DiKce*f<%D}dvXjR&OY#OQnsh1dU?(ukrJh2%@C1j+>} zZ>X0i*!!H*=PM**|ID*6sK{CRnV0>~LMOj(sC^(}T$q>|<(Re>{L=FU*AS|vXZP&} zOd{+1d!B9cMB4q7b)N?<5|NZ~h{13N^!LQhdP;E3eAza;gJKR2zMRR!9Yg{OBk*jB(2 zBHNBY;Y(9Ps0DMkpo|;{=A81B?O2M)Cm_zK>}0O8q953VMlw~{O^WKOG88|5=poO5 zWfS%7`d>}(K<-fFt3%wg?{txB@GMxHqRsq+q3};qe6Zs9YMc|a+u^|_4g=O9yrUTG zhXoNq@_aFnC^jG8{nSR|b$ct)RCo+%cgged$0#{>V+M%UVzMoH0~O@G!|{s&Y>Zms zpl~S9nNNhSI63PdOYD&^U`X88^sh$NiTstYRAYlSbn_0>d$a8N=!Dh`FZhY^MW2rNHS_;~V4pkRnMr9pMFkaRzk zZn~XP0eNNCL--a9?vtBKrCA|Ql-F>&*Yr%xa(6Jl&>Sf4;QmMt4EV-=K_g2RD1Im9 zbk&08*PZ6FpY~_}n8@kdJh^&K4)NOmoXGFH_c^EwGXsAA+>|(M_1Q^n=cC!`v(sX! zV89z~_mqnE(4^cgz^PEd$fPw1Yp3Un$u;phFt;^Ry+Dpu$IHxptJ2&@jZ49Ik%7YL zbS}(P!2(C><>5L(_ufjwLr~3qjw#X$>%wbhm#EtWl^$g~LIz(v0i;3NCCr1q+2#N& zbngWHOmnn$r2;KGE50T&fM8vhXQmA|ur_1ka3C1>3xRd8kEWk9?=t>Qd}Z6Ay9{B{ zWV4-g;x?O3TcdL@uP&etvDD%|IdKdlr1}#`VYw42=-w_TVq@-Xiq#!XMQMIilSvq6-Vr2}D?7ET}}w=c}1 zTNSd?t(!u(00a|GBF5bnf=uBrP;5p20N;?(g%||V)cSt2T~uDiLwe_3Z&K1n6&4dN zx+<)d2cLh=ft|E4lu03x7*;-z^a~Z`$DcmFdw=`p-HTT~DYZkgqw3V$nGBM%?xW1o z!zXb)EtNoj&c{y5N8FHNUE5@j*5~Yb>NI{Lx$x9lp1|K=H9U$;-vEw%GJ@Zu4y4er z&<#)AMK*{$LJ4P8_&7s?clv2gS-$m(X=1_;sM~`*+MHpgP)zMn9`|+kyeLtF?i{=e zufo^d8OqvpidM?wmlUTsZ2Y`4<}LRNoYG zUBYyP53Mz{hrxU!H#Zj4cYvOLB+SZoi*Q}B>&~s0?T-6^E-XZ#7n4+7SR*P?_Sx>6 zE}H~Ga!Bg%XLz-ot{IhSfWk~%*jiE>x;`xy%PZT1JLHC{%N8^FX5}m=PEZ7eWw(E@ ze0lamRA2YK*_#*NBj3!&PaiPHORB@^=?UM>>9ZA#tcM3DHXCCPkiwM2iGDYR?I5Tw)^wz__FQ-9*r0;Y zbO;xK&!nP1z9W6wvD65h6~Xaro_I}P+p@=(Rmii@S~)nCX6D|44S8H0Xyn;{VEq|O z-poZ7^m3Ihm`_GZWPC|MC27$ z7{(`GJdY-$Q)L_Z!J}`nX4b1^A)A10fVC6;Cp9*$x-=M64{kcU(}^*y`4TXc!gW$|QCRWx(+vDBxqfKZsQ-12O&c<=R*$=BdYb}K~44r|pgw%Mqwt$VMZP41fvGQ`YzK#@v zR1#!%Rup6SC2XtZI}%s!P6Kvt!MT!}0J@>&>W$M#UHSmy;*kgsDvUFFoZ6lyx)#of zsSJ`kC(@sV`rd&>Q6>%*Zob*YfRF*MRHwQKHX(0yI=)7*FG7JpH=%G40u9wrT!fZq z&#gcsFzT$gEanzP+Q0l(&nHSm{2T5*c=l*k<^s%L@cBs}JUc#)Xo8SoEHM|wU_L7pja96ZhW5oHD-xOPN!L7Ym97?Oq| z0yJ<;P2-^Z`73hkYgi*B`gfbPxf19Q!A>A+d{IcUOc`}4auFFwA0b8DL^ITv`In^~f3?R43x2Sh8j z(USLQn-3GV6Z-H-t<`F9zqp2WHFY>;3B~WAq^+jk6&pd47Ve3LKgBJL`MQ`1JlYU8 z0ai|%Oe&aKL^@Dat|+)-k}H%$kcPjdTg3SKa_b-}EbGh?FltH;AX{|0DpLi3iB$E@ zI9kKq^^^cFa@BzOAa8tMx1=tfp^n*p%d9xew%lvCFM3-gC*UV@m=d(|6k2&l{#9}M zXiZi=M^9hHbh~A`LRPnd0J5E2AV$s|@&JQna}tuKYo<Rgo(1gIK>!~VTL2-)xTOgxrJ0SEF-hP zOO+v4esqipF_y{)2>gi`JZ;7ya;w*zZ`0`qF6V%N(jemRuMJBZZ?M_H_)OCi{yV|{ z@tNY4f^$Gp0vVERwHv{CT8= z;yu^6@RhP;Y859N6Jy}K;vx5 z991wvrVs)aFmuK5Atc~1{AyZu8LSjEy&MDNQdj4*r5!QVE#QJ%g7XL@GX)B{?|&7; zk$!^-v|-*7LacL|`^VV|01RD@pu&N{?IBmhwf0dfXhPno*Y_*+>H7`MpKr-&SnLuG zCcdfbqF3#MmaXyOvjH^%oK-TNVG|ZIoKIkq(*y*}fCTCpBQ7S?V(?u!OzMn;xRax+ zb?YexH^CYSwS3YzbwGpxibjUp&Bc7S4KswSN3OW#HUi5s4=yv^KwGoCx@1ONX3%Vs zI665U)s4deN;U!GUfSxK zt~A^YtcS_KN|{JINaX_(TOtRH;VIYPiucy;b@^hPLF>`u!xNmV(mDAg<>!UuhDF2_ z5v1Kay6rNx7glNuby2H$^Fr9O+d_^H%*b*AG({TkXolZ@QXahTZbDg5}`MHJXPSL3w z#Fh5(C=W}AXH}w~FT?Gyw(LHvfK2mh%0S4jLd+}M&|z>`j$um$L;rwEndkab5)ZN_ z;gT7AMB!dJ2-c->#4Lu?3U1GtkgE`$j%#IkBhQ=~~NS`?*kARvZvy z=h;4k?+x`jbiu)=;0rJ*K7^!T`)oExfoqbfY!$`1gG~(>8Oy?60O!NfJgy}O z4?fQ)kS?|G3Eq40rGt9zi}L}>P`NM+GK1l^)w&<|1p~r4T?kl18PMT95T%m5AMCdf z*#%Tn;_2MxWm-Q+r> zLyk>1?Hd@9@Mi}i2fss-S>#2J_=SV!I)#F{j{?rcEXAA_ZCW&`PQ=r7!*VJdljyAR zGlS+@597L}JODb*WO!_(QsLd1L&*xUxja&w86X_UggcayH(`(pr6QwL6E^`Zo!9B5 ziVrt#7_^F680DQU+=@bBTwG2v{COpxe64TFMkDYo%O{l?$y+oo1Kjm=)0X{cIt6EZ z`DB3@D(KRR-+GvES3{)J>Ab@~OSD&n+;XizzYF0B$u$0Oe6hBF*{kVTrsPTzDlpl; zA==FXFCo%Wpx{mTgO)zS61B^uQ}kf4LvrR)a@82*@RLDtW$U0mn3)F2Z`C| z4hJOZg-#AK0(5+WU2-sVY*wDC!SCMuu4YC?qK7DwR;WUyVKeeHo1)++ue3~>@O^aVelYvreT!lhz_i$g~MWr*8BPe?}F)^&?kI(EF+F~0GfY^v8}DG z+gUK2+clJ!q7>m!7D`w;jG}}5M#pQ^PjxjyvjiGungXZb4saz0+}Eu|Noo*dVw%rA z=rZAXEj(!%#UPfyW*G+e_Zl_U0!lAP7moVmWk+c^APYPAy#%!2W<@vvE-o2%>2{}2 zA4Cr%ED--3x+Bs+Dq*v83G(uX*<3TX9Ct+faPXfhreu~i7hd2mk}cJP3! z@pCHB2gVOV>z><$hCmVKm#B^clO{rgceImHEtKs7IO9Bv?4xW5cArUd2eisIZP?T{B8SBvY*o&R*s8Ngd-5*6pB9XIQkShs%&NjNKqhg8>i(u1#v z37c1fL15+dcx}G4R|_99bntK_YaX*zCiB@PH_y1(>2{{I5KD^-o%xE?G^e%h)B0Af zTc*E&uDfL!(np3x#Aq!(4Ak~!4Q)8xe=G#3(F5)s5L}Hk#mh^S%7f;;@T_rdgw=Cu z`tKQ+2VgTzIy-q-TT)c|LgqyyH7v8 ze*69XXAmxae)sy-1N`!H3SA~?6v{`0f`SkNmi@FW{QM{tk#SuGzlpjE3?3c@TJ2#d zdiw>0VZR>DDoC-%7YPAq_ zr7JxtONy{!QX=pJ(h`*_qJI8lx<*<6QDbRT%r{PK6RERZQjX!#Oi`(W+~C2e&M4ED zQZ$%Wb}dps4~xdrypR|OyVTUp!B0#!VsvD+smXuO0IiA1F?{q5yqHTHMcrcyNDaC$ zC^UQ{GZQ(VbjYcK{WybIfdhByE>p7+EfSCWTc^VRdMnzF%k!eSe7Ak0gnP*^FkC9b;C+vG+?B zZI^+i`^rMP9|#)VRTkGpUSYnRJO0S6eL3T>acZFJljqQ6G1tw-{QN=;O4Wj?k$&fT94+bE8@PuN3v zsdce;Oi26=+|>4(KLhY9u%GFRlH@P0i{And2Q$>fw-k@;?HAG$vp3nnp_B<~#c-g> zFYkT#{`NmV-M)SKUuOMnbhM)Zp9@v>YC0w2w;zx)!10u1EQp8mJXM#kh%;E({8UW7 z(`OHNr$$fO7FR|k!IVpD2XwyQ*Bl{N>h&owxr(blBMjT}3y0xt$(L<1aN3BaRG~vf9MGp~RY5y+hqc+YLTL0f6=-x8}5-2r1otX)2(y z2>XkF6>P_Yzg%RGZLNDAgV?~5t?c$XjELVXea#CnrQyBo(lSw10GFVws8ebM+Cs2S z;6b4|#G?^Ez;+!B^OVElTYGJ|K?0X!Tg=FwWQpPl8=K4VQw6c?&dort#sxUt&0+(Q z%5>~75-RuDGZqAyt#qQU+KoV zK&g8KZCl7x57W-_uI%u!T)G>fyFAJcb!v5dP+cr+VYHjtL`ePvoam z#rHMz`C3OJ2_QCF+5^~}w0FAo@s(CEidY7enjWNghyg1=zlk*C;61Ts)@7%Nu1sDI z6Paos+=KlB_7SKfr5i-d1>Hsg3usr2taqSEkl=cko|L1xC(ST)xK#X>lqA8OYiD%> zHH%Njm)AJ;*|Hz1ln1V3p{`-MMV4d)#Y^l2ksvW}NP;~Ch<$>+#3Mmp&{M0T^aATt zR1x4zdNg`^9+{@s%vZb=%!M+AS-cQtZ2U)07BBSW@3xfsEC>@}UziEsY}k*%^F8QRJpiM=r6M}LrZ*{z#0Z6Z3S1+2h^!JhYu8Xm7lu)*9dT2IfA zBX(r=_R~V3gOdH~^m+zBzS@8!lhD>*cK29KS2QP>P$OReHj4|kEbRoX`6YEbgNh6~ ziBhfil#B3RQEkB)aQJ&5Nnmv#svci0`orxPUV3`L7%<1e*%ZtNyid&UY%Jbrj|d~!4#9X&igy8ZfabOdF4VHBdBoUCd&x1MgFAOLz_g|M~@Q=2Rf zXe80k@Do$=ArlDRh{dOQY!h|(mD01`=_@l6iZM!% z#f3YGZFimNAfKGRZmcaxpe6a(Yc1&=P(mbX+KZ?=8fS@ne2kWxJnClq#A=D?3!SiW zFRD%l48%^b=68SM@@{9A(_4~TaI<=hKvlhYtJp`c;jJd zQjm=eL|lfjyobhI=o#VT)QfF$r-S6a@*ye0CT6#PA(>9fT-ct)yzJBbBjV7-OoQt~R3W3ar5w5n=N$ z{DdwFoe)D438`r7s8-TnakTOmPwrW~E*opr%!gZ3x^r z$RMua{AA=3H46ac!>>x}iNFPDut|saG{e8^AN@D%psFx{=QmrZfTKYaO$TeJ{;UPFxP~q_Hp3Q2Fn0`sbyiqioo=;pGq`&Y<1?PKt__$qrM4vxrR4 z@F7CP&t`Dv7!4845cdG;4bHLnHe|{N&$uU5e$7qtpyKs+MP2rFduj`myoclE73AUF z(?#U8KqK8T)!Oje^W_23VN+R&9Jxh>$ErymCI#N+hQ^SBGBYwUQ&N`Xypuz*5}d}N z*l#b#X>2c6VtRvT)Q7>~(7PPI!}+v`Xo0?!Auafm(`q1oIP3~_7B~4pUth9l&wed@ z;RfA1)OP9^``RzwVxO8$BS&8OBdo)gFIy};o(Ou{layeP7rB3c??O(!`?*4*$F{31 zgDeI~X2~ksxI~?*UyHx-GU8z5=chDt!3tSv0($y&qc}-Z<3K%vCOC=l#FKiHUXP(a zLq46#;l1v&$9OpCW0LPDVjZVNAix#7JO%jj;`^Vrm-r(&-_`#qv&R`{^7@|4#S zg$(rVTOa~*9$+YOfmQcRYB*n;>%|lnfM5Zb#4;Opb;VhjnkWU|o(!}s`C4PR^x^*o zb`OYE%f)=C^t>*kxeopS0dXyjvf|QW2Hzy2 z+S`9|gD;?DLBfKlgZe}l9Xfb%oXlkwK;JrpQ%pUA@yDFO9rTfO3vT+%>^NI}Jv?4> z1xz_Kx&QLP;N{?7{$+4&If6vEn8|chaVNrV*$q~6(cGZ*bl-Is70AHrka~`uPL{BU zu~S;G#=kkdc(ou_ML}uGCa~G?b-5|0hyxFSYIJuHrv3p*)5tnb+yP#p6)Q<+SEB)N7*gDh%sYN* z&`x8&LmD;JP+`IpR;o?8zPU#`oXIHHrn|@mhYSFLg2-)5K7qJ2Q(BSx2cbPH&tf8) z24|Y>`NgJT8|q~u1ny@se5_NkAqXwjfoZH9Dro=-Qp1!j4+qtiwp#n2Qol)^sMCah za5vvi2PGIskh*T*m$-s{h-#C~X2p!0AY;!hrVVMAvO)sh;N^whCxFH@cWyEu!Y{HP zc^M*EC++p%0nLO5&XGS_TtPC}4)J|V-e~ZoV1yu}cBl|Gc4EskHUr}ThWtI1K6?f$ z-H0ju&t8B3`s0f?v)6Av-oD>W-o5?q_4kr)(+F#;#@QLRuPe=B`fO{~IJy7$XK98KAaU zsOziwY(9lS!fY)?#$KfIK}9w2U`)6bN^|BD_?F!#6Lo_l<6>}*wMd(fV|s@L!< zdBgRvN=Y$%3_wKI%`!Z&cvREVr%F5wjR;YA=ob|{-{(i*<^XV`g>M15HiqI!w#yk4 zk{e@gnuRDy!eX)GPW@bKR7kfew7is{06OKT0v$;k107~h5llE@TFehanb4b7?C0v|K7Dlj8D%CbODmC*+|)~zT>l7%DCpWA z!g2sTndP&+|Ml=-1jRAmgwUTMj<7*xZ_Y<_>p8J)nD=s8?N@GFxy& zEFV~n7pg7|cFP+cOWxfvLmAqSTar&nbW;)}CN;?mZjtnV1Qb)rkEE&iSK^@mf+VQH zIe)l|gFXHJhMG&iIm4=#438Qdn@GICCY451e~Nj&Rzd=C)7O83T(;kSYR=E=XN5fF z&nxi5{y_r66!7UMTL&49QGwLXyQ^T~Ws2n^9|dchN_Q8k*q%hOlc<3 z13*0kPV@z=w&K2q!k{o&KlrME{MC8}SBr4kbZ_re#K<&S^dtcV&Rif0mU!5T=?hUO z2p=r}d6EQVO9qVAXMt>R?(-#>N?c`EfAM$-IjnYY0ojTiF|>D%A&pra$rufUeVKR~=Pq+(M{rOVjQ@*rKgOmB?^(w0`5u6@OJAD^z5y6b7wA$xz>h;8iJ_C;H$%L5h zV3Davg~){f{*zBRigVl)FQ(isQ1P-G?S9sMS{3Ft0Gpx|2js&BV8V1EjT^iuEu_dG zKG%#QQH;$b>rVY67N2u#_O>bDm!gfFqG@%)7s+FdLNG^~p86CQ9loVJYHrn#v}cA( zU)9>g$^OI;Aj8V!aN%4(vk>u;Z^O15C}i!H`~77RwSR!Ed=t(0xDto8{+$v2DIl9E z2HsILSR(Cck{Y~C$&fS%WS$%YsWM%1`) z%{qpuMXGa;r`|gxJZAGFo2M|WDyfb4Jcb_epBuCJ?1<_4XNQPk{M?)5{QvnupP%yN zDi=N4^W{kL{<$|Hn(=c(%*yeZt%5D*3!am!H}9FT3>6V(zh}&H4aScrnsk{+eI|`u zy7JTLhqz!^{d5!8bUSf=gGuamRxAnbw<15%a#YEq>`w3{2;rgkp@+6GwyIETt|rra z%2HSe^?seD`J|!7t0tbq4HJn6#TxKCFTT9pUQV)i1N@;r1 zK2~O!W~?y?Uo;e=@E45(IryS+kk7to9K<fF7OxT0S~7WH~wbY(G@24juCBwhwFU1h6Pr_8>3IrLdUK08vM6&-e-U+NY?t} zT(wT+_0xbEGX+ZP``p6ovEUfq88 z`t9v2&saxQ64J~fbZ8I#_D(&i<}s&hFKL)~(nrRl%I_87Xd2FggEgT}*IS6E1AtxasepvnEs+Gl7;TF^1PjQSC66=2sy<%g*x2ZZeGwQA6kvsME zp%2+yL^Z8YToMnW5^#SV%+%+b0p-l$=oyr*klxN96YK`Zhxfku;oXn7-~9Og!#68< zn!bDc;>|Y~XY+U4Z#F-^c>i&C@$S=y+aKP&dG*cf7yr5Y`|J0&uXZ19-+p-a{+sXq zzWV{A&u;(v>HC6Zf|3Ctm1Of%RH?ot`7ccJzpvSHX9uT$9UoD5|72paPUb0Iuxbt!e|Q* z#G{lq9KOmFH)*8+Y)54u=^jb8%~ipao3&ij_UgDv{55l{B2J;j%pR1ikpWannX*b! zo!Yc={4(Mpx+f(MXBXV+KE2V^i8K84xuZU`c!SXo~e=TXZ6c8GG?T=acgNq5@Vrr$pySYLdf0b!pm z4(qs&@#TGDduyuf*);g6bx4`1$>&$2+OK7l+66|~oT!c3ITTHgnTF(Ewz(O%mF zkHER1Qy%zi2vj1HmYHYA|?1t_9jLg^j|y4Iq!AwuUW8kNFr^zraFP zCC3zFCOxiuv$O-G4HW1u&#qAg+g9Lg0FdQw1tii?0F^KcjZ4X-!=BrygqJ9CvqY$v zB`yQu%Nfih7353E*J-%7J~~aj@txyNzHr>*Q;-OL7|<1D1La7xC8PdJ0OZM7Jg=_; z&OJWbP3Z6O)zeaTG)$G~e-T9|Kd_HW<=My6Nf zLZ=P`1n39xGFDd}@J#t{2iaumFRiSf|d9UE3_Ia;##%N;B+%ugz zW`Qg|>-D&eH0&RfzUvfTt=C|3uU9Mh=vYQpI-*H&_|&(F`(*nufg&A|0)XA;z9~hE zF9;*XFUFhQx7SGa2)9`l3$Tn97bcvepqRiR+~$DlP-F~nj^i_YT$-F5`Ehio595(& z@lJb8Z@-H~i1Qwpu|cfk;9p%VV)@H~Ocx?t^0y&bbH}KBt*_;Q&%CY9c)rvK3RRSI zwq=1UUifO6xzu>^;jxeaf&1yJSFhiV7VqA^{`l@aorEu5ynXfN_PxA|FaXX+`-X5~ z!vCWyR<>Q4BU16G0Pv!gl$~8mK%r6_wtGc`K1GKuM=}j76?>;s0I0JscO4I3H8aga z%?Wt*`L=op&z`mFZc&)7WHw(qkujs07qJ={#{`fAv-=boUz{;=zp}ut-kFX^4l`9; zGeepcMk_P``?ICS)o^GD&hVJKRI~j93tZ&401rY1WF2`Lo zsoMnmhuL=#73Z_(3lUYI>Q4VMZlA?Cbm(&1WlYg{b`(mE+PA@Y9pu-aOs=6vFC1{g z9e{sVUmp%HFP|9XajIb8cFe?|@CF)abVnP&ohXsG{5Zq^@)Z=Kecjga%CFIT-kU$LQ#g(Y5nQm9$GX;`CYSz$4RHSDV zb6QWQe?ihg#LE*2GNaL5tYJA0PncZ(C0D20?f&`+u8ObU?q0t6AHi<`lem?9^5V^# zzrJ|+H`~H&MT9p;715!?Ty_gexCyp?mfq`Ty`tiUIW&UfW{h9DfWbigk_Y`BwKg20 z*4(F82w#}nkWnTQ`@|?f^z;A+KUM?y4*}8bQp;o6uE))2B<34+s&SP z2-d+DkHOiNi3OOiCAj5kM3H2`2M`wFoiw@s%LAZ>d~vS|kU(UML2}c253YF%6=H3$ZIL`sTYIbvz^Gqe(eq-tz9#wLjHlaI2 zO9`sOL@eO?vnrvq2KMwiULnHNfy!7AOA@Gb51Q0e!V&@JisqUp%pXro9UGZ_h$=ja zA^YS@yHgUTv-+2-^>wQzuDY}wd@E!OL$_A-K|%-6FHAE3F#4eu=4sCy9$nwvutHxF zeHH^O+}S;)zzWq0@{hsOL{i6)>FbGzuod7P;UIXnyoL`WxZabR>8Ne5LO;QeNQQK> z!Nh!Sia{8;cuMLK@cUehk-PFOpu)vByS9dipeU`gTEoM?blL0c*NPdM#W{o)!F zOq)J5spGKA4EBQc%ofV0!riy_djNu?ldd-^BY=FnI2ah)ay??MBZi1HB%*(e){VH0 zDlg`?O!mk~feBc^6Okn#AIf5iZI>r&fmZSiA+|M7<;)ne?FYZg($tp{ z-@_kL%&bYAcmjW<49j||SVOC=Qb7>kSo9T>$y%wCyI2!^_X#&9u`!;UkJ`rcX6BUy zxy};3%A-P_yx5K3eE)89`{wrLM?fDEPK<|;hS+|2PG-;xnXnz}55$*(pMyB$rR(W6 zt?d~q{+L%VC2A^B2E-ClweooH+{-SoimQr^tpz@#)o+#<0464{zCF>jk!8olTF4Lm79jw+qGBH0%tg&n%E|NTCS=W!Ysc`oPw)ghy z80omsvp3#jLTNfl?9xks5>mC*${t&GXe42op9mNQ6VL}RF1jU(O@!Pb9#oV zn-IbpSvQ>~ubUVmhf?CIQeKa)^o3>>oKJ>?r_%q5Us-kP7T5LjYa@vU2EtmTIy4w! zWl{LaW?IWYfG@R=lykcEQcea&JVn(NVK9h~(;2ehok95E1R&#pP0hsCaYT|>z}#Sw zc6;pj6$jWl?KPeHIv`1k{h0-iD`%4B+lyERg}kPZHN-=L%fiiudWdxO2KQoYpsniC zt0TH&FSpEFWO}-}ND${R%ohQbFw)Zig*CTaXZy1@cl+;g zw_!D6;#>33#l;R+aG-UKe-VPmv{t8Mm?r3YkK_WyWx{xEV^{+AJO+4B2K9uze(n9X zoIq;YmsXtVsbtw5qO}F-cDsu-(0~Yk}e8EFN)%VQg&qW=xc@QeQbtL_Gc{MII5!ND6r5ts_18eExcHAhf`Sca63hYFmPc?u z%I)@xI0BQOzW8vvg9I+&nAh}n#F&P8m^h}mS&sv~NJogZ<{P01gNN+o5|6R@j5r}q z$Bj~>xQkqSmJxXP4Lui#2&;|sagkHfY=T(zN^1g&HnKNSm4(b6Q2OpxFTTJ1FnoCM z@!jyTm>mad;eOtEY>8OB<1P-HA7m1pK*nQz>56(~Em9Ck#;RPxI923;42# z=Z3k_SpeBXNClG1YRMRofSkrS4UsGuE}_GdhYyFlL&&2LT+Mb3=s68Ikfxki8OXKY zd8_R*b|}0PJ-jMiik8HB(nMg z!~$4ja37?%FEPzAbcjq$L!q6=6)RV{fCOW4h|@h@BNCuWP}1$S1;a{^Vdj3%v=r$| zYa!Zho)^B2evwv+%LiQyMPTH0c926O%3Q6x?9lrv)_z5n^N~UaIV=wrjY)D&k=aE@X~ zqM&ghD9gB+8&RRgUQBTFYEz-y@lS70>e1|2!0|74OY#2f1R;MVP=F9mFj z;8&uKq<+CS!0HMGOe}+`Ge~urb0T$X8F)-6x|@a-puOLxrx~N$4U5x%#;Y#Sd4^!O zA16$2 zM({6hdH|Q;pTX|oKHQx^6Kg=w3=I`Q(|{VVStmd#0JLv}RzPzEES#gP>-kq8XAB$1 zPra9y@pQ8@ug*6Eu8%!0wF&TA)rK)S84MSjg~lnTMMtMZ(2XA78@|ZcwsRI&{qz>r zKd1WMi~#55^%WEFnv=J&}<9Sl)2l8yc%Rgb7xs!hL*ML?>zTsB(|${r{$PiN)cdlyAv2b& z)xpYuGG5NluLjMvz)#$fIi?(M2Gy1N3qm>!PY}{Coy+QYV}qd!Cb$AuK|zd4>@))H zZl1tN2;NWDih4!r0FQqVSm^-nS?C29R%T8%GdAhu@gDZJ(+55b-*`uHmQJS*4Ue}` zNX~ITiEIZ6q{*&q?I`F^|52z$=)Rzl$hrz8a&S^+yUY4*nDEL#wG1dmJ+Q9OIY5gI zQggl9QtuGDJDhfi%+lO7Ln=S#R!d$m;vU#e>_+Zl@!|sr%xji0SQ`-K>OFis zt}iXd73)Km`o)J2x9>mhP>uY>kN2S)bTn_$P;&$LV{ki>%HBp|VWAN9yU1{yp5q+W zFUov1_>2%Qx6lsb|Bh1qN*~};=i-Eg5p|(XT}X|h7GTIK{Mkiyz5POTcy(`*6>Aqv z5+LW2YTukA`X&lc{049=0Kn!$&xc+Fc9k*n{x*j4(oP2?ilh427BI`C4mc zT$WNz-K^HwCHIsnS~RYnYgKQH2nq{;$gi56&h7fz2HPb|TR$(O&;dh{OjDto8_$2F zpMnf-t_Fe1Nwt+b(#`=L-R*Qpta|1ud@8r>!>z#Q`aBz_cneUN$v9BB_%{`CB@%eh zqpymyHv-l?TX-2VN8sRBAmky-R9y}Qmw8FOz|YW~m88GXTDuBnIJCo_E_Ex;8#xik z@;EV+=pz%d|Aubd`^gg}6HiYsd__DnK)3Vs`D(n`xEv-L&qU4}D+f|sYf4@#830Rl z*!E=byB~h|9j=Jg{9smbb?|eZF0=_C%msF^vA_;+ulUu4E>hYOCdTAz;~n9Bpr`KC zi+9rdgL@q&+Y#-#rH@RfGedI2)4K_&ZPn6;=3Wl>ofV zYKHm<7C>H%(MOmg5<=H*4$9(R<_?2Xlv!MXQq@wzAbgE+`r(d8+|9oU7SokOW0|`q zL7h800Djw1Or&|Kd8ez)sIYr)Jr$*eu7GGcycFeC^PYn9hBh#}(3e!p%|`38R>g0Fk5TKx_7-qQUPp ze7yPi?x&j=>a%&tzmOf_TR53K0~-dJ049}G9q22Mu2ZVH)GBBp zqxoQ9Hp4UuP^3faMPB}P}b0qJ(r=BL4;mMQD9z%eyC?;i|)_vUv4{1qaF>?7+M{?_I-HV~A*-OVjg z*gEgR^V9N>SJeMX~DS z6JInJJU)F=L)5VfXrvx+An1+N@ASn!L1dyn#pOjrP=9=2R=6WO!LUS?wpmX@AH1~t z+}d}Mx4JUhznJu=QgDqgE+x0-^QmG%AT@lX6*jL`_P zL`Zl-k8PwJEPC;T7Vm@Uc3Vk8{lfzQDulH=yiI$0GrZko2_a&z0uej`w!u8>bF1=uQ%#(7rC zn(U*@WtlmeH#VJmk=2*jo}E75d5xA-M?#GV4iJVQY{6t<>^%8)_*;QV>u7fz7D%gm z`)z+R>>XaAJ~$2km!u=Bv)t_ z=^}!%^Fe*|bP4DfAi5u;^Jv_Q9Bl9TI0(;;%5c9x^=)0Y%(o{bue z0i~M@8df(?f#@$;C>wSqEwJO5JwyD#!5T}D03FRo(kWR#ckCM18q)X-DO~9sChBc~ z=ms_0t^G>H?l7MtS(Q2RJslq-4BZl{({Ez&bVio_>Usf3Z1JVhw6iu~nL5_oKB+)5 zecdgNN!~d_#vt*FVf%K$Bp71x6>MHB(8;(WvNF!m1jMtXO=+wxhv;JyB{YlKtcyMdqQYdui42oQ|i?% zX2b?fDHxvYd?^6BI3>k_zQL0e3FIV)UC`@;)p#S31aKsX2Qd5zqBYN^6L7r9Mr3JC znp|Mm+bZN7eptv~gjUGt7o$QfM~WnOmr`|?;v1=Ni>>q1)b`pp7I}O zUDy^nN4z)>z5Te4VCjW0ly<&4NREZO{a9n>X5L<-ZZ@67AYv~zD>9!v2Keu>m3_iQ zA09yhc@vr@LIncDXV8z8a8XP&XF&s;>HNdj*tgq*^uy z)iCgdi{zD!rL#r#8lctaD89%o3l(AV1=$CFBK`oim_s&Xx-DH0A$q{ce?i*H` z9kPTNPcE7!9Lt^ev=71zUlfkOo3aF8w?l=#T^x=s4}SSY4<^|{emX-pC`k`{^x>eo za_m(WuStGNVV;g!bA^J&k-tt-Pyk|jBqFlZ<2)ESoq+NM^q@pQoR0qv@Wv3Cq<*&6 z2S^0Ol7-&&4ct^8489?e^A>Z`yhI%IZt~-+`!9cdB~>H;{_&4?x|r6Hbj;^vIsA9J z#U~EFs&oW(~pdA3p9T z&!M~ly5S`vS#_CMQ4_BWlF1=wI%!{2QOam?Xbb5B*eM(^C>FMxrGyzeVxYP;wC^{pMSNG$EpOVPB&A#(YN5*PIDE<)zi4G4QxnfTa z5+k>nnuEm1+%1JVu;N8T6vIjM-}ODjIaqENhapnzwoO|=?TBUzE`UEcDSnhQ`P`+> z5N)c}BbONm^7CBfI94eS3QSgYmS?N}^OiEDIJEnRt7&M4}P$b2h zqCx9soIg3mqLlflr<8gB5UXU46@k>mjC)s4pti@)Q(vgIS;uF3#SfxW0g716E%ZHk z3wwD8>7GWwG$JX+c?0;dppQP8Lo~8rUQe;m2T}bArbycXIOqkmG;R81-wOjStY3^x zkY#OotjUbfC^72ZfUs)P$ef4^3X}Qx3MiWGVD;NXUAbTTRM-*3GgSzs)2Und1q{Il z&wFUG;JBhh0Ij6$G7UBeNIFLj+ntgd5Hm0o1CkLGK1C@XUMV}5a^Y#UBeIXU^lY*~ z%+Oo9#!uGEm55o{_Ws>Z_xR~gxAZoIH)A@tzV1&DA(c^t$Uyu}#9$)nq#He~0-oS_^f&QG z=?Y?vkYnLVZ+-q<$)^7KJDgvt^u)-_?yK(NUa{)v^Hr~zPB5I1Z;accPXSQd)tEVW zI`&~PYtbq`M$|Cux>b*7;0Gg}_mb3$Wr=Ggl3ARRRo}5o_7fHU(XIG}=e6rs#ZoV? zRFN7-G%NW>yYZM59Dro3if#dz1^G=;gp=TuuJlx~ z0ZZ^@%d>~Z6ZnOCDIk`FLX6w)Sb}4xeX~0*c(+S<_g+n&I~k&q!&~%VtrT$Axv`Cz zbs-lSo&a#;m(wtPN{lRre^a`0JAZ#bK!VuM4G#z}A%cXxk*@nS*&T+GcaouW9X1s( zTyxlCmZ>N#FSHQG{K=OhiO{CpV9&J45OV~Oh0@Ycdg6N?!&aMfK!i$DI~zH@iU290 zdAfDJ`}^wM-*4YrDdYR75%Bt_AHFICpFx&dkso zjmY~UqWbs`kM-a5@x!y3$qv-@xYh*3m|pLf18%K2ASH}E@KdAX0N#r9%g8#Q#;)<2 z?YAM63`dVjWFelYU_CP$L65#H$S>eoxk~i@aCTGj5@2S$0^Tj~Qo2G>Ic5=IfKrPf zD>a(yoVuq1c(PEU#g$@F%%47v2GLQ+6$l;&nU+bgDOBb#3$*zj+g^QgXtqX{6}IFr znl263S;;Q=$;#gElq?oye02xb9ETj9MPY9+ZmV81=Lo}Dpw z{av2>nM>C~JOyxJJ?{WL^$M26Q@cxsduzs3V0@U1z&-=H@79YIPh-^(qi86B-yL1y zkWa)x34@_>04IdJfmc(kl95jDwbdz`?#1zorQ!6L36Osg&zaofT@+71%`ANGCU}Q4 zAe6{o;tOc=;>laW)zrP{gy@TFb5wWG4M%9I2Qsq&_o7;{fdyc6JZR#4LGeYkZyp=w z^;K%U1f0*P9^rnHf52uDp>`~OO{d-gR-!05Xb@ELlRdposdPqWtMz#^ui`|hSFds24l^Tf z7r~?!orArA{-$EP>l5DgV!uhH?M03hdLnl+#)+iPoHE?N6cq*b>Ei?Nl%mHT>_dbT z6`ZpnxtL716L)a_kM5j*(|d1$4B0pVkTW3pA`9`rwW(F3f&%Fh#E@<*;y_hK;&mCt zR;QlC)aKI;Kz?21DngAo~V6$1rpI$a>Jj0sV^01nnK zewr*MF$D zaM-9ibu`Si0ZAn0XY*x?r#=mkv-b|sdKfm)+eLP3bJwo0YEg3J5YNFi_y>aB>;Bd!)Ps1;*|4Yv zSTRq<;_VxvFSK|#E-Ds5ieJ!M{ztD#O?`zmna_G-2%}4%40sL(;1Ef9h#bPLh>W6C z5`_7ryKEYD#JCg0FE`il_p*nm%#^{`^$Pj`a>J-rRC3PUUd>3;_rn85rY2QQr*5D` zyg-Tuc#dB~DS&eb)kIQXiRI^4dUB&f=(6ieeZr@=A6|dYnu9NYc=6up615CgQM{Rj z(Tk#6^DyWs!;v)3_tedNoo-_;h`?2eqLSK2nrSPwBTFasE|{CjL)j6HD}9Xmd1$HT zg#p%vcmoqXqAkgMaJtL}hr+km9Wq1eBWJ{V*Lyt#`nvTJ>^`_4O4$0P8FB|ozku!g z*WZ7SBnfISQd_$dN@Xa9`*06XLr?~x>}X2JNCeWM(VO(nFs zKD}BZ0^jUn$PD!dVVL3c>&M5?Mo@_ zl}GoObA&boPxV<|-jhE!@fH3@)MQkfh@)}QD-dT-FD6SikMk(~N<#|lsvL;=I*K^n zT3B`sg2cN{m#fA?#s&ep-Zx=D91?N@DIK}usA$)!hhqBTX2u+5p8kxSi8D{nTL*fSgu&r}WCD_Wu^t817^kv;2TzJ_v0*XZmQ4*t5%vDsQ@3a6|=m6tkN^cM0ZWoA+4_$>W^;NyW2XrwQHNf22z!MD9j z5xt~BHb)_xnHQSgOiLdMZX<(yp@bB3VcD1B4VRnLhFXs^ZnH^)ul&djOGfz znl67KN=sV5P@&pm&B@bK(0<+<)CY$A>}sAVqd~C**h*>F|LdpQv)k{GBTB4*Z6wh6 ziiTm!2Kn&l3tL7om8A#o1bGAp&*Nhv zvU#xK6LWSuB`qAI@bkOxWy$Y$3cqCxXqKm7#g7ZOBB~5GsS;C4TayLC#{+#u(V!g? z7PMf^q*eC~s=9PW3L2|p3Fjbry%g;l7X-*OqpHKyZ8G%^%q>EzMZ_r%-h71rdyMhG zuMzx`+Hea9&hR9d=b*pE2KV+0B~ZZw5K5Vx{3D1hQkSEIZSpjGc<2O^39b-Mv8Yl( z;$^rub?I({Z|=+4bd~6duC($2A?6KKU8$eX#GDkUOA<{Is|JQqu%VPoP08qr^NKeZ z&9AN~p_DvD?*RW~%OggED1Irs<3&$)N9KHuEhYPaIHy!1#8{1{QObq0YeX=^$&k)C zY0LQKJss_dL}rEN7{a-OL^-c>Ber`G-GzbM_tyeNcS8c4@HIZ#M5=e)Hku zkB6f-bg)IS_1*iIFL$@U{NZK48`z;E*^|#%F*7X(>Dh0uP^W`YF0dC71gA>`J(3&% ztV|=+RM@Kx0~&fy3}6wDROK?sCwN$lLdUccs|9xm{R_K%J)ow2xYq*E?X)FFT-F(^ zl8{dMaqXHHy?Tk@z0sA2vyNPA!E9N#>{9sRsKW_O@osSc>w{;*6)JB&Nk1}k0j?^9 zJCA;j4Q8fD-())wWKj$I3EjVQ#*+zExaL@{pMEQVn)xLHOET`{N$AX_fW+kjv<>a4R;8eY&Jksk=s25Wnz1avkw{w=9R_Zco(-G_poV) zHZM2_8io!#w@5(ctawy{aI0zH)Ef3GhTXd&2aKW9AlTX<`7?68Y`aL7IHgEtQ4*xG zU0=-yLG^Ji!{AI$q9{Ygab^h3b+?gQC|%mdki#x~0vFdvrbJiX_@E-PvUnU)6}bo; zk2_3fi>9y5lS9b`JZpZf*KxLs=>k;TJer0N;eJ^(oEUkw z3m}N$0rtAWa0b`8*G?uLM=s#`3T56r`aIDg&Zg+p4Zc*Q$2=DNo5YLI`&jr;J;cDl z!r_1V`2N-F@4ka7XFcS|%QiAQX>|3#nML zqJ1_GaB-Fe@q7)D2!Q3$CKk)Tq3+Y<0pFt$q?4iad{w{=KY(|D`72>(B*sqaIUP7!!|X{z9yU9k)RZASdikWII_UOm>GRoz z?ZVB{k@bYsQc884>d6I6iz)Yv6HTSoQB|ANg9IFJKYV=g_T?>pZPo)Tl|$r=CoyK? z!QfAS8VnKa?q<@;AXIXS;!91+_K0KJ1OdauhR*;DA?y|!=|($ExN5zw!dt-4JeC!s zlGBy<5`ySQvd@d7+le~>h^E49&7#y6*)V zowYn6<&Bt<0muRj9&-PI=^0<0Bjk@QIA&}d?!2~y;krXtq$))%Fnp;X9E&xmTC~%0 z*-@S6mk$On2mkUf1Jq!qp9GE!!gYZ6noq0y^lcfI0cc1?p3`N4zis_46*N@1DPlo* zIHmB%p~MC=^f@ex6q_YAtDQOX+|#WyBE?WD@@fGyEyDteU`j{^tcHZt0`TQBQpJLGPI z919d@sBmw;>0Bj5RNTURG5Go2n-?EnzquW}dln5zb8J06#0$=$dw7bx zpNNA(5~C6}N3%hFDWoaLbe&bJ5Ul$e{0L7lsQvu=P3aO;GQ)SFAnY4ioCHkG)HC*w zVjaM*6)97bjtD4_{04)wTi+}&Q}zDoLvrpucfck57wlBQ0s6_1qaG1d^SDm8mWF}| zC@9nSwGy{Cr(q%1BAkVHE1(<#VqP=RZqGHx(` z28IvYsez`#axLJM?h|7xXYG0>SUyi&1ly9q3sXgM8NuB`YY)ZXG-<8lT1N$IygpkY z8~Rh|_klKwx*X#%aeU$sN)%gwPH(?-X)u~Vy^^5UppA2vFpA>95XqL~vql)@Fi(qG z3ZRgLIUC8i`$V&Dr{+;$w>FPy(WQly=H;aFKGA;BUkvd|QMZB;OWIv`(&lQ`NG-%V z$exh;^nAOCz(Vk@_?PfEKuSEomP$;L53+1@EOgY;l(ttd&{LKKRU{Eb)`D~DgA)f1 zHYt<@%>IGk5%~qwe~C&yV5omJJWP((rPmW1(H_PJ6ZQ> zxWl1w&im{=`h=b#aV$Z=AVStA96PYyqgNT*g{&vY$U&R5{yH<(wCd9-8i`{t>7kaV ztj#7s^^%zyAl#C|aCx;IDXu5Q2soi`do@9Ll1NVbcCs1{{9?Oc=vT-XtQz$tcDM_b z#DJB?SS-J!_Vt&S@SOmXK7IZ13fee$022wqS=5{1(Bru? zg)>WgutT36ZM=1e3g2@tGVnD z$GESG9%89-^5Nma*0{)fjV7%@aIUh_G_SAw^hzRqYNJ@v`1A}3FQb840yc!olZp}q z)z~*1Kd?+2)UVVwS zCJL5n0-PmLF@0w`_R^w5x9c=xf_AD4XGCj&i2*C(RCiPy8smRzs@v^%(*}!xP1i*N zLqERU7=m^5YDP78)D@uc1&KNGUcF}h3^E1&LCwm%TZCz97{z#t)=@>*+bS?Ja!6wV zU2-7pAoz(Hrh;;szI0^VZQVFDT_Prdiay#1m85pyo-on7T4|8Ws0eWiR-Oa8tl6At z+Bvz@N(LXuGfF_AuTzT}_djjo^x8*29K>1PULclk4L9^Y_q(26+_MI`&WN(J=Y8E` za6kufZpN24mUkduYLTUtT!H1FiURlrl8CPeq0`>-Wjq)_oPkLhs59iRHuJxrPEA2( zW0ds>*1#%C6-oxw?Gv^=+39M0HNJrY_F3U`6-|}|m!4SymZY?_&F48!UOdyAd4rUy zE=>kB9H!$(cP)7T0D*tjz$bx%$E(v^;Vf6fIc7I!2+`E>?8vG<>i`riI0{P!_>x}z z8R^Fd@xu%cN=Hogu=I=8wQv44bhi+`rq~B)=&=8gyH{VsYO|IB2IwAy%e?>w5VwK| z#l%CvKrTj~C{@sV1P^c+cYhPt3`j)m-YB_f;BoG!m6F0NuVDk= zfgja>BKzlLcow zgHED^TqFauw0!W^>_dSB{IV-V#zUk!2jzwEcnI9Cr~~ey*fkI@95>n_kn4JRz0p}9 zNvm3E@m3yNxMsjTc?z21WxpO!YzO5?Omd%2zGj*GMu?Nca?&9HzWV;%rrzPkdI}@- z7OprLkF>M~;vFFz{R0XUVy8szz_aPltR3b>?qV1hwYi|xUgbu=w7J{~Sc6Rc zFx1jx1y+}GXdgO8$GJDsQafC;*-yFQxc^PtyEeCRWZ9znDRtcu4r<1B5CBP0r>A=Y z#DheOBwzp(rT&6YTePjPT5{;o?Y=YT{Pw%n+I#1tszAzfvMUVnRtfB3avC%`M-_qlsU;9lfzz^*cw%yKvmhNnhwp=E`iQ4bcvFTy##xMqK6sI0en`W4Ef4^kbhTK( z$qH*%rW~jmJ0_sb?Re$POB48LxMQmcv1gthws3SAnm|EJ(ys+=_1J?bOk-mB*L@m` z2F;%*9^pPXX#+r+qhTBb;rLDm^ZmlD8260ptc}S_FF|?!~Z$r@0lPp~nS; zTLeOu`@`=nyXh9_&=AS(h^72y_6ihq3)KQZ{>Wq84iM;c=bH-04}FGe15>!g844`` z+4|ZE1KQl22m?L6rjC9F>cwM~IEW(yb;N0<-i2mD$f0J2x~mgTq0N%#=kfl8q>H3D*D+Tvc5< zlEVh9xtmb>PGN*HFwNz9_+2s-q*9~sCGzrY6Omyee#3LUFP&@4;qAtnmb0U{+)ArZKmeGU#eC}^;&$lbLEY+Z{Iqwwn zCzOk_Vep2lu`c<)qEmBn&rdKUo_nairPHmOIJwmX4(oTHw!h8a%-`F-Ag%Xrxy|+@ zM}T^~WYOTCT9MbmF?Iu@+J>2(J7?N=gQ#Ke7|CMbIVPL4d9eTdt+#2aZbFD2oSn??J(_c^F>>pWx*x@R(^~G*HhpsTEZ)uUU-0xF| zM>bB*3g&K0dJaxybTm*JF~TSqX^$i-wJ*{Pb(AY-kuJy zOi)Lrta>y)o*KXOczmU!Ur%B?Ri%K?5LAu&Uf<3`KBA>U!e)!FAS1b@pGb}F>OO6< zzZwVyzo34AD*-%_(PiN+q*0Gx;6ihN*^OQgltikH;-Rn2+ep;-*2ifj63anwCfY&%a z3Q}D7NkHta&I}R50wMtWCd0z_1OXg6VD5Q?r6UhC zLG4O$^Z8PT6TlJ&i#y6Sv(u6<0OK5DN_2_^!7^-VZdoaK z*{xUG>J)w>=(v1`NMcR}{EPsq(<*?}WT7yTev`O$FwglWJ({W^w2R@l=qlYPM4Fj! zPx>eqDPirzJAfCfiDRc*6JJS*0mF#9!8Fg88%9ZoR}2p{OvSX?$1lx8PjgM%uvWYc zLAfE|Yo@I&^_&&$R*jc-9lnoT)*px~RSb4Qpf)dj#=!2XU~L#8MM9PpvhDq#kL10QwT1DAC= zc!>R&@{=ZO*q!kg^higKM^hgBwA@e~cx{{pe3AqX8yIf-+{@*Aoyx`oY2oDZh!7^= z83SZdI*)>GRe?;PTBV*RF70l2{o)hNEcO2HzkdFNu!;BYCcnP@G-0UcWS4J$dY=;TpkVkIVa@=F-ZYrQBWQvUrGzw*5Na07HS#8xCR4iF5fw{L zQ1Yfg%)DUn1flWW#p3)TbbiD)xQ!dG+u-6)&!=n);{__Y2ZfuDYz}gTo=6>xjFy?wqP!w=4TTsAWJk zoS|dLx=~q@U@93H6SmlF#)J<)BBh6UXP8gMIjKF?*`8ioQ+M=MP*tR&w~!4+C$4XK z><&IWZoc~Ww_i2*q0=osux${GgAUe5Q_?XrH9mK=`?MjOjg5^gTlbUSv5D zyMXiun>7?ZEMXuDj!Z{>%s|$!vI{zXCt$M#0h_n4{&6>c{rW@22U%a)Z0uWh?G8gC zSrL7$GtWqhMXS|W5Oqu}?&gv)_^!{A zJQ6z<7Z8XE#u}(L2ahDD?j0z`{o!HfC|NUoc$m9IK0FYhq|#XffYtJB_QKp};KWJ` z+SyCE3dx@a5X{x4s;Q{t*VGJit2eZgB-H_OL_BbI`QpqCKGxB!a23D}92Xu0*~@_1 zr{NHu%Zv>Ud9;WMFE6l#5g^cVJp?}Qd-8UD_(e}$AUoTa4*cR*hduZHIfAP# z2*Z6}gOOh}M}&ud(Kug9QV@cQBreA7cH9E$P90^U1K8N5X2PlKQ!~l*0-c2M23CmX zk_y#e>!RpVPnWm{xV6f+)$kalT_IeU2N6+pJKdZk6+{&Q+v(O+h5I5j)3cSOO94F` z$=2}Sn~jw$e{%U(Ka5m#45W`*zi7&fN5HO~kUwt&k@0vxr)za(O*c)^EcHPBa?RU0 zcaPbQE6qAY2WCKo&q{si-vuA2`{Hj;6@QD@ z#sfhwK4Vs&fFjX4x%p;`fG3(HEI#$Q67omO9M zEKo|1()VRO-HGcSqs*xRI)z&owNauCx$Ahy+6{W6AjH(d?NIHiOUHolLFWeYZ~~UN z(4(}7Ev@-r*z`C1=aSfw&WQsCHB}6~!Zu1ODg%C)IAP4(K$Uve{7LFl-feLn#zhxI zkijz)+n8iDInzO%R74uI5;II9+p2gVIu8J`fg0i#Qq&^!k(Uwn2&LCv-ni3O%n!>6 zQR#n7rFpxP={^CE55Je$&H`QG0VHNdTu8FX7{BX}9B z2LdZmSr5d#+>pAI=}R*?;$q|5OTEa+y=sw@tQB$g^P1dCbzEM*|1WyC6es5LJ**9O zU~V*iHvMDszyJ9&^Ee$K=!w(NLZkr2-;s9>f)=;WGcr-rcffxnXxook%(k{l$VNb~ zRp3rhD^H(b*E^aMq%ncwgtmfAsPS&NpSYxg9$OYIta)^nOVPZ3-~3ne=0}|9vbl7S zU?o@t&uK}l-05!+{FNXF{2^^5c*5SB*MsKkKQ;e{0l{YBfXf(`8vm!&=3+<2JsJ@i z+4$tg`hUp3C)^v-RWD-BojN}b3lKc9kF0~K!}f`TO|Z+A#A z8x{{{2~F$^FKm&KAqL6L;N{{`#2i1hGLyv4+TK^c`uH6oP(sL&$x53-@?|y1hQ9i~%lkQOY1`D`*9numg z>}e?=kECsr{@S@iV%F5B_j&F+*fTFI+4$`I8)!BjH@PFVH|%({b5rB)qDlC@tg=+d z?1A4?w_d5^2s{Ty1ku!4rHTBxp;-l^A|D6mVQ78ecUkBdTpZ?Z@0Hp#ybjivOOmDH z{e%eu(wJR(H#8^a?XZ_h_x4wZFlCV{Z6AIHon6cy&V1~xS+zPfFMQqd3fo!pmz`GI zU93*BHv%?;yCf_u&n_W*_ljIaukAdJsprqMI8@3~(LgEymCAjFe>mT};on(7=?UGW z!lb&UaDs3@TW%0u=6gwmO<)72#vTB5BN%qQyhOqWT{7bjc{s$zhOQeG;>=lwEDS&p z>B4r$t}RJi=b>;t?4|vYaWbVAU5}Lb@pcV2FgOa(lA55I0CU~HXWpgd1EsT#93v6b z+4yFPe4Dz$Nj>}(wi=*Xbo|S zE}34gJr!%`Fnoxm&EW+%p>q@$1vHzD^BO{l1V@AF+*qOe@GVk$7L{CftE;1bZ_2H-Zx6G@}*=!L2wNnS8yzBbZIzo z5hi{PC&Xh3ZiEX`>*GK~>RnHctd6X%5PooEHDt{X*93UicO)7BN>j3NqhZOeahm4X zrTw;_T7&S0(D|s2J&%VuK@@#4P2x*vu0Yqk6r!C_@_=C2H_P25Wr!Uf4hA7%;t*V) zLklk5cY*0#-pk##T9%~zUJ`rkB$nDjd=~yc7|9gKn7cA`U}KQIG`zLQJ+*KLV7eo` zX0&4vZy5sNx(osi&1sSNJ*RDk5wGah1ab%$oYYudzDA#&Zrzko7LwwkI(k8=o7@+< zaO(l>Z}TYk{5g`D>`2p!zjp6Wv*^P%h;25VG3d9{S<1En5c|Y*8`uFexP#nqXmA|u zD3P_IM0U_};U;81d{7}vHaN0g59bx8Z*^&jh;*yfE^`%iI(3UtpSpq(tfjso_vApu zAm0`)c|UDw^+@NBgP6rYs@fnRzL0=O-W0vWB4`(mF0!(X+EBt1UH5A~mE1Ix=jW49 z4U;Z&Z}`{hhUoM4^~mad+Z30u4S&zJ#G#I-eX$|Lt0ZC3t2wl$MhE_GlaP2!OK&eI7dI6;!uRQ9z}CPn zUlXyuz}l|hBvcwkZ@c5t(Lf=4k?C47dv=?0U3+*3pRmtA4oiu*w+9Hw0r*+{VIfaw z%5d-MkKrSxjg(L8@)9Ay>34z+pQo(Xg=dy#s{?KEVjwyF8L*Da>=aD;?nIO6>%VtE z@N@(P@Ni&vK-^m}blVs0Q<<4P_Gw$3v@ym`0oDLaNSP{~w0c|T{@ z>eibw^dXcQS!G=NN54dC(8D=Osg+#m<(@VgOeOjDT%X?xhHISxOaW33CsLRbcp2sd zt@xKaSsSV3)aaj{?Hp{kl*EXmRP()IVf^SnQLPz6Z7UJpIPkB9anjH_mmlprG!U7B zsW>3kEIx;=>3evFwZ5j8+!m@+%uJU1^$ncJfl~sH}&bmWPhpsZHLDOAYePe&FAWpy3n^kH^&xVqnA%Sa5YwPuP_#z9y0)s565 zkl#V!j>Q&O#S$1F*dLmk;+H~ZjS)Iz_=mPU9Nq>7a_LgQsx)=0o5ghZ9EXb4L5NC_ zd`sHbE4q;?wGOi9ZI$cXpAPjkNs5gKB+vdxSonr=93Uye6kn+*J3)N>OPk zn+7D6Fdv2S=;rc~&Ww(ch>op$hIfAo8!qtTLI^H>H2S)MJv>EKD_rc!#WVB~#gkY& zGg4r9?#dpV4s)+eWxSE5U$ANZsDPB38K&hPJxaKxfDe#_V0Xn`N=ruxZyi-Pd4UuW zM~^n+h4Ng}bKvvG-R$qbe)?CF8l`&P(UbY5qsegOnXf=po}&%~BwoM;qAXxYo)|oZ z_pz4Rz=4{slBAjTp`K4Cc8|FFRD2!XqWM0Y$BJj>e%|61DkXzlqERz!S+m zfkc=hx?X76Z4w88J+eY$)1X?@3k z5tZj^I-EtC1=mUC;?k07=5nvTnkN)Gl8dDIN$Q#0Q!LLAOwb_Q;_X71M|-rCkmi`l zFM^1=_T(B$vg^sL(2cfC3mS(Ym~;#P`Bfl;1@IU`L%G@Y%iR{nGyRh0PW~5`;tf#z z0^Yy5B$BOwk_gGAzD8Egc9a@6a z9Ec*)(A9Hj_i7G=9S?^vGg3O@N8a-#-$3*cXqyC&g|#S>~F-%t7igYaF@KdC8Gj zxfJ~)3_RV~4ds@0cW8(cwB16AI$GOSk6@UTlR2Z!4wkO+p<>A*S3#KiA@5U8d9_a& zP$a&phPbedEE@32o+IysaWCmwukX=Wo%HFfOiO7`pbt3CSLsm2OMBkGK5pOq@C#+< z1qxL@o84;N0LR!0f^j&=mi1DbzD6T5Z7;q4kay%Zz!Ae6LhZK)==-{TnW&swZag+z=R~odH9$2mc@Eszla3C>4wFZvZu4%Qaj!*TBFxbJDT+euWFeWx64s*K z<>pKp-r`z{$_6o&PJTw16tN#|llbonMRWWT9tXPKo3j8C=zVz$xEYgYN2hrwfESSR;(ObT z%f2qHACKrYGGRETr{juf6)E5(vvR}FHgP#_cWepzi0Bg7kXqo$lgVJ&_JOFnG`OoW zDtPWzr*5F=i&CO{6ylve>144&iQRxc0JTyOm1-xCJeqN8qo&23nPeX)11V6Ui9L1n z!dQ7->qL^KmRf?qqF7KpGc#x)`S^TbFiRYOR4Ww@z_lq@kaiKvJ{g2tHT9eHE#JI^ zwvk$13e-*6LK)#@$jy!vv|H4fEw2Bn zFv1bl-QVO+*7YgVA#`6R`2PrChD2&wdU3ecMntH=7DN!v4R!0V*Im)W4!nk>Z((Q_ zjma?d5z0ktGZTj;dzoCW;jZnTYS1F#w+c7VK~3%eoF1P{C4;%#8y)6v`>Md?injtL z0<|R|ao=YzaE z%8tt>J0#FDUxVoKB*g8b3HcJDqD3vjH}>t^q@La^xvV2wj|uR@L+er;&8Ruh;_?A7 z&*Gh<&&e(e9tsjAoyn9!uO%UvEZQ0)q#(38o+D@z>3V?LO7hNNiaNaK`}Oqd1=>vF z+Oy`}PWy=P^K4t>^ijD}(}D_t0Od|I;Aao;pZu!z7ZO6<9l>4wz09MdxA<8XdsmRZ zx=#}@SN7eh2kgu?~ZKT$b3Hk?!(A&<85(Z_18U&LZkR3dE+ z!x)?ouXkrrtUgzbSuZT{%x_m3-+v|zs_5r}Qzny?e6?EY^!xHBcl%S+>9!fA|DWtKk!Kiy$H=l^4d(m)fhz8Y#3QX1xlw3x!nG zsC#r;(${#EqadmmKNr&EkpjJ`OAbKqs8Qj-t z4s;JZ1Ic?C1>66OC$3R=;2Ed)JtK1aJ@AaD_dVn3ED-1aK(YTfCea4G|E2dHkJ` z*MVUhiABojW^Q-$TO4MBnR+pZa|6b5!YtyD73K!&{9q*RI+5FUWI9 zG6Vha6owucL-_@CTq=#2Fq1k;WiLHBT%BL)K>9Kbq5rWarIM4&ghm?1M5NC~qOP{`WVHNv7*+%hgWlGgUGg$i}0 z@FtynnrrqC_)jLmYyMZ`v6dJJ@B7vI+}yAIuVei_=hpU6-z=PBr~>;P06Tr!ugv3v z-^&cX6p7d=X;I{`M1+7x&;rdr;bjoNWhq2nOOqUMm|G>TCX2JLR$&2@=l?WJdF*{*@w4FD{1Xoz2joeAqj_TkyR@17W7Qr!SlcpDzPAL(P?$2HB2WK3Fdo4r{6t!`sC#4XfQfDJsFM$$4~D59VvF_%DTiwd9t5U)O~m` zKJ0kU@OGC33CbBbDmUT}SPo{|w51x)|B+aIypvyy6GOyDZ3?s4LD+rBV2k11NU%Z2 zwRj+x%%FOfvL~z|8AT}ohw47_4*`$FOESf<7l4)kNyP3>3h^DWkv`|1tui)YR zk3W9A`}F?D18Ne#fwAOlwr2jLzkNnc@i*^w(T_sN9MJd(g{x8>CYq8QrCcPZ!+f@# z5Lor@9<$=_Ibrq;E(}gs=w9JO{~R?h>q~7Ll-^b~aEk27mk=PZ<0hhm3IFuiR9cB! zB@fHg1^k;5lvIs+D9m;=;UL>HbaRNRwGfZ2A z(kYs&nR}kLRDHcdvfUt+V!)8RjSZW1EOXojvIQ)8l7?iQK%G0po?1g@)>|!ZucDyU z^N7o1J~fu+##X3osWco%4b+j69$ax1?mg*Ji!N*@E9&LteU$(~eAKOvvel&p^I~I4 z+bqc4LY0vF5v0N~u8Y%js-eEGu*J+KauPE%nXWZQ6e(D)0L{=RZmv>|_~ziNckh4w z$~eu^!T4qc6@e8Cpnvhrxf#9@xVn`^g&rF)fzKRBxB{k>abd+&SUqA2+|lGM&pYh5 z-H1aIA_|c5Vm-T6fG~EoqYdln6{nosIUKDNwbxRYmR=l=M2+plDS}yu@HL)6wEhg= z49>Z?-&cXcEK|R@8$57eI6~j&jCMWUt{q>{A+KPeonsUbM^`=&nXgJ>Y3Z+3cI&2W z&gy0qFf*6xT)3jr^})R+mDFdexuM#D3yA#i` zD+8*=uT!pz>0)hao4Q3RQc9SN?wPH%MUPh0 zrD0}VnnTd_x6tMUGK}3h+AHkz^oDR_#Kkk-gXu&5lQ6R=#s`ls>j)oycX$I$CS58) z&Ol7ya#mewafH20W0JfK9n7mPeU|Vl;A(x<^?}DxRFoIH(qKm@_;c1vUh00`))G+; z+cJw)Ymf*(+QZHPlB+H(IzWa=ol~~p!HG#u-F6I?TP;R>_48M_DzmvUp`Fp6AiH6+ zh@Ciu&jNwbu~|+&f-X^1k}Ui3;ciuD2OU9G#^>v;0L5vdHd$wUDle^aR}0zAhxt_#j~Um za{`78!&P|ums2o6T(SlGyzK;8kYG}LI#uc&B8UV)OwXW3kq;R-14}bLI(*`oIkEq< zb$D5(ronMSIPhmf&FFr7Oh(dr^+sd7$-vCr?~6y>k7cVcY0LOqiGqQr6bF6hwtJtNW=;^x&wN}66xm;PPq)O5{!mcm`o)*R3>$kenO z&>e_e8^o}|HR8D#^`7>`V|m(yIW*_qgVK)djP$uP)%=LXmBp57U(%JH zLgLaEn2ivEWXx}G0f0^GS|kVuT+2F_-1DRln;aqMPvhky<47n z#(fYgr^0dF2kE)hV}vo(3^185;8ybA{|#Q?_uWbohWCFB^W5G$W17u>H2LeU&mgFh zEhO{C^jBhv;zElh^4K!bChL94Zg$4#$hqNsHsD`3Bz&o*W-NJsKS!o(_k@(guOO1A7l-@c7$PrfK{0pHT)0 zf3wQUxx)gn8qPqfMDUGzr}%v6Ey+CbPn8Np8@7;Fm=nRjYLX#rgQygc1x$DQ?KHU`Po!{z zV>S~sqy%baurqs+@f&G`?(gt{WD=oDnRhwF=n)7jxg*rOIdp6=`*v_VotE+3l0GRd zhhr)wztmVAtMgQpO0^&}U$KL47}g1ApNjpW-BuSmI|O-QUx~QTt*Avl{<`gpNm@oav4Tt#-GgJW} zr{O3aca1y>?&OLb--bXFqv=IHOijqsb=YQ{orj?e*V_+}T|?yWw?MRdYOyjt*m*DV z0ZHUEOp4RMIPexLU(BelTVj8qlEPj$g_a6EXwghS^pX1FS~c7CcCf!}dvrFX{{8ID zr|Zvu{~LCZw|g5@(4JYl;`~ja>#Iq%fSU*DETV)q4wOm^k}})`?WDjD?@T3;uc5$+ zYdIjnLhW=~fDU)Q=+q6=>{8I4-QKKHSp}z?b)SYC|A0pkyO_IoeAzhGw=v!|K@r27 z%Q5svB|U5-Hj!VWj$&a#JD!ZLm?hjLdMt$12$>~lW<|UpqTp`l3*n7$d1k;EGN@hw zyZLsym5fYU(W#{tA175DvVVD&A=k{oZI!ErFNX;lW+AOtx)Ms;?Y@`kt!+{)4oUxj zO1uM=IT!D4@MgrGje5VKp}~F(g)Rd!S!Dqhu9fGxF-tAIP2$|Z6@bd17f7SVsrzqz zjkYI*o1(H+UZeRIC<-q_VQbTiN!sYgKJBgqU>3W`(@*^ak`41;L7V?_m{R&^Ll6#f zJ^g+_M7${#<)A47h@iO$q)KgKt#I<7W|`i-`r*@?e;_6K@*j5}rXSw?<4&95y>C7; z>NIr;zrli18dV8+TBC&6+koHh)qWAUmR1{eJzF6#S#_;~QJ|9rchIttTwY$?Tp|UV z*gsk6nhugD@T;mKc08mVr3e+Qli~)>v z?v>_Xc+{&oNX@P!(zneJZ{ez!bnQ5h&vY7JtH`1BFl`6OKK+#15&zU*QNA&CNk>HO zb~@VZ17SNFIEmt(LDH!P1@lo~YQ~%^Y@}|A$1dxa_>69|?r=JA_UhxE6f&cr1&X|& zie^+TKIG0_JKv7C>3PBjVgBqz7P(U}Q=)1#;9~>lcw~+#B>Y0}5H^n_2if$(?1aV+ z2sEe40d4nwYoSILR_LHAZzSohpDUIC^5BNnWnMxlZ3=UmRG&s<*35a`#Id-@C z;LL)Pg&Bv>0bRn+#k`JK7>cnQAY!4BgE)CAg?yxTeY){a6vwpCv?lW5e$d!nDg>k3 zIG2_R1}WXNc2Go6DAA&Jhxoac$kOiy+3xaWLJ+SJ*@+_xxv-FW*sNy?R4=QPQ{Qj zxi$J!`%)3N)TiO})5UP5Wkl>Z2m89$JsPa7bym$4VixLClov(dU8VYmNOOVA6#J6& zbvq^eL$|{^(<1prz@#^8GAfwLSP>^Yk%qn_>$~4q%I`UzuP+b@DMgh*SJ@(H4!Q*? zXD`{ZK23#Gi&}Ih(>-({z_0W;vtUzg;UO=Kx`YiByQ8mVX)TJ}00fJo`cG zbZ3xOl-!d}l-!fgkBbCk#)K1-=Z%1?UPYpHT|f|X9Ke5|%6Xt`+j<;ftS#7*6doW3 z0z4;ADxro>_FyS?r_gWc^ip_82|`1dvlBpL$0hjs>&Z*(ga6_dKx|yhU*ZU!TWMi< zTe57A-G!eq7Ot0Bw^BYKK3R-hwg!Q5Q|Sa}5iqrj=PGk-n|C2iSLS}Smm#u0ZHQLn3aWl znghcuCojNQVxp?j@;jVFDd3zbzFphNv&%!}a?h&m$65Dj3j{17pL@=abg9qbO%ZJ0 z7O10H79b zv=kLEn^c75ho4`4cw{7UpllW$lG^HY;P>=t9!hmuZXI}I?I;zGa6?Br1H=_v0omg^ z@H`|ONEwyT+v?JL3=4wd%}}AuSqW8uTcQ?+9_9fX4eyTN4N-33XzD~0`X*xzk5yzG zGF(l4{N`2-#^~nV?=?l1-I|*)KA*y{xs<%c8z|hMjZ++!mYqO5ne5fwvAWx<(eU!{ zx8D*>ATA>_c-yrn!g6-+*uDUq5<+IlJ30TCD*pJP0#{Qqk;Rb;pRXD{A;6g*QZjnI z12k(xCfkCeRSPk_@$P-H!f~$zAvPSa12j5pRbp<6W76$?w290@TP#K1d?9;B;(LbZ z8$@U-W2q6ms!5my0@QQ})zZO_Z|>f{W=!MfJL&8)k@mK)8x3jx@P~$X%8Z*^^jaP< z!!A}0)EK|1nAL83Dm|mpX;;YR!dwaN5yJeataFv(aH%)b%4g_s|3AHy-UePDqhRC}6s992vR^-lr9(*+N z9(Gi%re!hFRhmpb-&`KRWAS{l73Ce!Oq*}PYN7MnKU0qv={>5@A`opA_0KO~0u*jSy%!fnYGJB3`LENp~ z)IZ++18(a48XiG2GytHHmJFF6nSzAaOadQNhIo((7gQpV@0X)0*@5&TJ|(5qf*zyH zyFqf8Q8+9IK?_QMkubFw#^jNLPdtew{&9|#W^H3f>u&9_F+3)~YE~AeMm7lR3u%IX z5MK7Z&Dk@q;N%M=JF=)@dmJAZMfrWSZMSH*y3z-P z>f1br(v|QoPaeZsq5ikBeT6+>gpH<+w;#e=Jp>8{Q)Qgg`TE}eI%5)|QD(b~#rZ`~ z+9Zoqu{}?gkcjmt8q#+K3x{?-X4)xnAX~adc&WW3w&Ra60AYQ#Ag8t zy0_K0CnH3aw1gGo23m?nYt$#;VO!+u=wJPI*CS>q9>Yos#WW&ikPHbZbAdFc6{+4c z#vldjq0I;XMJ@$Uk#Tu$)6`nLb~@FEW1i~3=Fm{@QOg0`seJprf@y9v1`pBA^TMBv#HSjdlU=ql2|0DPM|izn+?B2_9LLdoM98N*H78v)LNj zBz;Pn6;7!pRlhk-izXgJ^l~vn^;U>AnAuT*E+;ryczCTB=dcAtLUhW!()v-pU%vp8 zfgfvBJr(CyTtS6aj0=5TG7+Y`TH_1@fxqbS=3wnLR9Y}{L<1Jd5uJhcDX7LCYEi0l z;{n_mM8PlNbfaOuMlO964p8MFtx|p(xycTT(dpJrg@gtVOroSxX!9l=NN$fC!Bj{b z+oZ$WYO}HVJV8t;g^>_oaMD76u_@rZA|1xX^Om+tlwOOrMum8|ic^$dB7+kgB({@_ zSY0e`(nr%37dRX14o9Z6=Huz}NU6QKMg2tw--_ujd?7lN<$FM6L2)1C=%Yw7>LZ-H zF^XKtO$S3?3ls8qlHK6?Kr0Vj{fJ-SWH+~J(|Ae7fNuS0fSyVfNiF;r`buf)pg};S z(-@3ncs5pvn~Mw69>dvDKF2XS>|w)DBX>HO&CBotg)r(q;5a{9vlas~nVc{2*;17#^7r6*1)Qd4N4Y z)GtXcr`A2;AtMX`vQCS@U+`K09P?(bZ;%zpszIl7kNV`#QA&8DZx@fY zKJy)=Lminj;Ak1|p%&?6)adkUl49xLECWsY!fhv^CZduPoN2`I$kFf}{i3QycQJg2 zz2%1>BOSQOn0lrIoj!*JJWj!npqi$J2hI%-uWq%KqO&Tu0`?ic)aXrM0F*6w!}Evt zv4Fk(0+mX+)Y2+Z%j6$GMCUnEMOMPNN+F32-~M@}xpABZ$lPIfXohpo!qUMZbw>*m z1S{C$)}mQ}C3>|_9@IV-tXzwYovk|=!fb?VlihPHuJk^_66Kij^&Ex>HW4W~r_kyY z@ELd*slmDx?s^XNbt6_>F-}yxet)xo!R4CykWlqYP|PEN8p`{n7VFfT3ql6ra89qu z@k_^!$vYL+;C^7nF{}GZa%>@I)W{Og-S2Mv2=QmXAPnuprvjRg$pwgz;e9T}1C-ht zgbSAKfNsMy2zG@~hB;aRREb7Htq)w1MZuuzLntB;djTEYx~!wpez7X6p-2uOa)J1 zKmZdwA~*Fd8K>R0IYJ_%qKG~B1Rr|?Fs)}_bZF`ZZCsdDX+MX3!d~_6?(X&OpEOYH z2>+5G?~&Gf`w1jG{mhu;aVA4l_fo(KcobIpirHd;sLe=>lb5d+BYvOD@C-cxa|FDJag$i5(pgrvYB8p*#!_mmrdy zea7r7DV3XT>7;}@fO>#GHqfKDp`z0**bpmJct%@jWyV64*3IRZDjEUlBg-(3p`gGk z;bM2-6SG^7r^vpwYle@)8dmdox!Ply*F{H7pKlZy2|BT%Y|!F_C|EXtCC+zg6feOE z|7TMiU$xl*&QE@fBLoPvxaFy zjN5>jpvF6OpN4y&E1<$m?9PyuWut_hIs;q-Og0825_MC9WcsyGSF|x5)Fd(5&gir{ zeLA5~hn6Y0<1SeT0d{i*a3)4l6~c1{<`_jrWq_G7qyrbQj_R-wpIf#pEFRFA!4e6Q zR>i+N!|<*H#Hj^PobJ;o>Dny>FoUuYcv6Y>3kb@HplAiccAjeH9DEi&L_xasv#V}K zKoy^m4-04E0v?|P5Qc`kGa>QUrBiKJF6rsT8e$J8lN)^EYO`SGw;gaGl%}UQs2&!O ziR2+II4pa#?Uq0vIa1Hp%bS%+waTdAUTy6kve?w#4}f} zz8wvq)HUa`QO!d-k|E4s!H`m~;xJ9oRLG#?o9*&!d^26cqbXvRGGH?)%eCN-@-%gg zZD!)g$ca1kDm!y?U|Fkq5(v~Op@L71ZNy=z9UtO|fBzxwAMl6^g$MEfORtckS^FcT z9WJ%M^~6K<4A707tLFs=)+!?ykS3B$?RI&EJQL)fMnkx^>d{R42U(?1nNFzD4Aehvf&%(v1Q}Fk1MeB)&QnE4+ziRmaSZsMz0Bw zt3`)oIQ(*=ecetTX|P1t-FA1v-65-o1Skc@#@*N}(^WW{>JkWFqmcW2#dx3W#?mBF z-HwlAwd!~e6^YoXq_;V_Cn?Jb!rEMpG9jg|L@yA)c@$g`tV81fydOW4y1Z;KwILXn z;vS$p^DRh<^9S!JoDRPHCbP$U`FJcggOuzJof34pysewdZk=b)Ta;aE%C+>h$i~xA|CCp`bAU)e&8h;AqmN2a;j>5JY>%dPS zAI-n8ZH3K(&WeESob6K=z!?Qh!Z{YH3)@0Ylj%#i#`cU#HauYVFW{;4`Oq9i=?LdF z4C9yb0)djmPSf&kJF&F9nT~(dBIW|*vRfcdpaML5I>4 z9Z*>$^Qip*p4U(g$Q6hkmF^ot9c&R}xo=nzR|!T%P5~|nI`c%aAbPaan7A-gP0vBA zoC64HK3`(~J$Hl@l1RdXHyDIa0)e;D5YB`TI}#$?s`eX%O(QqpOD)!Ka|Obze-0&5 z#P#lw`_z_-kVnc4VV2YwGG&8NeezRxWN{+xm}KX>xK8f3SV;hSL^=Sf;eN+Lhc3{n z=AqpLKy7*8^*juUIr8wg3vh(^r>U+4vq5N;Vjxl4lyKk?;&g6VebO~^%~zxEM&BKN z)xx!-7N*q+#&=KPs8)$c1@h_iJ%Xkm%+>Ph3ad+%BcSm8-~ayp-ERA@U+<=OKcdQo zwn{~FB+^Tczk%m$t;!%e}VjL+j@3dR&UVxo{<%ksb3DC>46e{_=g@0Y-YlT#fLlVD?YRP+%_; zw-1Mk1MaO`a!Z)3hH3B2j!aVr3X$Bdaqwi+i%ab{?26xq^Xtio?=pe#93FeTa3Hb> zVSKfuy5%Y*k7k%mAZAz3d#-iEQ9#e$oFs|jIuLX;**&|XvxJ+Y2PkRJ;3rC9M&6Uo zj-bWhWF~etiU$8!0p09syh4(27NP$BW;}(U=R4#~pAt{i19Z-*NC6&MLhOZLt-qm! ziVe$*C{O?9?$ctj`f&I0hgZz#V=Rw4$OKQac0`aJwyky)eyh_V7>|MGr!e{!P}b?w zzFK)(#yGX#pp8xuP+li-xAW{kyVrL=BB|zU=sP&j6}&q5@=7NO!t!63#PVDuiCht` zA7w5NwJnqbW2~7G3_8+KAp?)Y* zvZS^URItIUg#`rFE3bAt9}yozHK70YBJ3ETN%GLHCez)RsZQ?JcYlBX>F)N`FL$4R zwOl9Bg)As#r(xBWrQ)zsB8sQ)jIiY+Msbb2PcsSnZjb zKosh&r0Jgi?%Rg$(p%nHy)OpnR&12zCOBHmoAN^Y%|mQ@HaKs>nG$MU%6W7h5Q4xw zr5bd2N3%<#mWeS?VLtNYy{kT9QE0R9bWfCU1(c13h*^O?$pd&XWT+|H@S$n7ol|e= z`uc0q7?P0=Ck672jJG72P#~X?HJlVcufO^K6eu8N+{2EvG z46!gIv4LdiiU?j%Siyhm-Nr&P9Q*2O?U4zVLY9kk2H&$A(lrn`(WV0bb@~Jj=8>|T z46n4^`7$jkV)_s9HuFHLc{}1b>()9FQ4pgsd=RNBZ>Pc!RSOl{V1tt4*GW+^&7R&O zc71xjJ*&=Xw&bfz^FXk%wC4;sg&QQira`fg)&G)9u)z{bxLcqaIf6S5_>Y8c`++^+ zcR=5Qx@rvm7#v>w)%l^lBOV^|3=b)NY7o;>5w>Ak?*c@JR~-+48p=7qmi|jBA`bp% z6%qZmWX>J!E~Zqbgf!#V`T#H^xa=25?U5KhGV`X6}w@PXNl9(eu{3V(_@3|s}M1QG|4;tD&j zM&_!#GLXk2yBZv1&NDui4H{K)gsx|Bj?lCW;v@>U;T}Gt>P`4c$~P0Zkmyt_@I0u)+MV-$XrGTAp_Eze-S-E{0|% zQgaGhyU~Z&yU9yP;z0epgzTtGe<>GGi(#1a|DHEOe*XU@XN39%&bHv|i2s1Eaezx- zgkm%mf!cty@)!$GG+XYbe{(d%6jtW?Qe||IL>9_+@&U++bFD03(6E=BK-n(96qG0v zBFwSw_DXpuBB!CT+)ZxQYowbL<0eZ9q4h6&gvU-Fi50Potl40cfQsU0prhj2(SlkA znXRHU2&AhxgX;c0Rlo(MIr!oIyN{oms$#B>VWC{>WntaAY_5Tbj8WV5k&$ROP0>@4(?r~K zavAG#-Frq9A|#Z8Lu2Aon5+AKyD2QL{5y$jNDQCQ&JLtt$)Tl9s+%xB)vb^(%fZ3x z_n(n{^6{RUdQc`hV9Ab5`xKJHJ`*QoKfX3Tn^tC7uT1SJMG)aJ-R8L?90L09rFNp{ zPHVP|`x?=Hr^Bs7X?|r1&;4)Y2oSB_I~hMCfK$YhqNG@m&O|CmO=YBOcZVrg^^9<& z#HAtgVIsMqEl`EZrEtIggSr-?H$LHTk5J#~!+0}HBfJh@U3oJ$j#x3Py<>dlv;sU| zUT%?pYy)nY&Kx;GfTD?*G@Ll6uukA6SSMhbkPSh$dZ={}TU^|LFCzS6-exZ4L}7fLs?8eooGT6;@r%jCQ3&crB_aYi9(MZ`spzF?ZYPke~UFiaG84#Oaq zg=*bs-8Si$CQ1$fM*B@Syw6(oNNNns#E76h%Cyk7hPj@QF1ef{HTLOpmAxzMQtzgQ z3585*Mz^RW&Vf`QxD#pBrAZQ@rV8AEO7afWtX`Zn{A+~|s&ijVe7w~6n1kWz-p6tlt=>nMzkYi2_sQG$Km4+}dwU0^-1~PW>ryBy z$_?vPauC|g=gpmAhx^TF$OIPIX@vgq8J9SJl|m*OdI4zE)%_Jbxe~2Z-cpF-t#?v< zFATQGZ^8&)PMtGxY+9A9blHPsib_P5k#oNZLW|#J!7^B4s(@SX>K&q2LgBNXu9$~v zc6rEzU+D^Zv`{?|-}S2=B*yMfBMCva)hRU%)Nt_pn6I#-m~YD7bcm3G@*2(;u<+tr z%q1j#XO9pa2CfLm8nfUmu5XqIynu>XnkFq)rz;_}2%B`=ZF(nyXhC+m^s;|IIBznY z2L8j++MWrqER&1hh$op^0{o9#m&qA%za!p9wx+R2JUe7LBRLgL6uQI;f6^E8!ot%3@*r*yERd8ojst*1{k$LdR zkM;j9SyCA*e!54zXm^P(WvNm3FriLL zyXyW_*U#a?3v=A+!<+XX-hBEO5NEqdhf;11p1ubvri$Wl=i2=`kdE1`Fgdo`>0VhO zkKCQ?=b|4nwSfzFpWAe)ufYQ0HB=Z*2GY57-kpme$-^Ko^b zhHEPrrUb!{QJHp5hz?}@NRFjo_molvX$y|b_sT96?1i?psIZE<3m=n06%#Dh!`2Tf z*co7wIAz!?@s|TUdJ_dYp3Pq3>-;ai!ElYVICS;1f{2qfGUv71KD_@`7?>v%#l39< z5_2JF@g7?ma%YUeyt;PFWR0~PJ(}JI2b%Het1Y?eR$MApgh8pTIBcoY3Jvin)@{hu z59V?R6+8+Ul>YjyF3pu-%M47{%Z@9&3q$xk8xgO~EyO3#RR z_$U&=2?>C~1*=_Wl7);$pd;@K8z|!>klfbIk+yG^t2@Pl-_BW6En~%`k{O{(UKfif2Yyu}X&1MHSHaehR4hli=!#wG0; zJUrO<5l;|nlHPZQ%5k779?CWvFx6sX_*%@Ba^wsfVTGbW)2ghYzu|>Yh{0XAX6*J1 z5|9SR0v-eWNrin<1qss8&AI}|N~N;iGkm-19w}q67KWLFKPnQZ8$lq^+-#uU zYpq+mS4)=>5?8vZFZD7*_?W3;nI_}a_6D_1JY^yfW0Bh;0*H3Va}gtmQ(wRTFY(77 zVA*;^@r=hpwdpaBah&(P_@2A;kmCJB3JE7bzd!dFW7kz=j-b`U!!~A`$^FWl-u_2K zWJu%y6(P8+yWQ&5Pgakn)wVnRo9QEgKfni>*z2xlrV5895h&Io`pk(pUl(MC-hiI^ zKqa;9gg^{_0Y(e9oYu9rRr(83NEEU!eyfkC73*HAiTnt^STgI5)J1Wjox8gN4}Q744ZSAf*ssrL&8)YXb6@Xa+3OD5b63-s zQliZU0=&V$uQB~|vkvc=6beMSuVja*gO2WHxlq8c=Ew-e01jYZI6(_-#YH+(*Gn8Y zWQDoFIQitYsHCh|684M?fxn&4;dJ~&5p4V_(on83XsEV|ri)7VLDyKaai_aaj}L#F zOb7~~-7RHCQ{cQ#C+;8uBgKaZ0V6s-44ybVpXmaeDtKloD;^kQz_o$;@~WfU5tD8` zf+FG}sJ!{#N=OMmK+JF@6fp#T7|8Y`zbQBt#C5`jV3T3vOJvM09eYTmP+>aQtTGQa zAgU{Pu-|PvW?-n05wv`l6g8ZU_9!u6~i!DDdo?(P2 zASdr&yGtx#a$)0o2J&|7O-7*V*WwH4dkiWCtl&*O13VF~MLs53^Z6CDath{Ybu5;L zg(s0=mP4<}V#kvO%K7cChBQ2mWMf*ixbjVfrVqX@aC>Lgdg5h=UK2b}G#gr-IBk^n zN&%03D7kp$W)lsSV?8|Oz_K!0!^wj-f@m=|2nvYhSrYnaCm3TM%-0&>_pFE9loz3C z6Kf7mXi}+FWGQwnsXF!jSa6hM(&>}K4ZJ^k`%_lMHA$o3?p0)M^_F& zJ)UvY&nb&D0mLsPkma1m`H3X#hNb<1)zab#SXnvBCqFwn&Fd~0*Mt>}0@^_b?Kg&1 zp0N;6RySKYg$R0-QZFXnkP6&40^gl7>vWGxyGydk7)I>n`FwFnAGP!%p69+EydW1S zD71jJ4)DhxZ=eR`T5fJvSBsV#fTWbZ4ni=%OxYS-z4(Iuex9tM64HhW!xwap5(|-B z*dwJr37`0|;1)#9!6-04q@=TrHinL!0x%WcA*3-;giO&OBIy#gT;u96S{!|HI_Mt* zn=4F@TnFj3At+IKpzn_cDjCscBoqSs=MNu0UEaO>>C?}B-hKFJL>1jo z0Bt?K0^MLHHghB^!nze{UV!$@Da2CxMAa2$T0>D7ltC4;&>@eItc)jv%_Ry*y*iOD z-y;?}M!P?B(V>ANyM^e`1w@I|Nwn~OtrO24J`n^!h8?2=s*C{4G%HlRc9|8tV36Tl z;bw<)LAygnZUb;Wy5c5UE~NSAz-;6%kR_(F&Fb3GEosezB5mIYY!2?V%)j?Y!#x8G zbjNe>TcETRdjqloJniYO%+`{x_|>7cfaBqFaL+m@#enCOr%B0?>~ z-PG(MMa2V3^bqTEN@` z8-uAtE9fp*VQ$5qMW>X~4FbmWDmSa8-Q{8JL@;7QN><^bEkakdY-wFo{5L z7^ZsS@)tF?>f9uq;8njD$d{Q#g%ezuGFHnk^wlz!U}ZO`FrX;<=?sOrXj@5*78q*J zaZwvmy})P472@Fl!m_l^xQm6TvsKXm?6RhNkq0RJ-IWi>5*ATUvPGQFaT9X0t~A*a zfaRFV_qesD?$cfnyvR5K_$H&PN?+gV(r_&l?ceKx`@p&}oXPyTH@vA1dV9`VDmQTX%HRlR8%@Z~!xL?{B=d5CfrZlv-P!pVOsTkq+=BEtqTJdAQ{3pM zcAxM-vnli_Z53$Mr3q?-&29`ON-_{k6r2E8E$lK9A8jTJ+UFIJ0<>4O%Wlv1Fe8(t z8G$dFTZ$xovUoFab?{ATYYm!wocp@LoNkEBl*41Ux>#IZE>;^zm917Z+QD;BZ0&Rc zSy)@S3n2HH3s7*%30|egqCAz>0x5lhDRIn=H5=-u?FwS|%#5GfwGCNRy1FWp&f!Y^ zgjLA?EXye~iKodcnl({D3Ktj(1pEuNi7llWbN*C zRVIMRBtTf&Y@g*w@25<&f+T7X_V~{|J^(^ZqUcoWwR5Akd-c6y{^`SH)&)}&6+p6) zgHzGzUnYVenXCxS06nNY9wCvDuY`h}!~M#HGPHvTK$irfCXMyS!SM9c`@!+kjHJZ{ z*wMw#EvMLw8l%*G256ixGV{H@qS)YK!*{!6qSUK$>LBw(f+r)f zi@@F8g2non*twgQGJA>*%{IqUQgh7J)1p$^0Y}Kaa2$a5rrThxJ8n$ z@$M&zIro$!qF*udW!sXodzjRibKV@mrt2V~pDNz)OrlJgVy& z{q2`uKQ&+d!MfARQfEN466OuA7@7K%Aw-nJwMSKlA12b{%@rK|#4Ujo8WQg|>6Oee zi=*XsyvehpQ*CFf`4a6?V2}p^&v$m)7avx1YA%uuaD(T{mBU88;C&->tD|qIQ`V?b zW?lknL&iqH0)#kSnVWE25!{kkhxdXRL@ZtXMmv9;srBk@L=DO!025-JMZg<;J3)^3 zNH(pW1Qy^P5?J83o&$`7U{Sb9m|fP{bMl4c83|r9_{o9wKNtTL7d{87VTga_8NX|C zUZ=>9+c3csb#uWeLoavn>fLK*BIq{ZxU2LulP4qM5Zc2P)C33Lj-G_{6B4D_!Od?k z`RtXA0+7N*WVMFc-&a3EsGUwx4~A$PjnEE&u5lCSI}bA_|0Fd`T)0C$J@=undY*$y z_6*2@V|xbV$g@2Ia_HNh0fUq9Fng#% z@wcb9mU0KT?eeUZCXL-%dmyIE#rZYxTdPtoB&%0%-~7ZB5C=yTn8?+q2liMFMLi zuN{z<#E1eR01SxG#k?A(DBS?CL+rms^&c!g^v{SqdiCyyJ4Qwfn*T-`Eayd-sxE2@ z6w(p)-$Nnt!0BwdHE|5Dm#whX=RiZbxKxaF)eOA@{DX*9{<8TVX!x0siT~CjwPVPD zghiBEPMAnkA)X+)e{zAnEh`8e;REBaMpDNUr_-&k(^i2-;LT?*+hwR*opu9&Yjd%f zLxYJxslmo~od`W7u(v*$2%*rw z_eG=Di$=wZ`j1xMx*WBha>S?P&4)Z6aA0vFrVohJPhDs8A_MWI3tpBNfa!;A{mY^q zR!Yinh5M(K*^ESADsz<$vhu2fZ^HSTqI?eH04|%Kner<8Sm&mE#)w*-`5S{X6jrI# zr#faS`9h`t+hdliHK^uA@3AnZLj^3`JGQ{ldx>PbFWEC;a7Iyy;7?kZ&O3Fqb5YZl zSr;yxZtrD9)K=$W8FpEzZQRyTIog;Or>_Ut!AP}Oowh*S?yB`Lv+J{)`Q<8@ZhKHo z2^~O8Z__*8KKu+t>3{5$Sz!I5POE);d2`7-15#61$(LcbXEV-`vxhPC7U_TI^sa0~u zh9L9e+G89nc|UexUjn&ym;5^MG0aeL_uZ_vkhE5 z12kiPFPJnkYK4OklLnCcH6&pNy0cXKhEU%_yQXBaoW_%_Zq}sE25WSND9QX&+YZ)D zvO?%rb&*IfXxZe5(m@HYL6=jfzDqB6hbU9;)f?CCH!ufLMKLPqiy>#l9WVI!RC#kD}kQ99%(O^&C+pAN)* z4zKd-4JFa3<=!jWbhvQ>U?C{sDxT*@n_4qT&EUW+Exv-_lcg~=1Iqv;p(r+;Nt==A z^kF>JO9)F24L|*R(8@A~g_6C=w6@ig5U=Q^A4~j>wRS#>_%XSB6r;4-Z4i=NZ49ny zSb=EiFbjWo#WGX7PIIYmqrxc4A$lkwFBN?UyIpcKA)E)n!1{*vRYn*4TBEr|rdn#w zu$yuhQs=jS-mH=Mfw5EG0|CI?FBemmXa$@49M~<&N5IY``MP&Z?^0x-^@VJ&6$a== zLQJ8GgYW0}9f)f8>&CpZfR4nl+nL?NsdpUccxREi(}3`B4*(Get3H5R(s)quD-QMs zu}Kj2Eh3=ZDx|CxN2vI+$Z&`Y0VMMcqzG|*W^>^7Nxn!+h}`9HY5N4JoN;`hl zuR|c)g1OzglRZ&HXBMfp$G%yJjWP9}d0T*IaPe4HJHS5OlA+)=^A_r3$h@&#H0&}h zB*KA_Arz;A^}5E?sl$_gx4pQzI&)QkyzaN93qCHiaAK+C!GKg8(*=UZCypxrHSSBQ53GTHxBBp zPX7{s*}j@0?XH^h0b)KJ)y$8Yv;opkn7^{L2aJTVFl=iyodR36@02JZDxDlPh1_)F z<;TpGrYcpe)1M#)>)^7T(#r5ELxJ>JNGimG#n!?SFCeJ;wI;r-u-vxB7aau{C<72Z z?rrPgaNjunLV6yngV#!%Co%#=hjR^gK0FHCD|XuMD$9zx1nt4} zNKubCM7RNDu_KGOI`v6Hyp)#=0~em4*5fi0TyG$x;Xl3#zA{3W5o#uP%VL>ZoqA8{ zOLDuI!slq$V86K|&~Gm8p1atUqGh6zTgqzf-eIbbg!q2h9p(s zkOhv4GLe2QC=z2QV=K_qIaKy?(O0qxT5L(@Ic z-^q8D%zlL5*WJD`#7U)oVK0uiND^rhLz3|Olv|AlE{rG^EtjqYY2qTOO=HfWVeKJ? zDM*22UHW)Fj;;aQRCL3+kfI}?4zyYdRg19$7@GFOV!g3rhlgX3x}bjyMq*Cmf#?5< zYcL_MR02gxF7m|=wR`pY#0A5H#$9${`?84gh_uL;iTlN9gVZn+_m8p7NL*+CAS4k( zUg!q~fu(1yC3Cxv;YXv3FYZ=t|*({HmbhVAv-FXq^dUupoAhpzW+CD{}E{wN*@yONTp_R|KFvP%XP2ZGf`596v`c zL5MY&&uop@HLxjKZ&ni6z!i^KS*iy3KhzB=JkV%5u&hN3+{_V66)TWg_X7<>66MJn zNgC{)vXE+zKo|imVfH7dLUn9VdxAZ{K;Q_EI%wq#VM)bIP^O<ximEOWkCccP_nuVW?ENs zugKnSD3o1e2vgvJKBLDDYfDkpvHox;7`Q^gUWAWnN{!k8eOA8$U zE?HtoL5S(M)5Y%az~6rEzu*QZnSl;?X2^Fc#Vw?;1)XXN29)#QD(>+y`r6PoSgy%4 zgb*91#gPPr)t;2zAP5s4EYvQE)!U<%kp{R{5*hbz1}$=dex{eV&a&q7to%!UmRD2e z}Z|B|_LjPcFT*zLp}Fn_`z z)5*G_)k?u>^?9oMGWjDP$vUmb*;CN73F#T~1t3F~L4kv5(Sm+1C-)J~Psplch&;R$ zOf`sb+&CAfm!6jNKk;o=y6`iCYkxErtpvd>bfi@rf( zGyh?sF@8Fi>n}R3)%SBA?Jj$AQP0&~)lk|(PxQZfyOrdiC_I_Lr=mR+OhtFL5=5>I+-acq|Kw$t~>PAEb% zAdMjCu)fs8ePvC5wZ|~5=XOVgIgVgLagl$quxIJ4u(EKWKt=zNo-$0!^scjq+GVs=ZLObuUnVde0Z#o~NjI|UIR80&F7t+U=#Y%#MS~UYg zT$(vEkih?_f8yR*ESRSy!AkY(Y>IxIB@BZ~0X!5bZgO$SsHe9-h^?h?0a<5w*<@Dm z+fb}TtC(**1}=+oQ0}ycnAquHa(5(6LLo)w%ilF4D(yL;bhCTsN!wg0C{d0=k?$rjO z5wHl#5B3`k%|Rx|L^%%UnK!aYKmZ7HKSrrY$sX;vJ;1f&oPjcCMGc)29y^_yA149S z7)k1oFV7^wK$&PT9-BT%P{%^L&}TgLqc4^SSd>ZW$yUIaFgZJ1VSncaA=zW04Hu6i$SW)|qKw*XLsWj|p`#c|{nWYH7DM#!+ezt#r zhzyW4vPXDSST?aA97u&QgQTf?@Tie|jMHVC0hHr+NEwbZ&K^ZE!7~XfJpoU; zH?XAD`3Rv(Q-r_oE-ZB&mcFXkcc^1w75kheGezz2w9x{^mG2(?{CeVz2#~XDI!df1 z>LV)xg5B7PsC$$0`-FOj7mT1PyW`>C=@xDhdM#OESIRW5g*3U>&trEqHD6;pUuMz2-s5WHaGCrcAZMuQ_c<_GgBR z$Q-Ii38{FYcv`HIUJT-w8Ii6Im6l$)$AndYSAM6A0#pv57KILpyL?o_6|^f>I2?mY zYhsC?49R6CJpzN3cA(Hz0(o*{EFA$DmHB4MSgz1qbWmyk0JEszEFj;*`nUO;`Fk^? zOr|iSq&CM+$Q;7Y1yOTa<`ppwPvzcX|AoL+gA|`=d$#`G6m{nhx)eM>k%KWd{Xsl)kOLY%y#qJ?By&-V?*^F za2buSu;2+OIBi;ki=8Y&c6ZwO|=yqPrzotACK3` z6^~~!s^9?)4Tm6ZNWbpfYJaajOOOfPaX{a8xZzagb=sZU8#NZ83d!YkkHe5V?-^h! z#(Z-&Ur=1vXAa1i3JG)7w~(Vfr)Dx(c;X7)3Vqw)NY#9E><(e2XwOoj)U3dVZp^Ua zNUlK!!e4K-6@09&5=fb3I3i+qUzwI*tw)8Uus3uC*D^C(EDW9)7QX zfO9OUZb*W;!@uDe`-WbLquqs<(>XL;DmO@-f{=JoiX!3B z6)b+Fq#-m1m_gBSg=9|u`nY}b!!O8LgG_pOtGiO*lbfNrc!8oCpPB<{bWN`kNHoYv ziBKAs6A??&=lDLb&%{B0$n(AO*MEXn=M>L}M9;RgR9Z6ZLGy5)IN0clpRER3PsL|L z!X=VpFbvY_BEd`(Dq`YWI0rDQa(8wPt00Ja;~Y!b7mj)8#^kiNPxiRHn@myw%A@fX zDYvN6Kw^a*xD~Q4#>L3A5-EV1Uq8J0`>T(?{4svOlC|6YboU9`e`IRkJYzMG-R@)2 zFhEOwtXLu_6~qv=hx)^_A&Yh_9)Q9CJG@>(+t@9%uxFGGjG3a5BIkPUY=nLbtpy>j zwHtHw6cuR_#Nr-2ZSIhj1UPxaP6ATs&`^TKXy zQN>K^Z`Y2{Db}nRsOQurT|0FNsn&He+5`Ao>hS*ThO2J}$Is%J zBz?Y}%My?47`6LN003hGC(w?zhxo>So&#xT^vaze`kV!ndF&F|O|0oUeUL_|o|UM6S~>J$|Jp*K5Td zf}<7p=+075Segpf_2G1{LYv;+I`*R?fRrvA*RTt(Za6rIvZ5zD%_6zvAt#Hq*Bhds z83tkTr%yb(DC=N+Q{}Njwm=GU`n-JuhJZgpy+{LOQAD0-|KU4w zJx9fh5UzX-v>VemA6eOT_4)1Fn_u}aok%?#R-&Fq5y4!bXrgN6Aw<{#!H)@lah-{H zTo!bBqcuhVtPBF=%u#Vk&kWYonSJmqZ4oT@=m~uI5-A-oFL4ZzQ45)`6*~zP4KYjjiH~IDLC#iPpCSN!{G#q2AJ?qtj?a^nG7P>;4+SSI)29$27UQjf_`l{4jb?YUUpwQ|(*SO8;PLs*SkNyabBRM6Ehj|1S)<)f043XwbWhUhe1 z3Bq*TrG|$>h7~KYyEu;yAPyLr4cBSqJ&^-R=Y|;jFbrvv1#B69BRd8LYec@A4d6eg zHi&CY#BlK%QZD`r=D@DhuY*^cdq#!1XJi~Awdp`ZrFl^##M=eBf~*x7+?5U)u}`Q3 zT^bvY zl7(Q1C~)|WaQn=~vgU=sV|=guFSuy7X>o&F8LzRzu9y{)z%yL$U=OC0T1*D{DDTOY z;k}w?p=tMIEe#2tP}>J4joG ze)MTt!bN5zMT)z6(d#}9kBJUukwmprkRZcVw4b zD;4zE%bWFeCpX8ebTP28+H&(UMARWeU1odo3J~GNZbMSUKAQpY-D7 zqTij8hjodp*p=dN!i=p|q?Vzia9*_6DV!t#qqqjfG7l1``5G5c?Cz`5$6Va9n&cWK z9znL5AhJ_!y4a}P&Tg-unfUG!3Pfz&7)i0O5fVh(i)nX8LsanMh|O{i-*iix zADW(uuT#FD^VV$^+lC+*EBEVy1IkBk8XI+HXm z&P<}jZ8CG{)8Q(XTKNOBl>T_7Z^YpNl18nshRc|)1O?ejic*VzCC)Xil>*N70cGI} z3;sS*b{ZbZOC%+pJwHmvl+O4_=c7OImCh0xM;Irz9H>ubNQzvacidm!`&-e6GUuyHP+O@@~bkslr`--$Ou5+ z?Qhu!7+ypABT@--u>i+Odp4Fi$QGwD>}5PyZ8yqO+HKFff=3n8+QZ?YTH>3(2Z1P@g0|8Xs=naPIr1+tw>8@PJw@dVN9yF2zQDONW%0d zHCCf25Yll1E%{I(!nO~oyMP9gyfAMiO9TXcBRL!wwuw5-tOJd84wbdA@_hX@%z8Y9 z<3no08!#A!e*vP*zXrW7@8^Mth)KK+ufxW5+%|$s;le?qOI7#$YQa(bKJM7G(u6 zUe0mujjG0#9t#+TM{*S8EZ5*s_+W#>S%9VEC2plx_F#9YnbUa%#dZ;XDY5ejEHY#s z$z0)oRPa$RiJR!pkLg&1sZmxa(I-j~4%dJK1#%V{9(X-; z#m>i{-+%bj{QJN}q6GrLt-LlA8HC@WK?`AE3ADGI9yjHMdP^>T=sqA(EUD7Lh8@p2 z1f(6kX7$Q&?BR31{WG-b--w>*v2whH0nmM?vIhR7lHW9^veS++FgS!0fCZA@Ayebn z)>+Okw$OwprFJY5okt`b5;FjHL2hnV5FZt-hf@)~om|{FH1!RUprL#SlNaN2bCw2u zWHJoQ)=_>bH4UJD!Ior470-TB2qN8neSL>Rce{rWn`;noN*>+9*8=CoPH4K|5fv<8 z^_ZX70K+dbP!P6pGyX-efuLCUh}a)zxD0F^oNn)nY(;k}dgz$$kP1Xqtt(8!lIIAc z(uNVsP!(3FgeUrQn$_ebi$AqtNv`9)-LF`yQpP-}R`y z9|&#i@0t}nsP@f@U3QejPSGbD`F*py0}wSWV!fdgI9VFblZA(nyo=QYfB4uRz|eT6h4avwpAEx98TXBa#!t-D6&A#9 zMf6?HyfBn&=iQR+pm*cGDQy)`(+3}fEA$K6i=yR+C*$w8lJxa@N=OeN)06*43%3^FZV58iP z#o{!E(hC}8hkw3eDJpfLCrzl@Xg2_5lzY4+Ky#EQEpW^mr8Wmf?6cr*O0k07NBB;4 zWoVE1x#S_R6yaj#R{HVed#W0tlwAye7ziD2?%v-0@Co?XDwM5mkVg}?f-Q7NydUx| zxLm2&fXTp3?KW`PMz~ASO3xZ^cGWkJ%lh`lHEw>TNt(Bt(K{F9S?jvj9jorB&Y>sK z#cNRhVgCQo_O0D*9M_ioDVWS!S=7CehX5#&n#_0>2!JFaf`9>#lD=5qr?)rs=B+n>eP8Zq$7;e1g$6@Y;pApssOS~?1NbBbcMvC z4{sjs;O#^DRs(oamXvzO1mB(qQOq7ehd+J^Gn*yzXf^Bm&1VRR$GoWBnHs*-;8Agc zVb9;PAgDYo$;cW5&}j)uxVk~LZ)lyjsJ;jXCUOIRK+aI4 zgME64kuT^t7^dqKG)MJH`{4n+{0@K!pt+#$z5E@mzQ;=SCC8vIDbg2%ML_|F_`jet zukGQEIdK)MzOK#f_mlJxt32ZFik?~G#KJ=ZM07cOLHYw<=Z@4JtxhphwL-{^egpc| z@YG3|brlP;G4|Ak%nkT`PQpbn0W)W8#ulOu5+!Zz-^9kNl~>NellkMo?Ll&C*f}JE z){AF0pArG@j|@R|9Wl_449P{+cFu*dzkd^f+c|`F)yOyi*IL>y!&NkmiyV{Lby0}-~YrLzTbb)vfObwY`sye-D5Vqw0 z62lOHD!69 zHG6RnUOedLvKl?cW<{}rW6eDkE3lgHI9E(H3D#qW+OyPR;yA=$m=hqT1dwLMXfecL z0U(M*v4aX*8PmSpFb*+dE88^Tkx_fZ>8gDL5ToOo3v=X~gzlkIvFa*XYl?UUx$8Hx zQrCR}CeU1Fw*kUQ)gVBDN7ZJfjOdZ06+s0!k+Od##w}lC_ZaDNvK{Y#_pJ9FE)^<4 z0+wTBO9<%dwiA$bbsfQAWv4zz2SP`G1YhyRd9U~_X<-EKQz%i81bB1>URAV($-A<7 z20}obGUub~KD`HDBBEWyR45G#Ftw#)iJW=q3J}wIN7$JYkUf2e9U$PvVn5|rV3iSw zmPCTg;qJuo%9z?@07!EdtJe##6v$lVkO_vOD1eO^IlH5oX}{pYpY;@)@b3Gjs51NT z?%}K3`;Tug?>_wS@FS^}-p-u4m(#0r7%N{Qf8oFPcHFvr^YPuoU(;=n@n$FiYx=2w zrxvvki{=Q1pj3p?sjyY_m?`S+{ii!TeAhVIG&Igf?wG{m^FR5|pMRRyQ}aLmPniGl zKVkkcuczietmps8P62Saq5rSskWTIV z(y0SvPNrT4VzQcUox*&x%McPViYu}`(^c6bbm{yG>P4=`elQqjE&(+|%?)pZi`&e}zMlshN^V z=Sv(@;t)|wyGOT>D@|DH>CvDKKv5vovYR03dU+0kDMD5MXeMhUvgQ-0j=>Y2^}hZZ zQX~zFSrh>vJk85liM9|CbHO&}Mp>Qfo%s+Q*DvF{(;6e6HImo9|I5Eu;mT(E+m&sp- z2*xQuhPPhz8O1O!wJJ!ORKHgJ5zaiux78^USjEzW>Z1y#$yyTl>^`DHv0gn?6ip_< z&8qL_O1BX9kF_j|Gi2a^{*p_iB-YP+MJSamId=$E&%brecS@)b&XaM7B3jxeDhC7l zZ*dd$<-CF~cP$ALH`d!-b!qO}G`x9ndTIM*zri1#0bF7DeLSM8djPHC@RYHLVE`xU zahpCewV?p`w)eaTT`f;af;Lpk@dLadF+ta zB#BunCQpDRAq?w+00U@%fwiRwrqV>N*qjwrSsi_NF}YG0R>iA;>WiL z0j=S|Re0*r(w@R|IOki?RnD@oo&!D+Crcg`DVZ3C7GlxPE&( zXo>|#!r!rF%h69?XB|TtxxrVUBw#_j%evD1Z3B{S$`dlUc1oWIHvLLrD34cUMxAn1 zOv_LF$ID5hg!-?3=2MlU5pA{OnT0%3)L%!P!PX5fym|Omzuyz(^Z2cP_fB^t0cya4 z+jvBYO0!yxs#@LYq|$8JsG=(IKXjMktx8A zm}5ksdRU%D6N`oq!?HB~yvNo5esAHHNzemTJAL!%ZaaYyD6Xl9!*xp#Ho-e^NK$Hn z9V_?76Sz~=B4vZ=jEBAQLTh4p{A$5SiVboECH%ajL);BcAoynFK;f6g1>69n?ZGsZ z@1E*6CD0F_YpMRrUYQAi;bMTEEki4G0(e~Ez2yzQjpR1yuXh4pWh=%bLPNxBoV;fk zy&8>Q6(|8a6uwzyYiWi<#-OO%Ie@F`_!XFV?1<@_=sAZ>quipZ!4?wXC}*>?1r48{ zKW)ztZL6RZwVA6g=+C9?QmvYd@9%lK3M||?NUiHF|7M3SZi%o!qWL9wf=7XQ$B5+5 z3<`NRd)*Ts4!*}Oh6?SL$KbLuUrF$gaWeYL4QLmpP_NH8hFIGBaT6m_aLib zCum0qO_cw3;f_~erIS3@(aWfPO4**%i>@SvYL!N8g_Rm?F>qWVQR1y50~CN*ny4Hs zWhWfspC9$Y0O&1d0EFnf93yG>cKPOqyHEY2gNOV6%UA_21chIdqLs20`9Oi2nhjcT zZv^d)tf7=`T({Tg6ebLbQ(47o)LC_Dusy)^ZDNVg+S{jjf@4X#3GA3#eW{s|G0o&( z&T*(z#1equI$;m|CuJtqJC*HqJRYtqm$*ikzR+Np^)Ae3eyNm6D4dCJ%)BO#?x5zS zI(T%LYAGRvAnuoP-(!d21YFWr&nqF0FZ$VH0%Tk)IK61OkgfgHcBofhfYoH8qO!iR zQ8nbd0yfwzdiA9?Cvcv5^C5CKn`cNC$)rF$2T)$+p_d|Z1-v^+;?{eIIG+Tstz0K zNL1V^T6#26lUzv}--qZ`$m6N56tbv8v}gkijzH$7A0_w-zi{ymaAVOJg1Rag15y#f z<#(8fn_ab0A3jnr>br`DOUbVSePo<^kx$>%>c+WSWaj{QipQP|eZpL3&<}n>(1UJa zRDccCk2#Ex7us@3k?3XW^?^N;sKkyL#Vf8?%LhR8zq1E-{`lt8_K%<6y?=Q3fswn+ zuKUB z(iM1$##s2poKM%((~dSuIc@r4v9bJIm>h3tqBnREDEZbC8yK+kGOTFVbB{J0j_C_j zUuKOp%M7h7nML`hxCX%EW8y4h)9@j5@(;$ye>-Eu^NyD60@2x>-5)x;5Ao%`xdbQ9 zg#W^No9jv(NC_-_+>qjqO_*r58vH?@qTs4Epq4f{`rEbJG!}+s41t2{HCg2?nPgH@ zxYY8`wOo&|vQQIS=9=;SPd|MIlMT7VaDJV=w=9-zL2LqZJH!M8laJR*%06b87B zMorSABApffg;nPH2mV%&L^tEnY9a=z6rZ}s_TTB z(h2&4w1)F8SdQ*7I`~9JA%X%3gq(OSUy#)x7+A1YmajY**wmmU3Z*Rk@TjD1yuR71 z7spvf;>L8YSxp!-SF&Us`!Py(DNAx(73{t!lJ=B@kdGrEz;l@Ki;zRF^w>t59uJ)< z0?*$6aG$Jj+c|=PtoibsrTd(-L$kT|K)OU4ggH_d$y5gT_G{rmGFfnIhBeKx1!rWq zL8nIuyQr6{YlQ>xg!2mZoK{v6wd{Mg_lIv5@H>@5mPlxEZSZ845{RVrj_WC@PYa&T zAU*M4_4ApuYpqN`L*Z*!1hY7k+h@HQdwX)-?T6W@*2i2-NO9|_1@Rtkt=FKzUBSGV6RYWbyT)-df<&_|b*)1@}Wj?WnI zH%0^ws|^>ZMj@eHea#Je-1XWbo(Qx^tlh5;0E(Vic>v_q-{5qEALQe0r#&5#!S7V4q$O6wHQ7#cdp>Sk{f z#M8hX)o{EHD^?L7Ygq;+Q#etfScgj39Deok@Zjjh(cz1e!~Wp#=mo0|4Gvj#2sD}p z#I-SI6al54jom&Xa$R5l5BhsBO=C=MfaD~|%c;qwB8QMjD05;4XZTmMtefN8jf9%9>LM)7Zoy>Y;iMHIuaURw#BiJLL++hQ z4_ZJ*FDF{;7v z0Y?O$ACuE>ouzNI>a1`hBt0U?L%=|~BvFt)iXh(nC&E0%<~m+R+6P7KawU)ff+wih zXOOv?nALs0GM1hKp6MuOvu>(kU|F^qDPwE^j5PjWCzBqjKMcQmisJ?E5C)twumnT; z&}6Tjg%GpEa(-G%L_9^9eU5=jE&9TIthCjG5p%7#ShH|NU zh1fz&0`T+PE+c62C$JN2doPB2^VQ|eWL=n}qX8xck9Wb*NdjZoS&_6v9~o7Xd~J)c zXs)nIhFXzT;OkgHuwLa=WeT|3m`^w94Q=bqBN5cc`n2zrILeegIOqE=kLpz>jLIWE z%c4GTONT=oO<*flAu08M0x@IdIwNhOOOr6AKWbsp2hkiB;7p)2^xK=|u=iO1Y%#>< zd_#6)m%+K+>GZ|uvKx)1`3}hb{PEL+Iah8EH;+Y4qy7W3a-+KOdM{jgJ&?P&gh(7h z;dcH0&7bc~E?och!*@S^y#Mg-|4KGwP8>oA=g=O7UJ(n5IR&G8oZcUY@Q8e_o&kh0 z_R`n|0jRqC>_-qDVj5HK^{7qHeeH+TomDDZ$Si?Y90|76E*hg(RN!6(f@HgXn_RZ~ zTb8%L&qcd4N)#oD)5S>9k4`eb({FbJ!)ValI8A2jW9Ogj8I)D zUUm%u*m1jvH?XDoiw#p zeMNUD$T*^yH3aa+oay}qjAHIau&o#ABVix297yog$ich)Bh+m6TZ#_u;{Qs8{ZZFx)-s*)fvkK&&GVFx`w$H>jp?f$6+c zD@VX5b;aoshvUCROSp-YhZ)F??Pxu&*=<`9Nl$LTlrixMJ)mM9!K$XzC*>gB&N*^^ zAljOyXM?JnG&`Lh+68!wOO7LK1#Y}_HBB??p>T2Pvv=czf>{SfA#)NFHx8Q%(ior{ zsj<-UgPt*IK=4}_$5IPJcZlT2_2abmFpWV!sa`!xpT)H9MS^%ZX-l+%wtqEQGM5$e zt(8~XfpDogyubO=-RGajZ{ENEBgzB|d$Jvxx7(^G&=*&N$v62g`KYWlv}&}VhI($N zG#`zkg~m9TDZ|oVXPq)VC&WQCJC+y|`B?lM7d(dy8^_$efpgGV2UbeCT? z5Km<8%;3kfY!gbe0VB{{3vBkkMzXr1-d9Sn2K3Q42YBFzJ#M3rleCJ^MZzuHT}m8X zy)+$Z_Vx*T7x7TDRq9k8D0$cuHX%@;^ts!lP1_l${3P zYv4$b!hy$Bp%GE)^t`ffGe;^eqzqWe#<-&$cV(M`;}i0-@vtx}~ybxHvBB4odR|oH5)v4i5=BcY&%um56AjfTko51Pi2}7!z5s(->rXi79x{kD+ zyZdx7<<@3rvT$p|2}K(n?}PU(gzqxn zyqlKKPp&Uk?5)eLxX1n(%B~z;zp@1cKZ#wTEdh#L(JbZUNKNUqg998dnk*AH)H`%) zOD--Bd6|&JF{UWtUP*6J=SYWwT-NV!w)pR}-YsJO7H#1O3LU^VPH#fcvm7%(I0MUb*V|Q*r|%Vcq`$&CAvdHcusn zdJ3?Tfiiw5?W;Ds)vB*D=cB^wh@X?odq!3%dZ%z5E&CzihgF(!3CAk;>O}d$zfq8> z8)22Vv+0Ssm72=Pbk91RW*7YeSF8g)7t^t!DLaT@J6Wkei))A}pwb1s2+H#>CY@TD zv-h7r{m3%5-&+}5w1Gb_S}|X=9krfNyrQ$;l>t(u-Y(_!PzxR4m|-$4`?X`xBrmya z#S7c2hh0N3S&|K^yV|C8TVFA8q@E};#+EC@mFELYWvC? z5vd180%s99LE#rUMHGD_qoH7wVpWbk@i35#kf2C5c$dzx)0W@jBRWTEMajji=TPb4 zFMF(;TQG4?HwxVO{r7tfmtewL#KJYa-)zQ6a80;^P@xlLmmVUCMr;PDP(|T`%P?PL zxpP;_U}BZ$U(>I*Gsz_YL!JeNitS}f#fJE{h-{}cxn__E7nE^Y$MD5F-Fg7pXb~g|=P8~~T)9d5OZ>akdLZyI)eFt8CfyW9_ zQyCwIJv6q>A}@@YE-fX6A2pqsjhUgEh3g~tW^prxdj>1(l-}67wiS0vd`J%z$8umql zhm`isu+q!1oI*BKmH_csbf=>q5;9CsS+gFG4q(kZ3iPNThPcF7a}WzK4_s*CtSWy6 z_qckdk=tY$RveR=;X;Uq(+yq~>7~g& zWP$Vj{f8fVRWdv0`{DK50Jow;Gw&iVhwZ5~2#{Q!%3zljN~hIuEi~?tFS6AHOUb=6 z_oGmXRQCPubpIjs@n-6Yj8nG9Na$1gbFiBF9#oauqTmxEwOo9Ipit4ulzkJ`giJ#6 zbP%@2^b{}1P-Me4q6Db~UkYfuZUkOu>5TzGtMDHL93!*^-W=LK3X5ctrSJp_Oo~cG z(dZBQ$v&h4dxbWp%mybl_zY@rDr}&(6v-zRSs}jx%0btgL4Kg<)D89)WFhD%PH%mn zc8Eb~>OJc|J*r%*l78DtanH;xe>9t%0bXl5Haj_;EqN>>q!MnO`^;t-bx&tNi!;d1?_tj*3knBe5 z3xo^TYfXTnNl9JBN^3O-&7CP$6MY)aHJMN6P#9a5*b~e?02v@c-mJMa5bz+tF=1V^ z$CpN(&P)MDyaFv=B&g7(Lv=|N1|_S}p^JGcTu4HU>C!fEXEnr0Pn!+ATm7i6c~;%x zU?)IvbQz4%mZ;egkvPF+JAyW-_rUjyMEfQ9u8S~ms zZ-Co6!d(lOfc{|fm`?z@LDY%zs~J!jj~yVZqNG3DLr|H6DUBvBNkA z7S***grQE~e~G|@KVg`qha3+`GlDaKqKPQEqj-9t_4RUz!mudYPW=@i7Kmbi{}R{b*Sb&saeB8*BfNxWljRyL6=S2zrU@1f zhG^lN{%5KFefA4DCnC|t`eJs5qeN38eS>_rorsiK<2w6spNec~Ys75!@=0s-q~(O; zD65af>e{8P3_zEwLrny*bd)c}x}X)HP^)##WD91bofbB*9@z(A0!*)BO4=N8=;g9W z!B`SKKpY8_!c4qF-&zV2>4Hbj?5C9Bx^tKEDUDuV4N?{s*-Wqqy;tQLCI-k@SZ$nn zX?h9+ztGxQN*idFl>NbKpTt#|ehbp3>KCokS?n@ zwNIToPz2s23sirwy#ZS@hl3u({9fuAPs(=TeggV*k#vFNdQ2jxgH=xC4JV(fa6-+C zHA*U&9hfZ7$n3KO6{0$q#mRYMaX7l-}yY*%v2L*N@Z&)+VqejtYc>|Vcqi6w;os1A!@_}r3inxod8IKPaXQJ)+ z4qfCWKe^>LL&jKN3*l5#mBg0zExAOPZ;eNl{!opItZW zOh+*4%7RhNL#a%%!$(pUaE`wv0bpD0AY>Px!^(?Hr=;xky*4g!7a!EoYh0?^sij~j z5V*iD_4zAsj;O7*Y{$L-`d@nynl0$SAjQClr&pTl&D4{p6c29p`lHFQ?wWh6&lbo` z!a##sk+{+>n6FR?BV7>IZx1kn37H236L_5`pC=Ai({EZl>oXtaIt@V(HOrAvL^`f~J&$A^)sJsL9nw<*I? z5;mn*NQQh%wm|smaJWMSgfH>SvtjxctvWXzpNGFwSV7YvHoA3FMcxO(e=mAnjrvTz zBBC;|;x)=^_U2hFu;hzL=lJN-V8{~F(W_pg%KKmL-u#LDBo!Hj`O4kKnDjw!9wCdQ|-;e!^d}j{QPjY-R|%I3WN5I&Q&x&dvpF$ct3|7$!(nudE1do=S{RE(VtZ8N8Zz=N2DA`MW>sfTSTBiMTDC_N%w7@P!N z8S1co{9IncO9nRU_=&IY7+-i>KR$4I8s%V~8W;QX)Hs0ADG;(D)^H}{ia+8_rom(i zVcn(09zG~sxT+<9OpphA!WjY=$^8S!)FeqDAgyZotwF2ZV->jp)1S@4rA#I3`_CW0 zyW3v>{FZgo1e?@Px_1ujp~$0Udri?x{<3#U(QTPIo4xudL8Oj>Fsevm|1;)?#e2Dvc(*&L$Kr}|(q>tRT_Z$_UjYO6 zt()oP5*KDyBzFN1Q(ff^qVp(~|MrpYLC@U3J5XWWQ$TJCp)Wlsn>tD88>OfYy`f(! zG~d;RPOk`t=Io8Nm~PD+HCxk!x(=GwJw`)X8C+=q7*s z{)?nuT;5!psSWqyw{|e-_0^QXCALbsA~H<;@e5bTtSwcOZni@}HjEk1<;K#ht}1XJ zd;T^Wl!8@6BD$6-v+mOo$mc?7bbSq|4zaYll&<2o$(0|sWVi~JU0xg@*Cdw3=_P~8 zeO+E6RF+R!j$YbllpScqCW|TO>1pk8qo-wnfc>XweL&zTCk{_56#YU7)~klg)tuN=M8b%KVql|%S#tsU2jL<7;QC?sMKh|o& zjB0iP9y*@2BOL;-(4B9YGDw)qP%>k}PhF=_bC;M#BBJz?Yo;;hIS6;!vO|EBD9RFs z6{hsN=^xp_0a|4tMx%I(F@XZzX5p(3x=ES6hWOekS(e|zNJ~;raf@O7L{P=Q6?Rt0 zXKlxt;ounY#bArzf9MLdB5^%18P6~XeoAc**uZKH3L8v(h#goFfzAPY=D|p9xs`qF zC>dUNiNd>cOywJMh*|uIApb3WyM_aJ5dzLPi}@@moRC^b>m&9H`Ws!4&cQ%WT=cny zh0YW%4ks_Tv@U$mGIBb)W(dbO*Hfqs4S6u;Wdy&fZz{T6t2QXbfjfyPt zIpt|3u(+zlLS|B@W&n=T>MR?DZ5oK%omiFm3@%Xg)B)3A%QW%QbR`|^<-G$wC^y&H z4W5DsJ?_t2=b-4alR)(ZSQz|wi!&f?1q2GeHcbOqFHxhW6^%?OZD^^}zdf<0-vBeO zUP+I)w%_DW0T+%d}mysR_=H}{31c)kW!y@8r@99Sb%?D&O&jX>bEc!G{C4aH(Rs*=nxQGp2R_5NiW!3C zJ+q?PJI<7I@&tl%gw8>siWW#0*LuE`0;97-LN^r0`7?mUC`ojfz6kIhsw%O^f0vIt z7XQ`Ib22g}8{VR?-O*ZD0B*lP5T=eZ-j;km=1*NV@e1bbbY0jU^BuADn^>sZiz z9)^cPmH*?L4c( zt0xZs;U^*!YxTs#fB1BncZj&>l!7xrEfrrG-JqyS) zKuORTBP^=pm$ONV7K6>9x{QeOKzwzbC3rqEpQ15HmN03g4`zoPE_gtS$YCfzSFgd9 zfNK1c($)h(4gD6pbnN&}?(28MDVbU&^tpxo0;JVX=Sj)X((GRcJj zg`6(~a;7Uep%H9lS6w;5-RlWB&73GO1{^O;C z;+dFzJe2-gVDz7U_ERN<-~hT~zB@nAZs?edlUF18gE9g+DjMl9WD_G28KrL_QTs@v%9h@C?H5oe%w@_d-aCTrW>(i9L zv=aBj$#${&)_jvGf$sA!83*hK&WDE4d0EB6WIuN^%dR2#SS1a6Vwm!ZfoqG|A$AYi zxtiM4eVV!OT8B9#n_r+;+@<%WHnQqVwt86i7KZGJ(s33S^WLBD-y;>>`#V>zrJyFn zcbA?wV*9d32zt{*7whp1i8|pTD2+czTv9SvVs?_Zst(C(ghVdpaF$axA@PJ#Z=qI+ z$zs6NH0!jqWs=2mX90Mcp9$5(nhe9%RWf(*YFF}VQX}Q4g=(f#h%%K;sL3n)rv)8< zv7NMtQKpJog?VK1z=SQWQeg0O1^9$Vrj_t9>xiH2WC?s^sL9K;Gr1jYwRVjmSr$_s zlf{RJ-~y#}3_7w!fLmve_zzlT=`R-OxircG`nK=}-M+tj^XUPOa}V3Mci+GJaQ7BU zftV^;{C-ZLY?tEmIW3%7)gyyvYFsio>4KR$2n|W~g2Pb9-gflj9vwqNkS%>@tIq?t zpj1O441ggHro1vX?m6C*yoaN}WX{r6nINz#B_RIr z_T7gcp!UMpcB9@Vp9n;&)u9RApk=ey5C?}}AQmQ@?$6=z=YZ@pD$sT5D(Dlh3PAFs zcrYgKJ~4Fl=Iz^e_k%eyT|V4@lo=15tfJe|jjSS!eTO;@OfN(=m!%lfGIT3+fqA@A zblIYh(;-g!4r~Z}+v8E<8Zu;;TUt>6mg9)FpK=r*!1p?3I++Z;mtQ5L;`@{a6`-A>l$Zpu?d7Et0;M}9CkL>>7To^yo=UIxkdG)5C4 z4tz-bA9j5IYVY#TMkq&T+NmSNap2QAJ!&Il36{!20o9szN4vn$Me^5-XM*f8_-ZhC zad135d2xb&1_yoC3OG198xDSP^hVAK+UsGV$>wjvQ(XMb>o5ZvFf+OW?Hd%AVf|&O zTjMxQkom09hLe}nfkQ8!n7{6 z1Bl&1Vv;+qjql9?7%4KoJ3d2ZRiA@+OPbX5R`Z*YIj2vr88w<})@_V_;Tt4^nbhbN z%V7*=Xwj|95o9~-QZFA;erkJwFTU2n%n@#PsEI-8GY1N6f2bu@Y-z)%u7{jNU?8bm z0N+D}LMDh6<%5<aX*qM>4ju1kyaFpMd1;MQCbZ; zv@$c=W2u#BSO!L)tWe*_fB6PNp|XP3%hL$9vpQ_IfBEjmHy^>;BF8q70v%40s?otK zw+mQhQ5NI~xOfQ<=3POc1J8%0qNpk?*1+okdze&;ZoR}<8Mrzm)e?^GO&S<~ zNv%>^P&ylrCy_+iF0>4qa3g>FY;kBta7&s46hvQx#i1VM3}z};f4bOQh^BH@y1^Ay ztr2$nnhE3OzX5!!7-Km@(6gNGv>tLhoq+I<@P}CWTB|STd8FFL5|~$4Mhq~OCJqdw zf|u@LF@QfBE2oOXr&yHt=IRuF`JY9Y7~0DsdFj!LWTU%iVg-(!&@w9AIW)P`^e!oAsG=K}Wn1zCwJ$E*?q~98W zMN@QGW7!BrsY~lt;Nd}qhzI8DLE@H^@kM~RY)>FpaJb_!Fl#?9@Ow+$Hs14y6H7;L zm$pqj9)#}`;H1v&K+M)Ik&4avUc3ele`V^@bTQYItfsA1}_zLWL=6x&* z3a|$bpt0f39aSUr-tKAlx|{W(G8S7Z;h8MQG?8#`5S0_JF(ynKCoXKqY+A!KB?4!- zCJg44s;SYHzku#Pz#{nj#O7W!Xx7=Fy~Me`TEvV}jAv_r9-biv&`_l%*0mm;$5@F; z8HCLj!WuLR4mf~PD8-}v1-0FV?BgT~oy3K1O1A%Dk%Dz7Y)UucLJ^xJI3jXGf;lTO z0L!^eayGca2%HTN8DvG+Za?0ALOjfO4`|(`Y=RPwYfmhI^U`T_i^edepfnK=I2=OY zUtuH~?q2*xv>_^;%_zYRb-o}9-#uDgy5g1Yco76LpCRv`2XesgVZ(DF?<<9ZSW!s^ zM?!6q{hfqw6*8II8fjU@sYsz>Sz19@Y$j+^dS?_)0t|ptB2vk8Ma-eHbu0H5=}ESK zH%N=T`CZ_Xq8gvdO4AH65_&Oa_b{NbmbU&zk=UOLhJ0f|S zwcPXtj%W}zlJN{Lrd>qBqT-oSqr(W3I(=op=AL-$q{y|AWZbxZxc`|Uw*nu3P^;4x z!J-_K)ya2Gcr&`RbGF<%JmxxxJS@M^m9UTnN*kq2E-;cq|HC8}|1rztZ=pxyD+7)8 z&tS@-_r+rmMlj5iCeP-B2Ve5wFR@LQ4_2z0{NSVst4cb7^+9s_;yZcQA@1tVy-$uZ zGZ4~xYOe^(P}+xjR|Of+aD~Vi2&r~P`72BpuFW-fWvY;n(rVQzu_n;XodN_sEBQoB zSDrK=wH)l7PDr?62ek@WQeC9BD4WG?H5!2&PBk-Jb?Kd?$F6CjL%`KS{u2dT!Gp^| zjl_epX@R$(`MIN8&(0j7vK^w$y>i{L3LF@CKd?2+(-VcXYJ^-}bsFk&O-Cs+R8X=P zq-2sl$Y4ySNF2enMsg@%3|M*=>mIURyUmb0ffO=r3@}T}8&yBO?i18t{t(qc`eAXQQb^YYH{ctA!(4C(oD`gA8m=>1 ziZR$eNH~$_%CEG1lnvdrv$W9`&6-ivgO&;qAZIFNX@}>_dFyDmy7drHl$5lBeoW7$ zOG!;y%ICel@85WJh)E-HmVJU>Y0}ohdO(unO0{UCOYapN(sD!R^#PfK!#Lf86L|yR zu4*xThg{Nb_UfVT_(<5`O!+T7{+HR$0FDL##V#4)xKdwtkFa+{i6{o&u5YL?*UX%b zk{bt3!gr-^-Ikdbrm)MFDR5!(jiR-_7fy@4ho64_c=yBa8x_ZP<+c00kB9w5ZnZ$f zR+9(uMM@OQ#kSv27&8;z?|au!+8}v~y-1!=$y6ga%RZUIx!Gt7k4!Xa&uy8gA;V#J z0{}HL_(MA!cyFOW5USAjfR4w{pC14{pe zdc5Fj8$CcBD&PtF!Sb+^^>Po1@4<1>fsCcJbY9HfIhl@+z>8-Gz5Y>!JrAoT5Z9hO zF@%aMVO4S=$cOc4-Xw=mHiF#%>kaWf3l8i_37o)_xP0(9Bki>!cyG=n?mBWdl5nOD zqggBH7*SZxs5*WmZ3(oMugDA~=`|X(Pl6^lZbJ>_gg8hw0F~5%=`VOB-C$Vm3G;Xt zT}H;p!r_z;>C{zPy#mptPOV)RGKm11RH709G#>YNb4Kja)51Ih@pN&zGw3pUcTV7C zrC;irqMJetaa~_|aS2fo;Oo=#`S{uw%H@s5m~{Mo^})v>cpLBw9Kfb@{^KIfervbV z;om(Hjx(zb@ZJ{;ZB_pQzOZC32jxx|K!9z?g}imAbXxA;RRGa_1Xg4LMM;AnDl=BO;9now;H4n0=~uV1_{v=XpAppKqr+Se^X z7I)%t*y9L4q++QokFQw-T&#4|pR5LpsYVyCUok|2ADMm<7TNE;y^XjbM(O zaW5<`zqWt?f#Q;C^2^b;aHPsV{rz~;3i`p~#kzC~ROgzUOwW)vU&zzV8ui9jUD`#= zoQ;0o&Q^=L;34#3`|(4PeZIgs#cfP(;Cwz%LofgI$$@rJ3jhKsCC2US3XUsaRqqZ86r36KVq9Q8U9N$!yXE2r=wD7^ry z4y{W*tj4UUfkbYqs3SvAA67s*eei(vGtxpa>x)>i|>nN@yQYH7Q5 z%C)HMb5XVuA+)XHK1tXetsmCjvL*b?=8ewUQ#nTlX9>bQl`mF=8vHkz^5iO&q!BmB z`)Yy47~0+_zgE;bEDyjO3^Qc;Y)_kxHg2INSnEv)R zX&)aQ%7LX?csg0#h#XQ7L>x3OwF+Xasd*E-5})9bW1~|aASV(zR*t@Vc=uOHQG9S#ol1gjSX$58B(Q-ZRBW2Vh2+wD&6{N^59@VJ0eb3AnZo$fl&_WTjd17t(1*mc6CLM0t@o8b#b zrHfHQqD=k~%B0XaT8%HLKEW}>m@TjoK4dU>43jo{anCv>?iltZU_+$}4q$XMnq4xh zOmAPumTd=6W2OrvZ78n}tE(3!;)m)IxB}nex+Al!*@(o7LgmrsPrXr)jP<17L&VB% zR^RR;YQO$H)S%s|Eyc&utB!2<4jXzsK)@+@H*4J>@gHqV9{Q?-D96B+oABIE5L^tD zBHF=*x&+BUI#6|ckY1sKq@xM>=*nrM=><^zGmAPhqY`4{ECD=$2*>vyzJK?_`2MG# zK0hGp<^F@*UTFN)0c#IR{mwX}h%X}XU@y1RFIJ~ZsR-v12*fFG510kZ=V(4qc^#YxmKKj_!E_;NZR0zh7Mhf0hDiHz}p3@(kY_msgfBJkl zoLr&{sYQilqyWK;uHh9ND=D846jf$DgN*6b%?&6)Q+;|ENIr6Fah_XrVUn8TLC)aSX0FFcy7Vt$7NvKSJty4ui zd$(ZF=)r2hJz#JkL`KZZPmZ~#vc_!GiO4;sLvw%AW?d|eO??Hnr*a4-E6zf-pRVwuBeh7Ue{g|ti~iltp@t&U!y5ioxy z)8og8zw8_&r8!aciEu42t*8Z6XH_&>&)`R*2$g45C*jg}&9!}bblqVFv_fe>(NqV^ zZw#{E-y$)}+&C5KR9iX)HJ8f8S7J@`}=$0Bin2$(8RUN38C)w_l zr-MOyazaH+<}N4HA>JV48MfZi74JXq9}Hj-62mHYHJlh0%xpFY-g&I(aOOVorR3e{ z(x!a+_}zE!kzUv%*kLe5p*ZBzXg28CI)Y&YbhC82)CgOMr*)Ur2pt7u-RZjM++?Q`4!5Hl*fx*>Nw7+>)>`t18l`p*Myu`abOc)i zxoZ0S<%>zw@#a(Pq|j{xOyuQaROZV6PxstFOnIC#cu9@>%l{5R}hnzYANbf0SudM2DyW;$!()c3TQ&tbbE44ubHTW z0j9+Z%zNs|r4Y}Nq$d*rXv(MOoJ`}WrOjFeZnzocZyG6p~&Ep(2Oa;#zE=*!b0KHQ#AvCnLzI` zg45ZL`@)GAOf+c5!7s<|CFAZ$6z4!er-gLK%L25s5aI%RZqTS#k}4vYOuBza8GdaJ zz^mB;74yDD=7!1aI#)|uLaAb65cxcS2L3*1i$P^)LLWxobW6|hk(3pnd3)qg;U~BH zX1pAz&;c$s^HhzD#8>WKkhlS^+Uyit>`oJqs&fEm!3R{`noH)Dw!mY?Tt3?oo(E6T zT8Gw18k6;BN*P1U;wrj*u;+!E4rQ}UAnuRBmE*CZI?#$R1s?yYc!r=p1bwq@hvLJ_ z4aeC6O|W9a5(y$lZ97sC2U^c$N$I;cZ~r=e^ZxxGQJVlrCy`Rg--Jnxn7ny-lSY-p zewSTfP>%8K{ZGTeAKyJt(v?GbB})`Xs@;h@hz-NyI9`3b+$nYpmNkfQA;>j} zg037L0Ye(G1{b>-k5&`mH>mhSieyaWjxKEmQ!pU2HM9X9?qTT!nA-BOkm#;%`-nN* zGd6XM2=>zqTxb_8vLU>22ifBRY48kP6H0_#SqvOJ$Yf^egm<*#E>|}g?s)mt%cuTK zkNSs)&_)3N3M3bE6dU^jCwvSBWNNhYE386Z=R+ltz#_0&Un|^9lSAaMGV=pdbrL%H zeoVut$wZ<`x-`6Qir=C{hZ8lR?8K;LVHz~Zh+1~GifAnQUdevWH12*YEG|wyd|FLc zp)~#38JHA(5g%ixoQU2Z%8>Sf4UwtGJYmNM9H#FBwCBO8yZv@RF7 zz(||bg37u$wk4%d@(NcI2Ei)(E0_D#@OKS{1|E;i(eECX* zAu5tt1S2RG9krvH$$m$lNw89FUq};W3~^T=agbyhK6%y+OZ^H%uQ4L-b|9xuoliP? z?lAK{a>pY^USb%iyrl7h>4=xLMr%9R^V?rTA@=9{cWqv;-}v*6r>O9ep^GP)N# zQTK8~b6vgbORA?bF>oBf={+*ab>Q+TVn|)-)??RrOMpU~rRk(i0eHC-9yjO}DUJAlnz+~zw>LKFTivJOpZ^k0+S*T4H3Kg(8iYiyq^$0G zO4U_(D-tT)0S=Gp?Nft9ul&)BS*UJcRHQuW2qRZ9Zx7KVLhlUMI7p;b(!{DugB`H( znhmm3XH?hVd!lv&6X9pMf$r5{CKHRgt49aZa@!*(9~j`v%?REBN+Q~iqe`~;K>I^! z7YT^Y;av=uv5w(EUr02X1K<1izh6G~Q- zGgL+0K^$6r`ehhp8%S!~vO>c&o5kSE;Qx=LVhBgr{OKp%SIvpB_A!$w&QpvhU z{}}eT&ue3VuL0?}ZB@+#`2DFn6{d0)BKQ-aD3}qE(ta0XQV!6RYX_n=9IH^5yFxZy zBXp}V9Z)_DaFQdW4?h)`KrrDSE~D{Imh_sFqgAb|kuRpiF39n^6DT9YxDPlqfSBrc z@}Wyt&{P|+HELEQ7rNHSHA19LVJby|Eh}%ad+7WcsD|?C(?eJ0T6TsCI2TWkc1N^& zG|^ZvV#4YFh@Q+IKph%LJ{O#pMXGG{5m%#;y?~NtS zSd3E~8v@oun8y|n+FxQRuh*6^Zbp6pTKYZaq@%YiYM$Q)dKBvt3y-Xz$b`%hL=@Mc z%+zXhww6Zc@hi;3R|Gf$r(UEDKKLt3?xYYf`b6>EgQHfa@_hEo7M%b3<~$zX9d#2M zk9qv2T;(!9tH>*mrkQ)W!WoNv`SeZzc4X><$&_od!wT6ns*_ivZ)E^QAa}32(w!3P zMqZKx2jdFK=g#&@Er5G7HJW5tpvGt6-ZdLrW9`bWc?PC}lfKWhLh^aZ<&#fFxOz zK&H>lKieJc>YlYR1nw1zcK{{ZrV!kNZ+lRLO3>B+f7uW~^hKPmGxw27XxL zO6#gaCYJtXOR@O!b0l{FqNOG`>Z>8+gm^sRUk^?_d@MLsotlr`0@{XL1Xs(F65&!a zGRukVSB)<$dwd(EJpkM*4Q(Qp*?B9Nu<#+H5R-=G7C@|5mZZ_hrk&RR$ z;2Ox{c5>Y-FEmws4CC+;b+y!mNEgU1CO=%jeS)^<=qS!9H~Au9ptOm0D@XjW5>+R+ zNj*ZWUhltH%~{P+J`ux6UfA0+JpuJeVAPX7BYTQ?nBnCVWe}E&TNET+++KyPvBDf0 ziPdCAW4nuaKWy^L30II)niNvL%j=oJ?H*vzZOoCRw1Q?7{E-{q>}kH4DOyv=6s$vO zDy#Ru*98E6o5O$(gk*JKdCzU4w_VVQ%~ zOJQMt

e^dhSCHLc5)Ozqg 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 G%l`t~w}_|! literal 0 HcmV?d00001 diff --git a/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.su b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.su new file mode 100644 index 0000000..e2e6501 --- /dev/null +++ b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_exti.su @@ -0,0 +1,9 @@ +stm32l0xx_hal_exti.c:143:19:HAL_EXTI_SetConfigLine 32 static +stm32l0xx_hal_exti.c:238:19:HAL_EXTI_GetConfigLine 32 static +stm32l0xx_hal_exti.c:317:19:HAL_EXTI_ClearConfigLine 32 static +stm32l0xx_hal_exti.c:370:19:HAL_EXTI_RegisterCallback 32 static +stm32l0xx_hal_exti.c:395:19:HAL_EXTI_GetHandle 16 static +stm32l0xx_hal_exti.c:435:6:HAL_EXTI_IRQHandler 24 static +stm32l0xx_hal_exti.c:467:10:HAL_EXTI_GetPending 32 static +stm32l0xx_hal_exti.c:496:6:HAL_EXTI_ClearPending 24 static +stm32l0xx_hal_exti.c:517:6:HAL_EXTI_GenerateSWI 24 static diff --git a/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.d b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.d new file mode 100644 index 0000000..b03b017 --- /dev/null +++ b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.d @@ -0,0 +1,89 @@ +Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o: \ + ../Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h \ + ../Core/Inc/stm32l0xx_hal_conf.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h \ + ../Drivers/CMSIS/Include/core_cm0plus.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h: + +../Core/Inc/stm32l0xx_hal_conf.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h: + +../Drivers/CMSIS/Include/core_cm0plus.h: + +../Drivers/CMSIS/Include/cmsis_version.h: + +../Drivers/CMSIS/Include/cmsis_compiler.h: + +../Drivers/CMSIS/Include/cmsis_gcc.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h: diff --git a/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o b/fw_hal/Debug/Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.o new file mode 100644 index 0000000000000000000000000000000000000000..615b0212e241cc176ae5b0410713fa85035da0bf GIT binary patch literal 581788 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 T%|e7X-G8HgZ`njZo9_Pr4c%kg literal 0 HcmV?d00001 diff --git a/fw_hal/Debug/Core/Src/sysmem.su b/fw_hal/Debug/Core/Src/sysmem.su new file mode 100644 index 0000000..4474c68 --- /dev/null +++ b/fw_hal/Debug/Core/Src/sysmem.su @@ -0,0 +1 @@ +sysmem.c:54:7:_sbrk 32 static diff --git a/fw_hal/Debug/Core/Src/system_stm32l0xx.d b/fw_hal/Debug/Core/Src/system_stm32l0xx.d new file mode 100644 index 0000000..8417972 --- /dev/null +++ b/fw_hal/Debug/Core/Src/system_stm32l0xx.d @@ -0,0 +1,88 @@ +Core/Src/system_stm32l0xx.o: ../Core/Src/system_stm32l0xx.c \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h \ + ../Drivers/CMSIS/Include/core_cm0plus.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h \ + ../Core/Inc/stm32l0xx_hal_conf.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h \ + ../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l031xx.h: + +../Drivers/CMSIS/Include/core_cm0plus.h: + +../Drivers/CMSIS/Include/cmsis_version.h: + +../Drivers/CMSIS/Include/cmsis_compiler.h: + +../Drivers/CMSIS/Include/cmsis_gcc.h: + +../Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h: + +../Core/Inc/stm32l0xx_hal_conf.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_exti.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h: + +../Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h: diff --git a/fw_hal/Debug/Core/Src/system_stm32l0xx.o b/fw_hal/Debug/Core/Src/system_stm32l0xx.o new file mode 100644 index 0000000000000000000000000000000000000000..1db81f283a00dd691f426e98c98f32e82e7bf188 GIT binary patch literal 575008 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ⅆcSKxc0sOkvd%a-v3A) zu6^%+qz?aIfA4>E|Kq=Uzx=;ye=~YsH+mlY%FmIWwEq|V+>+dc_w?kLE9WH45Rh(s5@rv!* z)#kg}^KJ2M*Z;Gh(_ZcQu;_ODf7sA(~O?)j9%{&z0W6^^NZ2@ z!qORzUiTS2?-{-BC3?Tlb;*MDZE%rBnb6!ZF>^!n#l##54OTAAlLr=#iFq+JxM-um z4S{#Y#B>P_E_N9mdUs4r?DZafV#2Rgj?EW)eMc}{G8_)_)(;Ja8;1t@dl(Kz#Xe8$ z`Qu<+;slxdV+7nZx|InTT+O-cH z&@W=w=%WFhh75=)(y`rub}>cT_wOH5q+joFpvZu3JxdgC)2Cmj{vF!&=+y7Z@tyj0 z>)rA1kv%$fY}03O&wmL2dx}2@o}$R#;|BKV->FTI`ah2B@=qg!_J@)EJN4?{yI-3Q zy?b@;)}>9KPQ5yI>(!;r;C|f(bczJDZ#S@GzjgyUwdv5cU9T>kf@X$)*0XoV_5=I3 zY1gr1Fi-ve*J&MkmuNGnU5{?z9ChkZB&VKb zoQZXtwW(F2YVkI;dUXqm`FDz7bmLleOT;rezVLsFZ_=o8!^S1rGztEfEw+up6V#|* z>;AZ-s`u*`6sKmpUL7N^S};2uJGCF!rA@b9oqGo_bnN4H?c4Y3G$_(iWBP@q3Sa)e z|KLB4>DjJBzaYoILV9%T71TVEAy}Ydigf7RvuCGXY7iOUxnH}UK~Uv}b&IqcFrZ(z z_5%lm&(oz}?}5Q0devQc4RClpN3;vyOR0iBT&MI6`Xu@*<0=K?qjCKbh^rGPu73h? z&EmujNFc6boVbAr#Dz78wlBPHE57*%uYHTgg`Ydc7dJUhTzH*Bd~vhl#0^a#ZgHHr zVF|>oh!ZzFfw#D((|U;DPki3_(w@x_Jfz-V2<&*9>W+aD)xbOLeVx-^<^OagId z;>3+jATB0Y2S@XbOCT;>S4ZQ*^E&a(NBG%YG;TryapAqJ(YT2T#D(`nN8`f#H{yHV z@Lq^$+`|dP)r=DtE{pNyYaAzTN&<0hJ_@p&%ywn`r(pU-WS>`tQfpu83NE-ztSCWH;rh0Al;g~v+4VNOh?a3JVX?M@c6JTTl3DT-dJgyEWqG zI~L?S7L1Q}(R}w@k#B8~uVxSw=BpU=(R?kh$oEOGAdU&9N4sdg@S2pk?YkJ{D-#5T z`6>r}G+)0f@`b;_9&Ur9T{K^>EAo}xlPqRT5ESOC8uZb8;XQrfpGWK0Dmb_gmyKu_ z%{TFid~1Vz(fO?&1V{5NxguZq8{y%$I@(3^ExaP%#UNj}-V57TBj}^~He8XfQnHws zuF+)T!ohV{(zW zU}SV!mMh}6W{-(!8~vj=ahZa+xX;_;P_o$L`0#n_2YvK;i(Zj0caF&PXv*mG-f=~~ zH-miP_CCxP-WLs7`RaTZ6fhVU=4%}E{~@0oOLE1;guk~O z?fyePado~=7IQvzB;NxG1O#r8qU zzq|PIE&c6Z@AL4yYkc|o1^M#-o$X)C!IkaXALJ_*#D(o^l|a6ELB5< zFC~L~;c^=0>ybddJVCy7!SrYsU;A1G`3?p_VZL5LA7A_S1^HGc4gz%X(}F(H!Nf4%)CBSkPLe1lJXVf&@#VXC zG!Dx~oF8c7w`b`b;wGAeQ`JPE2-%qz)-TL4}q8t8RA1qBE zU%KGSI9p|^&nr)V0yHRuYQe#eEEZ* zFyD(oAK&ZILei+i3SzI<5{ z-w-n+m>A|;6(?WAV4WEKn_zTI#;l2Ao(&J2bo2lO&uD9{@ry9;$m(N<|i1lE9k>~ q!C-7n;_QCMbljRO=K0{bJK9C_r3psFjhk@&4Kd;OBSpJt-2Vd=;pxKw literal 0 HcmV?d00001 diff --git a/fw_hal/Debug/Core/Src/main.su b/fw_hal/Debug/Core/Src/main.su new file mode 100644 index 0000000..5277d2d --- /dev/null +++ b/fw_hal/Debug/Core/Src/main.su @@ -0,0 +1,9 @@ +main.c:152:5:main 8 static +main.c:210:6:SystemClock_Config 112 static +main.c:260:13:MX_I2C1_Init 8 static +main.c:306:13:MX_TIM2_Init 48 static +main.c:365:13:MX_TIM21_Init 32 static +main.c:410:13:MX_TIM22_Init 48 static +main.c:474:13:MX_USART2_UART_Init 8 static +main.c:509:13:MX_GPIO_Init 16 static +main.c:525:6:Error_Handler 8 static,ignoring_inline_asm diff --git a/fw_hal/Debug/Core/Src/modbus.d b/fw_hal/Debug/Core/Src/modbus.d new file mode 100644 index 0000000..0071433 --- /dev/null +++ b/fw_hal/Debug/Core/Src/modbus.d @@ -0,0 +1,3 @@ +Core/Src/modbus.o: ../Core/Src/modbus.c ../Core/Inc/modbus.h + +../Core/Inc/modbus.h: diff --git a/fw_hal/Debug/Core/Src/modbus.o b/fw_hal/Debug/Core/Src/modbus.o new file mode 100644 index 0000000000000000000000000000000000000000..2a9d78e22ec9e6e9b5796bb6b100264fda963f81 GIT binary patch literal 38680 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 literal 0 HcmV?d00001 diff --git a/fw_hal/Debug/Core/Src/modbus.su b/fw_hal/Debug/Core/Src/modbus.su new file mode 100644 index 0000000..4cd2b0a --- /dev/null +++ b/fw_hal/Debug/Core/Src/modbus.su @@ -0,0 +1,4 @@ +modbus.c:30:10:modbus_CRC16 32 static +modbus.c:56:8:modbus_copy_reply_to_buffer 40 static +modbus.c:108:8:modbus_slave_set_address 16 static +modbus.c:118:8:modbus_slave_process_msg 312 static diff --git a/fw_hal/Debug/Core/Src/rgb_led.d b/fw_hal/Debug/Core/Src/rgb_led.d new file mode 100644 index 0000000..1767dac --- /dev/null +++ b/fw_hal/Debug/Core/Src/rgb_led.d @@ -0,0 +1,3 @@ +Core/Src/rgb_led.o: ../Core/Src/rgb_led.c ../Core/Inc/rgb_led.h + +../Core/Inc/rgb_led.h: diff --git a/fw_hal/Debug/Core/Src/rgb_led.o b/fw_hal/Debug/Core/Src/rgb_led.o new file mode 100644 index 0000000000000000000000000000000000000000..dfabd49a86c922f94e30803302f8bd58d5ff2063 GIT binary patch literal 29860 zcmdUY37A|}nfAR^U7bCIB_tt4Dv6j5p{i@|Dj-0mySlqfZ>c2P|4-9eN?j z5BzLmKty1W2{Afh5gBoiAhH`#6dXYY8Am}GK!(BPL55*a5E=Dt%Js3pWpe!i;Bj*82QHWE6~LAFyY}A84qA8BSu?G}t%sMbIQE!}PhRH1 z`Qc+{<7}@ybKPR=P^4m#yBIAsupmT=h2}JNvmeRXMpeaY&Yi#oO9OSHc{#c*K@AnSr1a` z?32~)_F2F5(`|>kJqOo^+sDs8a*lWY()qk;QGfd4 zz3Y}x{#ibw9uJy2d)n-12KZ)q@CPdROebnI9mFQ{m@2(ay*-2Sc`e&Jv(7i`kF#+- z$LF0@@0Cg>-U`JCD@J6dW~!UW`eFSWO}~OCI9$ClyVt#*JrJS z;`^-iOw}Ds;oD3}j42F2zkF7N%fAG=>a$8*?>{n^4szSy;+(%>Y7aoPKI_s|biS1- z$uK3a!%O)rhbj3_XqwM@4s!KbNeIAaeH=c`XRTohU*hwRVY)u+cg*?oy>xwmbJ|?v zxy*qdaQXF2?KxbpmnpgS1j@gb+x2sn?3=I!pYp4z&j#EAkPwcbq z;B$y&*Tg!L<Ot@H9T_I+oq-Oko~| z=d*mL(D}1U;>?rpu%=zLfYKk}w$Ef9-j}452utuIa9)rI*Lw%+&js@+Wr$0Af%R}P z%i=n&caYC7vZQ{-CH#RYyp4IjnA@0TI#)4mZ?SxzXKo)rU*)r2;_`pZG(5&ST*rC- zo@M$dbMI^1-uvN0eb(1lcK2~BHZxTdtWno+`PXoZ0-W;%uH_7-wuRgB1ncnS{MJ_1 zjiXtzuQLtn`RNkob32#zd#>ebw%@zhMmo4f1=fwjn5$26d&l^E18dzP&i^F)ko&kT z6Gsx|FR0$Tq^k{ z*1)-}W0$ZlUCP>?W`16HH061h^W4Iee1q${nd#3k2ezPB^I3D44~v+dOWAUp`K>VL zf1bJeBA59n>st$J%PT2*7j7EoLG;Q#>t*KTyPR`Bm*a4mTUg3>@za%TFJ