diff --git a/F4-Gyro-RTOS/.cproject b/F4-Gyro-RTOS/.cproject
new file mode 100644
index 0000000..a2899af
--- /dev/null
+++ b/F4-Gyro-RTOS/.cproject
@@ -0,0 +1,318 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/F4-Gyro-RTOS/.cproject.bak b/F4-Gyro-RTOS/.cproject.bak
new file mode 100644
index 0000000..ab000d3
--- /dev/null
+++ b/F4-Gyro-RTOS/.cproject.bak
@@ -0,0 +1,318 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/F4-Gyro-RTOS/.mxproject b/F4-Gyro-RTOS/.mxproject
index fe3d22c..350615e 100644
--- a/F4-Gyro-RTOS/.mxproject
+++ b/F4-Gyro-RTOS/.mxproject
@@ -1,13 +1,18 @@
[PreviousGenFiles]
-HeaderPath=C:/Users/VuSon/Desktop/STM32F0_Workshop 2016/STM32F0 DK Exercises/FreeRTOS-STM32F4-Tutorial/F4-Gyro-RTOS/Inc
+HeaderPath=C:/Users/Administrator/Desktop/node_red/FreeRTOS-STM32F4-Tutorial/F4-Gyro-RTOS/Inc
HeaderFiles=FreeRTOSConfig.h;usb_device.h;usbd_conf.h;usbd_desc.h;usbd_cdc_if.h;stm32f4xx_it.h;stm32f4xx_hal_conf.h;main.h;
-SourcePath=C:/Users/VuSon/Desktop/STM32F0_Workshop 2016/STM32F0 DK Exercises/FreeRTOS-STM32F4-Tutorial/F4-Gyro-RTOS/Src
+SourcePath=C:/Users/Administrator/Desktop/node_red/FreeRTOS-STM32F4-Tutorial/F4-Gyro-RTOS/Src
SourceFiles=freertos.c;usb_device.c;usbd_conf.c;usbd_desc.c;usbd_cdc_if.c;stm32f4xx_it.c;stm32f4xx_hal_msp.c;stm32f4xx_hal_timebase_TIM.c;main.c;
[PreviousLibFiles]
-LibFiles=Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_usb.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2s.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2s_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_spi.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ramfunc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_cortex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h;Drivers/STM32F4xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h;Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F/portmacro.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h;Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc/usbd_cdc.h;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c;Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c;Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F/port.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c;Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c;Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f407xx.h;Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h;Drivers/CMSIS/Device/ST/STM32F4xx/Include/system_stm32f4xx.h;Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c;Middlewares/Third_Party/FreeRTOS/Source/include/croutine.h;Middlewares/Third_Party/FreeRTOS/Source/include/deprecated_definitions.h;Middlewares/Third_Party/FreeRTOS/Source/include/event_groups.h;Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h;Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOSConfig_template.h;Middlewares/Third_Party/FreeRTOS/Source/include/list.h;Middlewares/Third_Party/FreeRTOS/Source/include/mpu_prototypes.h;Middlewares/Third_Party/FreeRTOS/Source/include/mpu_wrappers.h;Middlewares/Third_Party/FreeRTOS/Source/include/portable.h;Middlewares/Third_Party/FreeRTOS/Source/include/projdefs.h;Middlewares/Third_Party/FreeRTOS/Source/include/queue.h;Middlewares/Third_Party/FreeRTOS/Source/include/semphr.h;Middlewares/Third_Party/FreeRTOS/Source/include/StackMacros.h;Middlewares/Third_Party/FreeRTOS/Source/include/task.h;Middlewares/Third_Party/FreeRTOS/Source/include/timers.h;Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.h;Middlewares/Third_Party/FreeRTOS/Source/croutine.c;Middlewares/Third_Party/FreeRTOS/Source/event_groups.c;Middlewares/Third_Party/FreeRTOS/Source/list.c;Middlewares/Third_Party/FreeRTOS/Source/queue.c;Middlewares/Third_Party/FreeRTOS/Source/tasks.c;Middlewares/Third_Party/FreeRTOS/Source/timers.c;Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.c;Drivers/CMSIS/Include/arm_common_tables.h;Drivers/CMSIS/Include/arm_const_structs.h;Drivers/CMSIS/Include/arm_math.h;Drivers/CMSIS/Include/cmsis_armcc.h;Drivers/CMSIS/Include/cmsis_armcc_V6.h;Drivers/CMSIS/Include/cmsis_gcc.h;Drivers/CMSIS/Include/core_cm0.h;Drivers/CMSIS/Include/core_cm0plus.h;Drivers/CMSIS/Include/core_cm3.h;Drivers/CMSIS/Include/core_cm4.h;Drivers/CMSIS/Include/core_cm7.h;Drivers/CMSIS/Include/core_cmFunc.h;Drivers/CMSIS/Include/core_cmInstr.h;Drivers/CMSIS/Include/core_cmSimd.h;Drivers/CMSIS/Include/core_sc000.h;Drivers/CMSIS/Include/core_sc300.h;
+LibFiles=Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_usb.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2c_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2s.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_i2s_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_spi.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ramfunc.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr_ex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_cortex.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h;Drivers/STM32F4xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h;Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h;Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h;Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc/usbd_cdc.h;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c;Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c;Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c;Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c;Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c;Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f407xx.h;Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h;Drivers/CMSIS/Device/ST/STM32F4xx/Include/system_stm32f4xx.h;Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c;Middlewares/Third_Party/FreeRTOS/Source/include/croutine.h;Middlewares/Third_Party/FreeRTOS/Source/include/deprecated_definitions.h;Middlewares/Third_Party/FreeRTOS/Source/include/event_groups.h;Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h;Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOSConfig_template.h;Middlewares/Third_Party/FreeRTOS/Source/include/list.h;Middlewares/Third_Party/FreeRTOS/Source/include/mpu_prototypes.h;Middlewares/Third_Party/FreeRTOS/Source/include/mpu_wrappers.h;Middlewares/Third_Party/FreeRTOS/Source/include/portable.h;Middlewares/Third_Party/FreeRTOS/Source/include/projdefs.h;Middlewares/Third_Party/FreeRTOS/Source/include/queue.h;Middlewares/Third_Party/FreeRTOS/Source/include/semphr.h;Middlewares/Third_Party/FreeRTOS/Source/include/StackMacros.h;Middlewares/Third_Party/FreeRTOS/Source/include/task.h;Middlewares/Third_Party/FreeRTOS/Source/include/timers.h;Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.h;Middlewares/Third_Party/FreeRTOS/Source/croutine.c;Middlewares/Third_Party/FreeRTOS/Source/event_groups.c;Middlewares/Third_Party/FreeRTOS/Source/list.c;Middlewares/Third_Party/FreeRTOS/Source/queue.c;Middlewares/Third_Party/FreeRTOS/Source/tasks.c;Middlewares/Third_Party/FreeRTOS/Source/timers.c;Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.c;Drivers/CMSIS/Include/arm_common_tables.h;Drivers/CMSIS/Include/arm_const_structs.h;Drivers/CMSIS/Include/arm_math.h;Drivers/CMSIS/Include/cmsis_armcc.h;Drivers/CMSIS/Include/cmsis_armcc_V6.h;Drivers/CMSIS/Include/cmsis_gcc.h;Drivers/CMSIS/Include/core_cm0.h;Drivers/CMSIS/Include/core_cm0plus.h;Drivers/CMSIS/Include/core_cm3.h;Drivers/CMSIS/Include/core_cm4.h;Drivers/CMSIS/Include/core_cm7.h;Drivers/CMSIS/Include/core_cmFunc.h;Drivers/CMSIS/Include/core_cmInstr.h;Drivers/CMSIS/Include/core_cmSimd.h;Drivers/CMSIS/Include/core_sc000.h;Drivers/CMSIS/Include/core_sc300.h;
[PreviousUsedKeilFiles]
SourceFiles=..\Src\main.c;..\Src\freertos.c;..\Src\usb_device.c;..\Src\usbd_conf.c;..\Src\usbd_desc.c;..\Src\usbd_cdc_if.c;..\Src\stm32f4xx_it.c;..\Src\stm32f4xx_hal_msp.c;..\Src\stm32f4xx_hal_timebase_TIM.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c;../Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c;../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F/port.c;../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c;../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c;../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c;../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c;../Middlewares/Third_Party/FreeRTOS/Source/croutine.c;../Middlewares/Third_Party/FreeRTOS/Source/event_groups.c;../Middlewares/Third_Party/FreeRTOS/Source/list.c;../Middlewares/Third_Party/FreeRTOS/Source/queue.c;../Middlewares/Third_Party/FreeRTOS/Source/tasks.c;../Middlewares/Third_Party/FreeRTOS/Source/timers.c;../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.c;../\Src/system_stm32f4xx.c;../Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c;null;../Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c;../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F/port.c;../Middlewares/Third_Party/FreeRTOS/Source/croutine.c;../Middlewares/Third_Party/FreeRTOS/Source/event_groups.c;../Middlewares/Third_Party/FreeRTOS/Source/list.c;../Middlewares/Third_Party/FreeRTOS/Source/queue.c;../Middlewares/Third_Party/FreeRTOS/Source/tasks.c;../Middlewares/Third_Party/FreeRTOS/Source/timers.c;../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.c;../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c;../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c;../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c;../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c;
HeaderPath=..\Drivers\STM32F4xx_HAL_Driver\Inc;..\Drivers\STM32F4xx_HAL_Driver\Inc\Legacy;..\Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F;..\Middlewares\ST\STM32_USB_Device_Library\Core\Inc;..\Middlewares\ST\STM32_USB_Device_Library\Class\CDC\Inc;..\Drivers\CMSIS\Device\ST\STM32F4xx\Include;..\Middlewares\Third_Party\FreeRTOS\Source\include;..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS;..\Drivers\CMSIS\Include;..\Inc;
+[PreviousUsedTStudioFiles]
+SourceFiles=..\Src\main.c;..\Src\freertos.c;..\Src\usb_device.c;..\Src\usbd_conf.c;..\Src\usbd_desc.c;..\Src\usbd_cdc_if.c;..\Src\stm32f4xx_it.c;..\Src\stm32f4xx_hal_msp.c;..\Src\stm32f4xx_hal_timebase_TIM.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c;../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c;../Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c;../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c;../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c;../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c;../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c;../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c;../Middlewares/Third_Party/FreeRTOS/Source/croutine.c;../Middlewares/Third_Party/FreeRTOS/Source/event_groups.c;../Middlewares/Third_Party/FreeRTOS/Source/list.c;../Middlewares/Third_Party/FreeRTOS/Source/queue.c;../Middlewares/Third_Party/FreeRTOS/Source/tasks.c;../Middlewares/Third_Party/FreeRTOS/Source/timers.c;../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.c;../\Src/system_stm32f4xx.c;../Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c;null;../Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c;../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c;../Middlewares/Third_Party/FreeRTOS/Source/croutine.c;../Middlewares/Third_Party/FreeRTOS/Source/event_groups.c;../Middlewares/Third_Party/FreeRTOS/Source/list.c;../Middlewares/Third_Party/FreeRTOS/Source/queue.c;../Middlewares/Third_Party/FreeRTOS/Source/tasks.c;../Middlewares/Third_Party/FreeRTOS/Source/timers.c;../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.c;../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c;../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c;../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c;../Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c;
+HeaderPath=..\Drivers\STM32F4xx_HAL_Driver\Inc;..\Drivers\STM32F4xx_HAL_Driver\Inc\Legacy;..\Middlewares\Third_Party\FreeRTOS\Source\portable\GCC\ARM_CM4F;..\Middlewares\ST\STM32_USB_Device_Library\Core\Inc;..\Middlewares\ST\STM32_USB_Device_Library\Class\CDC\Inc;..\Drivers\CMSIS\Device\ST\STM32F4xx\Include;..\Middlewares\Third_Party\FreeRTOS\Source\include;..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS;..\Drivers\CMSIS\Include;..\Inc;
+CDefines=__weak:__attribute__((weak));__packed:__attribute__((__packed__));
+
diff --git a/F4-Gyro-RTOS/.project b/F4-Gyro-RTOS/.project
new file mode 100644
index 0000000..faa95fe
--- /dev/null
+++ b/F4-Gyro-RTOS/.project
@@ -0,0 +1,76 @@
+
+
+ F4-Gyro-RTOS
+
+
+
+
+
+ org.eclipse.cdt.managedbuilder.core.genmakebuilder
+ clean,full,incremental,
+
+
+ ?children?
+ ?name?=outputEntries\|?children?=?name?=entry\\\\\\\|\\\|\||
+
+
+ ?name?
+
+
+
+ org.eclipse.cdt.make.core.append_environment
+ true
+
+
+ org.eclipse.cdt.make.core.buildArguments
+
+
+
+ org.eclipse.cdt.make.core.buildCommand
+ make
+
+
+ org.eclipse.cdt.make.core.buildLocation
+ ${workspace_loc:/STM32100B-EVAL/Debug}
+
+
+ org.eclipse.cdt.make.core.contents
+ org.eclipse.cdt.make.core.activeConfigSettings
+
+
+ org.eclipse.cdt.make.core.enableAutoBuild
+ false
+
+
+ org.eclipse.cdt.make.core.enableCleanBuild
+ true
+
+
+ org.eclipse.cdt.make.core.enableFullBuild
+ true
+
+
+ org.eclipse.cdt.make.core.stopOnError
+ true
+
+
+ org.eclipse.cdt.make.core.useDefaultBuildCmd
+ true
+
+
+
+
+ org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder
+
+
+
+
+
+ org.eclipse.cdt.core.cnature
+ org.eclipse.cdt.managedbuilder.core.managedBuildNature
+ org.eclipse.cdt.managedbuilder.core.ScannerConfigNature
+
+
+
+
+
diff --git a/F4-Gyro-RTOS/.project.bak b/F4-Gyro-RTOS/.project.bak
new file mode 100644
index 0000000..faa95fe
--- /dev/null
+++ b/F4-Gyro-RTOS/.project.bak
@@ -0,0 +1,76 @@
+
+
+ F4-Gyro-RTOS
+
+
+
+
+
+ org.eclipse.cdt.managedbuilder.core.genmakebuilder
+ clean,full,incremental,
+
+
+ ?children?
+ ?name?=outputEntries\|?children?=?name?=entry\\\\\\\|\\\|\||
+
+
+ ?name?
+
+
+
+ org.eclipse.cdt.make.core.append_environment
+ true
+
+
+ org.eclipse.cdt.make.core.buildArguments
+
+
+
+ org.eclipse.cdt.make.core.buildCommand
+ make
+
+
+ org.eclipse.cdt.make.core.buildLocation
+ ${workspace_loc:/STM32100B-EVAL/Debug}
+
+
+ org.eclipse.cdt.make.core.contents
+ org.eclipse.cdt.make.core.activeConfigSettings
+
+
+ org.eclipse.cdt.make.core.enableAutoBuild
+ false
+
+
+ org.eclipse.cdt.make.core.enableCleanBuild
+ true
+
+
+ org.eclipse.cdt.make.core.enableFullBuild
+ true
+
+
+ org.eclipse.cdt.make.core.stopOnError
+ true
+
+
+ org.eclipse.cdt.make.core.useDefaultBuildCmd
+ true
+
+
+
+
+ org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder
+
+
+
+
+
+ org.eclipse.cdt.core.cnature
+ org.eclipse.cdt.managedbuilder.core.managedBuildNature
+ org.eclipse.cdt.managedbuilder.core.ScannerConfigNature
+
+
+
+
+
diff --git a/F4-Gyro-RTOS/.settings/com.atollic.truestudio.debug.hardware_device.prefs b/F4-Gyro-RTOS/.settings/com.atollic.truestudio.debug.hardware_device.prefs
new file mode 100644
index 0000000..f4a1b13
--- /dev/null
+++ b/F4-Gyro-RTOS/.settings/com.atollic.truestudio.debug.hardware_device.prefs
@@ -0,0 +1,11 @@
+BOARD=None
+CODE_LOCATION=FLASH
+ENDIAN=Little-endian
+MCU=STM32F407VG
+MCU_VENDOR=STMicroelectronics
+MODEL=Lite
+PROBE=ST-LINK
+PROJECT_FORMAT_VERSION=2
+TARGET=ARM\u00AE
+VERSION=4.1.0
+eclipse.preferences.version=1
diff --git a/F4-Gyro-RTOS/.settings/language.settings.xml b/F4-Gyro-RTOS/.settings/language.settings.xml
new file mode 100644
index 0000000..2f1410c
--- /dev/null
+++ b/F4-Gyro-RTOS/.settings/language.settings.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/F4-Gyro-RTOS/.settings/org.eclipse.cdt.codan.core.prefs b/F4-Gyro-RTOS/.settings/org.eclipse.cdt.codan.core.prefs
new file mode 100644
index 0000000..b5248c6
--- /dev/null
+++ b/F4-Gyro-RTOS/.settings/org.eclipse.cdt.codan.core.prefs
@@ -0,0 +1,71 @@
+eclipse.preferences.version=1
+org.eclipse.cdt.codan.checkers.errnoreturn=Warning
+org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false}
+org.eclipse.cdt.codan.checkers.errreturnvalue=Error
+org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"}
+org.eclipse.cdt.codan.checkers.nocommentinside=-Error
+org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"}
+org.eclipse.cdt.codan.checkers.nolinecomment=-Error
+org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"}
+org.eclipse.cdt.codan.checkers.noreturn=Error
+org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false}
+org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error
+org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"}
+org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error
+org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"}
+org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"}
+org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error
+org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"}
+org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false}
+org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning
+org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()}
+org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error
+org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"}
+org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning
+org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true}
+org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error
+org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"}
+org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error
+org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"}
+org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error
+org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"}
+org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error
+org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"}
+org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error
+org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"}
+org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error
+org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"}
+org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error
+org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"}
+org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info
+org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()}
+org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"}
+org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error
+org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"}
+org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error
+org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"}
+org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error
+org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"}
+org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning
+org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"}
+org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning
+org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"}
+org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()}
+org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false}
+org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false}
+org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error
+org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"}
+org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true}
+org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true}
+org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")}
+org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error
+org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"}
diff --git a/F4-Gyro-RTOS/.settings/org.eclipse.cdt.managedbuilder.core.prefs b/F4-Gyro-RTOS/.settings/org.eclipse.cdt.managedbuilder.core.prefs
new file mode 100644
index 0000000..66eb673
--- /dev/null
+++ b/F4-Gyro-RTOS/.settings/org.eclipse.cdt.managedbuilder.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+environment/buildEnvironmentInclude/com.atollic.truestudio.exe.debug.1518366166/CPATH/delimiter=;
+environment/buildEnvironmentInclude/com.atollic.truestudio.exe.debug.1518366166/CPATH/operation=remove
+environment/buildEnvironmentInclude/com.atollic.truestudio.exe.debug.1518366166/C_INCLUDE_PATH/delimiter=;
+environment/buildEnvironmentInclude/com.atollic.truestudio.exe.debug.1518366166/C_INCLUDE_PATH/operation=remove
+environment/buildEnvironmentInclude/com.atollic.truestudio.exe.debug.1518366166/append=true
+environment/buildEnvironmentInclude/com.atollic.truestudio.exe.debug.1518366166/appendContributed=true
+environment/buildEnvironmentLibrary/com.atollic.truestudio.exe.debug.1518366166/LIBRARY_PATH/delimiter=;
+environment/buildEnvironmentLibrary/com.atollic.truestudio.exe.debug.1518366166/LIBRARY_PATH/operation=remove
+environment/buildEnvironmentLibrary/com.atollic.truestudio.exe.debug.1518366166/append=true
+environment/buildEnvironmentLibrary/com.atollic.truestudio.exe.debug.1518366166/appendContributed=true
diff --git a/F4-Gyro-RTOS/Debug/Drivers/BSP/Components/.gitignore b/F4-Gyro-RTOS/Debug/Drivers/BSP/Components/.gitignore
new file mode 100644
index 0000000..b99cbb0
--- /dev/null
+++ b/F4-Gyro-RTOS/Debug/Drivers/BSP/Components/.gitignore
@@ -0,0 +1,16 @@
+/exc7200/
+/otm8009a/
+/lis3dsh/
+/cs43l22/
+/ili9325/
+/st7735/
+/stmpe811/
+/l3gd20/
+/lis302dl/
+/mfxstm32l152/
+/ls016b8uy/
+/lsm303dlhc/
+/ft6x06/
+/ili9341/
+/st7789h2/
+/stmpe1600/
diff --git a/F4-Gyro-RTOS/Debug/Drivers/BSP/Components/ov2640/ov2640.su b/F4-Gyro-RTOS/Debug/Drivers/BSP/Components/ov2640/ov2640.su
new file mode 100644
index 0000000..f7de7af
--- /dev/null
+++ b/F4-Gyro-RTOS/Debug/Drivers/BSP/Components/ov2640/ov2640.su
@@ -0,0 +1,3 @@
+ov2640.c:1046:6:ov2640_Init 16 static
+ov2640.c:1172:10:ov2640_ReadID 8 static
+ov2640.c:1112:6:ov2640_Config 16 static
diff --git a/F4-Gyro-RTOS/Debug/Drivers/BSP/Components/s5k5cag/s5k5cag.su b/F4-Gyro-RTOS/Debug/Drivers/BSP/Components/s5k5cag/s5k5cag.su
new file mode 100644
index 0000000..61f745c
--- /dev/null
+++ b/F4-Gyro-RTOS/Debug/Drivers/BSP/Components/s5k5cag/s5k5cag.su
@@ -0,0 +1,3 @@
+s5k5cag.c:3270:10:s5k5cag_ReadID 8 static
+s5k5cag.c:3141:6:s5k5cag_Config 24 static
+s5k5cag.c:3060:6:s5k5cag_Init 32 static
diff --git a/F4-Gyro-RTOS/Debug/Drivers/BSP/Components/ts3510/ts3510.su b/F4-Gyro-RTOS/Debug/Drivers/BSP/Components/ts3510/ts3510.su
new file mode 100644
index 0000000..c228dc3
--- /dev/null
+++ b/F4-Gyro-RTOS/Debug/Drivers/BSP/Components/ts3510/ts3510.su
@@ -0,0 +1,10 @@
+ts3510.c:138:10:ts3510_ReadID 0 static
+ts3510.c:227:9:ts3510_TS_ITStatus 0 static
+ts3510.c:237:6:ts3510_TS_ClearIT 0 static
+ts3510.c:116:6:ts3510_Init 0 static
+ts3510.c:157:9:ts3510_TS_DetectTouch 24 static
+ts3510.c:186:6:ts3510_TS_GetXY 32 static
+ts3510.c:209:6:ts3510_TS_EnableIT 0 static
+ts3510.c:218:6:ts3510_TS_DisableIT 0 static
+ts3510.c:128:6:ts3510_Reset 0 static
+ts3510.c:148:6:ts3510_TS_Start 0 static
diff --git a/F4-Gyro-RTOS/Debug/Drivers/BSP/Components/wm8994/wm8994.su b/F4-Gyro-RTOS/Debug/Drivers/BSP/Components/wm8994/wm8994.su
new file mode 100644
index 0000000..b086969
--- /dev/null
+++ b/F4-Gyro-RTOS/Debug/Drivers/BSP/Components/wm8994/wm8994.su
@@ -0,0 +1,12 @@
+wm8994.c:850:10:wm8994_SetOutputMode 8 static
+wm8994.c:937:10:wm8994_SetFrequency 8 static
+wm8994.c:992:10:wm8994_Reset 8 static
+wm8994.c:609:6:wm8994_DeInit 0 static
+wm8994.c:620:10:wm8994_ReadID 8 static
+wm8994.c:815:10:wm8994_SetMute 8 static
+wm8994.c:634:10:wm8994_Play 0 static
+wm8994.c:650:10:wm8994_Pause 16 static
+wm8994.c:669:10:wm8994_Resume 0 static
+wm8994.c:739:10:wm8994_SetVolume 24 static
+wm8994.c:136:10:wm8994_Init 40 static
+wm8994.c:693:10:wm8994_Stop 24 static
diff --git a/F4-Gyro-RTOS/Debug/Drivers/BSP/STM32F4-Discovery/stm32f4_discovery.su b/F4-Gyro-RTOS/Debug/Drivers/BSP/STM32F4-Discovery/stm32f4_discovery.su
new file mode 100644
index 0000000..17a2579
--- /dev/null
+++ b/F4-Gyro-RTOS/Debug/Drivers/BSP/STM32F4-Discovery/stm32f4_discovery.su
@@ -0,0 +1,18 @@
+stm32f4_discovery.c:309:13:SPIx_Init 40 static
+stm32f4_discovery.c:338:16:SPIx_WriteRead 32 static
+stm32f4_discovery.c:390:13:I2Cx_Init 48 static
+stm32f4_discovery.c:156:10:BSP_GetVersion 0 static
+stm32f4_discovery.c:170:6:BSP_LED_Init 56 static
+stm32f4_discovery.c:197:6:BSP_LED_On 0 static
+stm32f4_discovery.c:211:6:BSP_LED_Off 0 static
+stm32f4_discovery.c:225:6:BSP_LED_Toggle 0 static
+stm32f4_discovery.c:248:6:BSP_PB_Init 32 static
+stm32f4_discovery.c:287:10:BSP_PB_GetState 8 static
+stm32f4_discovery.c:508:6:ACCELERO_IO_Init 40 static
+stm32f4_discovery.c:533:6:ACCELERO_IO_ITConfig 32 static
+stm32f4_discovery.c:558:6:ACCELERO_IO_Write 16 static
+stm32f4_discovery.c:592:6:ACCELERO_IO_Read 16 static
+stm32f4_discovery.c:626:6:AUDIO_IO_Init 48 static
+stm32f4_discovery.c:658:6:AUDIO_IO_DeInit 0 static
+stm32f4_discovery.c:669:6:AUDIO_IO_Write 32 static
+stm32f4_discovery.c:680:9:AUDIO_IO_Read 32 static
diff --git a/F4-Gyro-RTOS/Debug/Drivers/BSP/STM32F4-Discovery/stm32f4_discovery_accelerometer.su b/F4-Gyro-RTOS/Debug/Drivers/BSP/STM32F4-Discovery/stm32f4_discovery_accelerometer.su
new file mode 100644
index 0000000..addf202
--- /dev/null
+++ b/F4-Gyro-RTOS/Debug/Drivers/BSP/STM32F4-Discovery/stm32f4_discovery_accelerometer.su
@@ -0,0 +1,6 @@
+stm32f4_discovery_accelerometer.c:98:9:BSP_ACCELERO_Init 16 static
+stm32f4_discovery_accelerometer.c:181:9:BSP_ACCELERO_ReadID 0 static
+stm32f4_discovery_accelerometer.c:195:6:BSP_ACCELERO_Reset 0 static
+stm32f4_discovery_accelerometer.c:206:6:BSP_ACCELERO_Click_ITConfig 0 static
+stm32f4_discovery_accelerometer.c:217:6:BSP_ACCELERO_Click_ITClear 0 static
+stm32f4_discovery_accelerometer.c:230:6:BSP_ACCELERO_GetXYZ 16 static
diff --git a/F4-Gyro-RTOS/Debug/Drivers/BSP/STM32F4-Discovery/stm32f4_discovery_audio.su b/F4-Gyro-RTOS/Debug/Drivers/BSP/STM32F4-Discovery/stm32f4_discovery_audio.su
new file mode 100644
index 0000000..e69de29
diff --git a/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.su b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.su
new file mode 100644
index 0000000..e6f321f
--- /dev/null
+++ b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.su
@@ -0,0 +1,25 @@
+stm32f4xx_hal.c:235:13:HAL_MspInit 0 static
+stm32f4xx_hal.c:246:13:HAL_MspDeInit 0 static
+stm32f4xx_hal.c:206:19:HAL_DeInit 8 static
+stm32f4xx_hal.c:269:26:HAL_InitTick 16 static
+stm32f4xx_hal.c:173:19:HAL_Init 8 static
+stm32f4xx_hal.c:328:13:HAL_IncTick 0 static
+stm32f4xx_hal.c:339:17:HAL_GetTick 0 static
+stm32f4xx_hal.c:348:10:HAL_GetTickPrio 0 static
+stm32f4xx_hal.c:357:19:HAL_SetTickFreq 8 static
+stm32f4xx_hal.c:377:21:HAL_GetTickFreq 0 static
+stm32f4xx_hal.c:393:13:HAL_Delay 16 static
+stm32f4xx_hal.c:419:13:HAL_SuspendTick 0 static
+stm32f4xx_hal.c:435:13:HAL_ResumeTick 0 static
+stm32f4xx_hal.c:445:10:HAL_GetHalVersion 0 static
+stm32f4xx_hal.c:454:10:HAL_GetREVID 0 static
+stm32f4xx_hal.c:463:10:HAL_GetDEVID 0 static
+stm32f4xx_hal.c:472:6:HAL_DBGMCU_EnableDBGSleepMode 0 static
+stm32f4xx_hal.c:481:6:HAL_DBGMCU_DisableDBGSleepMode 0 static
+stm32f4xx_hal.c:490:6:HAL_DBGMCU_EnableDBGStopMode 0 static
+stm32f4xx_hal.c:499:6:HAL_DBGMCU_DisableDBGStopMode 0 static
+stm32f4xx_hal.c:508:6:HAL_DBGMCU_EnableDBGStandbyMode 0 static
+stm32f4xx_hal.c:517:6:HAL_DBGMCU_DisableDBGStandbyMode 0 static
+stm32f4xx_hal.c:528:6:HAL_EnableCompensationCell 0 static
+stm32f4xx_hal.c:539:6:HAL_DisableCompensationCell 0 static
+stm32f4xx_hal.c:549:6:HAL_GetUID 0 static
diff --git a/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.su b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.su
new file mode 100644
index 0000000..a849056
--- /dev/null
+++ b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.su
@@ -0,0 +1,18 @@
+stm32f4xx_hal_cortex.c:159:6:HAL_NVIC_SetPriorityGrouping 0 static
+stm32f4xx_hal_cortex.c:181:6:HAL_NVIC_SetPriority 12 static
+stm32f4xx_hal_cortex.c:203:6:HAL_NVIC_EnableIRQ 0 static
+stm32f4xx_hal_cortex.c:219:6:HAL_NVIC_DisableIRQ 0 static
+stm32f4xx_hal_cortex.c:232:6:HAL_NVIC_SystemReset 0 static
+stm32f4xx_hal_cortex.c:245:10:HAL_SYSTICK_Config 0 static
+stm32f4xx_hal_cortex.c:274:6:HAL_MPU_Disable 0 static
+stm32f4xx_hal_cortex.c:297:6:HAL_MPU_Enable 0 static
+stm32f4xx_hal_cortex.c:316:6:HAL_MPU_ConfigRegion 8 static
+stm32f4xx_hal_cortex.c:360:10:HAL_NVIC_GetPriorityGrouping 0 static
+stm32f4xx_hal_cortex.c:387:6:HAL_NVIC_GetPriority 16 static
+stm32f4xx_hal_cortex.c:402:6:HAL_NVIC_SetPendingIRQ 0 static
+stm32f4xx_hal_cortex.c:420:10:HAL_NVIC_GetPendingIRQ 0 static
+stm32f4xx_hal_cortex.c:436:6:HAL_NVIC_ClearPendingIRQ 0 static
+stm32f4xx_hal_cortex.c:453:10:HAL_NVIC_GetActive 0 static
+stm32f4xx_hal_cortex.c:470:6:HAL_SYSTICK_CLKSourceConfig 0 static
+stm32f4xx_hal_cortex.c:497:13:HAL_SYSTICK_Callback 0 static
+stm32f4xx_hal_cortex.c:488:6:HAL_SYSTICK_IRQHandler 8 static
diff --git a/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.su b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.su
new file mode 100644
index 0000000..e61ef79
--- /dev/null
+++ b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.su
@@ -0,0 +1,13 @@
+stm32f4xx_hal_dma.c:1193:17:DMA_CalcBaseAndBitshift 0 static
+stm32f4xx_hal_dma.c:187:19:HAL_DMA_Init 16 static
+stm32f4xx_hal_dma.c:326:19:HAL_DMA_DeInit 16 static
+stm32f4xx_hal_dma.c:416:19:HAL_DMA_Start 12 static
+stm32f4xx_hal_dma.c:460:19:HAL_DMA_Start_IT 16 static
+stm32f4xx_hal_dma.c:523:19:HAL_DMA_Abort 16 static
+stm32f4xx_hal_dma.c:590:19:HAL_DMA_Abort_IT 0 static
+stm32f4xx_hal_dma.c:620:19:HAL_DMA_PollForTransfer 40 static
+stm32f4xx_hal_dma.c:756:6:HAL_DMA_IRQHandler 32 static
+stm32f4xx_hal_dma.c:977:19:HAL_DMA_RegisterCallback 8 static
+stm32f4xx_hal_dma.c:1037:19:HAL_DMA_UnRegisterCallback 0 static
+stm32f4xx_hal_dma.c:1122:22:HAL_DMA_GetState 0 static
+stm32f4xx_hal_dma.c:1133:10:HAL_DMA_GetError 0 static
diff --git a/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.su b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.su
new file mode 100644
index 0000000..05ab84d
--- /dev/null
+++ b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.su
@@ -0,0 +1,3 @@
+stm32f4xx_hal_dma_ex.c:117:19:HAL_DMAEx_MultiBufferStart 12 static
+stm32f4xx_hal_dma_ex.c:171:19:HAL_DMAEx_MultiBufferStart_IT 16 static
+stm32f4xx_hal_dma_ex.c:256:19:HAL_DMAEx_ChangeMemory 0 static
diff --git a/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.su b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.su
new file mode 100644
index 0000000..67639b9
--- /dev/null
+++ b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.su
@@ -0,0 +1,16 @@
+stm32f4xx_hal_flash.c:628:13:FLASH_Program_DoubleWord 8 static
+stm32f4xx_hal_flash.c:656:13:FLASH_Program_Word 0 static
+stm32f4xx_hal_flash.c:681:13:FLASH_Program_HalfWord 0 static
+stm32f4xx_hal_flash.c:723:13:FLASH_SetErrorCode 0 static
+stm32f4xx_hal_flash.c:230:19:HAL_FLASH_Program_IT 24 static
+stm32f4xx_hal_flash.c:400:13:HAL_FLASH_EndOfOperationCallback 0 static
+stm32f4xx_hal_flash.c:417:13:HAL_FLASH_OperationErrorCallback 0 static
+stm32f4xx_hal_flash.c:277:6:HAL_FLASH_IRQHandler 16 static
+stm32f4xx_hal_flash.c:449:19:HAL_FLASH_Unlock 0 static
+stm32f4xx_hal_flash.c:473:19:HAL_FLASH_Lock 0 static
+stm32f4xx_hal_flash.c:485:19:HAL_FLASH_OB_Unlock 0 static
+stm32f4xx_hal_flash.c:505:19:HAL_FLASH_OB_Lock 0 static
+stm32f4xx_hal_flash.c:554:10:HAL_FLASH_GetError 0 static
+stm32f4xx_hal_flash.c:568:19:FLASH_WaitForLastOperation 24 static
+stm32f4xx_hal_flash.c:172:19:HAL_FLASH_Program 24 static
+stm32f4xx_hal_flash.c:517:19:HAL_FLASH_OB_Launch 0 static
diff --git a/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.su b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.su
new file mode 100644
index 0000000..34c9e54
--- /dev/null
+++ b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.su
@@ -0,0 +1,7 @@
+stm32f4xx_hal_flash_ex.c:969:13:FLASH_MassErase.isra.0 0 static
+stm32f4xx_hal_flash_ex.c:302:19:HAL_FLASHEx_OBProgram 16 static
+stm32f4xx_hal_flash_ex.c:361:6:HAL_FLASHEx_OBGetConfig 0 static
+stm32f4xx_hal_flash_ex.c:998:6:FLASH_Erase_Sector 0 static
+stm32f4xx_hal_flash_ex.c:249:19:HAL_FLASHEx_Erase_IT 8 static
+stm32f4xx_hal_flash_ex.c:1327:6:FLASH_FlushCaches 0 static
+stm32f4xx_hal_flash_ex.c:178:19:HAL_FLASHEx_Erase 32 static
diff --git a/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.su b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.su
new file mode 100644
index 0000000..e69de29
diff --git a/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.su b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.su
new file mode 100644
index 0000000..5011c05
--- /dev/null
+++ b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.su
@@ -0,0 +1,8 @@
+stm32f4xx_hal_gpio.c:187:6:HAL_GPIO_Init 56 static
+stm32f4xx_hal_gpio.c:312:6:HAL_GPIO_DeInit 36 static
+stm32f4xx_hal_gpio.c:393:15:HAL_GPIO_ReadPin 0 static
+stm32f4xx_hal_gpio.c:428:6:HAL_GPIO_WritePin 0 static
+stm32f4xx_hal_gpio.c:451:6:HAL_GPIO_TogglePin 0 static
+stm32f4xx_hal_gpio.c:470:19:HAL_GPIO_LockPin 8 static
+stm32f4xx_hal_gpio.c:518:13:HAL_GPIO_EXTI_Callback 0 static
+stm32f4xx_hal_gpio.c:503:6:HAL_GPIO_EXTI_IRQHandler 8 static
diff --git a/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.su b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.su
new file mode 100644
index 0000000..b2bac0d
--- /dev/null
+++ b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.su
@@ -0,0 +1,57 @@
+stm32f4xx_hal_i2c.c:5462:26:I2C_IsAcknowledgeFailed 0 static
+stm32f4xx_hal_i2c.c:5264:26:I2C_WaitOnMasterAddressFlagUntilTimeout 32 static
+stm32f4xx_hal_i2c.c:5230:26:I2C_WaitOnFlagUntilTimeout 32 static
+stm32f4xx_hal_i2c.c:5312:26:I2C_WaitOnTXEFlagUntilTimeout 16 static
+stm32f4xx_hal_i2c.c:4873:26:I2C_RequestMemoryWrite 40 static
+stm32f4xx_hal_i2c.c:4963:26:I2C_RequestMemoryRead 40 static
+stm32f4xx_hal_i2c.c:5420:26:I2C_WaitOnRXNEFlagUntilTimeout 16 static
+stm32f4xx_hal_i2c.c:5349:26:I2C_WaitOnBTFFlagUntilTimeout 16 static
+stm32f4xx_hal_i2c.c:472:14:HAL_I2C_MspInit 0 static
+stm32f4xx_hal_i2c.c:354:19:HAL_I2C_Init 16 static
+stm32f4xx_hal_i2c.c:487:14:HAL_I2C_MspDeInit 0 static
+stm32f4xx_hal_i2c.c:436:19:HAL_I2C_DeInit 8 static
+stm32f4xx_hal_i2c.c:575:19:HAL_I2C_Master_Transmit 40 static
+stm32f4xx_hal_i2c.c:707:19:HAL_I2C_Master_Receive 64 static
+stm32f4xx_hal_i2c.c:938:19:HAL_I2C_Slave_Transmit 40 static
+stm32f4xx_hal_i2c.c:1067:19:HAL_I2C_Slave_Receive 40 static
+stm32f4xx_hal_i2c.c:1194:19:HAL_I2C_Master_Transmit_IT 24 static
+stm32f4xx_hal_i2c.c:1271:19:HAL_I2C_Master_Receive_IT 24 static
+stm32f4xx_hal_i2c.c:1354:19:HAL_I2C_Master_Sequential_Transmit_IT 24 static
+stm32f4xx_hal_i2c.c:1457:19:HAL_I2C_Master_Sequential_Receive_IT 24 static
+stm32f4xx_hal_i2c.c:1558:19:HAL_I2C_Slave_Transmit_IT 16 static
+stm32f4xx_hal_i2c.c:1638:19:HAL_I2C_Slave_Receive_IT 16 static
+stm32f4xx_hal_i2c.c:1720:19:HAL_I2C_Slave_Sequential_Transmit_IT 24 static
+stm32f4xx_hal_i2c.c:1786:19:HAL_I2C_Slave_Sequential_Receive_IT 24 static
+stm32f4xx_hal_i2c.c:1848:19:HAL_I2C_EnableListen_IT 0 static
+stm32f4xx_hal_i2c.c:1881:19:HAL_I2C_DisableListen_IT 0 static
+stm32f4xx_hal_i2c.c:1918:19:HAL_I2C_Master_Transmit_DMA 24 static
+stm32f4xx_hal_i2c.c:2038:19:HAL_I2C_Master_Receive_DMA 24 static
+stm32f4xx_hal_i2c.c:2206:19:HAL_I2C_Slave_Transmit_DMA 24 static
+stm32f4xx_hal_i2c.c:2303:19:HAL_I2C_Slave_Receive_DMA 24 static
+stm32f4xx_hal_i2c.c:2403:19:HAL_I2C_Mem_Write 40 static
+stm32f4xx_hal_i2c.c:2536:19:HAL_I2C_Mem_Read 56 static
+stm32f4xx_hal_i2c.c:2769:19:HAL_I2C_Mem_Write_IT 32 static
+stm32f4xx_hal_i2c.c:2854:19:HAL_I2C_Mem_Read_IT 32 static
+stm32f4xx_hal_i2c.c:2944:19:HAL_I2C_Mem_Write_DMA 56 static
+stm32f4xx_hal_i2c.c:3066:19:HAL_I2C_Mem_Read_DMA 56 static
+stm32f4xx_hal_i2c.c:3228:19:HAL_I2C_IsDeviceReady 56 static
+stm32f4xx_hal_i2c.c:3531:13:HAL_I2C_MasterTxCpltCallback 0 static
+stm32f4xx_hal_i2c.c:3547:13:HAL_I2C_MasterRxCpltCallback 0 static
+stm32f4xx_hal_i2c.c:3562:13:HAL_I2C_SlaveTxCpltCallback 0 static
+stm32f4xx_hal_i2c.c:3578:13:HAL_I2C_SlaveRxCpltCallback 0 static
+stm32f4xx_hal_i2c.c:3596:13:HAL_I2C_AddrCallback 0 static
+stm32f4xx_hal_i2c.c:3614:13:HAL_I2C_ListenCpltCallback 0 static
+stm32f4xx_hal_i2c.c:3630:13:HAL_I2C_MemTxCpltCallback 0 static
+stm32f4xx_hal_i2c.c:3646:13:HAL_I2C_MemRxCpltCallback 0 static
+stm32f4xx_hal_i2c.c:3662:13:HAL_I2C_ErrorCallback 0 static
+stm32f4xx_hal_i2c.c:5154:13:I2C_DMAError 8 static
+stm32f4xx_hal_i2c.c:5090:13:I2C_DMAXferCplt 8 static
+stm32f4xx_hal_i2c.c:3678:13:HAL_I2C_AbortCpltCallback 0 static
+stm32f4xx_hal_i2c.c:4562:13:I2C_ITError 8 static
+stm32f4xx_hal_i2c.c:2157:19:HAL_I2C_Master_Abort_IT 8 static
+stm32f4xx_hal_i2c.c:3351:6:HAL_I2C_EV_IRQHandler 72 static
+stm32f4xx_hal_i2c.c:3457:6:HAL_I2C_ER_IRQHandler 24 static
+stm32f4xx_hal_i2c.c:5181:13:I2C_DMAAbort 8 static
+stm32f4xx_hal_i2c.c:3713:22:HAL_I2C_GetState 0 static
+stm32f4xx_hal_i2c.c:3725:21:HAL_I2C_GetMode 0 static
+stm32f4xx_hal_i2c.c:3736:10:HAL_I2C_GetError 0 static
diff --git a/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.su b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.su
new file mode 100644
index 0000000..e69de29
diff --git a/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s.su b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s.su
new file mode 100644
index 0000000..eb082bb
--- /dev/null
+++ b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s.su
@@ -0,0 +1,28 @@
+stm32f4xx_hal_i2s.c:1501:26:I2S_WaitFlagStateUntilTimeout.constprop 24 static
+stm32f4xx_hal_i2s.c:440:14:HAL_I2S_MspInit 0 static
+stm32f4xx_hal_i2s.c:455:14:HAL_I2S_MspDeInit 0 static
+stm32f4xx_hal_i2s.c:412:19:HAL_I2S_DeInit 8 static
+stm32f4xx_hal_i2s.c:728:19:HAL_I2S_Transmit_IT 0 static
+stm32f4xx_hal_i2s.c:795:19:HAL_I2S_Receive_IT 0 static
+stm32f4xx_hal_i2s.c:860:19:HAL_I2S_Transmit_DMA 16 static
+stm32f4xx_hal_i2s.c:943:19:HAL_I2S_Receive_DMA 24 static
+stm32f4xx_hal_i2s.c:1025:19:HAL_I2S_DMAPause 0 static
+stm32f4xx_hal_i2s.c:1061:19:HAL_I2S_DMAResume 0 static
+stm32f4xx_hal_i2s.c:1111:19:HAL_I2S_DMAStop 16 static
+stm32f4xx_hal_i2s.c:1165:6:HAL_I2S_IRQHandler 0 static
+stm32f4xx_hal_i2s.c:1177:14:HAL_I2S_TxHalfCpltCallback 0 static
+stm32f4xx_hal_i2s.c:1323:13:I2S_DMATxHalfCplt 8 static
+stm32f4xx_hal_i2s.c:1192:14:HAL_I2S_TxCpltCallback 0 static
+stm32f4xx_hal_i2s.c:1303:13:I2S_DMATxCplt 8 static
+stm32f4xx_hal_i2s.c:1207:13:HAL_I2S_RxHalfCpltCallback 0 static
+stm32f4xx_hal_i2s.c:1356:13:I2S_DMARxHalfCplt 8 static
+stm32f4xx_hal_i2s.c:1222:13:HAL_I2S_RxCpltCallback 0 static
+stm32f4xx_hal_i2s.c:1336:13:I2S_DMARxCplt 8 static
+stm32f4xx_hal_i2s.c:1237:14:HAL_I2S_ErrorCallback 0 static
+stm32f4xx_hal_i2s.c:215:19:HAL_I2S_Init 16 static
+stm32f4xx_hal_i2s.c:1434:13:I2S_IRQHandler 24 static
+stm32f4xx_hal_i2s.c:524:19:HAL_I2S_Transmit 24 static
+stm32f4xx_hal_i2s.c:623:19:HAL_I2S_Receive 24 static
+stm32f4xx_hal_i2s.c:1369:13:I2S_DMAError 8 static
+stm32f4xx_hal_i2s.c:1271:22:HAL_I2S_GetState 0 static
+stm32f4xx_hal_i2s.c:1282:10:HAL_I2S_GetError 0 static
diff --git a/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s_ex.su b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s_ex.su
new file mode 100644
index 0000000..693a6cd
--- /dev/null
+++ b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s_ex.su
@@ -0,0 +1,10 @@
+stm32f4xx_hal_i2s_ex.c:1003:13:I2SEx_TxRxDMAError 0 static
+stm32f4xx_hal_i2s_ex.c:1122:26:I2SEx_FullDuplexWaitFlagStateUntilTimeout.constprop 32 static
+stm32f4xx_hal_i2s_ex.c:215:19:HAL_I2SEx_TransmitReceive 56 static
+stm32f4xx_hal_i2s_ex.c:625:19:HAL_I2SEx_TransmitReceive_DMA 32 static
+stm32f4xx_hal_i2s_ex.c:887:13:HAL_I2SEx_TxRxHalfCpltCallback 0 static
+stm32f4xx_hal_i2s_ex.c:930:13:I2SEx_TxRxDMAHalfCplt 8 static
+stm32f4xx_hal_i2s_ex.c:902:13:HAL_I2SEx_TxRxCpltCallback 0 static
+stm32f4xx_hal_i2s_ex.c:469:19:HAL_I2SEx_TransmitReceive_IT 16 static
+stm32f4xx_hal_i2s_ex.c:943:13:I2SEx_TxRxDMACplt 16 static
+stm32f4xx_hal_i2s_ex.c:762:6:HAL_I2SEx_FullDuplex_IRQHandler 24 static
diff --git a/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.su b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.su
new file mode 100644
index 0000000..00595a3
--- /dev/null
+++ b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.su
@@ -0,0 +1,32 @@
+stm32f4xx_hal_pcd.c:248:13:HAL_PCD_MspInit 0 static
+stm32f4xx_hal_pcd.c:137:19:HAL_PCD_Init 64 static
+stm32f4xx_hal_pcd.c:262:13:HAL_PCD_MspDeInit 0 static
+stm32f4xx_hal_pcd.c:295:19:HAL_PCD_Start 8 static
+stm32f4xx_hal_pcd.c:309:19:HAL_PCD_Stop 8 static
+stm32f4xx_hal_pcd.c:222:19:HAL_PCD_DeInit 8 static
+stm32f4xx_hal_pcd.c:722:14:HAL_PCD_DataOutStageCallback 0 static
+stm32f4xx_hal_pcd.c:738:14:HAL_PCD_DataInStageCallback 0 static
+stm32f4xx_hal_pcd.c:752:14:HAL_PCD_SetupStageCallback 0 static
+stm32f4xx_hal_pcd.c:766:14:HAL_PCD_SOFCallback 0 static
+stm32f4xx_hal_pcd.c:780:14:HAL_PCD_ResetCallback 0 static
+stm32f4xx_hal_pcd.c:794:14:HAL_PCD_SuspendCallback 0 static
+stm32f4xx_hal_pcd.c:808:14:HAL_PCD_ResumeCallback 0 static
+stm32f4xx_hal_pcd.c:823:14:HAL_PCD_ISOOUTIncompleteCallback 0 static
+stm32f4xx_hal_pcd.c:839:14:HAL_PCD_ISOINIncompleteCallback 0 static
+stm32f4xx_hal_pcd.c:854:14:HAL_PCD_ConnectCallback 0 static
+stm32f4xx_hal_pcd.c:868:14:HAL_PCD_DisconnectCallback 0 static
+stm32f4xx_hal_pcd.c:324:6:HAL_PCD_IRQHandler 64 static
+stm32f4xx_hal_pcd.c:901:19:HAL_PCD_DevConnect 8 static
+stm32f4xx_hal_pcd.c:914:19:HAL_PCD_DevDisconnect 8 static
+stm32f4xx_hal_pcd.c:928:19:HAL_PCD_SetAddress 8 static
+stm32f4xx_hal_pcd.c:943:19:HAL_PCD_EP_Open 16 static
+stm32f4xx_hal_pcd.c:985:19:HAL_PCD_EP_Close 8 static
+stm32f4xx_hal_pcd.c:1016:19:HAL_PCD_EP_Receive 16 static
+stm32f4xx_hal_pcd.c:1052:10:HAL_PCD_EP_GetRxCount 0 static
+stm32f4xx_hal_pcd.c:1064:19:HAL_PCD_EP_Transmit 16 static
+stm32f4xx_hal_pcd.c:1100:19:HAL_PCD_EP_SetStall 16 static
+stm32f4xx_hal_pcd.c:1135:19:HAL_PCD_EP_ClrStall 16 static
+stm32f4xx_hal_pcd.c:1165:19:HAL_PCD_EP_Flush 8 static
+stm32f4xx_hal_pcd.c:1188:19:HAL_PCD_ActivateRemoteWakeup 0 static
+stm32f4xx_hal_pcd.c:1205:19:HAL_PCD_DeActivateRemoteWakeup 0 static
+stm32f4xx_hal_pcd.c:1237:18:HAL_PCD_GetState 0 static
diff --git a/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.su b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.su
new file mode 100644
index 0000000..bc2e1f4
--- /dev/null
+++ b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.su
@@ -0,0 +1,2 @@
+stm32f4xx_hal_pcd_ex.c:89:19:HAL_PCDEx_SetTxFiFo 16 static
+stm32f4xx_hal_pcd_ex.c:131:19:HAL_PCDEx_SetRxFiFo 0 static
diff --git a/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.su b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.su
new file mode 100644
index 0000000..2d53f8a
--- /dev/null
+++ b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.su
@@ -0,0 +1,17 @@
+stm32f4xx_hal_pwr.c:108:6:HAL_PWR_DeInit 0 static
+stm32f4xx_hal_pwr.c:121:6:HAL_PWR_EnableBkUpAccess 0 static
+stm32f4xx_hal_pwr.c:133:6:HAL_PWR_DisableBkUpAccess 0 static
+stm32f4xx_hal_pwr.c:268:6:HAL_PWR_ConfigPVD 0 static
+stm32f4xx_hal_pwr.c:311:6:HAL_PWR_EnablePVD 0 static
+stm32f4xx_hal_pwr.c:320:6:HAL_PWR_DisablePVD 0 static
+stm32f4xx_hal_pwr.c:334:6:HAL_PWR_EnableWakeUpPin 0 static
+stm32f4xx_hal_pwr.c:352:6:HAL_PWR_DisableWakeUpPin 0 static
+stm32f4xx_hal_pwr.c:381:6:HAL_PWR_EnterSLEEPMode 0 static
+stm32f4xx_hal_pwr.c:424:6:HAL_PWR_EnterSTOPMode 0 static
+stm32f4xx_hal_pwr.c:463:6:HAL_PWR_EnterSTANDBYMode 0 static
+stm32f4xx_hal_pwr.c:501:13:HAL_PWR_PVDCallback 0 static
+stm32f4xx_hal_pwr.c:484:6:HAL_PWR_PVD_IRQHandler 8 static
+stm32f4xx_hal_pwr.c:516:6:HAL_PWR_EnableSleepOnExit 0 static
+stm32f4xx_hal_pwr.c:528:6:HAL_PWR_DisableSleepOnExit 0 static
+stm32f4xx_hal_pwr.c:540:6:HAL_PWR_EnableSEVOnPend 0 static
+stm32f4xx_hal_pwr.c:552:6:HAL_PWR_DisableSEVOnPend 0 static
diff --git a/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.su b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.su
new file mode 100644
index 0000000..9ace054
--- /dev/null
+++ b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.su
@@ -0,0 +1,6 @@
+stm32f4xx_hal_pwr_ex.c:159:19:HAL_PWREx_EnableBkUpReg 16 static
+stm32f4xx_hal_pwr_ex.c:183:19:HAL_PWREx_DisableBkUpReg 16 static
+stm32f4xx_hal_pwr_ex.c:207:6:HAL_PWREx_EnableFlashPowerDown 0 static
+stm32f4xx_hal_pwr_ex.c:216:6:HAL_PWREx_DisableFlashPowerDown 0 static
+stm32f4xx_hal_pwr_ex.c:229:10:HAL_PWREx_GetVoltageRange 0 static
+stm32f4xx_hal_pwr_ex.c:250:19:HAL_PWREx_ControlVoltageScaling 24 static
diff --git a/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.su b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.su
new file mode 100644
index 0000000..b3d4b63
--- /dev/null
+++ b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.su
@@ -0,0 +1,14 @@
+stm32f4xx_hal_rcc.c:218:26:HAL_RCC_DeInit 0 static
+stm32f4xx_hal_rcc.c:237:26:HAL_RCC_OscConfig 32 static
+stm32f4xx_hal_rcc.c:765:6:HAL_RCC_MCOConfig 48 static
+stm32f4xx_hal_rcc.c:831:6:HAL_RCC_EnableCSS 0 static
+stm32f4xx_hal_rcc.c:840:6:HAL_RCC_DisableCSS 0 static
+stm32f4xx_hal_rcc.c:875:17:HAL_RCC_GetSysClockFreq 8 static
+stm32f4xx_hal_rcc.c:581:19:HAL_RCC_ClockConfig 24 static
+stm32f4xx_hal_rcc.c:931:10:HAL_RCC_GetHCLKFreq 0 static
+stm32f4xx_hal_rcc.c:942:10:HAL_RCC_GetPCLK1Freq 0 static
+stm32f4xx_hal_rcc.c:954:10:HAL_RCC_GetPCLK2Freq 0 static
+stm32f4xx_hal_rcc.c:967:13:HAL_RCC_GetOscConfig 0 static
+stm32f4xx_hal_rcc.c:1046:6:HAL_RCC_GetClockConfig 0 static
+stm32f4xx_hal_rcc.c:1089:13:HAL_RCC_CSSCallback 0 static
+stm32f4xx_hal_rcc.c:1072:6:HAL_RCC_NMI_IRQHandler 8 static
diff --git a/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.su b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.su
new file mode 100644
index 0000000..6262a7a
--- /dev/null
+++ b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.su
@@ -0,0 +1,6 @@
+stm32f4xx_hal_rcc_ex.c:2519:19:HAL_RCCEx_PeriphCLKConfig 32 static
+stm32f4xx_hal_rcc_ex.c:2647:6:HAL_RCCEx_GetPeriphCLKConfig 0 static
+stm32f4xx_hal_rcc_ex.c:2685:10:HAL_RCCEx_GetPeriphCLKFreq 0 static
+stm32f4xx_hal_rcc_ex.c:2809:19:HAL_RCCEx_EnablePLLI2S 24 static
+stm32f4xx_hal_rcc_ex.c:2892:19:HAL_RCCEx_DisablePLLI2S 16 static
+stm32f4xx_hal_rcc_ex.c:3149:19:HAL_RCC_DeInit 16 static
diff --git a/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.su b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.su
new file mode 100644
index 0000000..b06f118
--- /dev/null
+++ b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.su
@@ -0,0 +1,54 @@
+stm32f4xx_hal_spi.c:3148:13:SPI_AbortRx_ISR 8 static
+stm32f4xx_hal_spi.c:3183:13:SPI_AbortTx_ISR 0 static
+stm32f4xx_hal_spi.c:2906:26:SPI_WaitFlagStateUntilTimeout 24 static
+stm32f4xx_hal_spi.c:2953:26:SPI_CheckFlag_BSY 16 static
+stm32f4xx_hal_spi.c:377:13:HAL_SPI_MspInit 0 static
+stm32f4xx_hal_spi.c:261:19:HAL_SPI_Init 8 static
+stm32f4xx_hal_spi.c:392:13:HAL_SPI_MspDeInit 0 static
+stm32f4xx_hal_spi.c:343:19:HAL_SPI_DeInit 8 static
+stm32f4xx_hal_spi.c:447:19:HAL_SPI_Transmit 40 static
+stm32f4xx_hal_spi.c:814:19:HAL_SPI_TransmitReceive 48 static
+stm32f4xx_hal_spi.c:617:19:HAL_SPI_Receive 32 static
+stm32f4xx_hal_spi.c:1037:19:HAL_SPI_Transmit_IT 0 static
+stm32f4xx_hal_spi.c:1219:19:HAL_SPI_TransmitReceive_IT 12 static
+stm32f4xx_hal_spi.c:1127:19:HAL_SPI_Receive_IT 12 static
+stm32f4xx_hal_spi.c:1305:19:HAL_SPI_Transmit_DMA 8 static
+stm32f4xx_hal_spi.c:1495:19:HAL_SPI_TransmitReceive_DMA 16 static
+stm32f4xx_hal_spi.c:1398:19:HAL_SPI_Receive_DMA 16 static
+stm32f4xx_hal_spi.c:1617:19:HAL_SPI_Abort 24 static
+stm32f4xx_hal_spi.c:1860:19:HAL_SPI_DMAPause 0 static
+stm32f4xx_hal_spi.c:1880:19:HAL_SPI_DMAResume 0 static
+stm32f4xx_hal_spi.c:1900:19:HAL_SPI_DMAStop 8 static
+stm32f4xx_hal_spi.c:2027:13:HAL_SPI_TxCpltCallback 0 static
+stm32f4xx_hal_spi.c:2042:13:HAL_SPI_RxCpltCallback 0 static
+stm32f4xx_hal_spi.c:2057:13:HAL_SPI_TxRxCpltCallback 0 static
+stm32f4xx_hal_spi.c:2072:13:HAL_SPI_TxHalfCpltCallback 0 static
+stm32f4xx_hal_spi.c:2381:13:SPI_DMAHalfTransmitCplt 8 static
+stm32f4xx_hal_spi.c:2087:13:HAL_SPI_RxHalfCpltCallback 0 static
+stm32f4xx_hal_spi.c:2394:13:SPI_DMAHalfReceiveCplt 8 static
+stm32f4xx_hal_spi.c:2102:13:HAL_SPI_TxRxHalfCpltCallback 0 static
+stm32f4xx_hal_spi.c:2407:13:SPI_DMAHalfTransmitReceiveCplt 8 static
+stm32f4xx_hal_spi.c:2117:14:HAL_SPI_ErrorCallback 0 static
+stm32f4xx_hal_spi.c:3093:13:SPI_CloseTx_ISR 16 static
+stm32f4xx_hal_spi.c:2852:13:SPI_TxISR_8BIT 4 static
+stm32f4xx_hal_spi.c:2876:13:SPI_TxISR_16BIT 4 static
+stm32f4xx_hal_spi.c:3044:13:SPI_CloseRx_ISR 16 static
+stm32f4xx_hal_spi.c:2763:13:SPI_RxISR_8BIT 0 static
+stm32f4xx_hal_spi.c:2819:13:SPI_RxISR_16BIT 0 static
+stm32f4xx_hal_spi.c:2970:13:SPI_CloseRxTx_ISR 16 static
+stm32f4xx_hal_spi.c:2616:13:SPI_2linesTxISR_8BIT 4 static
+stm32f4xx_hal_spi.c:2555:13:SPI_2linesRxISR_8BIT 0 static
+stm32f4xx_hal_spi.c:2707:13:SPI_2linesTxISR_16BIT 4 static
+stm32f4xx_hal_spi.c:2649:13:SPI_2linesRxISR_16BIT 4 static
+stm32f4xx_hal_spi.c:2420:13:SPI_DMAError 8 static
+stm32f4xx_hal_spi.c:2206:13:SPI_DMATransmitCplt 24 static
+stm32f4xx_hal_spi.c:2250:13:SPI_DMAReceiveCplt 8 static
+stm32f4xx_hal_spi.c:2317:13:SPI_DMATransmitReceiveCplt 16 static
+stm32f4xx_hal_spi.c:1931:6:HAL_SPI_IRQHandler 32 static
+stm32f4xx_hal_spi.c:2438:13:SPI_DMAAbortOnError 8 static
+stm32f4xx_hal_spi.c:2134:13:HAL_SPI_AbortCpltCallback 0 static
+stm32f4xx_hal_spi.c:1714:19:HAL_SPI_Abort_IT 24 static
+stm32f4xx_hal_spi.c:2510:13:SPI_DMARxAbortCallback 16 static
+stm32f4xx_hal_spi.c:2455:13:SPI_DMATxAbortCallback 16 static
+stm32f4xx_hal_spi.c:2169:22:HAL_SPI_GetState 0 static
+stm32f4xx_hal_spi.c:2181:10:HAL_SPI_GetError 0 static
diff --git a/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.su b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.su
new file mode 100644
index 0000000..2c6d1d5
--- /dev/null
+++ b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.su
@@ -0,0 +1,99 @@
+stm32f4xx_hal_tim.c:4792:13:TIM_OC1_SetConfig 16 static
+stm32f4xx_hal_tim.c:4857:13:TIM_OC3_SetConfig 16 static
+stm32f4xx_hal_tim.c:4925:13:TIM_OC4_SetConfig 12 static
+stm32f4xx_hal_tim.c:4983:13:TIM_SlaveTimer_SetConfig 12 static
+stm32f4xx_hal_tim.c:273:13:HAL_TIM_Base_MspInit 0 static
+stm32f4xx_hal_tim.c:288:13:HAL_TIM_Base_MspDeInit 0 static
+stm32f4xx_hal_tim.c:245:19:HAL_TIM_Base_DeInit 8 static
+stm32f4xx_hal_tim.c:303:19:HAL_TIM_Base_Start 0 static
+stm32f4xx_hal_tim.c:327:19:HAL_TIM_Base_Stop 0 static
+stm32f4xx_hal_tim.c:351:19:HAL_TIM_Base_Start_IT 0 static
+stm32f4xx_hal_tim.c:372:19:HAL_TIM_Base_Stop_IT 0 static
+stm32f4xx_hal_tim.c:394:19:HAL_TIM_Base_Start_DMA 8 static
+stm32f4xx_hal_tim.c:439:19:HAL_TIM_Base_Stop_DMA 0 static
+stm32f4xx_hal_tim.c:555:13:HAL_TIM_OC_MspInit 0 static
+stm32f4xx_hal_tim.c:570:13:HAL_TIM_OC_MspDeInit 0 static
+stm32f4xx_hal_tim.c:527:19:HAL_TIM_OC_DeInit 8 static
+stm32f4xx_hal_tim.c:1067:13:HAL_TIM_PWM_MspInit 0 static
+stm32f4xx_hal_tim.c:1082:13:HAL_TIM_PWM_MspDeInit 0 static
+stm32f4xx_hal_tim.c:1039:19:HAL_TIM_PWM_DeInit 8 static
+stm32f4xx_hal_tim.c:1582:13:HAL_TIM_IC_MspInit 0 static
+stm32f4xx_hal_tim.c:1597:13:HAL_TIM_IC_MspDeInit 0 static
+stm32f4xx_hal_tim.c:1554:19:HAL_TIM_IC_DeInit 8 static
+stm32f4xx_hal_tim.c:2071:13:HAL_TIM_OnePulse_MspInit 0 static
+stm32f4xx_hal_tim.c:2086:13:HAL_TIM_OnePulse_MspDeInit 0 static
+stm32f4xx_hal_tim.c:2043:19:HAL_TIM_OnePulse_DeInit 8 static
+stm32f4xx_hal_tim.c:2105:19:HAL_TIM_OnePulse_Start 0 static
+stm32f4xx_hal_tim.c:2142:19:HAL_TIM_OnePulse_Stop 0 static
+stm32f4xx_hal_tim.c:2179:19:HAL_TIM_OnePulse_Start_IT 0 static
+stm32f4xx_hal_tim.c:2222:19:HAL_TIM_OnePulse_Stop_IT 0 static
+stm32f4xx_hal_tim.c:2402:13:HAL_TIM_Encoder_MspInit 0 static
+stm32f4xx_hal_tim.c:2417:13:HAL_TIM_Encoder_MspDeInit 0 static
+stm32f4xx_hal_tim.c:2374:19:HAL_TIM_Encoder_DeInit 8 static
+stm32f4xx_hal_tim.c:2437:19:HAL_TIM_Encoder_Start 0 static
+stm32f4xx_hal_tim.c:2480:19:HAL_TIM_Encoder_Stop 0 static
+stm32f4xx_hal_tim.c:2524:19:HAL_TIM_Encoder_Start_IT 0 static
+stm32f4xx_hal_tim.c:2573:19:HAL_TIM_Encoder_Stop_IT 0 static
+stm32f4xx_hal_tim.c:2628:19:HAL_TIM_Encoder_Start_DMA 24 static
+stm32f4xx_hal_tim.c:2746:19:HAL_TIM_Encoder_Stop_DMA 0 static
+stm32f4xx_hal_tim.c:3377:19:HAL_TIM_DMABurst_WriteStart 24 static
+stm32f4xx_hal_tim.c:3602:19:HAL_TIM_DMABurst_ReadStart 24 static
+stm32f4xx_hal_tim.c:3735:19:HAL_TIM_DMABurst_ReadStop 16 static
+stm32f4xx_hal_tim.c:3509:19:HAL_TIM_DMABurst_WriteStop 0 static
+stm32f4xx_hal_tim.c:3808:19:HAL_TIM_GenerateEvent 0 static
+stm32f4xx_hal_tim.c:3846:19:HAL_TIM_ConfigOCrefClear 16 static
+stm32f4xx_hal_tim.c:3949:19:HAL_TIM_ConfigClockSource 16 static
+stm32f4xx_hal_tim.c:4110:19:HAL_TIM_ConfigTI1Input 0 static
+stm32f4xx_hal_tim.c:4143:19:HAL_TIM_SlaveConfigSynchronization 16 static
+stm32f4xx_hal_tim.c:4178:19:HAL_TIM_SlaveConfigSynchronization_IT 16 static
+stm32f4xx_hal_tim.c:4217:10:HAL_TIM_ReadCapturedValue 0 static
+stm32f4xx_hal_tim.c:4304:13:HAL_TIM_PeriodElapsedCallback 0 static
+stm32f4xx_hal_tim.c:4762:13:TIM_DMAPeriodElapsedCplt 8 static
+stm32f4xx_hal_tim.c:4319:13:HAL_TIM_OC_DelayElapsedCallback 0 static
+stm32f4xx_hal_tim.c:4334:13:HAL_TIM_IC_CaptureCallback 0 static
+stm32f4xx_hal_tim.c:4698:6:TIM_DMACaptureCplt 8 static
+stm32f4xx_hal_tim.c:4349:13:HAL_TIM_PWM_PulseFinishedCallback 0 static
+stm32f4xx_hal_tim.c:4649:6:TIM_DMADelayPulseCplt 8 static
+stm32f4xx_hal_tim.c:4364:13:HAL_TIM_TriggerCallback 0 static
+stm32f4xx_hal_tim.c:2809:6:HAL_TIM_IRQHandler 8 static
+stm32f4xx_hal_tim.c:4777:13:TIM_DMATriggerCplt 8 static
+stm32f4xx_hal_tim.c:4379:13:HAL_TIM_ErrorCallback 0 static
+stm32f4xx_hal_tim.c:4683:6:TIM_DMAError 8 static
+stm32f4xx_hal_tim.c:4412:22:HAL_TIM_Base_GetState 0 static
+stm32f4xx_hal_tim.c:4423:22:HAL_TIM_OC_GetState 0 static
+stm32f4xx_hal_tim.c:4434:22:HAL_TIM_PWM_GetState 0 static
+stm32f4xx_hal_tim.c:4445:22:HAL_TIM_IC_GetState 0 static
+stm32f4xx_hal_tim.c:4456:22:HAL_TIM_OnePulse_GetState 0 static
+stm32f4xx_hal_tim.c:4467:22:HAL_TIM_Encoder_GetState 0 static
+stm32f4xx_hal_tim.c:4481:6:TIM_Base_SetConfig 0 static
+stm32f4xx_hal_tim.c:206:19:HAL_TIM_Base_Init 8 static
+stm32f4xx_hal_tim.c:488:19:HAL_TIM_OC_Init 8 static
+stm32f4xx_hal_tim.c:1000:19:HAL_TIM_PWM_Init 8 static
+stm32f4xx_hal_tim.c:1515:19:HAL_TIM_IC_Init 8 static
+stm32f4xx_hal_tim.c:1997:19:HAL_TIM_OnePulse_Init 16 static
+stm32f4xx_hal_tim.c:2285:19:HAL_TIM_Encoder_Init 24 static
+stm32f4xx_hal_tim.c:4540:6:TIM_TI1_SetConfig 16 static
+stm32f4xx_hal_tim.c:3042:19:HAL_TIM_IC_ConfigChannel 24 static
+stm32f4xx_hal_tim.c:4582:6:TIM_OC2_SetConfig 16 static
+stm32f4xx_hal_tim.c:2972:19:HAL_TIM_OC_ConfigChannel 16 static
+stm32f4xx_hal_tim.c:3139:19:HAL_TIM_PWM_ConfigChannel 16 static
+stm32f4xx_hal_tim.c:3240:19:HAL_TIM_OnePulse_ConfigChannel 48 static
+stm32f4xx_hal_tim.c:4739:6:TIM_CCxChannelCmd 8 static
+stm32f4xx_hal_tim.c:624:19:HAL_TIM_OC_Stop 8 static
+stm32f4xx_hal_tim.c:1103:19:HAL_TIM_PWM_Start 8 static
+stm32f4xx_hal_tim.c:591:19:HAL_TIM_OC_Start 0 static
+stm32f4xx_hal_tim.c:1136:19:HAL_TIM_PWM_Stop 8 static
+stm32f4xx_hal_tim.c:1172:19:HAL_TIM_PWM_Start_IT 8 static
+stm32f4xx_hal_tim.c:657:19:HAL_TIM_OC_Start_IT 0 static
+stm32f4xx_hal_tim.c:1239:19:HAL_TIM_PWM_Stop_IT 8 static
+stm32f4xx_hal_tim.c:724:19:HAL_TIM_OC_Stop_IT 0 static
+stm32f4xx_hal_tim.c:1308:19:HAL_TIM_PWM_Start_DMA 16 static
+stm32f4xx_hal_tim.c:793:19:HAL_TIM_OC_Start_DMA 0 static
+stm32f4xx_hal_tim.c:1426:19:HAL_TIM_PWM_Stop_DMA 8 static
+stm32f4xx_hal_tim.c:911:19:HAL_TIM_OC_Stop_DMA 0 static
+stm32f4xx_hal_tim.c:1618:19:HAL_TIM_IC_Start 8 static
+stm32f4xx_hal_tim.c:1645:19:HAL_TIM_IC_Stop 8 static
+stm32f4xx_hal_tim.c:1672:19:HAL_TIM_IC_Start_IT 8 static
+stm32f4xx_hal_tim.c:1732:19:HAL_TIM_IC_Stop_IT 8 static
+stm32f4xx_hal_tim.c:1795:19:HAL_TIM_IC_Start_DMA 16 static
+stm32f4xx_hal_tim.c:1909:19:HAL_TIM_IC_Stop_DMA 8 static
diff --git a/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.su b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.su
new file mode 100644
index 0000000..dc25ec4
--- /dev/null
+++ b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.su
@@ -0,0 +1,37 @@
+stm32f4xx_hal_tim_ex.c:1853:13:TIM_CCxNChannelCmd 8 static
+stm32f4xx_hal_tim_ex.c:258:13:HAL_TIMEx_HallSensor_MspInit 0 static
+stm32f4xx_hal_tim_ex.c:157:19:HAL_TIMEx_HallSensor_Init 48 static
+stm32f4xx_hal_tim_ex.c:273:13:HAL_TIMEx_HallSensor_MspDeInit 0 static
+stm32f4xx_hal_tim_ex.c:230:19:HAL_TIMEx_HallSensor_DeInit 8 static
+stm32f4xx_hal_tim_ex.c:288:19:HAL_TIMEx_HallSensor_Start 8 static
+stm32f4xx_hal_tim_ex.c:310:19:HAL_TIMEx_HallSensor_Stop 8 static
+stm32f4xx_hal_tim_ex.c:332:19:HAL_TIMEx_HallSensor_Start_IT 8 static
+stm32f4xx_hal_tim_ex.c:357:19:HAL_TIMEx_HallSensor_Stop_IT 8 static
+stm32f4xx_hal_tim_ex.c:384:19:HAL_TIMEx_HallSensor_Start_DMA 16 static
+stm32f4xx_hal_tim_ex.c:432:19:HAL_TIMEx_HallSensor_Stop_DMA 8 static
+stm32f4xx_hal_tim_ex.c:900:19:HAL_TIMEx_PWMN_Start 8 static
+stm32f4xx_hal_tim_ex.c:487:19:HAL_TIMEx_OCN_Start 0 static
+stm32f4xx_hal_tim_ex.c:959:19:HAL_TIMEx_PWMN_Start_IT 8 static
+stm32f4xx_hal_tim_ex.c:547:19:HAL_TIMEx_OCN_Start_IT 0 static
+stm32f4xx_hal_tim_ex.c:1026:19:HAL_TIMEx_PWMN_Stop_IT 8 static
+stm32f4xx_hal_tim_ex.c:614:19:HAL_TIMEx_OCN_Stop_IT 0 static
+stm32f4xx_hal_tim_ex.c:1098:19:HAL_TIMEx_PWMN_Start_DMA 16 static
+stm32f4xx_hal_tim_ex.c:686:19:HAL_TIMEx_OCN_Start_DMA 0 static
+stm32f4xx_hal_tim_ex.c:1213:19:HAL_TIMEx_PWMN_Stop_DMA 8 static
+stm32f4xx_hal_tim_ex.c:801:19:HAL_TIMEx_OCN_Stop_DMA 0 static
+stm32f4xx_hal_tim_ex.c:1301:19:HAL_TIMEx_OnePulseN_Start 8 static
+stm32f4xx_hal_tim_ex.c:1327:19:HAL_TIMEx_OnePulseN_Stop 8 static
+stm32f4xx_hal_tim_ex.c:929:19:HAL_TIMEx_PWMN_Stop 0 static
+stm32f4xx_hal_tim_ex.c:517:19:HAL_TIMEx_OCN_Stop 0 static
+stm32f4xx_hal_tim_ex.c:1357:19:HAL_TIMEx_OnePulseN_Start_IT 8 static
+stm32f4xx_hal_tim_ex.c:1389:19:HAL_TIMEx_OnePulseN_Stop_IT 8 static
+stm32f4xx_hal_tim_ex.c:1458:19:HAL_TIMEx_ConfigCommutationEvent 8 static
+stm32f4xx_hal_tim_ex.c:1508:19:HAL_TIMEx_ConfigCommutationEvent_IT 8 static
+stm32f4xx_hal_tim_ex.c:1562:19:HAL_TIMEx_ConfigCommutationEvent_DMA 8 static
+stm32f4xx_hal_tim_ex.c:1607:19:HAL_TIMEx_MasterConfigSynchronization 8 static
+stm32f4xx_hal_tim_ex.c:1644:19:HAL_TIMEx_ConfigBreakDeadTime 0 static
+stm32f4xx_hal_tim_ex.c:1708:19:HAL_TIMEx_RemapConfig 0 static
+stm32f4xx_hal_tim_ex.c:1766:13:HAL_TIMEx_CommutationCallback 0 static
+stm32f4xx_hal_tim_ex.c:1829:6:TIMEx_DMACommutationCplt 8 static
+stm32f4xx_hal_tim_ex.c:1781:13:HAL_TIMEx_BreakCallback 0 static
+stm32f4xx_hal_tim_ex.c:1814:22:HAL_TIMEx_HallSensor_GetState 0 static
diff --git a/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.su b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.su
new file mode 100644
index 0000000..35fa2ef
--- /dev/null
+++ b/F4-Gyro-RTOS/Debug/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.su
@@ -0,0 +1,45 @@
+stm32f4xx_ll_usb.c:103:19:USB_CoreInit 16 static
+stm32f4xx_ll_usb.c:149:19:USB_EnableGlobalInt 0 static
+stm32f4xx_ll_usb.c:162:19:USB_DisableGlobalInt 0 static
+stm32f4xx_ll_usb.c:178:19:USB_SetCurrentMode 8 static
+stm32f4xx_ll_usb.c:203:19:USB_DevInit 24 static
+stm32f4xx_ll_usb.c:349:19:USB_FlushTxFifo 0 static
+stm32f4xx_ll_usb.c:373:19:USB_FlushRxFifo 0 static
+stm32f4xx_ll_usb.c:403:19:USB_SetDevSpeed 0 static
+stm32f4xx_ll_usb.c:418:9:USB_GetDevSpeed 0 static
+stm32f4xx_ll_usb.c:445:19:USB_ActivateEndpoint 12 static
+stm32f4xx_ll_usb.c:475:19:USB_ActivateDedicatedEndpoint 20 static
+stm32f4xx_ll_usb.c:518:19:USB_DeactivateEndpoint 0 static
+stm32f4xx_ll_usb.c:589:19:USB_DeactivateDedicatedEndpoint 16 static
+stm32f4xx_ll_usb.c:665:19:USB_EPStartXfer 32 static
+stm32f4xx_ll_usb.c:787:19:USB_EP0StartXfer 16 static
+stm32f4xx_ll_usb.c:877:19:USB_WritePacket 8 static
+stm32f4xx_ll_usb.c:905:7:USB_ReadPacket 0 static
+stm32f4xx_ll_usb.c:924:19:USB_EPSetStall 0 static
+stm32f4xx_ll_usb.c:952:19:USB_EPClearStall 0 static
+stm32f4xx_ll_usb.c:978:19:USB_StopDevice 16 static
+stm32f4xx_ll_usb.c:1009:20:USB_SetDevAddress 0 static
+stm32f4xx_ll_usb.c:1022:20:USB_DevConnect 8 static
+stm32f4xx_ll_usb.c:1035:20:USB_DevDisconnect 8 static
+stm32f4xx_ll_usb.c:1048:11:USB_ReadInterrupts 0 static
+stm32f4xx_ll_usb.c:1062:10:USB_ReadDevAllOutEpInterrupt 0 static
+stm32f4xx_ll_usb.c:1075:10:USB_ReadDevAllInEpInterrupt 0 static
+stm32f4xx_ll_usb.c:1090:10:USB_ReadDevOutEPInterrupt 0 static
+stm32f4xx_ll_usb.c:1105:10:USB_ReadDevInEPInterrupt 8 static
+stm32f4xx_ll_usb.c:1122:7:USB_ClearInterrupts 0 static
+stm32f4xx_ll_usb.c:1135:10:USB_GetMode 0 static
+stm32f4xx_ll_usb.c:1146:20:USB_ActivateSetup 0 static
+stm32f4xx_ll_usb.c:1171:19:USB_EP0_OutStart 8 static
+stm32f4xx_ll_usb.c:1194:26:USB_CoreReset 0 static
+stm32f4xx_ll_usb.c:1233:19:USB_HostInit 16 static
+stm32f4xx_ll_usb.c:1322:19:USB_InitFSLSPClkSel 8 static
+stm32f4xx_ll_usb.c:1345:19:USB_ResetPort 16 static
+stm32f4xx_ll_usb.c:1368:19:USB_DriveVbus 8 static
+stm32f4xx_ll_usb.c:1396:10:USB_GetHostSpeed 8 static
+stm32f4xx_ll_usb.c:1409:10:USB_GetCurrentFrame 0 static
+stm32f4xx_ll_usb.c:1438:19:USB_HC_Init 20 static
+stm32f4xx_ll_usb.c:1543:19:USB_HC_StartXfer 48 static
+stm32f4xx_ll_usb.c:1654:10:USB_HC_ReadInterrupt 16 static
+stm32f4xx_ll_usb.c:1666:19:USB_HC_Halt 24 static
+stm32f4xx_ll_usb.c:1727:19:USB_DoPing 24 static
+stm32f4xx_ll_usb.c:1749:19:USB_StopHost 32 static
diff --git a/F4-Gyro-RTOS/Debug/F4-Gyro-RTOS.hex b/F4-Gyro-RTOS/Debug/F4-Gyro-RTOS.hex
new file mode 100644
index 0000000..a36f953
--- /dev/null
+++ b/F4-Gyro-RTOS/Debug/F4-Gyro-RTOS.hex
@@ -0,0 +1,1793 @@
+:020000040800F2
+:1000000000000220F9610008496200084962000806
+:1000100049620008496200084962000800000000C7
+:100020000000000000000000000000004140000847
+:100030004962000800000000D1400008255D00086A
+:1000400049620008496200084962000849620008E4
+:1000500049620008496200084962000849620008D4
+:1000600049620008496200084962000849620008C4
+:1000700049620008496200084962000849620008B4
+:1000800049620008496200084962000849620008A4
+:100090004962000849620008496200084962000894
+:1000A0004962000849620008496200084962000884
+:1000B0004962000849620008496200084962000874
+:1000C0004962000849620008496200084962000864
+:1000D0004962000849620008496200084962000854
+:1000E0004962000849620008496200084962000844
+:1000F0004962000849620008496200084962000834
+:100100004962000849620008496200084962000823
+:100110004962000849620008295D00084962000838
+:100120004962000849620008496200084962000803
+:1001300049620008496200084962000849620008F3
+:10014000496200084962000849620008355D0008FC
+:1001500049620008496200084962000849620008D3
+:1001600049620008496200084962000849620008C3
+:100170004962000849620008496200080000000066
+:08018000496200084962000811
+:1001900010B5054C237833B9044B13B10448AFF3C1
+:1001A00000800123237010BD4402002000000000E5
+:1001B0003C6B000808B5034B1BB103490348AFF380
+:1001C000008008BD00000000480200203C6B0008D1
+:1001D000034613F8012B002AFBD1181A0138704787
+:1001E00001F0FF01102A2BDB10F0070F08D010F8E8
+:1001F000013B013A8B422DD010F0070F42B3F6D1EC
+:10020000F0B441EA012141EA014122F007047FF004
+:1002100000070023F0E80256083C85EA010586EA5B
+:10022000010685FA47F5A3FA87F586FA47F6A5FA97
+:1002300087F68EB9EED1F0BC01F0FF0102F00702A3
+:1002400032B110F8013B013A83EA010313B1F8D14E
+:100250000020704701387047002D06BF354603382F
+:10026000073815F0010F07D1013015F4807F02BF68
+:10027000013015F4C03F0130F0BC0138704700BFB9
+:1002800053B94AB9002908BF00281CBF4FF0FF31FD
+:100290004FF0FF3000F07AB9ADF1080C6DE904CEF3
+:1002A00000F006F8DDF804E0DDE9022304B0704751
+:1002B0002DE9F0478C460D460446089E002B51D18F
+:1002C0008A4217466DD9B2FA82FEBEF1000F0BD0FA
+:1002D000CEF1200C01FA0EF520FA0CFC02FA0EF712
+:1002E0004CEA050C00FA0EF44FEA174A250CBCFB49
+:1002F000FAF81FFA87F90AFB18CC45EA0C4508FB07
+:1003000009F3AB420AD9ED1908F1FF3280F02381DD
+:10031000AB4240F22081A8F102083D44ED1AA4B29C
+:10032000B5FBFAF00AFB105544EA054400FB09F955
+:10033000A14509D9E41900F1FF3380F00A81A145F4
+:1003400040F2078102383C44A4EB090440EA08402B
+:100350000021002E61D024FA0EF400233460736073
+:10036000BDE8F0878B4207D9002E54D0002186E8E3
+:1003700021000846BDE8F087B3FA83F1002940F078
+:100380008E80AB4202D3824200F2FA80841A65EB7F
+:1003900003050120AC46002E3FD086E81010BDE8D2
+:1003A000F08712B90127B7FBF2F7B7FA87FEBEF163
+:1003B000000F34D1EB1B3A0C1FFA87FC0121B3FB71
+:1003C000F2F8250C02FB183345EA03450CFB08F351
+:1003D000AB4207D9ED1908F1FF3002D2AB4200F26F
+:1003E000D1808046ED1AA3B2B5FBF2F002FB1055A6
+:1003F00043EA05440CFB00FCA44507D9E41900F1CD
+:10040000FF3302D2A44500F2B8801846A4EB0C04D6
+:1004100040EA08409DE731463046BDE8F087CEF11E
+:10042000200405FA0EF307FA0EF720FA04F83A0C46
+:1004300025FA04F448EA0308B4FBF2F14FEA184540
+:1004400002FB11441FFA87FC45EA044501FB0CF34B
+:10045000AB4200FA0EF409D9ED1901F1FF3080F03A
+:100460008A80AB4240F2878002393D44EB1A1FFA82
+:1004700088F5B3FBF2F002FB103345EA034500FBBD
+:100480000CF3AB4207D9ED1900F1FF386FD2AB4244
+:100490006DD902383D44EB1A40EA01418FE7C1F1C2
+:1004A000200722FA07F88B4005FA01F448EA030313
+:1004B00020FA07FE4FEA134CFD404EEA040EB5FB4E
+:1004C000FCF94FEA1E440CFB19551FFA83F844EA65
+:1004D000054509FB08F4AC4202FA01F200FA01FA00
+:1004E00008D9ED1809F1FF3043D2AC4241D9A9F146
+:1004F00002091D442D1B1FFA8EFEB5FBFCF00CFB00
+:1005000010554EEA054400FB08F8A04507D9E41849
+:1005100000F1FF3529D2A04527D902381C4440EA12
+:100520000940A4EB0804A0FB02894C45C6464D4691
+:1005300015D312D056B1BAEB0E0364EB050404FADE
+:1005400007F7CB401F43CC40376074600021BDE803
+:10055000F0871846F8E69046E0E6C245EAD2B8EBE6
+:10056000020E69EB03050138E4E72846D7E7404669
+:1005700091E78146BEE7014678E702383C4445E70B
+:10058000084608E7A8F102083D442BE7704700BF82
+:10059000704713B5002304468DF8073000F09AFA2F
+:1005A00002A8012200F8014D202100F0E1FA02B07A
+:1005B00010BD13B502AC002304F8013D00F08AFA27
+:1005C000204601220F2100F0F5FA9DF8070002B045
+:1005D00010BD37B502AC002304F8013D05460122E9
+:1005E0002046212100F0E6FA9DF8073023F02F0382
+:1005F0001D430122212120468DF8075000F0B8FA52
+:1006000003B030BD1FB504A8002300F8093D012246
+:10061000392100F0CFFA0622272102A800F0CAFAF9
+:1006200005B05DF804FB07B501220DF1070021219B
+:1006300000F0C0FA9DF80730012243F04003212169
+:100640000DF107008DF8073000F092FA03B05DF865
+:1006500004FB1FB5044601220DF10700202100F024
+:10066000A9FA02A80622292100F0A4FA9DF8072081
+:100670009DF908009DF90A109DF90C3002F0200246
+:10068000202A0CBF4822122210FB02F011FB02F1BB
+:1006900013FB02F320806180A38004B010BD37B546
+:1006A00002AC002304F8013D054601222046382112
+:1006B00000F080FA6A782B781343AA783821134324
+:1006C000204601228DF8073000F052FA03B030BD09
+:1006D00073B500238DF8033000F022FA402302ACFA
+:1006E0008DF8043010238DF8053001A820233F2514
+:1006F0008DF80630FFF7D3FF04F8055D0122204690
+:10070000222100F035FA50232046012238218DF8AD
+:10071000033000F02DFAAA23204601223B218DF858
+:10072000033000F025FA0A23204601223C218DF8EF
+:10073000033000F01DFA4C232046012230218DF8B1
+:10074000033000F015FA0323204601223D218DF8E5
+:1007500003307F2600F00CFA204601223E218DF85E
+:10076000036000F005FA0122294620468DF8036057
+:1007700000F0FEF902B070BD704737B502AC00233F
+:1007800005468DF8073000F0A5F904F8015D012257
+:100790002046202100F0ECF92D0A012224212046D8
+:1007A0008DF8075000F0E4F903B030BD13B502AC8A
+:1007B000002304F8013D00F08DF9204601220F21AD
+:1007C00000F0F8F99DF8070002B010BD07B501224E
+:1007D0000DF10700252100F0EDF99DF80730012209
+:1007E00063F07F0325210DF107008DF8073000F03D
+:1007F000BFF903B05DF804FB30B585B001222421B8
+:10080000054602AC0DF1070000F0D4F901222821C1
+:10081000204600F0CFF9012229210DF1090000F056
+:10082000C9F901222A210DF10A0000F0C3F90122C1
+:100830002B210DF10B0000F0BDF901222C2103A8A2
+:1008400000F0B8F901222D210DF10D0000F0B2F9F0
+:100850009DF8073003F03803083BDBB2182B97BF35
+:100860000E4A9FED0F7A02EB830393ED007A00228C
+:10087000A31893F90110A35603EB012307EE903A56
+:10088000F8EEE77A67EE877AFDEEE77A17EE903AB0
+:10089000AB520232062AEBD105B030BDFC6B00082A
+:1008A0008FC2753D37B5027843781343827802AD25
+:1008B000134305F8013D044601222846232100F098
+:1008C00057F92279E37828461343212101228DF834
+:1008D000073000F04DF9A2796379222113432846AD
+:1008E00001228DF8073000F043F903B030BD30B578
+:1008F00085B0002401258DF8074000F011F98DF82E
+:1009000009408DF8084040238DF80B408DF80E40CB
+:1009100002A804AC8DF80A308DF80D50FFF7C2FF25
+:10092000032304F8093D2A462046522100F020F90D
+:10093000C8232A46204654218DF8073000F018F9C4
+:1009400045232A46204656218DF8073000F010F93D
+:10095000FC232A4620465A218DF8073000F008F97A
+:10096000A1232A4620465B218DF8073000F000F9CC
+:100970002A4620465C218DF8075000F0F9F82A46F7
+:1009800020467B2100F0F4F82A462046602100F042
+:10099000EFF806232A46204661218DF8073000F043
+:1009A000E7F828232A46204662218DF8073000F018
+:1009B000DFF811232A46632120468DF8073000F026
+:1009C000D7F805B030BD000010B5204C88B02046E7
+:1009D00001F07CFF002837D11D4B23601823E36111
+:1009E0000723E3624FF40073A3614FF482736360E3
+:1009F000184B0190A06060612061A062E0602062FD
+:100A000060625A6C42F480525A645A6C02F480520A
+:100A10000192019A02901A6B0F4842F001021A6388
+:100A20001B6B03F001030293029BE0230393022359
+:100A3000049305930123069303A90523079300F06C
+:100A4000D5F9204601F0F3FD08B010BD600200208A
+:100A50000030014000380240000002407FB506AA85
+:100A6000002302F8013D0B4B8DF80F001B6800932B
+:100A70000DF10F010123084801F02CFE20B10648BA
+:100A800001F012FEFFF7A0FF9DF8170007B05DF818
+:100A900004FB00BF7800002060020020044B33F804
+:100AA0001010044B012253F8200000F017BB00BFC8
+:100AB000606C000868000020044B33F81010044BF1
+:100AC000002253F8200000F009BB00BF606C000852
+:100AD0006800002070B586B000210F4B00911A6BA2
+:100AE0000E4D42F010021A631B6B039103F01003CA
+:100AF00001240093082601A92846009B0196029430
+:100B0000049400F073F922463146284600F0E6FAD4
+:100B1000FFF75AFF06B070BD0038024000100240D7
+:100B200010B586B000240F4B00941A6B0E4842F0AB
+:100B300010021A631B6B0D4A029203F0100300931C
+:100B4000009B0394022301A90193049300F04EF942
+:100B500022460F21072000F0E7F8072000F018F9DF
+:100B600006B010BD00380240001002400000111015
+:100B7000012A70B50D46064688BF41F040050C4875
+:100B800014460821002200F0A9FA2846FFF766FF64
+:100B900034B9012208210648BDE8704000F09EBA31
+:100BA00016F8010B013CFFF759FFA4B2F0E700BFB4
+:100BB00000100240012A70B58CBF41F0C00541F021
+:100BC0008005064614460C480022082100F086FAEB
+:100BD0002846FFF743FF34B9012208210648BDE843
+:100BE000704000F07BBA0020FFF738FF013C06F8A8
+:100BF000010BA4B2EFE700BF0010024038B50E4C65
+:100C0000A36898473B280AD10C4D23682C604720E5
+:100C100098472B682D209B6A9847002038BD084CC8
+:100C2000A36898473F2805D1044B67201C602368C0
+:100C30009847F2E7012038BD00000020B8020020EC
+:100C40003400002038B50D4D2B681B6B04469BB15A
+:100C500098472A680A4B9A420ED1B4F9003007EE41
+:100C6000903AF8EEE77A63882380F1EE677AFDEE3A
+:100C7000E77A17EE903A638038BD00BFB8020020D3
+:100C80000000002008B50B4B1A6842F400721A608D
+:100C90001A6842F480621A601A6842F480721A601C
+:100CA000032000F02FF8002004F0FEFF04F01EFFE8
+:100CB000002008BD003C0240034A044B11681B7829
+:100CC0000B441360704700BF144000207C000020DC
+:100CD000014B1868704700BF1440002038B5044627
+:100CE000FFF7F6FF631C1CBF054B1B78054618BFBA
+:100CF000E418FFF7EDFF401B8442FAD838BD00BF6F
+:100D00007C000020074AD36823F4E0631B041B0C1B
+:100D100043F0BF63000243F4003300F4E060034398
+:100D2000D360704700ED00E0174B30B5DC68C4F3CA
+:100D30000224C4F10703251D042B28BF0423062D1C
+:100D40004FF0010505FA03F303F1FF338CBF033CB9
+:100D500000241940A14005FA04F4013C2240002877
+:100D600042EA01024FEA0212AFBF00F1604000F018
+:100D70000F00064BD2B2A5BF00F56140D2B21A54A3
+:100D800080F8002330BD00BF00ED00E014ED00E06E
+:100D90004209012300F01F0003FA00F0014B43F861
+:100DA0002200704700E100E00138B0F1807F0AD2F4
+:100DB000064B074A5860F02182F8231000200722D2
+:100DC00098601A6070470120704700BF10E000E093
+:100DD00000ED00E0044B1A6804280CBF42F0040246
+:100DE00022F004021A60704710E000E02DE9F04F95
+:100DF00085B00B68DFF8AC81684ADFF8AC910193ED
+:100E000000234FF0010E019C0EFA03FE0EEA0406C9
+:100E1000B64540F0AE804C6824F01007022F16D182
+:100E20004FEAD30A00EB8A0A03F0070BDAF82050E6
+:100E30004FEA8B0B4FF00F0C0CFA0BFC25EA0C0C55
+:100E40000D6905FA0BF545EA0C05CAF820504FEA82
+:100E5000430A0325D0F800B005FA0AF5ED4304F083
+:100E6000030C0BEA050B0CFA0AFC013F4CEA0B0CD5
+:100E7000012FC0F800C011D8876807EA050BCF68BA
+:100E800007FA0AFC4CEA0B078760476827EA0E0E50
+:100E9000C4F300179F4047EA0E074760C7683D400C
+:100EA0008F6807FA0AF73D43C560E50061D54FF04A
+:100EB000000BCDF80CB0D8F84470394D47F480479A
+:100EC000C8F84470D8F8447007F480470397039F2C
+:100ED00023F0030707F1804707F59C3703F0030C65
+:100EE000D7F808A04FEA8C0C4FF00F0E0EFA0CFE4C
+:100EF000A8422AEA0E0E43D005F58065A84241D0EB
+:100F000005F58065A8423FD005F58065A8423DD033
+:100F100005F58065A8423BD048453BD005F5006506
+:100F2000A84239D005F58065A84214BF08250725D9
+:100F300005FA0CF545EA0E05BD601568F74314F493
+:100F4000803F0CBF3D4035431560556814F4003FA9
+:100F50000CBF3D4035435560956814F4801F0CBFAD
+:100F60003D4035439560D568A40254BF3D403543AC
+:100F7000D5600133102B7FF444AF05B0BDE8F08F8E
+:100F80005D46D5E70125D3E70225D1E70325CFE765
+:100F90000425CDE70525CBE70625C9E7003C014040
+:100FA0000000024000380240001402402DE9F04FDA
+:100FB000464EDFF820A1DFF820B100244FF00109F0
+:100FC00009FA04F232EA01036CD1032304FA09F5A9
+:100FD000076803FA05F5ED4324FA03FC2F4000EB04
+:100FE0008C0C076004F0070EDCF820800F274FEA16
+:100FF0008E0E07FA0EFE28EA0E0ECCF820E0D0F88E
+:1010000008E005EA0E0EC0F808E0D0F804E0D2438C
+:1010100002EA0E0EC0F804E0D0F80CE005EA0E0576
+:10102000C56024F0030505F1804505F59C3504EA0B
+:10103000030E274BD5F808C04FEA8E0E07FA0EF7BD
+:1010400098420CEA070C32D003F58063984230D006
+:1010500003F5806398422ED003F5806398422CD02C
+:1010600003F5806398422AD003F58063984228D024
+:10107000504528D058450CBF0723082303FA0EF328
+:101080009C450FD1AB6823EA0707AF603368134074
+:101090003360736813407360B3681340B360F368E0
+:1010A0001A40F2600134102C88D1BDE8F08F002383
+:1010B000E4E74B46E2E70223E0E70323DEE704230D
+:1010C000DCE70523DAE70623D8E700BF003C014050
+:1010D0000000024000180240001C02400AB1816179
+:1010E00070470904FBE7000070B50446002862D091
+:1010F00090F83D3003F0FF021BB980F83C2004F06B
+:101100003DFD22682D4E2E4D242384F83D3013687A
+:1011100023F00103136001F03FF963682268B0FB1C
+:10112000F5F5B34284BF4FF496716943556091BFA2
+:10113000691C4FF47A75B1FBF5F10131B3421162CC
+:1011400021D85B00B0FBF3F0C0F30B03032B98BF77
+:101150000420216AE369D0610B431360E1682369CD
+:101160000B439360A16963690B43D360136843F039
+:101170000103136000202023206484F83D302063A5
+:1011800084F83E0070BDA16849B903EB4303B0FB8E
+:10119000F3F0C0F30B0363B140F40040D9E7192129
+:1011A0004B43B0FBF3F0C0F30B0313B140F44040EA
+:1011B000CFE70120CDE7012070BD00BFA086010070
+:1011C00040420F00704770477047000070B50446FA
+:1011D00000283FD00225414B80F84150436304F082
+:1011E000F7FC2268D36923F47B6323F00F03D361F8
+:1011F00063691562022BD56935D0E368002BA368BB
+:1012000014BF202610260120202B98BF760001F065
+:1012100089F923696169B3F5007F1FD1E3680A2268
+:10122000D3B1B300B0FBF3F353430A22B3FBF1F3A2
+:101230000533B3FBF2F303F001021202C3F34F03D1
+:10124000991EFD2911D9636C43F010036364204695
+:10125000FFF7BAFF012070BDF300E3E70A23B0FBFC
+:10126000F6F04343E1E70022EAE7134322692068EE
+:10127000666813430362E268A3681343A2691343D9
+:101280009BB246F400611943226A89B20D43012AD8
+:10129000C5611CD1124A62631249134A884218BFC1
+:1012A0004FF0402236F40070D16921F47B6121F0C7
+:1012B0000F01D1614FF002011162D1690CBF4FF4EF
+:1012C0008070002043F4006303430B43D36100208C
+:1012D0000123606484F8413070BD00BFED12000846
+:1012E000F913000800380040003400401FB50368BF
+:1012F0009A68019290F84120042A04463AD1019A52
+:10130000D10719D55A68520616D5C26A911CC16216
+:10131000D9681180428E013A92B24286428E92B2D0
+:1013200052B95A6822F060021204120C5A6001236A
+:1013300080F84130FFF747FF019B59061AD5236813
+:101340005A68920616D55A6822F060021204120CEE
+:101350005A6000220292DA6802929B680293029B12
+:10136000012384F84130636C43F002036364204638
+:10137000FFF72AFF94F84130032B3AD1019B9B07DA
+:101380001BD522685368180617D5636A991C1B88F9
+:101390006162D360638D013B9BB26385638D9BB2B9
+:1013A0005BB9536823F0A0031B041B0C536001239B
+:1013B00084F841302046FFF705FF019B190718D537
+:1013C00023685A68920614D55A6822F0A0021204C3
+:1013D000120C5A60002203929B680393039B012323
+:1013E00084F84130636C43F0040363642046FFF7E4
+:1013F000EBFE04B010BD70471FB5036892499A68B0
+:101400000092924A8B4218BF4FF0402204469168E6
+:101410000191D96901F44071B1F5007F04D0D96917
+:1014200011F4407F40F09780009A92071DD55A68CA
+:1014300010061AD5626A911C12886162DA60628DA8
+:10144000013A92B26285628D92B272B95A6822F004
+:10145000A0021204120C5A60638E9BB22BB90123B6
+:1014600084F841302046FFF7C6FF019BD90722D5FB
+:10147000754A2168754B914218BF4FF040235A6856
+:10148000520618D5E26A911CE162D9681180628E19
+:10149000013A92B26286628E92B262B95A6822F0C2
+:1014A00060025A60638D9BB22BB9012384F84130EE
+:1014B0002046FFF7A0FF019B580624D56249236808
+:1014C000624A8B4218BF4FF04022516889061AD5F4
+:1014D000516821F0600151605A6822F0A0021204A4
+:1014E000120C5A6000220292DA6802929B68029300
+:1014F000029B012384F84130636C43F00203636470
+:101500002046FFF761FE009B1B0722D523685A681F
+:1015100090061ED55A684C4922F0A0021204120C03
+:101520005A604A4A8B4218BF4FF04022516821F05E
+:1015300060015160002203929B680393039B012387
+:1015400084F84130636C43F0040363642046FFF782
+:101550003BFE04B010BD019B99071AD553681B06CA
+:1015600017D5436A991C1B884162D360438D013BA8
+:101570009BB24385438D9BB25BB9536823F0A003B4
+:101580005360438E9BB223B9012380F84130FFF7AB
+:1015900032FF009BD8071ED52268536859061AD51A
+:1015A000E36A991CE162D1681980638E013B9BB2AA
+:1015B0006386638E9BB273B9536823F060031B0488
+:1015C0001B0C5360638D9BB22BB9012384F841300F
+:1015D0002046FFF710FF009B5A061DD5226853686E
+:1015E0009B0619D55368184923F060031B041B0C94
+:1015F0005360164B8A4218BF4FF0402320465A686A
+:1016000022F0A0025A60012384F84130636C43F059
+:1016100002036364FFF7D8FD019B180799D50A49B7
+:1016200022680A4B8A4218BF4FF040235968890646
+:101630008FD5596821F0A0015960536823F06003E9
+:101640001B041B0C53607AE7003800400034004054
+:10165000F0B506468BB0002864D00323344680F8EA
+:10166000B93304F019FC54F8100B01F0A5FA0FCCB3
+:101670006D460FC50FCC0FC594E8030085E8030045
+:10168000371D97E80E00306801F056FA00213068E7
+:1016900001F098FA00213346324606F11004012584
+:1016A000084682F83810D18701310F2982F8395065
+:1016B00082F83B0010645064D06402F11C02F0D147
+:1016C0000022D6F800E0114602F1400083F8F8212C
+:1016D000DA870EEB800001320F2A83F8F91183F8C4
+:1016E000FB11C3F80012C3F80412C3F80C124160D6
+:1016F00003F11C03E8D10FCC6D460FC50FCC0FC50D
+:1017000094E8030085E80300704697E80E0001F0B6
+:1017100071FA012386F8B933306801F08EFD00209C
+:101720000BB0F0BD0120FBE790F8B833012B10B5EA
+:1017300004460CD0012380F8B833006801F071FD35
+:10174000206801F033FA002084F8B80310BD0220AD
+:1017500010BD00002DE9F04FD0F8009087B004468E
+:10176000484601F0A4FD0290002840F02E81206838
+:1017700001F06FFD002800F02881206801F069FD6C
+:10178000850748BF2268206842BF536903F00203FF
+:10179000536101F05EFD10F400250AD0206801F0CD
+:1017A0005CFD09F530660746A2460025002F40F093
+:1017B0000F81206801F04DFD41030BD5206801F039
+:1017C00054FD2646039009F510680025039B002B65
+:1017D00040F03F81206801F03CFD00280DDAD9F887
+:1017E000043823F00103C9F80438204604F0DEFB76
+:1017F0002268536903F000435361206801F029FD1A
+:1018000006050BD5D9F80838D80702D5204604F0CC
+:10181000B5FB2268536903F400635361206801F04B
+:1018200018FDC10437D509F500667368206823F0F8
+:1018300001037360102101F079FA616809F5106302
+:10184000FF220298884240F092814FF0FF33B3614B
+:10185000F36943F00113F361236B002B00F08F81D8
+:10186000D6F8843043F00B03C6F88430736C43F031
+:101870000B037364D9F80038217C206823F4FE63DD
+:10188000C9F8003804F56F7201F030FD2268536921
+:1018900003F480535361206801F0DBFC82041DD502
+:1018A000206801F008FD2068C36823F47053C3600A
+:1018B00001F065FA002840F06B812268E0604FF487
+:1018C00000736361D36843F41053D360204604F07F
+:1018D00044FB2268536903F400535361206801F00C
+:1018E000B8FCC3062BD52268936923F010039361DB
+:1018F000D9F82060C6F34343022B06F00F0840F0EE
+:10190000A88147F6F0731E4214D01C2707FB084736
+:10191000C6F30A163246D7F80412484601F02BFCEB
+:10192000D7F804323344C7F80432D7F810321E44D3
+:10193000C7F810622268936943F01003936120682E
+:1019400001F087FC070707D5204604F002FB226858
+:10195000536903F008035361206801F07AFCC60262
+:1019600008D5E9B2204604F029FB2268536903F444
+:1019700080135361206801F06CFC800208D5E9B245
+:10198000204604F017FB2268536903F400135361E7
+:10199000206801F05EFC410007D5204604F012FBF0
+:1019A0002268536903F080435361206801F051FCC1
+:1019B00042070AD523685D686B0702D5204604F00C
+:1019C00005FB23685A6815435D6007B0BDE8F08FDA
+:1019D000F80738D55FFA85FB5946206801F04DFCC1
+:1019E00010F0010F804621D0216901239942B36094
+:1019F0000CD13169DAF80002C1F31201411ACAF8B8
+:101A00001012DAF804120844CAF8040259462046B3
+:101A100004F08EFA2169012908D13DB9D4F80C22CD
+:101A200022B904F56F72206801F060FC18F0080F0D
+:101A300004D0204604F076FA0823B36018F0100FA3
+:101A40001CBF1023B36001357F0820360AF11C0A41
+:101A5000ACE6039BDA0758D55FFA85FB5946206848
+:101A600001F015FCC307074620D5D9F83438012109
+:101A7000A94023EA0103C9F834380123C8F8083023
+:101A80002369012B01BF736C326C9B187364594638
+:101A9000204604F056FA2169012907D135B9E36CD3
+:101AA00023B904F56F72206801F020FC380744BFA9
+:101AB0000823C8F80830F90644BF1023C8F80830D6
+:101AC0007A0644BF4023C8F80830BB0744BF02234E
+:101AD000C8F808303F0618D523680493F76C336DB7
+:101AE000FF1A336C9F4228BF1F46049B03F5106307
+:101AF00007F1030A03EB45134FEA9A0A0593059B86
+:101B00009B699BB2534508D82FB3039B5B080135F3
+:101B100003931C3608F1200858E6326DF36C9342AB
+:101B2000F2D9002BF0D0376C04989B1A9F4228BF43
+:101B30001F46237C00935A46BBB2716C01F007FB31
+:101B4000736C3B447364336D07F1030A3B444FEA03
+:101B50009A0A3365D3E7049B012203F5006BD3F89F
+:101B60003438AA4023EA0203CBF83430CDE7029898
+:101B70009A600130C3F808220290203361E673694D
+:101B800043F00B037361336943F00B03336171E678
+:101B90000323E3604023636100F0F8FB344B354AD4
+:101BA00003449342236804D8DA6842F47052DA603E
+:101BB0008CE6314A314902448A4203D8DA6842F459
+:101BC0006052F4E7A0F574022D49A2F510528A4242
+:101BD00003D8DA6842F45052E9E7A0F18372294948
+:101BE000A2F5E7428A4203D8DA6842F44052DEE7BF
+:101BF000254A264902448A4203D8DA6842F4305220
+:101C0000D5E7234A234902448A4203D8DA6842F4DA
+:101C10002052CCE7204A214902448A4203D8DA689C
+:101C200042F41052C3E7A0F1B7721D49A2F5585211
+:101C30008A4203D8DA6842F40052B8E7194A1A49CE
+:101C400002448A42DA6894BF42F4E05242F4C0523D
+:101C5000ADE7062B7FF46EAE082204F56F7148469F
+:101C60001C2701F088FA07FB0847C6F30A165CE652
+:101C7000405327FFFF340C00401E1BFF3F420F0064
+:101C80007F4F12001FD6130060B6E5FE5FE316001B
+:101C900000D3CEFE3F771B00C05BB3FEBF91210097
+:101CA0001F753800E05459FEDF9C410090F8B833AE
+:101CB000012B10B5044609D0012380F8B833006821
+:101CC00001F09FFA002084F8B80310BD022010BD77
+:101CD00070B54EB2002E04464FF01C0501F07F0097
+:101CE000B5BF05FB004105FB0141383101F5FC7131
+:101CF000C0B2002EB8BFC880022BCB704FEAD67599
+:101D000004BF00230B7108704D7094F8B8338A60DB
+:101D1000012B09D0012384F8B833206801F04AF878
+:101D2000002084F8B80370BD022070BD4BB2002BB8
+:101D300010B54FF01C02044601F07F00B5BF02FB56
+:101D4000004102FB0141383101F5FC71DB0F0870E5
+:101D50004B7094F8B833012B09D0012384F8B833C1
+:101D6000206801F066F8002084F8B80310BD022056
+:101D700010BD38B501F07F051C2404FB050104FBF0
+:101D8000050401F5FC71C4F80C320023C4F80422E8
+:101D9000C4F8103284F8F93184F8F8510369006806
+:101DA000012B08BFC4F80822DAB21DB901F062F9AC
+:101DB000002038BD01F098F8FAE71C2301F00F016C
+:101DC00003FB0101B1F81002704738B501F07F053F
+:101DD0001C2404FB050104FB05043831E3640023E3
+:101DE00023650123626484F8393084F8385003692C
+:101DF0000068012B08BFA264DAB21DB901F03AF9FC
+:101E0000002038BD01F070F8FAE738B54BB2002B6E
+:101E100001F07F054FF01C02B5BF02FB050102FB7C
+:101E20000101383101F5FC710122DB0FEDB28A703E
+:101E30000D704B7090F8B833934204460FD080F881
+:101E4000B823006801F0A5F92DB904F56F72217C63
+:101E5000206801F04BFA002084F8B80338BD022056
+:101E600038BD38B54BB2002B05464FF01C0201F0CF
+:101E70007F00B5BF02FB005102FB0151383101F573
+:101E8000FC71DB0F00248C7008704B7095F8B83330
+:101E9000012B09D0012385F8B833286801F098F99F
+:101EA00085F8B843204638BD022038BD006870B5BB
+:101EB000436A21B943EA02438362002070BD846A09
+:101EC000002503EB14434E1EECB2B44205F10105AC
+:101ED00006DB3F3100EB810043EA02434360ECE75D
+:101EE000403400EB8404646803EB1443ECE70368BC
+:101EF00000205962704700002DE9F341044618B9EB
+:101F0000012002B0BDE8F0810368DD0710D423682A
+:101F1000980758D423681A0700F19A8023685B0752
+:101F200000F1B880A269002A40F019810020E8E79A
+:101F3000A64B9A6802F00C02042A07D09A6802F0B5
+:101F40000C02082A0AD15B68590207D59F4B1B680F
+:101F50009A03DCD56368002BD9D1D1E763689B4D28
+:101F6000B3F5803F11D12B6843F480332B60FEF72B
+:101F7000AFFE964D06462B689B03C8D4FEF7A8FE1D
+:101F8000801B6428F7D90320BBE7B3F5A02F04D149
+:101F90002B6843F480232B60E5E72A6822F4803223
+:101FA0002A602A6822F480222A60002BDFD1FEF703
+:101FB0008FFE06462B689F03A9D5FEF789FE801B7E
+:101FC0006428F7D9DFE7814B9A6812F00C0F07D02D
+:101FD0009A6802F00C02082A11D15B685E020ED4E6
+:101FE0007A4B1A68950702D5E268012A88D11A68E7
+:101FF000216922F0F80242EAC1021A608AE7E26827
+:10200000734BB2B101221A60FEF762FE6F4D0646B5
+:102010002B68980707D52B68226923F0F80343EA59
+:10202000C2032B6076E7FEF753FE801B0228EFD930
+:10203000A9E71A60FEF74CFE644D06462B68990727
+:102040007FF568AFFEF744FE801B0228F6D99AE7B9
+:102050006269604B7AB101221A60FEF739FE5B4D6E
+:1020600006466B6F9F073FF559AFFEF731FE801BA9
+:102070000228F6D987E71A60FEF72AFE534D064676
+:102080006B6F98077FF54AAFFEF722FE801B022890
+:10209000F6D978E74D4B1A6C12F0805228D1019294
+:1020A0001A6C42F080521A641B6C03F08053019347
+:1020B000019B0126484D2B68D9051BD5A368434DCC
+:1020C000012B27D12B6F43F001032B67FEF700FE96
+:1020D0003E4D074641F288382B6F9B0739D5002EBD
+:1020E0003FF420AF394A136C23F08053136419E78F
+:1020F0000026DFE72B6843F480732B60FEF7E8FDD2
+:1021000007462B68DA05D9D4FEF7E2FDC01B02288A
+:10211000F7D938E7052B04D12B6F43F004032B6765
+:10212000D0E72A6F22F001022A672A6F22F0040208
+:102130002A67002BCAD1FEF7CBFD41F2883807464B
+:102140002B6F9807CBD5FEF7C3FDC01B4045F7D9D1
+:1021500019E7FEF7BDFDC01B4045BDD913E71B4D78
+:10216000AB6803F00C03082B3FF4CAAE1B4E0023F0
+:10217000022A336034D1FEF7ABFD07462B68990184
+:102180001ED4226AE3691343626A43EA8213E26A55
+:1021900043EA0263A26A0D4C5208013A43EA024341
+:1021A0006B6001233360FEF793FD054623689A01B7
+:1021B0003FF5BCAEFEF78CFD401B0228F6D9E2E6E7
+:1021C000FEF786FDC01B0228D8D9DCE600380240A5
+:1021D00000004742800E47420070004060004742C6
+:1021E000FEF776FD04462B689B017FF59FAEFEF758
+:1021F0006FFD001B0228F6D9C5E600BF134908B5DC
+:102200008B6803F00C03042B03D0082B03D0104879
+:1022100008BD104808BD4A684B68496813F480033C
+:1022200014BF0C480A48C1F3881118BF002302F0FC
+:102230003F02A1FB0001FEF723F8044B5B68C3F3E8
+:10224000014301335B00B0FBF3F008BD00380240EE
+:102250000024F40000127A002DE9F0410D460446F6
+:1022600010B90120BDE8F081444B1A6802F00F025A
+:102270008A4228D321688F072DD4C80740D43F4B0A
+:102280001A6802F00F02954266D3226851076CD497
+:10229000130707D53A4A2169936823F4604343EA58
+:1022A000C1039360FFF7AAFF354B364A9B68C3F31F
+:1022B0000313D35CD840344B1860002003F0F4FCC7
+:1022C0000020BDE8F081CAB21A701B6803F00F034A
+:1022D0009942C6D1CEE72A4B11F0040F1EBF9A686F
+:1022E00042F4E0529A600E0742BF9A6842F460429C
+:1022F0009A609A68A06822F0F00202439A60BCE7F4
+:1023000062681F4B012A1DD11B6813F4003FA8D03F
+:102310001B4EB36823F003031343B360FEF7D8FCEE
+:1023200041F288380746B368626803F00C03B3EBE8
+:10233000820FA4D0FEF7CCFCC01B4045F3D903208C
+:10234000BDE8F081911E01291B6802D813F0007FBF
+:10235000DDE713F0020FDAE7EAB21A701B6803F048
+:102360000F039D427FF47DAF8FE70549E0688B68DE
+:1023700023F4E05303438B608AE700BF003C024034
+:10238000003802409D6C000898010020014B18683D
+:10239000704700BF98010020044B054A9B68C3F3B7
+:1023A0008223D35C034A1068D8407047003802404B
+:1023B000AD6C0008980100200F2303600B4B9A6856
+:1023C00002F0030242609A6802F0F00282609A68AA
+:1023D00002F4E052C2609B68DB0803F4E05303613F
+:1023E000034B1B6803F00F030B607047003802407B
+:1023F000003C0240036813F0050FF7B5054605D110
+:10240000286810F0020028D103B0F0BD414C424EC4
+:1024100000232360FEF75CFC074633681B0115D4DC
+:10242000AB686A681B0743EA8213C6F8843001234D
+:102430002360FEF74DFC384C064623681801DFD4B4
+:10244000FEF746FC801B0228F7D904E0FEF740FCAB
+:10245000C01B0228E1D90320D6E7002301932E4BAD
+:102460002E4C1A6C42F080521A641B6C03F080539D
+:102470000193019B236843F480732360FEF728FCDB
+:1024800006462368D9051BD5234C236F13F44073EC
+:102490001CD1EB6803F44072B2F5407F1E4A34D180
+:1024A000916823F0704021F4F81120F4407001434A
+:1024B0009160116FC3F30B030B4313670020A3E775
+:1024C000FEF706FC801B0228DBD9C4E7EA6802F4A9
+:1024D00040729342DDD0236F114A0121116023F431
+:1024E0004073002111602367236FDA07D1D5FEF70F
+:1024F000EFFB41F288370646236F9B07C9D4FEF7EE
+:10250000E7FB801BB842F7D9A5E7916821F4F811E1
+:10251000CEE700BF6800474200380240007000402C
+:10252000400E4742012820D1114B9A6812F4000254
+:1025300004D0012A0F4818BF002070475A680C4980
+:1025400058685302D1F884204CBF0B4B0B4B00F062
+:102550003F00B3FBF0F3D1F88400C2F38812534379
+:10256000C0F30270B3FBF0F070470020704700BF6B
+:10257000003802400080BB0000127A000024F40002
+:102580002DE9F041069E0446884617461D462268FE
+:10259000936838EA03030CBF012300239F4202D152
+:1025A0000020BDE8F0816B1CF2D055BB23685A684F
+:1025B00022F0E0025A606268B2F5827F0AD1A26816
+:1025C000B2F5004F02D0B2F5806F03D11A6822F045
+:1025D00040021A60A26AB2F5005F09D11A6822F4BB
+:1025E00000521204120C1A601A6842F400521A6067
+:1025F000012384F85130002384F850300320BDE8D3
+:10260000F081FEF765FB801B8542C0D8CEE713B58D
+:102610000B460092802100220446FFF7B1FF20B153
+:10262000636D43F020036365032002B010BD10B555
+:102630000446002836D00023836290F8513003F01E
+:10264000FF021BB980F8502003F0F4FA2168A0685B
+:10265000A269022384F851300B6823F040030B6019
+:1026600063680343E06803432069034360690343ED
+:10267000E0690343206A0343A06A034302F4007045
+:1026800003430B60120C636A02F004021A434A60AF
+:10269000CB6923F40063CB6100200123606584F8DB
+:1026A000513010BD012010BD10B5044680B1026844
+:1026B000022380F85130136823F04003136003F0C5
+:1026C000DFFA0020606584F8500084F8510010BDE6
+:1026D000012010BD2DE9F043994690F8503085B0A7
+:1026E000012B04460D4616460C9F00F0ED80012399
+:1026F00080F85030FEF7ECFA94F851306168DBB2A4
+:10270000012B80460AD0B1F5827F40F0DB80A268C1
+:10271000002A40F0D780042B40F0D480002D4ED00A
+:10272000002E4CD0B9F1000F49D094F85130A66377
+:10273000012B04BF052384F8513000236365236413
+:1027400063642368A4F83E90A4F836901A68A4F84D
+:102750003C90500658BF1A68256358BF42F04002AB
+:10276000A4F8349058BF1A60E268B2F5006F5DD1EA
+:1027700019B1E28E92B2012A06D135F8022BDA6045
+:10278000E38E013B9BB2E3864FF00109E38E9BB2DF
+:10279000BBB9E38F9BB2A3B9CDF800803B460122C1
+:1027A00002212046FFF7ECFE002835D1424639468B
+:1027B0002046FFF72CFF002879D0202363650120F5
+:1027C0002BE0B9F1000F0FD0E38E9BB263B1236809
+:1027D0009A68910708D535F8022BDA60E38E013B41
+:1027E0009BB2E3864FF00009E38F9BB263B123688D
+:1027F0009A68D20708D5DB6826F8023BE38F013BD5
+:102800009BB2E3874FF00109781CBFD0FEF760FA56
+:10281000A0EB08008742B9D80320012384F8513087
+:10282000002384F8503005B0BDE8F08319B1E28E82
+:1028300092B2012A06D115F8012B1A73E38E013BDF
+:102840009BB2E3864FF00109E38E9BB21BB9E38F85
+:102850009BB2002BA0D0B9F1000F0FD0E38E9BB23A
+:1028600063B123689A68910708D52A781A73E38EB2
+:10287000013B9BB2E38601354FF00009E38F9BB229
+:1028800063B123689A68D20708D5DB683370E38F99
+:10289000013B9BB2E38701364FF001097B1CD3D08B
+:1028A000FEF716FAA0EB08008742CDD8B4E7A3687C
+:1028B000002BB2D123680390DA6803929B680393DC
+:1028C000039BAAE70220A8E70220ACE790F851009A
+:1028D000704770470368DA6842F00102DA601A68EC
+:1028E00042F001021A60002070477047704770473D
+:1028F000704703681A69910710B504460ED5DA6867
+:1029000092070BD56FF002021A619B6901229B07A7
+:10291000027677D0FFF7EAFF0023237623681A694F
+:10292000500710D5DA6851070DD56FF004021A610F
+:102930009B69022213F4407F2276204668D0FFF77D
+:10294000D5FF0023237623681A6912070FD5DA68AA
+:1029500010070CD56FF008021A61DB690422990791
+:10296000227620465AD0FFF7C1FF00232376236842
+:102970001A69D20610D5DA68D0060DD56FF01002AC
+:102980001A61DB69082213F4407F227620464BD07F
+:10299000FFF7ACFF0023237623681A69D10708D517
+:1029A000DA68D20705D56FF001021A61204603F0FC
+:1029B00091F823681A69100608D5DA68110605D55A
+:1029C0006FF080021A61204600F0B5F823681A699A
+:1029D000520608D5DA68500605D56FF040021A6134
+:1029E0002046FFF785FF23681A69910622D5DA6829
+:1029F00092061FD56FF0200220461A61BDE81040F4
+:102A000000F098B8FFF771FF2046FFF770FF83E7EB
+:102A1000FFF76BFF2046FFF76AFF92E7FFF765FFBE
+:102A20002046FFF764FFA0E7FFF75FFF2046FFF7B0
+:102A30005EFFAFE710BD00002E4A0368904212D03F
+:102A4000B0F1804F0FD0A2F57C4290420BD002F53E
+:102A50008062904207D002F58062904203D002F576
+:102A6000784290421DD14A6823F070031343214AF3
+:102A7000904204D1CA6823F44073134328E0B0F1B4
+:102A8000804FF7D01C4A9042F4D002F58062904209
+:102A9000F0D002F580629042ECD002F5784290428C
+:102AA000E8D0164A9042E5D002F580629042E1D02B
+:102AB00002F580629042DDD0A2F598329042D9D0E2
+:102AC00002F580629042D5D002F580629042D1D06A
+:102AD00003608B68C3620B688362064B984206D022
+:102AE00003F58063984202D00123436170470B696C
+:102AF0000363F9E70000014000040040004001408A
+:102B000010B50446A0B190F8393003F0FF021BB9AC
+:102B100080F83820FFF7DDFE022384F83930206882
+:102B2000211DFFF789FF012384F83930002010BDF3
+:102B3000012010BD7047704784B038B505AD85E8F9
+:102B40000E000A9B012B044626D1836B23F48033AD
+:102B50008363C36823F4840323F04003C360C36822
+:102B600023F44013C360119B012B02BFC36843F4DD
+:102B70008013C36000F0DEFB089B012B07D1A36824
+:102B800043F00603A360A36843F02003A360BDE8FD
+:102B90003840002004B07047C36843F04003C3606E
+:102BA00000F0C8FB4FF48033A363E5E7836843F08C
+:102BB0000103836000207047836823F00103836072
+:102BC0000020704708B5C368012923F0C043C360E3
+:102BD00008D1C36843F00053C3603220FEF77EF88B
+:102BE000002008BD0029F8D1C36843F08043C360CA
+:102BF000F3E7000084B02DE9F041044607A880E81F
+:102C00000E00119E0A9FA36B8846A6B943F40013D9
+:102C1000A3630023C4F8003ED4F80038C4F8003899
+:102C20000C9B012B04F500655ED1099939B920464A
+:102C300000F09EF807E043F40023A363E9E7194698
+:102C4000204600F095F81021204600F06FF820464D
+:102C500000F07EF800234FF0FF322B6119466B61C4
+:102C60004FF09040AA614FF0FF0EEB6104F5106247
+:102C700043453BD1002104F5306208464FF0904EA9
+:102C80004FF0FF0C8B423ED12B69012F23F4807350
+:102C90002B6108D1234B2B632B6B43F4803343F020
+:102CA00003032B632B6B0023A3616FF080436361ED
+:102CB0001FB9A36943F01003A361A2691A4B134320
+:102CC000A3610D9B1BB1A36943F00803A361012E0F
+:102CD00001BFA36943F0804343F00403A361BDE84F
+:102CE000F041002004B070470321A0E7D2F800C0F3
+:102CF000BCF1000FB4BF1060116001331161C2F864
+:102D000008E02032B4E7D2F80080B8F1000FB4BF79
+:102D1000C2F800E0106001311061C2F808C0203232
+:102D2000B0E700BF0001800000383C80890141F01D
+:102D30002001064A0161013A05D0036913F020031E
+:102D4000F9D1184670470320704700BF410D0300BA
+:102D50001023064A0361013A05D0036913F01003FA
+:102D6000F9D1184670470320704700BF410D03009A
+:102D7000D0F800381943C0F800180020704700F55B
+:102D80000062D0F8080810F0060012D0936803F033
+:102D90000603022B0CD0936803F00603062B07D022
+:102DA000936803F00603042B14BF00200220704731
+:102DB0000320704730B54B780C78D0F81C5800F5DC
+:102DC0000062012B1BD1A3409BB22B4300F5106086
+:102DD000D36100EB44131A6812040ED48A68C878D1
+:102DE0001D68C2F30A0242F0805242F4004242EAF5
+:102DF000804040EA845028431860002030BD4FF4E2
+:102E00008033A34000F530602B4300EB4410D361C6
+:102E100003681B04F1D48B68C9780268C3F30A0302
+:102E200043F0805343F4004343EA81431343036078
+:102E3000E3E700F001B8000070B54B78012B0E46B7
+:102E4000054609784FF0200326D100F5106213FBE8
+:102E500001231A6822F400421A604FF000621A60DF
+:102E60004FF080421A601F4A013A01D1032070BD21
+:102E70009C6814F08044F7D110212846FFF756FFD4
+:102E80003178D5F81C2801238B409BB222EA03033A
+:102E9000C5F81C38204670BD00F5306213FB0123D5
+:102EA0001A6822F400421A604FF000621A604FF074
+:102EB00080421A600B4A013AD8D0986810F010008E
+:102EC000F9D1D5F8043843F48063C5F80438D5F84F
+:102ED0001C384FF480328A4023EA0203C5F81C38BC
+:102EE00070BD00BF410D0300F7B54B780C78012B86
+:102EF0004B6977D1202600F5106516FB045426692E
+:102F0000002B38D126F0FF5626F4C016266126691C
+:102F100046F4002626612669F60CF6042661012A8D
+:102F200050D10C780E6905EB44146661CE78012E01
+:102F30000FD1D0F808480F7814F4807F4FF02004A8
+:102F400014FB075427680CBF47F0005747F0805721
+:102F500027600F7805EB4715012E2C6844F00444D8
+:102F60002C6005D100929BB23A46C96800F0EFF898
+:102F7000002003B0F0BDF60CF604266126698F68C8
+:102F800026F0FF5626F4C0162661DE19013EB6FB78
+:102F9000F7F7374ED4F810E006EAC74646EA0E06C1
+:102FA00026612769C3F312063E432661CE78012EBF
+:102FB0005AD1266926F0C0462661266946F0005699
+:102FC0002661ACE7CE78012EB3D0002BAED091F8BD
+:102FD00000E0D0F83478012404FA0EF43C43C0F841
+:102FE0003448A3E700F5306505EB44142569ED0C82
+:102FF000ED042561256925F0FF5525F4C0152561EF
+:103000008D68FBB92369C5F312051D43256123694A
+:1030100043F400232361012A04BFCB686361CB78AA
+:10302000012B0AD1D0F8083813F4807F23680CBF35
+:1030300043F0005343F080532360236843F004437C
+:10304000236095E70A4E27692B44013BB3FBF5F358
+:1030500006EAC3463E4326619BB226695D43C5F33B
+:10306000120535432561D6E7012AAED159E700BFE5
+:103070000000F81F4B78012B70B50B784D6943D1D8
+:10308000202400F5106614FB03631C69CDB924F0FD
+:10309000FF5424F4C0141C611C6944F400241C6116
+:1030A0001C69E40CE4041C610D7806EB4513012A4D
+:1030B0001C6844F004441C601BD10A695A6100205A
+:1030C00070BDE40CE4041C611C6924F0FF5424F47A
+:1030D000C0141C618C68A54288BF4C611C6944F413
+:1030E00000241C614C691D69C4F312042C431C614B
+:1030F000DAE74B69002BE2D0D0F834280123AB404B
+:103100001343C0F83438DAE700F5306000EB4310C1
+:103110000369DB0CDB040361036923F0FF5323F431
+:10312000C01303618B6805B14B61046944F400244A
+:1031300004610469C3F312032343012A036104BF3A
+:10314000CB684361036843F004430360B7E710B5FD
+:103150009DF808404CB9033300F5805023F0030379
+:1031600000EB02320B44994201D1002010BD51F80E
+:10317000040B1060F7E7033222F003020A4400F563
+:103180008050914201D108467047036841F8043BE2
+:10319000F7E74B780A78012B4FF020030BD100F5AD
+:1031A000106013FB02000368002B0BDB036823F0A5
+:1031B0008043036006E000F5306013FB0200036803
+:1031C000002BF3DA036843F4001303600020704718
+:1031D0004B780A78012B0CBF00F5106000F53060C9
+:1031E000202313FB0200036823F400130360CB7851
+:1031F000023B012B9EBF036843F080530360002015
+:103200007047D0F8003823F4FE63C0F80038D0F8D7
+:103210000038090101F4FE611943C0F800180020CC
+:10322000704708B5D0F8043823F00203C0F804381A
+:103230000320FDF753FD002008BD08B5D0F8043881
+:1032400043F00203C0F804380320FDF747FD0020D7
+:1032500008BD4269806910407047D0F8183800F501
+:103260000060C0691840000C7047D0F8183800F5AD
+:103270000060C069184080B2704700F5306303EB0E
+:10328000411100F500608A6840691040704710B530
+:10329000D0F81048D0F8343800EB4110CB4000F59E
+:1032A0001060DB018068DBB22343184010BD406929
+:1032B00000F001007047D0F8003923F4FF6323F0D9
+:1032C0000703C0F8003900F500639A6802F00602AF
+:1032D000042A02BFD0F8002942F00302C0F80029F6
+:1032E0005A6842F480725A600020704710B500247A
+:1032F000C0F8104BD0F8104B44F40024C0F8104B29
+:10330000D0F8104B44F01804C0F8104BD0F8104B14
+:10331000012900F5306344F0C04408BF4FF080231A
+:10332000C0F8104B04BFC0F8142BC0F8003B0020BD
+:1033300010BD00000A4B013B01D103207047026918
+:10334000002AF8DA0369064A43F001030361013AEF
+:10335000F3D0036913F00103F9D11846704700BF99
+:10336000410D0300D0F818321BB10020C3F814023D
+:10337000704702207047D0F81C3210B5D0F81842C0
+:103380005BB194F80002FF2807D09B6894F80122F3
+:1033900021469847FF2384F80032002010BD00002A
+:1033A0004323038000487047B80000204323038074
+:1033B00000487047FC00002043230380004870470A
+:1033C0004C0100200A230380004870474001002080
+:1033D00038B50546D0F8184202F0B6FED5F81832D6
+:1033E000C4F80C024BB1D5F81C32D4F80402DB68E7
+:1033F00004F503719847002038BD022038BD000055
+:10340000F8B50F7817F0600306460C4623D0202B42
+:1034100019D1CA884B78C2B13906D0F818520BD5E9
+:10342000D0F81C1218468F682946B847E28829460A
+:10343000304600F09AFB06E085F8003285F801225C
+:10344000294600F0A7FB0020F8BDD0F81C028468D4
+:103450001846A047F7E74B780A2BF4D1012201491F
+:10346000E7E700BFBC02002010B58121044602F04E
+:1034700003FE0121204602F0FFFD8221204602F0DA
+:10348000FBFDD4F8183253B1D4F81C325B6898476E
+:10349000D4F8180202F006FF0023C4F81832002006
+:1034A00010BDF8B5037C04467BBB4FF400730222C9
+:1034B000812102F0D1FD4FF4007302220121204648
+:1034C00002F0CAFD082303228221204602F0C4FD37
+:1034D0004FF4077002F0DEFE0646C4F8180220B36F
+:1034E000D4F81C321B689847277C0025C6F8145274
+:1034F000C6F8185287B94FF40073D6F80422012198
+:10350000204602F013FE3846F8BD402302228121F6
+:1035100002F0A2FD4023D0E74023D6F80422012187
+:10352000204602F003FE2846F8BD0120F8BD19B17F
+:10353000C0F81C120020704702207047D0F81832E3
+:103540000020C3F80812C3F810227047D0F81832D0
+:103550000020C3F804127047D0F8182210B572B1D9
+:10356000D2F81442012364B9C2F814328121B2F8AE
+:103570001032D2F8082202F0CBFD204610BD022006
+:1035800010BD184610BDD0F8182210B562B1047CE9
+:1035900044B94FF40073D2F80422012102F0C6FDB1
+:1035A000002010BD4023F6E7022010BD08B580B111
+:1035B000D0F8143213B10023C0F8143209B1C0F8A6
+:1035C0001012012380F8FC31027002F003FD00208C
+:1035D00008BD022008BD19B1C0F8141200207047C0
+:1035E0000220704708B502F029FD002008BD08B58B
+:1035F000D0F814320BB9022008BD1B689847002888
+:10360000F9D108BD08B5D0F814325B68984700209E
+:1036100008BD38B5044600F50275284600F075FA75
+:10362000012394F80812C4F8F431B4F80E32C4F847
+:10363000F83101F01F03012B0ED007D3022B10D05D
+:1036400001F08001204602F025FD03E029462046D6
+:1036500000F0E6F8002038BD2946204600F0DAF9EF
+:10366000F8E72946204600F0EDF9F3E738B50446BF
+:10367000154611BBD0F8F431032B0FD1D0F80C3123
+:10368000D0F8102193420BD99B1A9A4228BF1A46B0
+:10369000C0F80C3192B2294600F08BFA002038BDF8
+:1036A000D0F814321B6923B190F8FC21032A00D111
+:1036B0009847204600F085FAF0E7D0F814329B696D
+:1036C000002BEBD090F8FC21032AE7D19847E5E7DF
+:1036D00070B5134604460E4600293DD1D0F8F421BA
+:1036E000022A0FD1C569026A954214D9AA1AC26189
+:1036F000194692B200F046FA33461A461946204659
+:1037000002F014FD94F80032012B02D1002384F85A
+:103710000032002070BD8369B3FBF2F502FB153562
+:1037200065B99A420AD8D0F8F821934206D22A46BF
+:1037300000F028FAC4F8F8512B46DEE7D4F814322A
+:10374000DB682BB194F8FC21032A01D1204698476D
+:10375000204600F041FAD5E7D0F814325B69002B1F
+:10376000D7D090F8FC21032AD3D19847D1E738B5B8
+:103770000022044611464025402302F06DFC2B46F2
+:10378000C4F8105100228021204602F065FC01237C
+:1037900084F8FC31D4F8183225622BB1D4F81432F5
+:1037A00021795B6820469847002038BD01740020CD
+:1037B000704790F8FC3180F8FD31042380F8FC312B
+:1037C0000020704790F8FD3180F8FC3100207047F0
+:1037D00008B590F8FC21032A04D1D0F81432DB6933
+:1037E00003B19847002008BD0020704700207047B3
+:1037F0000020704708B5012280F8FC21D0F814227F
+:10380000017952689047002008BD10B58021044618
+:1038100002F040FC20460021BDE8104002F03ABC16
+:1038200037B54B7804460D46092B79D8DFE813F0FD
+:10383000C900E5007800D90078006D000A00780022
+:10384000B9008D004B881A0A013A062A68D8DFE8C9
+:1038500002F0041C296767495200D0F810321B6837
+:10386000207C0DF106019847BDF80620002A67D09C
+:10387000EB88002B64D09A4228BF1A46ADF8062088
+:103880000146204600F071F95AE0027CD0F814326B
+:1038900032B99B6A0DF10600984702234370E3E7B3
+:1038A000DB6AF7E7DBB2052B3AD8DFE803F0030762
+:1038B0000B0F1317D0F810325B68D1E7D0F8103235
+:1038C0009B68CDE7D0F81032DB68C9E7D0F810323A
+:1038D0001B69C5E7D0F810325B69C1E7D0F8103238
+:1038E0009B69BDE7037CDBB9D0F814320DF106000B
+:1038F0005B6B9847B8E7037C93B9D0F814320DF1AD
+:1039000006001B6B98470723C8E78B8843B9CB8811
+:1039100033B990F8FC318D78032B05F07F0503D186
+:103920002046FFF772FF0BE080F8FE51294602F0B7
+:10393000E1FB204600F045F92DB1022384F8FC316B
+:10394000002003B030BD0123F8E78978304D01290C
+:103950002970E5D890F8FC31022B0CD0032BDFD175
+:10396000B1B9022380F8FC314160FFF74BFE2046DD
+:1039700000F027F9E4E70029F9D001210323416091
+:1039800080F8FC312046FFF732FE0228EFD1C7E76E
+:1039900041680129EBD0C9B2FFF734FE2978616094
+:1039A000F0E7CA88012ABBD190F8FC31022B03D082
+:1039B000032BB5D1011D64E70146002341F8083F00
+:1039C0005FE790F8FC31023B012BA9D80123C360CB
+:1039D000D0F804320BB10323C360022204F10C01BE
+:1039E0004FE74B88012BABD1C4F80432D4F8143222
+:1039F00029469B6820469847B9E790F8FC31023B7E
+:103A0000012B8DD84B88012B9AD10023ECE700BF06
+:103A1000BD02002038B590F8FC31032B04460D465A
+:103A20000DD10B79012B0AD8D0F814329B68984736
+:103A3000EB8813B9204600F0C4F8002038BDFFF72A
+:103A4000E4FEFAE770B50A788E8802F06002202A58
+:103A500004460D46F3B205D1D0F814329B6898475E
+:103A6000002070BD4A78012A1CD02AD3032AF7D13E
+:103A700090F8FC21022A40D0032A02D0FFF7C5FEAD
+:103A8000EEE74A8822B95E0602D0194602F002FB30
+:103A9000D4F8143229469B6820469847204600F007
+:103AA00090F8DDE790F8FC21022A26D0032AE5D120
+:103AB0004A88002AD4D15906F0D0194602F0F8FA03
+:103AC000E6E790F8FC21022A17D0032AD6D103F0AA
+:103AD0007F0516F0800F00EB0515194614BF14354D
+:103AE00005F5827502F0F2FA68B101232B6002221B
+:103AF0002946204600F039F8B2E75A06B0D01946F8
+:103B000002F0C8FAACE72860F1E70B7803704B7855
+:103B10004370CA788B7803EB022343804A790B7990
+:103B200003EB02238380CA798B7903EB0223C380E2
+:103B3000704730B588B105462B1A15F8014BDBB23A
+:103B4000002CF9D15B00023313800B7003234B7000
+:103B50000138022310F8015F05B930BD5A1CD2B2FA
+:103B6000CD540233DBB28C54F4E710B51346022275
+:103B7000C0F8F42183610A46C361002102F0C8FA4B
+:103B8000002010BD08B513460A46002102F0C0FA15
+:103B9000002008BD10B513460322C0F8F421C0F878
+:103BA00008310A46C0F80C31002102F0BFFA0020AB
+:103BB00010BD08B513460A46002102F0B7FA0020EE
+:103BC00008BD08B50423C0F8F43100231A4619468D
+:103BD00002F09EFA002008BD08B50523C0F8F431B4
+:103BE00000231A46194602F0A1FA002008BD08B5C4
+:103BF00001F098F8002008BD30B5B0F90840028AFD
+:103C00000B4690E8220085B0842C14BF03340024B6
+:103C100003A801900094284600F0B4FF01280CBFCF
+:103C20000398002005B030BD08B5002808BF01206A
+:103C300001F0C6F9002008BD1FB504AB00220292B6
+:103C400043F8042DEFF30582BAB102AA00920122D3
+:103C500001F05AFC012804D04FF0004005B05DF897
+:103C600004FB029B3BB1084B4FF080521A60BFF33C
+:103C70004F8FBFF36F8F0398F0E7012201F0DCFB59
+:103C80000128F8D0E8E700BF04ED00E030B585B0CA
+:103C90000023044615460293EFF3058010B18223FA
+:103CA000019307E0134602AA01F080FB01280BD024
+:103CB00045B9019504AB13E9070084E807002046E5
+:103CC00005B030BD4023EBE7029B002BB4BF862339
+:103CD0000823E5E72DE9F04146680746142000F087
+:103CE0001BFB033626F003060446A8B13868A06023
+:103CF0000025E660256100F00FFB80466060D0B1D2
+:103D00003868704300F008FB0646206058B12B4627
+:103D100029463A68934202D32046BDE8F0816268A2
+:103D2000D1540133F5E7606800F084FB204600F0D1
+:103D300081FB3446F0E7204600F07CFB4446EBE78D
+:103D400070B50546EFF305847CB1EFF311844FF0B5
+:103D5000500383F31188BFF36F8FBFF34F8FA968B0
+:103D600000228A4204D1002612E000F07BF9F6E737
+:103D70002B6968681344994298BF0023C618C05C39
+:103D800068B901223270EE6828682B6106FB0306D1
+:103D9000EFF305832BB184F31188304670BD0132F7
+:103DA000DFE700F081F9F8E788B181B10368994253
+:103DB0000DD3CB1AC168B3FBF1F201FB123131B95B
+:103DC00083689A4203D2436808469954704780201A
+:103DD00070477FB503688468019305464368029382
+:103DE00000260C20039600F097FAAB6820601C6850
+:103DF0006CB1256032460421286800F013FCAB68E2
+:103E000060601E68746824B9304600F013FB2046D9
+:103E100008E001A8FFF75EFFAB68B060186884682F
+:103E2000002CF2D004B070BD10B18068FFF788BFDD
+:103E3000704700001FB5019118B300240394EFF3FD
+:103E40000583B3B1234603AA01A9406800F0C2FC70
+:103E5000012802D0FF2004B010BD039B3BB10A4BE8
+:103E60004FF080521A60BFF34F8FBFF36F8F002067
+:103E7000F1E71A4601A9406800F0F6FB0128E9D1F4
+:103E8000F5E78020E7E700BF04ED00E0F0B585B07E
+:103E9000044617460846039101AD11B980230193EA
+:103EA00019E000260096EFF30583DBB16A4602A90C
+:103EB000406800F0B5FD012804BF20230193009B5A
+:103EC00018BF01963BB10E4B4FF080521A60BFF302
+:103ED0004F8FBFF36F8F95E8070084E807002046F7
+:103EE00005B0F0BD02A9406800F0D6FC012801D160
+:103EF0002023D4E7002F0CBF00234023CFE700BFCF
+:103F000004ED00E010B18068FFF74EBF80207047DD
+:103F100008B501F099F9012803D0BDE8084000F088
+:103F200009B908BD00F1080343604FF0FF32C360D8
+:103F300003610023826003607047002303617047C0
+:103F400043684B609A688A609A6851609960036818
+:103F500008610133036070470A68531C30B50AD109
+:103F600003695A684A6091608B6059600368086110
+:103F70000133036030BD00F108035C682568AA4284
+:103F8000EFD32346F9E74168826803698A60826853
+:103F900051605968884208BF5A600022026118685F
+:103FA00001381860704700000A4B1B68013308D0C5
+:103FB0004FF0500383F31188BFF36F8FBFF34F8F20
+:103FC000FEE74FF0500383F31188BFF36F8FBFF309
+:103FD0004F8FFEE79001002006480068006880F3DC
+:103FE000088862B661B6BFF34F8FBFF36F8F00DFF3
+:103FF00000BF000008ED00E0DFF80C00016841F4AC
+:10400000700101607047000088ED00E04FF08073A0
+:1040100040F8043C074B40F80C3C21F001016FF0E4
+:10402000020340F8081C40F8202C40F8243C443897
+:10403000704700BFA93F000800000000000000001A
+:10404000074B19680868B0E8F04F80F30988BFF3A0
+:104050006F8F4FF0000080F311887047AFF300803E
+:10406000DC3E00204FF0500383F31188BFF36F8FC5
+:10407000BFF34F8F0A4A13680133012B13600DD130
+:10408000084B1B6813F0FF0F08D04FF0500383F369
+:104090001188BFF36F8FBFF34F8FFEE7704700BFEC
+:1040A0009001002004ED00E0084A136843B94FF086
+:1040B000500383F31188BFF36F8FBFF34F8FFEE779
+:1040C000013B13600BB983F3118870479001002006
+:1040D000EFF30980BFF36F8F154B1A681EF0100FB6
+:1040E00008BF20ED108A20E9F04F10604DF8043D24
+:1040F0004FF0500080F31188BFF34F8FBFF36F8FE5
+:1041000000F0BCFF4FF0000080F3118808BC196874
+:104110000868B0E8F04F1EF0100F08BFB0EC108A2E
+:1041200080F30988BFF36F8F704700BFAFF3008043
+:10413000DC3E002008B54FF0500383F31188BFF335
+:104140006F8FBFF34F8F00F031FE18B1034B4FF06C
+:1041500080521A60002383F3118808BD04ED00E04B
+:10416000064B4FF47A721B68B3FBF2F3044A013B2F
+:104170001360044B07221A60704700BF98010020AB
+:1041800014E000E010E000E0314B324A13B519684A
+:10419000914208D14FF0500383F31188BFF36F8F22
+:1041A000BFF34F8FFEE71A682B4B9A4208D14FF0AE
+:1041B000500383F31188BFF36F8FBFF34F8FFEE778
+:1041C000264B1A78D2B20192FF221A701B78244A29
+:1041D000DBB28DF803309DF8033003F05003137009
+:1041E000204B07221A6000219DF80300000602F10F
+:1041F000FF3423D401B11A601A68120202F4E0629B
+:104200001A60019B154ADBB21370174B1A6842F40F
+:1042100070021A601A6842F070421A60FFF7A0FF3D
+:10422000124B00221A60FFF7E7FE114A136843F0B1
+:1042300040431360FFF7D0FEFFF7B6FE9DF8032062
+:104240005200D2B28DF8032001212246CCE700BFF4
+:1042500000ED00E071C20F4170C20F4100E400E0C8
+:10426000BE020020C002002020ED00E090010020EE
+:1042700034EF00E0EFF305830F2B0ED9104A9B5C5F
+:10428000104A12789A4208D94FF0500383F31188EC
+:10429000BFF36F8FBFF34F8FFEE70B4B0B4A1B68CB
+:1042A000126803F4E063934208D94FF0500383F39C
+:1042B0001188BFF36F8FBFF34F8FFEE7704700BFCA
+:1042C000F0E300E0BE0200200CED00E0C0020020A0
+:1042D00010B50F4B1A68824218D35C6819198842CE
+:1042E00001BF4168184609195960446801198A429A
+:1042F00007D1084909688A421FBF51681268091925
+:1043000041609842026018BF186010BD1346E1E793
+:10431000D43E0020C40200202DE9F041044600F004
+:104320003DFD3E493E4D0B680BBB3E4A56071FBF45
+:10433000D01D20F0070002F570531B1A14BF02466F
+:104340004FF470531344083B23F00703364E0B60C1
+:1043500000207060326058601860981A1360334B08
+:1043600050601860324B18604FF000432B602F688C
+:10437000274216D1002C41D004F1080358071CBF76
+:1043800023F00703083363B1294A1668B342904605
+:1043900007D8254A15686868834204D809688D42A1
+:1043A00007D100242AE02C68002CF7D02A462546A5
+:1043B000F1E7296814681160C21A102A0FD9E818A9
+:1043C000410708D04FF0500383F31188BFF36F8F7C
+:1043D000BFF34F8FFEE742606B60FFF779FF134931
+:1043E0006B680868F61A1F4386424FF00003C8F84E
+:1043F000006038BF0E6008346F602B6000F068FD0D
+:10440000630708D04FF0500383F31188BFF36F8F19
+:10441000BFF34F8FFEE72046BDE8F081C4020020C5
+:10442000C83E0020C8020020D43E0020D03E00201C
+:10443000CC3E002010B5044670B3184A50F8043C36
+:104440001268134208D14FF0500383F31188BFF371
+:104450006F8FBFF34F8FFEE750F8081C41B14FF04C
+:10446000500383F31188BFF36F8FBFF34F8FFEE7C5
+:1044700023EA020340F8043C00F090FC084A54F898
+:10448000043C1168A4F108000B441360FFF720FFFF
+:10449000BDE8104000F01CBD10BD00BFC83E0020AC
+:1044A000CC3E002070B51546026C866B044642B9BE
+:1044B00005689DB9406800F01DFF65600136A66380
+:1044C00070BD6DB9806801F0F5FEA368226C1344DD
+:1044D0006268A360934201D32368A3600020EDE7E4
+:1044E000C06801F0E7FE236CE26821685B421A4471
+:1044F0008A42E2603EBF62689B18E360022DEDD104
+:104500000EB1013EEAE73046D8E7034610B41A6C14
+:10451000084662B1D9685C681144A142D96024BFE1
+:104520001968D960D9685DF8044B01F0C3BE5DF825
+:10453000044B704770B50446FFF794FD94F845505E
+:1045400004F124066DB2002D14DCFF2384F84530FD
+:10455000FFF7AAFDFFF786FD94F8445004F110061A
+:104560006DB2002D12DCFF2384F84430BDE87040AA
+:10457000FFF79ABD636A002BE7D0304600F0D2FD0A
+:1045800008B100F05BFE013D6DB2DCE72369002B52
+:10459000E9D0304600F0C6FD08B100F04FFE013D05
+:1045A0006DB2DEE738B50D46044640B94FF0500312
+:1045B00083F31188BFF36F8FBFF34F8FFEE7FFF7D1
+:1045C00051FD206CE36B2268A2604343D1181B1A93
+:1045D00013446160E3600021FF23A16384F8443049
+:1045E00084F8453095B9236963B104F1100000F0F7
+:1045F00099FD38B10A4B4FF080521A60BFF34F8FCC
+:10460000BFF36F8FFFF750FD012038BD04F110009C
+:10461000FFF788FC04F12400FFF784FCF2E700BFF9
+:1046200004ED00E070B50D46064640B94FF050036A
+:1046300083F31188BFF36F8FBFF34F8FFEE74843BB
+:104640004830FFF769FE044638B145B92060E6639B
+:10465000256401212046FFF7A5FF204670BD00F12B
+:1046600048030360F3E700002DE9FF478946019204
+:104670001F46044640B94FF0500383F31188BFF33F
+:104680006F8FBFF34F8FFEE7002940F08880036CE7
+:10469000002B00F084804FF0500383F31188BFF3A8
+:1046A0006F8FBFF34F8FFEE7019E002E00F08280D8
+:1046B0004FF0500383F31188BFF36F8FBFF34F8F19
+:1046C000FEE7019D1DB9FFF7EFFC002058E016B989
+:1046D00002A800F069FDFFF7E7FC00F05FFBFFF7C1
+:1046E000C1FC94F84430FF2B08BF84F8448094F850
+:1046F0004530FF2B08BF84F84580FFF7D5FC01A9A2
+:1047000002A800F061FD002843D1FFF7ABFCA66BC7
+:10471000E56BFFF7C9FCAE4235D1019904F11000F9
+:1047200000F0E6FC2046FFF705FF00F0D1FB38B9AA
+:104730004FF08053CAF80030BFF34F8FBFF36F8F35
+:104740000126FFF78FFCA26BE36B9A4201D3022F85
+:10475000B7D13A4649462046FFF7A4FE636A1BB12B
+:1047600004F1240000F0DEFC38B1194B4FF0805208
+:104770001A60BFF34F8FBFF36F8FFFF795FC0120D7
+:1047800004B0BDE8F0872046FFF7D4FE00F0A0FBA0
+:10479000D6E72046FFF7CEFE00F09AFB95E7022F02
+:1047A00002D1E36B012B0AD100F04EFD00283FF44B
+:1047B0007BAF00264FF00008DFF814A0C1E74FF0F0
+:1047C000500383F31188BFF36F8FBFF34F8FFEE762
+:1047D00004ED00E02DE9F843884691461F46044663
+:1047E00040B94FF0500383F31188BFF36F8FBFF3CD
+:1047F0004F8FFEE709BB036CFBB14FF0500383F30F
+:104800001188BFF36F8FBFF34F8FFEE704F12400D1
+:1048100000F088FC002834D0B9F1000F31D001201D
+:10482000C9F8000086F31188BDE8F88301356DB240
+:1048300084F8455025E00020F4E7022F02D1E36B15
+:10484000012B20D1FFF716FDEFF311864FF0500337
+:1048500083F31188BFF36F8FBFF34F8FA26BE36BAE
+:104860009A4201D3022FE6D194F845503A466DB2F0
+:1048700041462046FFF716FE6B1CD7D1636A002B1A
+:10488000C4D10120CEE74FF0500383F31188BFF36A
+:104890006F8FBFF34F8FFEE72DE9FF4788460192E8
+:1048A0009946044640B94FF0500383F31188BFF393
+:1048B0006F8FBFF34F8FFEE7002940F0A580036C98
+:1048C000002B00F0A1804FF0500383F31188BFF359
+:1048D0006F8FBFF34F8FFEE7019E002E00F09A808E
+:1048E0004FF0500383F31188BFF36F8FBFF34F8FE7
+:1048F000FEE7636AE660002B6DD004F124005FE000
+:10490000019D1DB9FFF7D0FB284667E016B902A844
+:1049100000F04AFCFFF7C8FB00F040FAFFF7A2FBEB
+:1049200094F84430FF2B08BF84F8447094F8453065
+:10493000FF2B08BF84F84570FFF7B6FB01A902A85A
+:1049400000F042FC002852D1FFF78CFBA56BFFF76B
+:10495000ABFB002D45D1236833B9FFF783FB6068BB
+:1049600000F082FCFFF7A0FB019904F1240000F0A5
+:10497000BFFB2046FFF7DEFD00F0AAFA38B94FF082
+:104980008053CAF80030BFF34F8FBFF36F8F0126FB
+:10499000FFF768FBA56B002DB2D041462046E668C4
+:1049A000FFF7B3FDB9F1000FA3D12368013DA56363
+:1049B00013B900F0EFFC6060236963B104F11000EB
+:1049C00000F0B0FB38B1154B4FF080521A60BFF3C6
+:1049D0004F8FBFF36F8FFFF767FB012004B0BDE877
+:1049E000F0872046FFF7A6FD00F072FACFE72046D9
+:1049F000FFF7A0FD00F06CFAFFF734FBA56BFFF7A3
+:104A000053FB002DC3D17FE700F01EFC00283FF4CC
+:104A100063AF00260027DFF804A0B9E704ED00E04B
+:104A20002DE9F84389469046054640B94FF05003BA
+:104A300083F31188BFF36F8FBFF34F8FFEE771BB16
+:104A4000036C63B34FF0500383F31188BFF36F8F90
+:104A5000BFF34F8FFEE795F84460494676B228468B
+:104A6000FFF753FD013C731CAC6313D12B690BB9E9
+:104A700001200BE005F1100000F054FB0028F7D0F6
+:104A8000B8F1000FF4D00120C8F8000087F31188B6
+:104A9000BDE8F883013676B285F84460E8E7FFF7B1
+:104AA000E9FBEFF311874FF0500383F31188BFF355
+:104AB0006F8FBFF34F8FAC6B002CCCD12046E5E756
+:104AC000064A13681968064B19B94FF0FF321A608D
+:104AD00070471268D268D2685268F8E7E03E00205A
+:104AE000B83F0020F8B51B4B1B4E1D6804463068CC
+:104AF00004300F46FFF747FA334640B93168174E86
+:104B0000C96A32680120884022EA00023260621CD1
+:104B100007D137B1196812480431BDE8F840FFF7F2
+:104B20000FBA2C441A68A542546007D90D4A106880
+:104B30001968BDE8F8400431FFF70EBA0A4A106858
+:104B400019680431FFF708FA084B1A68944238BF15
+:104B50001C60F8BD00400020DC3E0020883F0020A3
+:104B6000D83F0020E43E0020E03E0020B83F002077
+:104B70004FF0500383F31188BFF36F8FBFF34F8F54
+:104B8000FEE700002DE9F84F4FEA820A80465046C2
+:104B90000F4699460B9EFFF7BFFB0546002800F025
+:104BA00096805420FFF7B8FB0446002800F08C8064
+:104BB000AAF1040A056355447B1E25F0070A00F19B
+:104BC00034020F37597802F8011B13F8011F09B19D
+:104BD000BB42F7D10A9D062D28BF06254FF0000BDA
+:104BE000271DE5626564384684F843B0C4F848B0D0
+:104BF000FFF7A3F9C5F1070504F11800FFF79DF9C8
+:104C0000C4F84CB02461A561646284F850B04A468F
+:104C100041465046FFF7FAF9206006B13460FFF7CD
+:104C200021FA324B324E1A68DFF8F08001321A60F6
+:104C30003568002D4ED134601B68012B1DD108EB67
+:104C400005001435FFF76EF98C2DF8D1DFF8D09000
+:104C5000284D4846FFF766F92846FFF763F92648CE
+:104C6000FFF760F92548FFF75DF92548FFF75AF986
+:104C7000244BC3F80090244B1D60244A2449136838
+:104C8000086801331360E26A012505FA02F3034361
+:104C900014200B6000FB02803946FFF751F9FFF743
+:104CA00003FA1C4B1B6863B13368DA6AE36A9A4201
+:104CB00007D2194B4FF080521A60BFF34F8FBFF3EA
+:104CC0006F8F2846BDE8F88F2846FFF7B3FB4FF0FB
+:104CD000FF35F6E70F4B1B68002BCED13368DA6A3D
+:104CE000E36A9A4298BF3460C7E700BF743F002070
+:104CF000DC3E0020A03F0020C03F0020EC3F002011
+:104D0000D83F0020E03E0020E43E0020843F002009
+:104D1000883F0020D43F002004ED00E0E83E002062
+:104D20008C3F002013B5174B0193002400942346B9
+:104D3000802215491548FFF725FF012814D14FF0AF
+:104D4000500383F31188BFF36F8FBFF34F8F104B66
+:104D50004FF0FF321A600F4B18600F4B1C6002B00F
+:104D6000BDE81040FFF710BA013008D14FF05003F2
+:104D700083F31188BFF36F8FBFF34F8FFEE702B04D
+:104D800010BD00BFB43F0020686C00080950000847
+:104D9000B83F0020D43F002000400020024A1368A2
+:104DA00001331360704700BF803F00202DE9F84FAA
+:104DB0003C4B1B68002B53D13B4B1C6801341C60DF
+:104DC000BCB93A4B1A68126842B14FF0500383F3F2
+:104DD0001188BFF36F8FBFF34F8FFEE7344A196816
+:104DE000106818601160334A136801331360FFF7CD
+:104DF00067FE314D314F2B689C424FF0000B3ED384
+:104E0000DFF8A880DFF8C490D8F80020126872BBE1
+:104E10004FF0FF322A6032E006F1040A5046FFF7F5
+:104E2000B2F8B16A19B106F11800FFF7ACF8F06AF0
+:104E3000D9F80030012202FA00F11943204BC9F8D9
+:104E400000104FF0140E51460EFB0030FFF778F8BB
+:104E50003868F16AC26A914228BF4FF0010BD3E76C
+:104E6000184A1368013313604FF0000B11E0D8F8B3
+:104E70000020D268D66871688C42CDD229603A6829
+:104E80000F4BD16A14224A439A58022A28BF4FF086
+:104E9000010B0D4A1268002A18BF4FF0010B58464B
+:104EA000BDE8F88F803F002000400020E03E002059
+:104EB000E43E0020BC3F0020B83F0020DC3E002044
+:104EC000E83E00207C3F002004400020883F002076
+:104ED0002DE9F843314C236843B94FF0500383F375
+:104EE0001188BFF36F8FBFF34F8FFEE7FFF7BAF85C
+:104EF0002368013B236024682CB10024FFF7D4F819
+:104F00002046BDE8F883264B1B68002BF5D0DFF860
+:104F1000A890244FDFF8A480D9F80030E3B90CB191
+:104F2000FFF7CEFD204D2C6844B1204E0127FFF73E
+:104F30003DFF00B13760013CF9D12C601B4B1B6871
+:104F4000002BDAD01A4B4FF080521A60BFF34F8F0C
+:104F5000BFF36F8F0124D1E7D9F80C30DC68261D30
+:104F600004F11800FFF70FF83046FFF70CF8E26A7B
+:104F70003968012505FA02F314200B4300FB028077
+:104F800031463B60FEF7DCFF0A4BE26A1B68DB6AD6
+:104F90009A4224BF054B1D60BEE700BF803F002042
+:104FA000743F0020883F00207C3F00200440002008
+:104FB00004ED00E0DC3E0020C03F0020E83E002081
+:104FC00008B540B90E4B4FF080521A60BFF34F8FB7
+:104FD000BFF36F8F08BD0B4B196841B14FF0500301
+:104FE00083F31188BFF36F8FBFF34F8FFEE7FFF797
+:104FF000D5FEFFF777FDFFF76BFF0028E2D008BD75
+:1050000004ED00E0803F002008B5174E174C2368E0
+:1050100063B9174B1B68012BF8D9164B4FF0805220
+:105020001A60BFF34F8FBFF36F8FEFE7FFF7B6FE46
+:105030003568FFF74DFF002DE9D0FFF713F8F3684F
+:10504000DD68281DFEF79FFF0B4A1368013B1360C4
+:105050002368013B2360FFF727F8286BFFF7EAF985
+:105060002846FFF7E7F9D2E7EC3F0020783F002021
+:10507000E83E002004ED00E0743F0020174B1A6862
+:10508000174B10B512B101221A6010BD1A60154BF2
+:105090001B68B3FA83F3DBB2C3F11F031422124976
+:1050A0005A4388188C5844B94FF0500383F3118841
+:1050B000BFF36F8FBFF34F8FFEE744680832646819
+:1050C00044600A44944204BF62684260142202FBB6
+:1050D00003135B68DA68054BD6E700BF803F00200A
+:1050E00004400020883F0020E83E0020DC3E0020F5
+:1050F00010B50C4640B94FF0500383F31188BFF34D
+:105100006F8FBFF34F8FFEE7054B19681831FEF71D
+:1051100023FF20460121BDE81040FFF7E3BC00BF9C
+:10512000DC3E002038B5C368DC6844B94FF050035A
+:1051300083F31188BFF36F8FBFF34F8FFEE704F146
+:1051400018052846FEF71FFF114B1B68E3B9251D04
+:105150002846FEF718FF0F49E26A086801239340CA
+:1051600003430B600C4B1420294600FB0230FEF772
+:10517000E7FE0A4BE26A1B68DB6A9A4283BF084B70
+:1051800001201860002038BD29460648EFE700BF1F
+:10519000803F0020883F0020E83E0020DC3E0020C9
+:1051A00004400020C03F002008B508B9FFF7E0FC2C
+:1051B000034B1B680360034B1B68436008BD00BFC3
+:1051C000BC3F00200040002038B50D46044640B9E1
+:1051D0004FF0500383F31188BFF36F8FBFF34F8FEE
+:1051E000FEE741B94FF0500383F31188BFF36F8F8F
+:1051F000BFF34F8FFEE7FEF735FF0E4B19682B68A4
+:105200005A1C10D00C4A206812689042626801D083
+:1052100091420DD2881A83420AD95B1A13442B603B
+:105220002046FFF7C1FF0024FEF73EFF204638BDB1
+:105230000124F9E700400020BC3F0020014B01227F
+:105240001A60704704400020054B1B6833B1054BC2
+:105250001B68002B0CBF0220002070470120704704
+:10526000D43F0020803F00202DE9F0410446002873
+:1052700038D01D4DC36A2A68D26A934232D28269FD
+:105280001A4E002AA1BF2A68D26AC2F107028261BF
+:105290001427426907FB03639A4220D100F10408F6
+:1052A0004046FEF770FE124A48B9E06A4743F35998
+:1052B0002BB913680121814023EA010313602B6895
+:1052C0001168D86AE062012383400B431360142302
+:1052D000414603FB0060BDE8F041FEF731BE2B689C
+:1052E000DB6AC362BDE8F081DC3E0020E83E0020BE
+:1052F000883F0020F8B5044608B90020F8BD224BCD
+:105300001B68984208D04FF0500383F31188BFF315
+:105310006F8FBFF34F8FFEE7836C43B94FF050039D
+:1053200083F31188BFF36F8FBFF34F8FFEE7C16A1E
+:10533000426C013B91428364DFD0002BDDD1051D1F
+:105340002846FEF720FE114E114A50B9E76A142193
+:10535000794373582BB913680120B84023EA00033E
+:105360001360636CE362C3F10701A161116801245A
+:1053700004FA03F008431060142000FB0360294680
+:10538000FEF7DEFD2046F8BDDC3E0020E83E0020B2
+:10539000883F0020044B1A681AB119688A6C0132E0
+:1053A0008A641868704700BFDC3E00202DE9F04198
+:1053B0001F4C1E4680460F461546FEF753FE2368D7
+:1053C00093F85030022B14D02368DA6C22EA0802DA
+:1053D000DA642368012183F8501056B13046FFF794
+:1053E00081FB144B4FF080521A60BFF34F8FBFF315
+:1053F0006F8FFEF759FEFEF735FE15B12368DB6CA3
+:105400002B60236893F85030012B1FBF2368D96CA1
+:10541000B943D96423684FF0000214BF0125002569
+:1054200083F85020FEF740FE2846BDE8F08100BF1B
+:10543000DC3E002004ED00E0F8B50F4616461D46A0
+:10544000044640B94FF0500383F31188BFF36F8FC8
+:10545000BFF34F8FFEE7FEF705FE0DB1E36C2B6047
+:1054600094F850500223721EEDB284F85030032A93
+:105470000AD8DFE802F002060410E16C0F43E7648B
+:1054800002E0E36C0133E364012D08D00125FEF74F
+:105490000BFE2846F8BD022DF1D10025F7E7261DA9
+:1054A0003046FEF770FD1449E26A086805FA02F317
+:1054B00003430B60114B142000FB02303146FEF712
+:1054C0003FFDA36A43B14FF0500383F31188BFF34C
+:1054D0006F8FBFF34F8FFEE7094BE26A1B68DB6AF1
+:1054E0009A42D3D9074B4FF080521A60BFF34F8FC7
+:1054F000BFF36F8FCBE700BF883F0020E83E00205E
+:10550000DC3E002004ED00E02DE9F843089F8946C9
+:1055100090461D46044640B94FF0500383F311886E
+:10552000BFF36F8FBFF34F8FFEE7FEF7A3FEEFF3DE
+:1055300011864FF0500383F31188BFF36F8FBFF3D1
+:105540004F8F0DB1E36C2B6094F85050022308F19B
+:10555000FF32EDB284F85030032A07D8DFE802F0BA
+:10556000020D1311E16C41EA0901E164012D0DD036
+:10557000012086F31188BDE8F883E36C0133E3640E
+:10558000F4E7022D33D0C4F84C90EFE7A36A43B19F
+:105590004FF0500383F31188BFF36F8FBFF34F8F2A
+:1055A000FEE7144B1B68DBB904F104084046FEF724
+:1055B000EAFC114AE36A11689D400D4315600F4AE9
+:1055C0001420414600FB0320FEF7BAFC0C4BE26AB4
+:1055D0001B68DB6A9A42CBD901202FB13860C8E73B
+:1055E00004F118010748EFE7074B1860C1E70020F6
+:1055F000BFE700BF803F0020883F0020E83E00203A
+:10560000DC3E0020C03F00200440002070B598B070
+:105610002D4B002101911A6C42F080521A641B6CD0
+:1056200003F080530193019B284B02911A6842F4C6
+:1056300080421A601B6803F480430293029B4FF47C
+:1056400080330D934FF480031393082314934FF486
+:10565000A8730224012615930CA807230C96129414
+:1056600016941793FCF748FC00B1FEE74FF4A053E3
+:105670000F2509900A9305214FF4805307A8079539
+:1056800008940B93FCF7E8FD00B1FEE7C02303A8E4
+:10569000059403960493FCF7ADFE044600B1FEE7C3
+:1056A000FCF774FE4FF47A73B0FBF3F0FBF77CFB6E
+:1056B0000420FBF78FFB224629464FF0FF30FBF713
+:1056C00033FB18B070BD00BF0038024000700040CE
+:1056D00080B594B00024FBF7D5FAFFF797FF814B14
+:1056E00001941A6B8048DFF8448242F010021A637A
+:1056F0001A6B02F010020192019A02941A6B42F0A6
+:1057000004021A631A6B02F004020292029A0394D2
+:105710001A6B42F080021A631A6B02F08002039245
+:10572000039A04941A6B42F001021A631A6B02F096
+:1057300001020492049A05941A6B42F002021A6361
+:105740001A6B02F002020592059A06941A6B42F057
+:1057500008021A631B6B03F0080306932246082114
+:10576000069BFBF7BBFC224601216048FBF7B6FC19
+:1057700022464FF210015E48FBF7B0FC01260825D7
+:105780000FA959480F95109611941294FBF72EFB10
+:105790000FA956480F960227109611941294FBF702
+:1057A00025FB0F950FA905255048109711941294C9
+:1057B0001395FBF71BFB0FA94E480F96CDF84080C1
+:1057C0001194FBF713FB04230FA94B480F9310947C
+:1057D0001194FBF70BFB4FF480630FA946480F931E
+:1057E0001097119412941395FBF700FB4FF21003DE
+:1057F0000FA93F480F93109611941294FBF7F6FAF5
+:1058000020230FA93A480F9310941194FBF7EEFA56
+:1058100035480F970FA9CDF840801194374EFBF70C
+:10582000E5FA3748374B846080E848004FF48043FE
+:10583000C460036144618461C4610462FBF754FC89
+:1058400000B1FEE7304B314A98604FF4007483E8B2
+:105850001400D8602E4A9861D861186218461C61FD
+:105860005A61FBF7B3FC00B1FEE72A4B2A49986066
+:105870004FF4827283E80600D86018615861D861DD
+:105880001862586298620A2218469C61DA62FCF734
+:10589000CEFE074600B1FEE7204C0FCC0AAE0FC685
+:1058A00054F8043B336039460AA8FEF7A5F91C4BAF
+:1058B00018600FCC0FAE0FC62368336039460FA8AF
+:1058C000FEF79AF9174B079518603946062307A883
+:1058D0000893CDF824D0FEF77CFA134B1860FEF73E
+:1058E00086F9FEE70038024000100240000802403E
+:1058F000000C02400000024000040240A0860100AB
+:105900001C40002000540040D0400020003C0040DB
+:10591000007701007840002000300140546B0008FF
+:10592000704000201840002074400020000011103A
+:1059300010B586B0FBF762F900B1FEE74FF0FF3219
+:1059400001216846FEF7A2F92F4C04A8FBF77AF96B
+:105950004FF0FF312068FEF767FA01460028F7D0C4
+:10596000BDF910300380BDF912304380BDF9143009
+:1059700083802068FEF75EFA0120FBF79DF8002087
+:10598000FBF79AF80220FBF797F80320FBF794F84F
+:10599000BDF91020BDF9123082EAE27083EAE371AA
+:1059A000A0EBE270A1EBE37188421EDD174BB3F967
+:1059B0000030934212DA0220FBF770F8FA20FEF76B
+:1059C00033F90120FBF778F80020FBF775F8022087
+:1059D000FBF772F80320FBF76FF8B6E70C4BB3F94F
+:1059E00000309342EADD0020E6E7094AB2F90020E0
+:1059F0009A4201DD0320DFE7044AB2F900209A420F
+:105A0000DCDA0120D8E700BF7440002094010020B8
+:105A10009601002008B5FFF78BFF0000F0B5264B7C
+:105A2000ABB00AAA03F1080614461868596815466F
+:105A300003C50833B3422A46F7D118681B792B7186
+:105A40002860732200210DF1350000F03EFC4FF07C
+:105A5000FF32012102A8FEF719F9184B184E1868F9
+:105A6000184F0121FEF7E8F82046FAF7B1FB01468E
+:105A7000204600F0FBF9316807A84FF0FF32FEF72F
+:105A800005FA089DB5F90420B5F900300192B5F981
+:105A90000220009280213A46204600F0DBFC294695
+:105AA0003068FEF72FFA2046FAF792FB01462046AF
+:105AB00000F0DCF9DFE700BF7C6B00081840002035
+:105AC000744000206D6C000808B500F05FF9FFF726
+:105AD000A5FF00000268034B9A4201D1FBF7ECB826
+:105AE000704700BF00100040FEE7000013B5224BD6
+:105AF000002400945A6C42F480425A645A6C02F4B6
+:105B000080420092009A01941A6C42F080521A640A
+:105B10001B6C03F0805301930320019BFBF7F2F809
+:105B2000224621466FF00B00FBF7FEF82246214685
+:105B30006FF00A00FBF7F8F8224621466FF00900E3
+:105B4000FBF7F2F8224621466FF00400FBF7ECF871
+:105B5000224621466FF00300FBF7E6F822460F21AC
+:105B60006FF00100FBF7E0F822460F214FF0FF3005
+:105B7000FBF7DAF802B010BD003802407FB50268CA
+:105B8000104B9A421BD14FF41073019312230293CE
+:105B9000012303930323049304230DEB03010A4819
+:105BA0000593FBF723F900230093084B1A6C42F48A
+:105BB00000121A641B6C03F400130093009B07B0DF
+:105BC0005DF804FB0054004000040240003802402D
+:105BD00070B50268144B9A4286B023D1002403F5B5
+:105BE000FE3300941A6C114842F400421A641B6C94
+:105BF000039403F400430093009B049410230226B3
+:105C0000062501A9019302960595FBF7EFF84FF4DD
+:105C1000A45301A9064801930296039404940595A0
+:105C2000FBF7E4F806B070BD003C00400000024005
+:105C3000000802407FB502680F4B9A4219D100213B
+:105C400003F5843300915A6C0C4842F480525A6434
+:105C50005B6C039103F480530093009BE02301935A
+:105C6000022302930323049301A905230593FBF761
+:105C7000BDF807B05DF804FB0030014000000240B1
+:105C80000268064B9A4208D1054A0648536C23F431
+:105C900080535364E021FBF789B97047003001401D
+:105CA000003802400000024030B5014689B00022B1
+:105CB0003620FBF739F83620FBF76AF80025154B3C
+:105CC00002951A6C144C42F010021A641B6C03F01B
+:105CD0001003029301A903A8029BFCF76DFBFCF7DC
+:105CE0005BFB0E4B236040F2E733E36040000C4B5C
+:105CF000B0FBF3F00138606020462561A560FCF739
+:105D0000FFFE20B92046FCF7E5FD09B030BD0120BB
+:105D1000FBE700BF0038024018410020001000409F
+:105D200040420F00FEF7F4B80148FCF7E2BD00BFA7
+:105D3000184100200148FBF70DBD00BF00440020C2
+:105D40000F49D1F8883043F47003C1F888300D4B07
+:105D50001A68002042F001021A6098601A6822F066
+:105D6000847222F480321A60074A5A601A6822F458
+:105D700080221A60D8604FF000638B60704700BFCC
+:105D800000ED00E0003802401030002410B5094C4E
+:105D9000094900222046FDF709FC08492046FDF785
+:105DA0001AFC20460649FDF7C2FB2046BDE810401C
+:105DB000FDF718BC54410020AC01002080000020F9
+:105DC0009C0100200020704710B5054C014620467C
+:105DD000FDF7BCFB2046FDF7D6FB002010BD00BF41
+:105DE0005441002010B5064C064900222046FDF71C
+:105DF000A5FB05492046FDF7A9FB002010BD00BF0B
+:105E000054410020B843002078430020202808B5E2
+:105E100003D0212816D0002008BD124B0A781A7032
+:105E20004A785A708A789A70CA78DA700A791A7140
+:105E30004A795A718A799A710B4B01211868FDF7DA
+:105E4000FBFEE8E7074B1A780A705A784A709A788E
+:105E50008A70DA78CA701A790A715A794A719B790C
+:105E60008B71D8E7F84300207040002010B5094C32
+:105E7000D4F81832D3F814320A4643B90146204602
+:105E8000FDF75CFB2046BDE81040FDF765BB012037
+:105E900010BD00BF5441002070B50368B3F1A04F9E
+:105EA00086B039D100244FF4007301A91B48019337
+:105EB00002940394FAF79AFF4FF480630193022649
+:105EC00003230A2501A91548049302960394059516
+:105ED000FAF78CFF4FF4C05301A9104801930296C2
+:105EE000039404940595FAF781FF0D4B5A6B42F029
+:105EF00080025A6300945A6C42F480425A645B6C8C
+:105F000003F480430093432022460521009BFAF7C7
+:105F10000BFF4320FAF73CFF06B070BD00000240C3
+:105F20000038024000F56F71D0F8EC03FDF771BB4B
+:105F30001C2303FB0103D0F8EC03D3F80422FDF784
+:105F400095BB1C2303FB0103D0F8EC035A6CFDF74F
+:105F5000BFBBD0F8EC03FDF73BBC10B5C1680446ED
+:105F6000003118BF0121D0F8EC03FDF71FFCD4F875
+:105F7000EC03BDE81040FDF7FABB000010B5044685
+:105F8000D0F8EC03FDF715FC2268D2F8003E43F090
+:105F90000103C2F8003E236A23B1034A136943F0A8
+:105FA0000603136110BD00BF00ED00E0D0F8EC0364
+:105FB000FDF708BCD0F8EC03FDF718BCD0F8EC03F3
+:105FC000FDF712BCD0F8EC03FDF712BCD0F8EC03DF
+:105FD000FDF710BC08B5027852BB164B0421C3F87C
+:105FE000EC03C0F820324FF0A04083E80300022108
+:105FF0001846D9601A615A619961DA611A625A6267
+:10600000DA621A63FBF724FB20B14FF4AD710A4842
+:10601000FFF76AFD80210748FBF769FF4022002156
+:106020000448FBF743FF802201210248FBF73EFFB3
+:10603000002008BD00440020B96C000808B5D0F865
+:106040002002FBF771FB03289ABF024B185C022069
+:1060500008BD00BFB56C000810B51C46D0F8200282
+:1060600013462246FBF734FE03289ABF014B185C07
+:10607000022010BDB56C000808B5D0F82002FBF76F
+:1060800055FE03289ABF024B185C022008BD00BFD2
+:10609000B56C000808B5D0F82002FBF7B6FE03285F
+:1060A0009ABF024B185C022008BD00BFB56C000807
+:1060B00008B5D0F82002FBF7D4FE03289ABF024BA4
+:1060C000185C022008BD00BFB56C000811F0800FFD
+:1060D000D0F820324FF01C021BBF01F07F0102FB01
+:1060E000013102FB013191F83A0008BF91F8FA0141
+:1060F0007047000008B5D0F82002FBF7D7FD032851
+:106100009ABF024B185C022008BD00BFB56C0008A6
+:1061100008B5D0F82002FBF758FE03289ABF024BBF
+:10612000185C022008BD00BFB56C000808B5D0F8A7
+:106130002002FBF71EFE03289ABF024B185C0220C8
+:1061400008BD00BFB56C000808B5D0F82002FBF709
+:1061500034FE08BD12230B8000487047C8010020A0
+:1061600004230B8000487047DC01002010B5044C6C
+:1061700004480A462146FDF7DCFC204610BD00BF5E
+:10618000F0470020E56C000810B5044C04480A46AE
+:106190002146FDF7CEFC204610BD00BFF047002091
+:1061A000F86C000810B5044C04480A462146FDF777
+:1061B000C0FC204610BD00BFF04700200E6D000857
+:1061C00010B5044C04480A462146FDF7B2FC2046AF
+:1061D00010BD00BFF0470020CC6C000810B5044C87
+:1061E00004480A462146FDF7A4FC204610BD00BF26
+:1061F000F0470020D76C0008DFF834D0002103E01E
+:106200000C4B5B58435004310B480C4B42189A42DC
+:10621000F6D30B4A02E0002342F8043B094B9A42B2
+:10622000F9D3FFF78DFD00F011F8FFF751FA704731
+:1062300000000220606D00080000002044020020E1
+:1062400044020020F4490020FEE7000070B50D4E26
+:106250000D4CA41BA4100025A54209D10B4E0C4CDB
+:1062600000F06CFCA41BA4100025A54205D170BD54
+:1062700056F8253098470135EEE756F8253098470F
+:106280000135F2E7586D0008586D0008586D000898
+:106290005C6D0008024B0146186800F06DB800BF45
+:1062A000E0010020024B0146186800F017B800BF5B
+:1062B000E001002010B5431E0A44914200D110BDF8
+:1062C00011F8014B03F8014FF7E7024403469342EC
+:1062D00000D1704703F8011BF9E7000038B5054607
+:1062E000002945D051F8043C0C1F002BB8BFE4181E
+:1062F00000F0E4F81F4A1368104633B96360146075
+:106300002846BDE8384000F0DAB8A3420CD921682D
+:106310006218934204BF1A685B68636004BF521836
+:1063200022600460ECE713465A680AB1A242FAD927
+:1063300019685818A0420BD12068014458188242AD
+:106340001960DDD1106852685A6001441960D7E7BE
+:1063500002D90C232B60D3E7206821188A4204BF9E
+:1063600011685268626004BF091821605C60C7E769
+:1063700038BD00BF0840002070B5CD1C25F00305D6
+:1063800008350C2D38BF0C25002D064601DBA9422F
+:1063900003D90C233360002070BD00F08FF8234A2E
+:1063A0001468214691B9224C23681BB9304600F08D
+:1063B00041F820602946304600F03CF8431C26D1C5
+:1063C0000C233360304600F07AF8E4E70B685B1B7F
+:1063D0001AD40B2B0FD90B60CD50CC18304600F0DF
+:1063E0006EF804F10B00231D20F00700C31A1BD028
+:1063F0005A42E25070BD8C420DBF63684B686360C7
+:10640000136018BF0C46E9E70C464968CAE7C41C8C
+:1064100024F00304A04205D0211A304600F00AF807
+:106420000130CDD02560D9E770BD00BF0840002005
+:106430000C40002038B5064C002305460846236072
+:1064400000F06EFB431C02D1236803B12B6038BD02
+:10645000F04900200CB430B5174B0C1E9DB01D68E0
+:1064600008DA8B232B604FF0FF301DB0BDE83040C1
+:1064700002B070474FF40273ADF8143014BF04F14A
+:10648000FF332346049307934FF6FF730290069061
+:10649000ADF81630209A21AB02A92846019300F0EE
+:1064A0006BF8431CBCBF8B232B60002CDDD0029B00
+:1064B00000221A70D9E700BFE00100207047704742
+:1064C0002DE9F0478E689E4282460C4691469846DA
+:1064D00035D88A8912F4906F31D0256809696F1A0E
+:1064E0006569022305EB450595FBF3F508F101030A
+:1064F0003B449D4238BF1D46530531D52946FFF721
+:106500003BFF064650B90C23CAF80030A38943F07C
+:106510004003A3814FF0FF30BDE8F0873A46216980
+:10652000FFF7C8FEA38923F4906343F08003A3819F
+:10653000266165613E44ED1B2660A56046464645E2
+:1065400028BF464632464946206800F09FFAA368B5
+:106550009B1BA36023681E4426600020BDE8F087D3
+:106560002A4600F0ADFA06460028E1D121695046DE
+:10657000FFF7B4FEC7E700002DE9F04F9DB080465D
+:1065800003938B891C060D4616460FD50B696BB914
+:106590004021FFF7F1FE2860286128B90C23C8F8D4
+:1065A00000304FF0FF30C5E040236B6100230993BA
+:1065B00020238DF8293030238DF82A304FF0010B3D
+:1065C00037463C4614F8013B002B3CD1B7EB060A9A
+:1065D0000BD05346324629464046FFF771FF013043
+:1065E00000F0A380099B534409933B78002B00F0F3
+:1065F0009C8000234FF0FF3204930793059206938B
+:106600008DF853301A93052221785048F9F7E8FDA8
+:10661000671C049BD8B9D90644BF20228DF85320AB
+:106620001A0744BF2B228DF8532022782A2A16D02D
+:10663000079A00210A20274601343B78303B092B7A
+:1066400051D9C9B111E0252BC0D02746B9E73F4A3F
+:10665000801A0BFA00F0184304903C46D3E7039AE3
+:10666000111D12680391002A01DB079204E05242D7
+:1066700043F00203079204933B782E2B0ED17B78D4
+:106680002A2B07F1010132D1039B1A1D1B680392CB
+:10669000002BB8BF4FF0FF33023705932C4C3978ED
+:1066A00003222046F9F79CFD38B14023001B03FA72
+:1066B00000F0049B034304930137397825488DF893
+:1066C000281006227E1CF9F78BFD002835D0224BBE
+:1066D000FBB9039B073323F0070308330393099B9C
+:1066E0004B4409936CE700FB02320121A3E700232E
+:1066F000059318460A240F4601313A78303A092AA0
+:1067000003D9002BCAD00590C8E704FB0020012361
+:10671000F1E703AB00932A46104B04A94046AFF3C0
+:106720000080B0F1FF3F8146D9D1AB895B063FF5D0
+:1067300038AF09981DB0BDE8F08F03AB00932A462F
+:10674000064B04A9404600F081F8EAE71B6D0008FB
+:10675000216D0008256D000800000000C1640008DC
+:106760002DE9F04791461F468A680B69DDF82080C5
+:106770009342B8BF1346C9F8003091F8432006464B
+:106780000C4612B10133C9F800302368990642BFA4
+:10679000D9F800300233C9F80030256815F0060535
+:1067A00007D104F1190AE368D9F800209B1A9D4229
+:1067B00029DB94F843302268003318BF0123920686
+:1067C0002ED404F1430239463046C047013021D06F
+:1067D0002368E568D9F8002003F00603042B08BFFE
+:1067E000AD1AA36822690CBF25EAE575002593421E
+:1067F000C4BF9B1AED184FF000091A344D451BD148
+:106800000020BDE8F0870123524639463046C04794
+:10681000013003D14FF0FF30BDE8F0870135C2E70A
+:10682000E1185A1C302081F84300224494F84510A6
+:1068300082F843100233C4E701232246394630462A
+:10684000C0470130E6D009F10109D7E72DE9F0434F
+:1068500017460A7E85B06E2A984606460C460C9B63
+:1068600001F1430E00F0BC801AD8632A2ED00AD85A
+:10687000002A00F0C880582A00F08A8004F14205FE
+:1068800084F842202AE0642A01D0692AF6D12168DE
+:106890001A6811F0800F23D0111D1960136827E0CA
+:1068A000732A00F0B48008D86F2A2AD0702AE5D164
+:1068B0000A6842F020020A6003E0752A21D0782A93
+:1068C000DCD1782284F845206E4964E01A6801F131
+:1068D0004205111D1960136884F842300123A3E0BA
+:1068E00011F0400F02F104011960D7D0B2F9003065
+:1068F000002B03DA2D225B4284F8432062490A22EE
+:1069000017E02068196810F0800F03D0081D186088
+:106910000B6806E010F0400F01F104001860F7D09A
+:106920000B8859496F2A14BF0A220822002084F8D4
+:1069300043006568A560002DC0F29C80206820F0AF
+:1069400004002060002B3FD1002D40F0958075465B
+:10695000082A0BD12368DA0708D5236962689A42AE
+:10696000DEBF302305F8013C05F1FF35AEEB050332
+:106970002361CDF800803B4603AA21463046FFF74D
+:10698000EFFE013055D14FF0FF3005B0BDE8F08388
+:1069900081F845203C492268186812F0800F00F108
+:1069A00004051D6001D0036802E05506FBD503888D
+:1069B000D00744BF42F0200222601BB9226822F0B7
+:1069C000200222601022B1E77546B3FBF2F002FB11
+:1069D0001033CB5C05F8013D03460028F5D1B7E73D
+:1069E00008681A68496910F0800F04D0101D1860FB
+:1069F0001368196007E010F0400F02F104001860FE
+:106A00001368F6D01980002323617546B1E71A6830
+:106A1000111D19601568626800212846F9F7E0FB2E
+:106A200008B1401B606063682361002384F8433031
+:106A30009FE723692A4639463046C0470130A2D035
+:106A400023689B0707D5002504F11909E368039A19
+:106A50009B1A9D4205DBE068039B9842B8BF18462D
+:106A600093E701234A4639463046C04701308AD071
+:106A70000135EBE7002BA7D10B7884F8423004F105
+:106A8000420565E73D6D00082C6D0008884210B591
+:106A900001EB020303D8421E99420CD110BD98426B
+:106AA000F9D28118D21AD34200D110BD13F8014D8A
+:106AB00001F8014DF7E711F8014B02F8014FEBE740
+:106AC000F8B5074614460E4621B91146BDE8F84010
+:106AD000FFF752BC22B9FFF701FC25462846F8BD56
+:106AE00000F014F884420FD921463846FFF744FCE1
+:106AF00005460028F2D031462246FFF7DBFB31463F
+:106B00003846FFF7EBFBE9E73546E7E751F8040CB9
+:106B10000028A0F10400BCBF0B58C018704700004B
+:106B2000044B1968024609B9034919601868024400
+:106B30001A60704710400020F4490020F8B500BFEB
+:106B4000F8BC08BC9E467047F8B500BFF8BC08BC4E
+:046B50009E467047A6
+:106B5400966C0008C95A00080000000000000000FC
+:106B6400000100008F6C0008155A000800000000A6
+:106B7400000000008000000048656C6C6F576F7265
+:106B84006C640A0D0000000000000000000000001A
+:106B940000000000000000000000000000000000F1
+:106BA40000000000000000000000000000000000E1
+:106BB40000000000000000000000000000000000D1
+:106BC40000000000000000000000000000000000C1
+:106BD40000000000000000000000000000000000B1
+:106BE40000000000000000000000000000000000A1
+:106BF40000000000000000008FC2F53D8FC2753D0B
+:106C04008FC2753D8FC2753D8FC2753D8FC2753D74
+:106C14008FC2753D8FC2753DEC51383E8FC2753DB4
+:106C24008FC2753D8FC2753D8FC2753D8FC2753D54
+:106C34008FC2753D8FC2753D8FC2753E8FC2753D43
+:106C44008FC2753D8FC2753D8FC2753D8FC2753D34
+:106C54008FC2753D8FC2753D48E13A3F0010002058
+:106C64000040008049444C45004759525F583A203F
+:106C740025642C204759525F593A2025642C20471B
+:106C840059525F5A3A2025640A0D005461736B30DF
+:106C940032005461736B30310000000000000000CA
+:106CA40000010203040607080900000000010203B2
+:106CB40004000201022E2E5C5372635C75736264DD
+:106CC4005F636F6E662E630043444320436F6E66BA
+:106CD40069670043444320496E7465726661636565
+:106CE4000053544D6963726F656C656374726F6EA3
+:106CF4006963730053544D3332205669727475615D
+:106D04006C20436F6D506F7274003030303030300F
+:106D140030303030314100232D302B2000686C4C52
+:106D240000656667454647003031323334353637BF
+:106D340038394142434445460030313233343536E4
+:0C6D440037383961626364656600000046
+:086D50006095FF7F01000000C7
+:046D5800B501000879
+:046D5C009101000899
+:106D60009305000891050008B305000827060008F0
+:106D7000D106000800000000000000000000000034
+:106D80000000000005060008D30500080000000010
+:106D9000530600087B07000879070008AD070008C4
+:106DA000CD070008EF080008000000000000000008
+:106DB00000000000000000000000000000000000D3
+:106DC00000000000F9070008000C0240000C02401F
+:106DD000000C0240000C0240001000000100000006
+:106DE000A3340008693400080134000800000000E2
+:106DF0007733000865330008D13300080000000035
+:106E00000000000000000000AD330008A1330008BE
+:106E1000B9330008C533000809024300020100C06D
+:106E200032090400000102020100052400100105DE
+:106E30002401000104240202052406000107058242
+:106E40000308001009040100020A00000007050100
+:106E500002400000070581024000000009024300D3
+:106E6000020100C0320904000001020201000524F1
+:106E7000001001052401000104240202052406007B
+:106E8000010705820308001009040100020A00003E
+:106E90000007050102000200070581020002000050
+:106EA0000A0600020000004001000000090743003C
+:106EB000020104C03209040000010202010005249D
+:106EC000001001052401000104240202052406002B
+:106ED00001070582030800FF09040100020A0000FF
+:106EE0000007050102400000070581024000000084
+:106EF000AAAAAAAAC80038FF0024F400E55D000889
+:106F0000C55D00080D5E0008C95D000855610008F8
+:106F1000616100086D61000889610008A5610008D1
+:106F2000C1610008DD610008120100020202004098
+:106F30008304405700020102030100000403090416
+:106F4000E40100200000000000000000000000003C
+:106F50000000000000000000000000000000000031
+:106F60000000000000000000000000000000000021
+:106F70000000000000000000000000000000000011
+:106F80000000000000000000000000000000000001
+:106F900000000000000000000000000000000000F1
+:046FA00000000000ED
+:04000005080061F995
+:00000001FF
diff --git a/F4-Gyro-RTOS/Debug/F4-Gyro-RTOS.list b/F4-Gyro-RTOS/Debug/F4-Gyro-RTOS.list
new file mode 100644
index 0000000..fcf220f
--- /dev/null
+++ b/F4-Gyro-RTOS/Debug/F4-Gyro-RTOS.list
@@ -0,0 +1,17931 @@
+
+F4-Gyro-RTOS.elf: file format elf32-littlearm
+
+Sections:
+Idx Name Size VMA LMA File off Algn
+ 0 .isr_vector 00000188 08000000 08000000 00010000 2**0
+ CONTENTS, ALLOC, LOAD, READONLY, DATA
+ 1 .text 000069c4 08000190 08000190 00010190 2**4
+ CONTENTS, ALLOC, LOAD, READONLY, CODE
+ 2 .rodata 000001fc 08006b54 08006b54 00016b54 2**2
+ CONTENTS, ALLOC, LOAD, READONLY, DATA
+ 3 .ARM 00000008 08006d50 08006d50 00016d50 2**2
+ CONTENTS, ALLOC, LOAD, READONLY, DATA
+ 4 .init_array 00000004 08006d58 08006d58 00016d58 2**2
+ CONTENTS, ALLOC, LOAD, DATA
+ 5 .fini_array 00000004 08006d5c 08006d5c 00016d5c 2**2
+ CONTENTS, ALLOC, LOAD, DATA
+ 6 .data 00000244 20000000 08006d60 00020000 2**2
+ CONTENTS, ALLOC, LOAD, DATA
+ 7 .ccmram 00000000 10000000 10000000 00020244 2**0
+ CONTENTS
+ 8 .bss 000047b0 20000244 20000244 00020244 2**2
+ ALLOC
+ 9 ._user_heap_stack 00000600 200049f4 200049f4 00020244 2**0
+ ALLOC
+ 10 .ARM.attributes 00000030 00000000 00000000 00020244 2**0
+ CONTENTS, READONLY
+ 11 .debug_info 000364eb 00000000 00000000 00020274 2**0
+ CONTENTS, READONLY, DEBUGGING
+ 12 .debug_abbrev 00006b3e 00000000 00000000 0005675f 2**0
+ CONTENTS, READONLY, DEBUGGING
+ 13 .debug_loc 000123cf 00000000 00000000 0005d29d 2**0
+ CONTENTS, READONLY, DEBUGGING
+ 14 .debug_aranges 000017f0 00000000 00000000 0006f670 2**3
+ CONTENTS, READONLY, DEBUGGING
+ 15 .debug_ranges 00001f38 00000000 00000000 00070e60 2**3
+ CONTENTS, READONLY, DEBUGGING
+ 16 .debug_line 0000e8f8 00000000 00000000 00072d98 2**0
+ CONTENTS, READONLY, DEBUGGING
+ 17 .debug_str 00008768 00000000 00000000 00081690 2**0
+ CONTENTS, READONLY, DEBUGGING
+ 18 .comment 0000007c 00000000 00000000 00089df8 2**0
+ CONTENTS, READONLY
+ 19 .debug_frame 00004a28 00000000 00000000 00089e74 2**2
+ CONTENTS, READONLY, DEBUGGING
+
+Disassembly of section .text:
+
+08000190 <__do_global_dtors_aux>:
+ 8000190: b510 push {r4, lr}
+ 8000192: 4c05 ldr r4, [pc, #20] ; (80001a8 <__do_global_dtors_aux+0x18>)
+ 8000194: 7823 ldrb r3, [r4, #0]
+ 8000196: b933 cbnz r3, 80001a6 <__do_global_dtors_aux+0x16>
+ 8000198: 4b04 ldr r3, [pc, #16] ; (80001ac <__do_global_dtors_aux+0x1c>)
+ 800019a: b113 cbz r3, 80001a2 <__do_global_dtors_aux+0x12>
+ 800019c: 4804 ldr r0, [pc, #16] ; (80001b0 <__do_global_dtors_aux+0x20>)
+ 800019e: f3af 8000 nop.w
+ 80001a2: 2301 movs r3, #1
+ 80001a4: 7023 strb r3, [r4, #0]
+ 80001a6: bd10 pop {r4, pc}
+ 80001a8: 20000244 .word 0x20000244
+ 80001ac: 00000000 .word 0x00000000
+ 80001b0: 08006b3c .word 0x08006b3c
+
+080001b4 :
+ 80001b4: b508 push {r3, lr}
+ 80001b6: 4b03 ldr r3, [pc, #12] ; (80001c4 )
+ 80001b8: b11b cbz r3, 80001c2
+ 80001ba: 4903 ldr r1, [pc, #12] ; (80001c8 )
+ 80001bc: 4803 ldr r0, [pc, #12] ; (80001cc )
+ 80001be: f3af 8000 nop.w
+ 80001c2: bd08 pop {r3, pc}
+ 80001c4: 00000000 .word 0x00000000
+ 80001c8: 20000248 .word 0x20000248
+ 80001cc: 08006b3c .word 0x08006b3c
+
+080001d0 :
+ 80001d0: 4603 mov r3, r0
+ 80001d2: f813 2b01 ldrb.w r2, [r3], #1
+ 80001d6: 2a00 cmp r2, #0
+ 80001d8: d1fb bne.n 80001d2
+ 80001da: 1a18 subs r0, r3, r0
+ 80001dc: 3801 subs r0, #1
+ 80001de: 4770 bx lr
+
+080001e0 :
+ 80001e0: f001 01ff and.w r1, r1, #255 ; 0xff
+ 80001e4: 2a10 cmp r2, #16
+ 80001e6: db2b blt.n 8000240
+ 80001e8: f010 0f07 tst.w r0, #7
+ 80001ec: d008 beq.n 8000200
+ 80001ee: f810 3b01 ldrb.w r3, [r0], #1
+ 80001f2: 3a01 subs r2, #1
+ 80001f4: 428b cmp r3, r1
+ 80001f6: d02d beq.n 8000254
+ 80001f8: f010 0f07 tst.w r0, #7
+ 80001fc: b342 cbz r2, 8000250
+ 80001fe: d1f6 bne.n 80001ee
+ 8000200: b4f0 push {r4, r5, r6, r7}
+ 8000202: ea41 2101 orr.w r1, r1, r1, lsl #8
+ 8000206: ea41 4101 orr.w r1, r1, r1, lsl #16
+ 800020a: f022 0407 bic.w r4, r2, #7
+ 800020e: f07f 0700 mvns.w r7, #0
+ 8000212: 2300 movs r3, #0
+ 8000214: e8f0 5602 ldrd r5, r6, [r0], #8
+ 8000218: 3c08 subs r4, #8
+ 800021a: ea85 0501 eor.w r5, r5, r1
+ 800021e: ea86 0601 eor.w r6, r6, r1
+ 8000222: fa85 f547 uadd8 r5, r5, r7
+ 8000226: faa3 f587 sel r5, r3, r7
+ 800022a: fa86 f647 uadd8 r6, r6, r7
+ 800022e: faa5 f687 sel r6, r5, r7
+ 8000232: b98e cbnz r6, 8000258
+ 8000234: d1ee bne.n 8000214
+ 8000236: bcf0 pop {r4, r5, r6, r7}
+ 8000238: f001 01ff and.w r1, r1, #255 ; 0xff
+ 800023c: f002 0207 and.w r2, r2, #7
+ 8000240: b132 cbz r2, 8000250
+ 8000242: f810 3b01 ldrb.w r3, [r0], #1
+ 8000246: 3a01 subs r2, #1
+ 8000248: ea83 0301 eor.w r3, r3, r1
+ 800024c: b113 cbz r3, 8000254
+ 800024e: d1f8 bne.n 8000242
+ 8000250: 2000 movs r0, #0
+ 8000252: 4770 bx lr
+ 8000254: 3801 subs r0, #1
+ 8000256: 4770 bx lr
+ 8000258: 2d00 cmp r5, #0
+ 800025a: bf06 itte eq
+ 800025c: 4635 moveq r5, r6
+ 800025e: 3803 subeq r0, #3
+ 8000260: 3807 subne r0, #7
+ 8000262: f015 0f01 tst.w r5, #1
+ 8000266: d107 bne.n 8000278
+ 8000268: 3001 adds r0, #1
+ 800026a: f415 7f80 tst.w r5, #256 ; 0x100
+ 800026e: bf02 ittt eq
+ 8000270: 3001 addeq r0, #1
+ 8000272: f415 3fc0 tsteq.w r5, #98304 ; 0x18000
+ 8000276: 3001 addeq r0, #1
+ 8000278: bcf0 pop {r4, r5, r6, r7}
+ 800027a: 3801 subs r0, #1
+ 800027c: 4770 bx lr
+ 800027e: bf00 nop
+
+08000280 <__aeabi_uldivmod>:
+ 8000280: b953 cbnz r3, 8000298 <__aeabi_uldivmod+0x18>
+ 8000282: b94a cbnz r2, 8000298 <__aeabi_uldivmod+0x18>
+ 8000284: 2900 cmp r1, #0
+ 8000286: bf08 it eq
+ 8000288: 2800 cmpeq r0, #0
+ 800028a: bf1c itt ne
+ 800028c: f04f 31ff movne.w r1, #4294967295
+ 8000290: f04f 30ff movne.w r0, #4294967295
+ 8000294: f000 b97a b.w 800058c <__aeabi_idiv0>
+ 8000298: f1ad 0c08 sub.w ip, sp, #8
+ 800029c: e96d ce04 strd ip, lr, [sp, #-16]!
+ 80002a0: f000 f806 bl 80002b0 <__udivmoddi4>
+ 80002a4: f8dd e004 ldr.w lr, [sp, #4]
+ 80002a8: e9dd 2302 ldrd r2, r3, [sp, #8]
+ 80002ac: b004 add sp, #16
+ 80002ae: 4770 bx lr
+
+080002b0 <__udivmoddi4>:
+ 80002b0: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+ 80002b4: 468c mov ip, r1
+ 80002b6: 460d mov r5, r1
+ 80002b8: 4604 mov r4, r0
+ 80002ba: 9e08 ldr r6, [sp, #32]
+ 80002bc: 2b00 cmp r3, #0
+ 80002be: d151 bne.n 8000364 <__udivmoddi4+0xb4>
+ 80002c0: 428a cmp r2, r1
+ 80002c2: 4617 mov r7, r2
+ 80002c4: d96d bls.n 80003a2 <__udivmoddi4+0xf2>
+ 80002c6: fab2 fe82 clz lr, r2
+ 80002ca: f1be 0f00 cmp.w lr, #0
+ 80002ce: d00b beq.n 80002e8 <__udivmoddi4+0x38>
+ 80002d0: f1ce 0c20 rsb ip, lr, #32
+ 80002d4: fa01 f50e lsl.w r5, r1, lr
+ 80002d8: fa20 fc0c lsr.w ip, r0, ip
+ 80002dc: fa02 f70e lsl.w r7, r2, lr
+ 80002e0: ea4c 0c05 orr.w ip, ip, r5
+ 80002e4: fa00 f40e lsl.w r4, r0, lr
+ 80002e8: ea4f 4a17 mov.w sl, r7, lsr #16
+ 80002ec: 0c25 lsrs r5, r4, #16
+ 80002ee: fbbc f8fa udiv r8, ip, sl
+ 80002f2: fa1f f987 uxth.w r9, r7
+ 80002f6: fb0a cc18 mls ip, sl, r8, ip
+ 80002fa: ea45 450c orr.w r5, r5, ip, lsl #16
+ 80002fe: fb08 f309 mul.w r3, r8, r9
+ 8000302: 42ab cmp r3, r5
+ 8000304: d90a bls.n 800031c <__udivmoddi4+0x6c>
+ 8000306: 19ed adds r5, r5, r7
+ 8000308: f108 32ff add.w r2, r8, #4294967295
+ 800030c: f080 8123 bcs.w 8000556 <__udivmoddi4+0x2a6>
+ 8000310: 42ab cmp r3, r5
+ 8000312: f240 8120 bls.w 8000556 <__udivmoddi4+0x2a6>
+ 8000316: f1a8 0802 sub.w r8, r8, #2
+ 800031a: 443d add r5, r7
+ 800031c: 1aed subs r5, r5, r3
+ 800031e: b2a4 uxth r4, r4
+ 8000320: fbb5 f0fa udiv r0, r5, sl
+ 8000324: fb0a 5510 mls r5, sl, r0, r5
+ 8000328: ea44 4405 orr.w r4, r4, r5, lsl #16
+ 800032c: fb00 f909 mul.w r9, r0, r9
+ 8000330: 45a1 cmp r9, r4
+ 8000332: d909 bls.n 8000348 <__udivmoddi4+0x98>
+ 8000334: 19e4 adds r4, r4, r7
+ 8000336: f100 33ff add.w r3, r0, #4294967295
+ 800033a: f080 810a bcs.w 8000552 <__udivmoddi4+0x2a2>
+ 800033e: 45a1 cmp r9, r4
+ 8000340: f240 8107 bls.w 8000552 <__udivmoddi4+0x2a2>
+ 8000344: 3802 subs r0, #2
+ 8000346: 443c add r4, r7
+ 8000348: eba4 0409 sub.w r4, r4, r9
+ 800034c: ea40 4008 orr.w r0, r0, r8, lsl #16
+ 8000350: 2100 movs r1, #0
+ 8000352: 2e00 cmp r6, #0
+ 8000354: d061 beq.n 800041a <__udivmoddi4+0x16a>
+ 8000356: fa24 f40e lsr.w r4, r4, lr
+ 800035a: 2300 movs r3, #0
+ 800035c: 6034 str r4, [r6, #0]
+ 800035e: 6073 str r3, [r6, #4]
+ 8000360: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
+ 8000364: 428b cmp r3, r1
+ 8000366: d907 bls.n 8000378 <__udivmoddi4+0xc8>
+ 8000368: 2e00 cmp r6, #0
+ 800036a: d054 beq.n 8000416 <__udivmoddi4+0x166>
+ 800036c: 2100 movs r1, #0
+ 800036e: e886 0021 stmia.w r6, {r0, r5}
+ 8000372: 4608 mov r0, r1
+ 8000374: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
+ 8000378: fab3 f183 clz r1, r3
+ 800037c: 2900 cmp r1, #0
+ 800037e: f040 808e bne.w 800049e <__udivmoddi4+0x1ee>
+ 8000382: 42ab cmp r3, r5
+ 8000384: d302 bcc.n 800038c <__udivmoddi4+0xdc>
+ 8000386: 4282 cmp r2, r0
+ 8000388: f200 80fa bhi.w 8000580 <__udivmoddi4+0x2d0>
+ 800038c: 1a84 subs r4, r0, r2
+ 800038e: eb65 0503 sbc.w r5, r5, r3
+ 8000392: 2001 movs r0, #1
+ 8000394: 46ac mov ip, r5
+ 8000396: 2e00 cmp r6, #0
+ 8000398: d03f beq.n 800041a <__udivmoddi4+0x16a>
+ 800039a: e886 1010 stmia.w r6, {r4, ip}
+ 800039e: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
+ 80003a2: b912 cbnz r2, 80003aa <__udivmoddi4+0xfa>
+ 80003a4: 2701 movs r7, #1
+ 80003a6: fbb7 f7f2 udiv r7, r7, r2
+ 80003aa: fab7 fe87 clz lr, r7
+ 80003ae: f1be 0f00 cmp.w lr, #0
+ 80003b2: d134 bne.n 800041e <__udivmoddi4+0x16e>
+ 80003b4: 1beb subs r3, r5, r7
+ 80003b6: 0c3a lsrs r2, r7, #16
+ 80003b8: fa1f fc87 uxth.w ip, r7
+ 80003bc: 2101 movs r1, #1
+ 80003be: fbb3 f8f2 udiv r8, r3, r2
+ 80003c2: 0c25 lsrs r5, r4, #16
+ 80003c4: fb02 3318 mls r3, r2, r8, r3
+ 80003c8: ea45 4503 orr.w r5, r5, r3, lsl #16
+ 80003cc: fb0c f308 mul.w r3, ip, r8
+ 80003d0: 42ab cmp r3, r5
+ 80003d2: d907 bls.n 80003e4 <__udivmoddi4+0x134>
+ 80003d4: 19ed adds r5, r5, r7
+ 80003d6: f108 30ff add.w r0, r8, #4294967295
+ 80003da: d202 bcs.n 80003e2 <__udivmoddi4+0x132>
+ 80003dc: 42ab cmp r3, r5
+ 80003de: f200 80d1 bhi.w 8000584 <__udivmoddi4+0x2d4>
+ 80003e2: 4680 mov r8, r0
+ 80003e4: 1aed subs r5, r5, r3
+ 80003e6: b2a3 uxth r3, r4
+ 80003e8: fbb5 f0f2 udiv r0, r5, r2
+ 80003ec: fb02 5510 mls r5, r2, r0, r5
+ 80003f0: ea43 4405 orr.w r4, r3, r5, lsl #16
+ 80003f4: fb0c fc00 mul.w ip, ip, r0
+ 80003f8: 45a4 cmp ip, r4
+ 80003fa: d907 bls.n 800040c <__udivmoddi4+0x15c>
+ 80003fc: 19e4 adds r4, r4, r7
+ 80003fe: f100 33ff add.w r3, r0, #4294967295
+ 8000402: d202 bcs.n 800040a <__udivmoddi4+0x15a>
+ 8000404: 45a4 cmp ip, r4
+ 8000406: f200 80b8 bhi.w 800057a <__udivmoddi4+0x2ca>
+ 800040a: 4618 mov r0, r3
+ 800040c: eba4 040c sub.w r4, r4, ip
+ 8000410: ea40 4008 orr.w r0, r0, r8, lsl #16
+ 8000414: e79d b.n 8000352 <__udivmoddi4+0xa2>
+ 8000416: 4631 mov r1, r6
+ 8000418: 4630 mov r0, r6
+ 800041a: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
+ 800041e: f1ce 0420 rsb r4, lr, #32
+ 8000422: fa05 f30e lsl.w r3, r5, lr
+ 8000426: fa07 f70e lsl.w r7, r7, lr
+ 800042a: fa20 f804 lsr.w r8, r0, r4
+ 800042e: 0c3a lsrs r2, r7, #16
+ 8000430: fa25 f404 lsr.w r4, r5, r4
+ 8000434: ea48 0803 orr.w r8, r8, r3
+ 8000438: fbb4 f1f2 udiv r1, r4, r2
+ 800043c: ea4f 4518 mov.w r5, r8, lsr #16
+ 8000440: fb02 4411 mls r4, r2, r1, r4
+ 8000444: fa1f fc87 uxth.w ip, r7
+ 8000448: ea45 4504 orr.w r5, r5, r4, lsl #16
+ 800044c: fb01 f30c mul.w r3, r1, ip
+ 8000450: 42ab cmp r3, r5
+ 8000452: fa00 f40e lsl.w r4, r0, lr
+ 8000456: d909 bls.n 800046c <__udivmoddi4+0x1bc>
+ 8000458: 19ed adds r5, r5, r7
+ 800045a: f101 30ff add.w r0, r1, #4294967295
+ 800045e: f080 808a bcs.w 8000576 <__udivmoddi4+0x2c6>
+ 8000462: 42ab cmp r3, r5
+ 8000464: f240 8087 bls.w 8000576 <__udivmoddi4+0x2c6>
+ 8000468: 3902 subs r1, #2
+ 800046a: 443d add r5, r7
+ 800046c: 1aeb subs r3, r5, r3
+ 800046e: fa1f f588 uxth.w r5, r8
+ 8000472: fbb3 f0f2 udiv r0, r3, r2
+ 8000476: fb02 3310 mls r3, r2, r0, r3
+ 800047a: ea45 4503 orr.w r5, r5, r3, lsl #16
+ 800047e: fb00 f30c mul.w r3, r0, ip
+ 8000482: 42ab cmp r3, r5
+ 8000484: d907 bls.n 8000496 <__udivmoddi4+0x1e6>
+ 8000486: 19ed adds r5, r5, r7
+ 8000488: f100 38ff add.w r8, r0, #4294967295
+ 800048c: d26f bcs.n 800056e <__udivmoddi4+0x2be>
+ 800048e: 42ab cmp r3, r5
+ 8000490: d96d bls.n 800056e <__udivmoddi4+0x2be>
+ 8000492: 3802 subs r0, #2
+ 8000494: 443d add r5, r7
+ 8000496: 1aeb subs r3, r5, r3
+ 8000498: ea40 4101 orr.w r1, r0, r1, lsl #16
+ 800049c: e78f b.n 80003be <__udivmoddi4+0x10e>
+ 800049e: f1c1 0720 rsb r7, r1, #32
+ 80004a2: fa22 f807 lsr.w r8, r2, r7
+ 80004a6: 408b lsls r3, r1
+ 80004a8: fa05 f401 lsl.w r4, r5, r1
+ 80004ac: ea48 0303 orr.w r3, r8, r3
+ 80004b0: fa20 fe07 lsr.w lr, r0, r7
+ 80004b4: ea4f 4c13 mov.w ip, r3, lsr #16
+ 80004b8: 40fd lsrs r5, r7
+ 80004ba: ea4e 0e04 orr.w lr, lr, r4
+ 80004be: fbb5 f9fc udiv r9, r5, ip
+ 80004c2: ea4f 441e mov.w r4, lr, lsr #16
+ 80004c6: fb0c 5519 mls r5, ip, r9, r5
+ 80004ca: fa1f f883 uxth.w r8, r3
+ 80004ce: ea44 4505 orr.w r5, r4, r5, lsl #16
+ 80004d2: fb09 f408 mul.w r4, r9, r8
+ 80004d6: 42ac cmp r4, r5
+ 80004d8: fa02 f201 lsl.w r2, r2, r1
+ 80004dc: fa00 fa01 lsl.w sl, r0, r1
+ 80004e0: d908 bls.n 80004f4 <__udivmoddi4+0x244>
+ 80004e2: 18ed adds r5, r5, r3
+ 80004e4: f109 30ff add.w r0, r9, #4294967295
+ 80004e8: d243 bcs.n 8000572 <__udivmoddi4+0x2c2>
+ 80004ea: 42ac cmp r4, r5
+ 80004ec: d941 bls.n 8000572 <__udivmoddi4+0x2c2>
+ 80004ee: f1a9 0902 sub.w r9, r9, #2
+ 80004f2: 441d add r5, r3
+ 80004f4: 1b2d subs r5, r5, r4
+ 80004f6: fa1f fe8e uxth.w lr, lr
+ 80004fa: fbb5 f0fc udiv r0, r5, ip
+ 80004fe: fb0c 5510 mls r5, ip, r0, r5
+ 8000502: ea4e 4405 orr.w r4, lr, r5, lsl #16
+ 8000506: fb00 f808 mul.w r8, r0, r8
+ 800050a: 45a0 cmp r8, r4
+ 800050c: d907 bls.n 800051e <__udivmoddi4+0x26e>
+ 800050e: 18e4 adds r4, r4, r3
+ 8000510: f100 35ff add.w r5, r0, #4294967295
+ 8000514: d229 bcs.n 800056a <__udivmoddi4+0x2ba>
+ 8000516: 45a0 cmp r8, r4
+ 8000518: d927 bls.n 800056a <__udivmoddi4+0x2ba>
+ 800051a: 3802 subs r0, #2
+ 800051c: 441c add r4, r3
+ 800051e: ea40 4009 orr.w r0, r0, r9, lsl #16
+ 8000522: eba4 0408 sub.w r4, r4, r8
+ 8000526: fba0 8902 umull r8, r9, r0, r2
+ 800052a: 454c cmp r4, r9
+ 800052c: 46c6 mov lr, r8
+ 800052e: 464d mov r5, r9
+ 8000530: d315 bcc.n 800055e <__udivmoddi4+0x2ae>
+ 8000532: d012 beq.n 800055a <__udivmoddi4+0x2aa>
+ 8000534: b156 cbz r6, 800054c <__udivmoddi4+0x29c>
+ 8000536: ebba 030e subs.w r3, sl, lr
+ 800053a: eb64 0405 sbc.w r4, r4, r5
+ 800053e: fa04 f707 lsl.w r7, r4, r7
+ 8000542: 40cb lsrs r3, r1
+ 8000544: 431f orrs r7, r3
+ 8000546: 40cc lsrs r4, r1
+ 8000548: 6037 str r7, [r6, #0]
+ 800054a: 6074 str r4, [r6, #4]
+ 800054c: 2100 movs r1, #0
+ 800054e: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
+ 8000552: 4618 mov r0, r3
+ 8000554: e6f8 b.n 8000348 <__udivmoddi4+0x98>
+ 8000556: 4690 mov r8, r2
+ 8000558: e6e0 b.n 800031c <__udivmoddi4+0x6c>
+ 800055a: 45c2 cmp sl, r8
+ 800055c: d2ea bcs.n 8000534 <__udivmoddi4+0x284>
+ 800055e: ebb8 0e02 subs.w lr, r8, r2
+ 8000562: eb69 0503 sbc.w r5, r9, r3
+ 8000566: 3801 subs r0, #1
+ 8000568: e7e4 b.n 8000534 <__udivmoddi4+0x284>
+ 800056a: 4628 mov r0, r5
+ 800056c: e7d7 b.n 800051e <__udivmoddi4+0x26e>
+ 800056e: 4640 mov r0, r8
+ 8000570: e791 b.n 8000496 <__udivmoddi4+0x1e6>
+ 8000572: 4681 mov r9, r0
+ 8000574: e7be b.n 80004f4 <__udivmoddi4+0x244>
+ 8000576: 4601 mov r1, r0
+ 8000578: e778 b.n 800046c <__udivmoddi4+0x1bc>
+ 800057a: 3802 subs r0, #2
+ 800057c: 443c add r4, r7
+ 800057e: e745 b.n 800040c <__udivmoddi4+0x15c>
+ 8000580: 4608 mov r0, r1
+ 8000582: e708 b.n 8000396 <__udivmoddi4+0xe6>
+ 8000584: f1a8 0802 sub.w r8, r8, #2
+ 8000588: 443d add r5, r7
+ 800058a: e72b b.n 80003e4 <__udivmoddi4+0x134>
+
+0800058c <__aeabi_idiv0>:
+ 800058c: 4770 bx lr
+ 800058e: bf00 nop
+
+08000590 :
+ * @brief LIS302DL De-Initialization.
+ * @param None
+ * @retval None.
+ */
+void LIS302DL_DeInit(void)
+{
+ 8000590: 4770 bx lr
+
+08000592 :
+{
+ 8000592: b513 push {r0, r1, r4, lr}
+ uint8_t ctrl = 0x00;
+ 8000594: 2300 movs r3, #0
+{
+ 8000596: 4604 mov r4, r0
+ uint8_t ctrl = 0x00;
+ 8000598: f88d 3007 strb.w r3, [sp, #7]
+ ACCELERO_IO_Init();
+ 800059c: f000 fa9a bl 8000ad4
+ ctrl = (uint8_t) InitStruct;
+ 80005a0: a802 add r0, sp, #8
+ ACCELERO_IO_Write(&ctrl, LIS302DL_CTRL_REG1_ADDR, 1);
+ 80005a2: 2201 movs r2, #1
+ ctrl = (uint8_t) InitStruct;
+ 80005a4: f800 4d01 strb.w r4, [r0, #-1]!
+ ACCELERO_IO_Write(&ctrl, LIS302DL_CTRL_REG1_ADDR, 1);
+ 80005a8: 2120 movs r1, #32
+ 80005aa: f000 fae1 bl 8000b70
+}
+ 80005ae: b002 add sp, #8
+ 80005b0: bd10 pop {r4, pc}
+
+080005b2 :
+ * @brief Read LIS302DL device ID.
+ * @param None
+ * @retval The Device ID (two bytes).
+ */
+uint8_t LIS302DL_ReadID(void)
+{
+ 80005b2: b513 push {r0, r1, r4, lr}
+ uint8_t tmp = 0;
+ 80005b4: ac02 add r4, sp, #8
+ 80005b6: 2300 movs r3, #0
+ 80005b8: f804 3d01 strb.w r3, [r4, #-1]!
+
+ /* Configure the low level interface */
+ ACCELERO_IO_Init();
+ 80005bc: f000 fa8a bl 8000ad4
+
+ /* Read WHO_AM_I register */
+ ACCELERO_IO_Read(&tmp, LIS302DL_WHO_AM_I_ADDR, 1);
+ 80005c0: 4620 mov r0, r4
+ 80005c2: 2201 movs r2, #1
+ 80005c4: 210f movs r1, #15
+ 80005c6: f000 faf5 bl 8000bb4
+
+ /* Return the ID */
+ return (uint16_t)tmp;
+}
+ 80005ca: f89d 0007 ldrb.w r0, [sp, #7]
+ 80005ce: b002 add sp, #8
+ 80005d0: bd10 pop {r4, pc}
+
+080005d2 :
+ * @brief Set LIS302DL Internal High Pass Filter configuration.
+ * @param FilterStruct: contains data for filter config
+ * @retval None
+ */
+void LIS302DL_FilterConfig(uint8_t FilterStruct)
+{
+ 80005d2: b537 push {r0, r1, r2, r4, r5, lr}
+ uint8_t ctrl = 0x00;
+ 80005d4: ac02 add r4, sp, #8
+ 80005d6: 2300 movs r3, #0
+ 80005d8: f804 3d01 strb.w r3, [r4, #-1]!
+{
+ 80005dc: 4605 mov r5, r0
+
+ /* Read CTRL_REG2 register */
+ ACCELERO_IO_Read(&ctrl, LIS302DL_CTRL_REG2_ADDR, 1);
+ 80005de: 2201 movs r2, #1
+ 80005e0: 4620 mov r0, r4
+ 80005e2: 2121 movs r1, #33 ; 0x21
+ 80005e4: f000 fae6 bl 8000bb4
+
+ /* Clear high pass filter cut-off level, interrupt and data selection bits */
+ ctrl &= (uint8_t)~(LIS302DL_FILTEREDDATASELECTION_OUTPUTREGISTER | \
+ 80005e8: f89d 3007 ldrb.w r3, [sp, #7]
+ 80005ec: f023 032f bic.w r3, r3, #47 ; 0x2f
+ LIS302DL_HIGHPASSFILTER_LEVEL_3 | \
+ LIS302DL_HIGHPASSFILTERINTERRUPT_1_2);
+
+ ctrl |= FilterStruct;
+ 80005f0: 431d orrs r5, r3
+
+ /* Write value to MEMS CTRL_REG2 register */
+ ACCELERO_IO_Write(&ctrl, LIS302DL_CTRL_REG2_ADDR, 1);
+ 80005f2: 2201 movs r2, #1
+ 80005f4: 2121 movs r1, #33 ; 0x21
+ 80005f6: 4620 mov r0, r4
+ ctrl |= FilterStruct;
+ 80005f8: f88d 5007 strb.w r5, [sp, #7]
+ ACCELERO_IO_Write(&ctrl, LIS302DL_CTRL_REG2_ADDR, 1);
+ 80005fc: f000 fab8 bl 8000b70
+}
+ 8000600: b003 add sp, #12
+ 8000602: bd30 pop {r4, r5, pc}
+
+08000604 :
+ * @brief Clear LIS302DL click Interrupt
+ * @param None
+ * @retval None
+ */
+void LIS302DL_Click_IntClear(void)
+{
+ 8000604: b51f push {r0, r1, r2, r3, r4, lr}
+ uint8_t buffer[6], clickreg = 0;
+ 8000606: a804 add r0, sp, #16
+ 8000608: 2300 movs r3, #0
+ 800060a: f800 3d09 strb.w r3, [r0, #-9]!
+
+ /* Read click and status registers if the available MEMS Accelerometer is LIS302DL */
+ ACCELERO_IO_Read(&clickreg, LIS302DL_CLICK_SRC_REG_ADDR, 1);
+ 800060e: 2201 movs r2, #1
+ 8000610: 2139 movs r1, #57 ; 0x39
+ 8000612: f000 facf bl 8000bb4
+ ACCELERO_IO_Read(buffer, LIS302DL_STATUS_REG_ADDR, 6);
+ 8000616: 2206 movs r2, #6
+ 8000618: 2127 movs r1, #39 ; 0x27
+ 800061a: a802 add r0, sp, #8
+ 800061c: f000 faca bl 8000bb4
+}
+ 8000620: b005 add sp, #20
+ 8000622: f85d fb04 ldr.w pc, [sp], #4
+
+08000626 :
+ * @brief Reboot memory content of LIS302DL.
+ * @param None
+ * @retval None
+ */
+void LIS302DL_RebootCmd(void)
+{
+ 8000626: b507 push {r0, r1, r2, lr}
+ uint8_t tmpreg;
+ /* Read CTRL_REG2 register */
+ ACCELERO_IO_Read(&tmpreg, LIS302DL_CTRL_REG2_ADDR, 1);
+ 8000628: 2201 movs r2, #1
+ 800062a: f10d 0007 add.w r0, sp, #7
+ 800062e: 2121 movs r1, #33 ; 0x21
+ 8000630: f000 fac0 bl 8000bb4
+
+ /* Enable or Disable the reboot memory */
+ tmpreg |= LIS302DL_BOOT_REBOOTMEMORY;
+ 8000634: f89d 3007 ldrb.w r3, [sp, #7]
+
+ /* Write value to MEMS CTRL_REG2 register */
+ ACCELERO_IO_Write(&tmpreg, LIS302DL_CTRL_REG2_ADDR, 1);
+ 8000638: 2201 movs r2, #1
+ tmpreg |= LIS302DL_BOOT_REBOOTMEMORY;
+ 800063a: f043 0340 orr.w r3, r3, #64 ; 0x40
+ ACCELERO_IO_Write(&tmpreg, LIS302DL_CTRL_REG2_ADDR, 1);
+ 800063e: 2121 movs r1, #33 ; 0x21
+ 8000640: f10d 0007 add.w r0, sp, #7
+ tmpreg |= LIS302DL_BOOT_REBOOTMEMORY;
+ 8000644: f88d 3007 strb.w r3, [sp, #7]
+ ACCELERO_IO_Write(&tmpreg, LIS302DL_CTRL_REG2_ADDR, 1);
+ 8000648: f000 fa92 bl 8000b70
+}
+ 800064c: b003 add sp, #12
+ 800064e: f85d fb04 ldr.w pc, [sp], #4
+
+08000652 :
+ * ACC[mg]=SENSITIVITY* (out_h*256+out_l)/16 (12 bit rappresentation)
+ * @param pfData: Data out pointer
+ * @retval None
+ */
+void LIS302DL_ReadACC(int16_t *pData)
+{
+ 8000652: b51f push {r0, r1, r2, r3, r4, lr}
+ 8000654: 4604 mov r4, r0
+ int8_t buffer[6];
+ int16_t pnRawData[3];
+ uint8_t sensitivity = LIS302DL_SENSITIVITY_2_3G;
+ uint8_t crtl, i = 0x00;
+
+ ACCELERO_IO_Read(&crtl, LIS302DL_CTRL_REG1_ADDR, 1);
+ 8000656: 2201 movs r2, #1
+ 8000658: f10d 0007 add.w r0, sp, #7
+ 800065c: 2120 movs r1, #32
+ 800065e: f000 faa9 bl 8000bb4
+ ACCELERO_IO_Read((uint8_t*)buffer, LIS302DL_OUT_X_ADDR, 6);
+ 8000662: a802 add r0, sp, #8
+ 8000664: 2206 movs r2, #6
+ 8000666: 2129 movs r1, #41 ; 0x29
+ 8000668: f000 faa4 bl 8000bb4
+ for(i=0; i<3; i++)
+ {
+ pnRawData[i] = buffer[2*i];
+ }
+
+ switch(crtl & LIS302DL_FULLSCALE_9_2)
+ 800066c: f89d 2007 ldrb.w r2, [sp, #7]
+ pnRawData[i] = buffer[2*i];
+ 8000670: f99d 0008 ldrsb.w r0, [sp, #8]
+ 8000674: f99d 100a ldrsb.w r1, [sp, #10]
+ 8000678: f99d 300c ldrsb.w r3, [sp, #12]
+ switch(crtl & LIS302DL_FULLSCALE_9_2)
+ 800067c: f002 0220 and.w r2, r2, #32
+ 8000680: 2a20 cmp r2, #32
+ }
+
+ /* Obtain the mg value for the three axis */
+ for(i=0; i<3; i++)
+ {
+ pData[i]=(pnRawData[i] * sensitivity);
+ 8000682: bf0c ite eq
+ 8000684: 2248 moveq r2, #72 ; 0x48
+ 8000686: 2212 movne r2, #18
+ 8000688: fb10 f002 smulbb r0, r0, r2
+ 800068c: fb11 f102 smulbb r1, r1, r2
+ 8000690: fb13 f302 smulbb r3, r3, r2
+ 8000694: 8020 strh r0, [r4, #0]
+ 8000696: 8061 strh r1, [r4, #2]
+ 8000698: 80a3 strh r3, [r4, #4]
+ }
+}
+ 800069a: b004 add sp, #16
+ 800069c: bd10 pop {r4, pc}
+
+0800069e :
+{
+ 800069e: b537 push {r0, r1, r2, r4, r5, lr}
+ uint8_t ctrl = 0x00;
+ 80006a0: ac02 add r4, sp, #8
+ 80006a2: 2300 movs r3, #0
+ 80006a4: f804 3d01 strb.w r3, [r4, #-1]!
+{
+ 80006a8: 4605 mov r5, r0
+ ACCELERO_IO_Read(&ctrl, LIS302DL_CLICK_CFG_REG_ADDR, 1);
+ 80006aa: 2201 movs r2, #1
+ 80006ac: 4620 mov r0, r4
+ 80006ae: 2138 movs r1, #56 ; 0x38
+ 80006b0: f000 fa80 bl 8000bb4
+ ctrl = (uint8_t)(LIS302DL_IntConfigStruct->Latch_Request| \
+ 80006b4: 786a ldrb r2, [r5, #1]
+ 80006b6: 782b ldrb r3, [r5, #0]
+ 80006b8: 4313 orrs r3, r2
+ 80006ba: 78aa ldrb r2, [r5, #2]
+ ACCELERO_IO_Write(&ctrl, LIS302DL_CLICK_CFG_REG_ADDR, 1);
+ 80006bc: 2138 movs r1, #56 ; 0x38
+ ctrl = (uint8_t)(LIS302DL_IntConfigStruct->Latch_Request| \
+ 80006be: 4313 orrs r3, r2
+ ACCELERO_IO_Write(&ctrl, LIS302DL_CLICK_CFG_REG_ADDR, 1);
+ 80006c0: 4620 mov r0, r4
+ 80006c2: 2201 movs r2, #1
+ ctrl = (uint8_t)(LIS302DL_IntConfigStruct->Latch_Request| \
+ 80006c4: f88d 3007 strb.w r3, [sp, #7]
+ ACCELERO_IO_Write(&ctrl, LIS302DL_CLICK_CFG_REG_ADDR, 1);
+ 80006c8: f000 fa52 bl 8000b70
+}
+ 80006cc: b003 add sp, #12
+ 80006ce: bd30 pop {r4, r5, pc}
+
+080006d0 :
+{
+ 80006d0: b573 push {r0, r1, r4, r5, r6, lr}
+ uint8_t ctrl = 0x00;
+ 80006d2: 2300 movs r3, #0
+ 80006d4: f88d 3003 strb.w r3, [sp, #3]
+ ACCELERO_IO_ITConfig();
+ 80006d8: f000 fa22 bl 8000b20
+ LIS302DL_InterruptStruct.Latch_Request = LIS302DL_INTERRUPTREQUEST_LATCHED;
+ 80006dc: 2340 movs r3, #64 ; 0x40
+ ctrl = 0x3F;
+ 80006de: ac02 add r4, sp, #8
+ LIS302DL_InterruptStruct.Latch_Request = LIS302DL_INTERRUPTREQUEST_LATCHED;
+ 80006e0: f88d 3004 strb.w r3, [sp, #4]
+ LIS302DL_InterruptStruct.SingleClick_Axes = LIS302DL_CLICKINTERRUPT_Z_ENABLE;
+ 80006e4: 2310 movs r3, #16
+ 80006e6: f88d 3005 strb.w r3, [sp, #5]
+ LIS302DL_InterruptConfig(&LIS302DL_InterruptStruct);
+ 80006ea: a801 add r0, sp, #4
+ LIS302DL_InterruptStruct.DoubleClick_Axes = LIS302DL_DOUBLECLICKINTERRUPT_Z_ENABLE;
+ 80006ec: 2320 movs r3, #32
+ ctrl = 0x3F;
+ 80006ee: 253f movs r5, #63 ; 0x3f
+ LIS302DL_InterruptStruct.DoubleClick_Axes = LIS302DL_DOUBLECLICKINTERRUPT_Z_ENABLE;
+ 80006f0: f88d 3006 strb.w r3, [sp, #6]
+ LIS302DL_InterruptConfig(&LIS302DL_InterruptStruct);
+ 80006f4: f7ff ffd3 bl 800069e
+ ctrl = 0x3F;
+ 80006f8: f804 5d05 strb.w r5, [r4, #-5]!
+ ACCELERO_IO_Write(&ctrl, LIS302DL_CTRL_REG3_ADDR, 1);
+ 80006fc: 2201 movs r2, #1
+ 80006fe: 4620 mov r0, r4
+ 8000700: 2122 movs r1, #34 ; 0x22
+ 8000702: f000 fa35 bl 8000b70
+ ctrl = 0x50;
+ 8000706: 2350 movs r3, #80 ; 0x50
+ ACCELERO_IO_Write(&ctrl, LIS302DL_CLICK_CFG_REG_ADDR, 1);
+ 8000708: 4620 mov r0, r4
+ 800070a: 2201 movs r2, #1
+ 800070c: 2138 movs r1, #56 ; 0x38
+ ctrl = 0x50;
+ 800070e: f88d 3003 strb.w r3, [sp, #3]
+ ACCELERO_IO_Write(&ctrl, LIS302DL_CLICK_CFG_REG_ADDR, 1);
+ 8000712: f000 fa2d bl 8000b70
+ ctrl = 0xAA;
+ 8000716: 23aa movs r3, #170 ; 0xaa
+ ACCELERO_IO_Write(&ctrl, LIS302DL_CLICK_THSY_X_REG_ADDR, 1);
+ 8000718: 4620 mov r0, r4
+ 800071a: 2201 movs r2, #1
+ 800071c: 213b movs r1, #59 ; 0x3b
+ ctrl = 0xAA;
+ 800071e: f88d 3003 strb.w r3, [sp, #3]
+ ACCELERO_IO_Write(&ctrl, LIS302DL_CLICK_THSY_X_REG_ADDR, 1);
+ 8000722: f000 fa25 bl 8000b70
+ ctrl = 0x0A;
+ 8000726: 230a movs r3, #10
+ ACCELERO_IO_Write(&ctrl, LIS302DL_CLICK_THSZ_REG_ADDR, 1);
+ 8000728: 4620 mov r0, r4
+ 800072a: 2201 movs r2, #1
+ 800072c: 213c movs r1, #60 ; 0x3c
+ ctrl = 0x0A;
+ 800072e: f88d 3003 strb.w r3, [sp, #3]
+ ACCELERO_IO_Write(&ctrl, LIS302DL_CLICK_THSZ_REG_ADDR, 1);
+ 8000732: f000 fa1d bl 8000b70
+ ctrl = 0x4C;
+ 8000736: 234c movs r3, #76 ; 0x4c
+ ACCELERO_IO_Write(&ctrl, LIS302DL_FF_WU_CFG1_REG_ADDR, 1);
+ 8000738: 4620 mov r0, r4
+ 800073a: 2201 movs r2, #1
+ 800073c: 2130 movs r1, #48 ; 0x30
+ ctrl = 0x4C;
+ 800073e: f88d 3003 strb.w r3, [sp, #3]
+ ACCELERO_IO_Write(&ctrl, LIS302DL_FF_WU_CFG1_REG_ADDR, 1);
+ 8000742: f000 fa15 bl 8000b70
+ ctrl = 0x03;
+ 8000746: 2303 movs r3, #3
+ ACCELERO_IO_Write(&ctrl, LIS302DL_CLICK_TIMELIMIT_REG_ADDR, 1);
+ 8000748: 4620 mov r0, r4
+ 800074a: 2201 movs r2, #1
+ 800074c: 213d movs r1, #61 ; 0x3d
+ ctrl = 0x03;
+ 800074e: f88d 3003 strb.w r3, [sp, #3]
+ ctrl = 0x7F;
+ 8000752: 267f movs r6, #127 ; 0x7f
+ ACCELERO_IO_Write(&ctrl, LIS302DL_CLICK_TIMELIMIT_REG_ADDR, 1);
+ 8000754: f000 fa0c bl 8000b70
+ ACCELERO_IO_Write(&ctrl, LIS302DL_CLICK_LATENCY_REG_ADDR, 1);
+ 8000758: 4620 mov r0, r4
+ 800075a: 2201 movs r2, #1
+ 800075c: 213e movs r1, #62 ; 0x3e
+ ctrl = 0x7F;
+ 800075e: f88d 6003 strb.w r6, [sp, #3]
+ ACCELERO_IO_Write(&ctrl, LIS302DL_CLICK_LATENCY_REG_ADDR, 1);
+ 8000762: f000 fa05 bl 8000b70
+ ACCELERO_IO_Write(&ctrl, LIS302DL_CLICK_WINDOW_REG_ADDR, 1);
+ 8000766: 2201 movs r2, #1
+ 8000768: 4629 mov r1, r5
+ 800076a: 4620 mov r0, r4
+ ctrl = 0x7F;
+ 800076c: f88d 6003 strb.w r6, [sp, #3]
+ ACCELERO_IO_Write(&ctrl, LIS302DL_CLICK_WINDOW_REG_ADDR, 1);
+ 8000770: f000 f9fe bl 8000b70
+}
+ 8000774: b002 add sp, #8
+ 8000776: bd70 pop {r4, r5, r6, pc}
+
+08000778 :
+ * @brief LIS3DSH De-Initialization.
+ * @param None
+ * @retval None.
+ */
+void LIS3DSH_DeInit(void)
+{
+ 8000778: 4770 bx lr
+
+0800077a :
+{
+ 800077a: b537 push {r0, r1, r2, r4, r5, lr}
+ ctrl = (uint8_t) (InitStruct);
+ 800077c: ac02 add r4, sp, #8
+ uint8_t ctrl = 0x00;
+ 800077e: 2300 movs r3, #0
+{
+ 8000780: 4605 mov r5, r0
+ uint8_t ctrl = 0x00;
+ 8000782: f88d 3007 strb.w r3, [sp, #7]
+ ACCELERO_IO_Init();
+ 8000786: f000 f9a5 bl 8000ad4
+ ctrl = (uint8_t) (InitStruct);
+ 800078a: f804 5d01 strb.w r5, [r4, #-1]!
+ ACCELERO_IO_Write(&ctrl, LIS3DSH_CTRL_REG4_ADDR, 1);
+ 800078e: 2201 movs r2, #1
+ 8000790: 4620 mov r0, r4
+ 8000792: 2120 movs r1, #32
+ 8000794: f000 f9ec bl 8000b70
+ ctrl = (uint8_t) (InitStruct >> 8);
+ 8000798: 0a2d lsrs r5, r5, #8
+ ACCELERO_IO_Write(&ctrl, LIS3DSH_CTRL_REG5_ADDR, 1);
+ 800079a: 2201 movs r2, #1
+ 800079c: 2124 movs r1, #36 ; 0x24
+ 800079e: 4620 mov r0, r4
+ ctrl = (uint8_t) (InitStruct >> 8);
+ 80007a0: f88d 5007 strb.w r5, [sp, #7]
+ ACCELERO_IO_Write(&ctrl, LIS3DSH_CTRL_REG5_ADDR, 1);
+ 80007a4: f000 f9e4 bl 8000b70
+}
+ 80007a8: b003 add sp, #12
+ 80007aa: bd30 pop {r4, r5, pc}
+
+080007ac :
+ * @brief Read LIS3DSH device ID.
+ * @param None
+ * @retval The Device ID (two bytes).
+ */
+uint8_t LIS3DSH_ReadID(void)
+{
+ 80007ac: b513 push {r0, r1, r4, lr}
+ uint8_t tmp = 0;
+ 80007ae: ac02 add r4, sp, #8
+ 80007b0: 2300 movs r3, #0
+ 80007b2: f804 3d01 strb.w r3, [r4, #-1]!
+
+ /* Configure the low level interface */
+ ACCELERO_IO_Init();
+ 80007b6: f000 f98d bl 8000ad4
+
+ /* Read WHO_AM_I register */
+ ACCELERO_IO_Read(&tmp, LIS3DSH_WHO_AM_I_ADDR, 1);
+ 80007ba: 4620 mov r0, r4
+ 80007bc: 2201 movs r2, #1
+ 80007be: 210f movs r1, #15
+ 80007c0: f000 f9f8 bl 8000bb4
+
+ /* Return the ID */
+ return (uint16_t)tmp;
+}
+ 80007c4: f89d 0007 ldrb.w r0, [sp, #7]
+ 80007c8: b002 add sp, #8
+ 80007ca: bd10 pop {r4, pc}
+
+080007cc :
+ * @brief Reboot memory content of LIS3DSH.
+ * @param None
+ * @retval None
+ */
+void LIS3DSH_RebootCmd(void)
+{
+ 80007cc: b507 push {r0, r1, r2, lr}
+ uint8_t tmpreg;
+ /* Read CTRL_REG6 register */
+ ACCELERO_IO_Read(&tmpreg, LIS3DSH_CTRL_REG6_ADDR, 1);
+ 80007ce: 2201 movs r2, #1
+ 80007d0: f10d 0007 add.w r0, sp, #7
+ 80007d4: 2125 movs r1, #37 ; 0x25
+ 80007d6: f000 f9ed bl 8000bb4
+
+ /* Enable or Disable the reboot memory */
+ tmpreg |= LIS3DSH_BOOT_FORCED;
+ 80007da: f89d 3007 ldrb.w r3, [sp, #7]
+
+ /* Write value to MEMS CTRL_REG6 register */
+ ACCELERO_IO_Write(&tmpreg, LIS3DSH_CTRL_REG6_ADDR, 1);
+ 80007de: 2201 movs r2, #1
+ tmpreg |= LIS3DSH_BOOT_FORCED;
+ 80007e0: f063 037f orn r3, r3, #127 ; 0x7f
+ ACCELERO_IO_Write(&tmpreg, LIS3DSH_CTRL_REG6_ADDR, 1);
+ 80007e4: 2125 movs r1, #37 ; 0x25
+ 80007e6: f10d 0007 add.w r0, sp, #7
+ tmpreg |= LIS3DSH_BOOT_FORCED;
+ 80007ea: f88d 3007 strb.w r3, [sp, #7]
+ ACCELERO_IO_Write(&tmpreg, LIS3DSH_CTRL_REG6_ADDR, 1);
+ 80007ee: f000 f9bf bl 8000b70
+}
+ 80007f2: b003 add sp, #12
+ 80007f4: f85d fb04 ldr.w pc, [sp], #4
+
+080007f8 :
+ * ACC[mg]=SENSITIVITY* (out_h*256+out_l)/16 (12 bit representation).
+ * @param pointer on floating buffer.
+ * @retval None
+ */
+void LIS3DSH_ReadACC(int16_t *pData)
+{
+ 80007f8: b530 push {r4, r5, lr}
+ 80007fa: b085 sub sp, #20
+ int8_t buffer[6];
+ uint8_t crtl, i = 0x00;
+ float sensitivity = LIS3DSH_SENSITIVITY_0_06G;
+ float valueinfloat = 0;
+
+ ACCELERO_IO_Read(&crtl, LIS3DSH_CTRL_REG5_ADDR, 1);
+ 80007fc: 2201 movs r2, #1
+ 80007fe: 2124 movs r1, #36 ; 0x24
+{
+ 8000800: 4605 mov r5, r0
+ ACCELERO_IO_Read((uint8_t*)&buffer[0], LIS3DSH_OUT_X_L_ADDR, 1);
+ 8000802: ac02 add r4, sp, #8
+ ACCELERO_IO_Read(&crtl, LIS3DSH_CTRL_REG5_ADDR, 1);
+ 8000804: f10d 0007 add.w r0, sp, #7
+ 8000808: f000 f9d4 bl 8000bb4
+ ACCELERO_IO_Read((uint8_t*)&buffer[0], LIS3DSH_OUT_X_L_ADDR, 1);
+ 800080c: 2201 movs r2, #1
+ 800080e: 2128 movs r1, #40 ; 0x28
+ 8000810: 4620 mov r0, r4
+ 8000812: f000 f9cf bl 8000bb4
+ ACCELERO_IO_Read((uint8_t*)&buffer[1], LIS3DSH_OUT_X_H_ADDR, 1);
+ 8000816: 2201 movs r2, #1
+ 8000818: 2129 movs r1, #41 ; 0x29
+ 800081a: f10d 0009 add.w r0, sp, #9
+ 800081e: f000 f9c9 bl 8000bb4
+ ACCELERO_IO_Read((uint8_t*)&buffer[2], LIS3DSH_OUT_Y_L_ADDR, 1);
+ 8000822: 2201 movs r2, #1
+ 8000824: 212a movs r1, #42 ; 0x2a
+ 8000826: f10d 000a add.w r0, sp, #10
+ 800082a: f000 f9c3 bl 8000bb4
+ ACCELERO_IO_Read((uint8_t*)&buffer[3], LIS3DSH_OUT_Y_H_ADDR, 1);
+ 800082e: 2201 movs r2, #1
+ 8000830: 212b movs r1, #43 ; 0x2b
+ 8000832: f10d 000b add.w r0, sp, #11
+ 8000836: f000 f9bd bl 8000bb4
+ ACCELERO_IO_Read((uint8_t*)&buffer[4], LIS3DSH_OUT_Z_L_ADDR, 1);
+ 800083a: 2201 movs r2, #1
+ 800083c: 212c movs r1, #44 ; 0x2c
+ 800083e: a803 add r0, sp, #12
+ 8000840: f000 f9b8 bl 8000bb4
+ ACCELERO_IO_Read((uint8_t*)&buffer[5], LIS3DSH_OUT_Z_H_ADDR, 1);
+ 8000844: 2201 movs r2, #1
+ 8000846: 212d movs r1, #45 ; 0x2d
+ 8000848: f10d 000d add.w r0, sp, #13
+ 800084c: f000 f9b2 bl 8000bb4
+ 8000850: f89d 3007 ldrb.w r3, [sp, #7]
+ 8000854: f003 0338 and.w r3, r3, #56 ; 0x38
+ 8000858: 3b08 subs r3, #8
+ 800085a: b2db uxtb r3, r3
+ 800085c: 2b18 cmp r3, #24
+ 800085e: bf97 itett ls
+ 8000860: 4a0e ldrls r2, [pc, #56] ; (800089c )
+
+ switch(crtl & LIS3DSH__FULLSCALE_SELECTION)
+ 8000862: ed9f 7a0f vldrhi s14, [pc, #60] ; 80008a0
+ 8000866: eb02 0383 addls.w r3, r2, r3, lsl #2
+ 800086a: ed93 7a00 vldrls s14, [r3]
+ 800086e: 2200 movs r2, #0
+ }
+
+ /* Obtain the mg value for the three axis */
+ for(i=0; i<3; i++)
+ {
+ valueinfloat = ((buffer[2*i+1] << 8) + buffer[2*i]) * sensitivity;
+ 8000870: 18a3 adds r3, r4, r2
+ 8000872: f993 1001 ldrsb.w r1, [r3, #1]
+ 8000876: 56a3 ldrsb r3, [r4, r2]
+ 8000878: eb03 2301 add.w r3, r3, r1, lsl #8
+ 800087c: ee07 3a90 vmov s15, r3
+ 8000880: eef8 7ae7 vcvt.f32.s32 s15, s15
+ 8000884: ee67 7a87 vmul.f32 s15, s15, s14
+ pData[i] = (int16_t)valueinfloat;
+ 8000888: eefd 7ae7 vcvt.s32.f32 s15, s15
+ 800088c: ee17 3a90 vmov r3, s15
+ 8000890: 52ab strh r3, [r5, r2]
+ 8000892: 3202 adds r2, #2
+ for(i=0; i<3; i++)
+ 8000894: 2a06 cmp r2, #6
+ 8000896: d1eb bne.n 8000870
+ }
+}
+ 8000898: b005 add sp, #20
+ 800089a: bd30 pop {r4, r5, pc}
+ 800089c: 08006bfc .word 0x08006bfc
+ 80008a0: 3d75c28f .word 0x3d75c28f
+
+080008a4 :
+{
+ 80008a4: b537 push {r0, r1, r2, r4, r5, lr}
+ ctrl = (uint8_t)(LIS3DSH_IntConfigStruct->Interrupt_Selection_Enable | \
+ 80008a6: 7802 ldrb r2, [r0, #0]
+ 80008a8: 7843 ldrb r3, [r0, #1]
+ 80008aa: 4313 orrs r3, r2
+ 80008ac: 7882 ldrb r2, [r0, #2]
+ 80008ae: ad02 add r5, sp, #8
+ 80008b0: 4313 orrs r3, r2
+ 80008b2: f805 3d01 strb.w r3, [r5, #-1]!
+{
+ 80008b6: 4604 mov r4, r0
+ ACCELERO_IO_Write(&ctrl, LIS3DSH_CTRL_REG3_ADDR, 1);
+ 80008b8: 2201 movs r2, #1
+ 80008ba: 4628 mov r0, r5
+ 80008bc: 2123 movs r1, #35 ; 0x23
+ 80008be: f000 f957 bl 8000b70
+ ctrl = (uint8_t)(LIS3DSH_IntConfigStruct->State_Machine1_Enable | \
+ 80008c2: 7922 ldrb r2, [r4, #4]
+ 80008c4: 78e3 ldrb r3, [r4, #3]
+ ACCELERO_IO_Write(&ctrl, LIS3DSH_CTRL_REG1_ADDR, 1);
+ 80008c6: 4628 mov r0, r5
+ ctrl = (uint8_t)(LIS3DSH_IntConfigStruct->State_Machine1_Enable | \
+ 80008c8: 4313 orrs r3, r2
+ ACCELERO_IO_Write(&ctrl, LIS3DSH_CTRL_REG1_ADDR, 1);
+ 80008ca: 2121 movs r1, #33 ; 0x21
+ 80008cc: 2201 movs r2, #1
+ ctrl = (uint8_t)(LIS3DSH_IntConfigStruct->State_Machine1_Enable | \
+ 80008ce: f88d 3007 strb.w r3, [sp, #7]
+ ACCELERO_IO_Write(&ctrl, LIS3DSH_CTRL_REG1_ADDR, 1);
+ 80008d2: f000 f94d bl 8000b70
+ ctrl = (uint8_t)(LIS3DSH_IntConfigStruct->State_Machine2_Enable | \
+ 80008d6: 79a2 ldrb r2, [r4, #6]
+ 80008d8: 7963 ldrb r3, [r4, #5]
+ ACCELERO_IO_Write(&ctrl, LIS3DSH_CTRL_REG2_ADDR, 1);
+ 80008da: 2122 movs r1, #34 ; 0x22
+ ctrl = (uint8_t)(LIS3DSH_IntConfigStruct->State_Machine2_Enable | \
+ 80008dc: 4313 orrs r3, r2
+ ACCELERO_IO_Write(&ctrl, LIS3DSH_CTRL_REG2_ADDR, 1);
+ 80008de: 4628 mov r0, r5
+ 80008e0: 2201 movs r2, #1
+ ctrl = (uint8_t)(LIS3DSH_IntConfigStruct->State_Machine2_Enable | \
+ 80008e2: f88d 3007 strb.w r3, [sp, #7]
+ ACCELERO_IO_Write(&ctrl, LIS3DSH_CTRL_REG2_ADDR, 1);
+ 80008e6: f000 f943 bl 8000b70
+}
+ 80008ea: b003 add sp, #12
+ 80008ec: bd30 pop {r4, r5, pc}
+
+080008ee :
+{
+ 80008ee: b530 push {r4, r5, lr}
+ 80008f0: b085 sub sp, #20
+ uint8_t ctrl = 0x00;
+ 80008f2: 2400 movs r4, #0
+ LIS3DSH_InterruptStruct.State_Machine2_Enable = LIS3DSH_SM_ENABLE;
+ 80008f4: 2501 movs r5, #1
+ uint8_t ctrl = 0x00;
+ 80008f6: f88d 4007 strb.w r4, [sp, #7]
+ ACCELERO_IO_ITConfig();
+ 80008fa: f000 f911 bl 8000b20
+ LIS3DSH_InterruptStruct.Interrupt_Selection_Enable = LIS3DSH_INTERRUPT_2_ENABLE;
+ 80008fe: f88d 4009 strb.w r4, [sp, #9]
+ LIS3DSH_InterruptStruct.Interrupt_Request = LIS3DSH_INTERRUPT_REQUEST_LATCHED;
+ 8000902: f88d 4008 strb.w r4, [sp, #8]
+ LIS3DSH_InterruptStruct.Interrupt_Signal = LIS3DSH_INTERRUPT_SIGNAL_HIGH;
+ 8000906: 2340 movs r3, #64 ; 0x40
+ LIS3DSH_InterruptStruct.State_Machine1_Enable = LIS3DSH_SM_DISABLE;
+ 8000908: f88d 400b strb.w r4, [sp, #11]
+ LIS3DSH_InterruptStruct.State_Machine2_Interrupt = LIS3DSH_SM_INT1;
+ 800090c: f88d 400e strb.w r4, [sp, #14]
+ LIS3DSH_InterruptConfig(&LIS3DSH_InterruptStruct);
+ 8000910: a802 add r0, sp, #8
+ ctrl=0x03;
+ 8000912: ac04 add r4, sp, #16
+ LIS3DSH_InterruptStruct.Interrupt_Signal = LIS3DSH_INTERRUPT_SIGNAL_HIGH;
+ 8000914: f88d 300a strb.w r3, [sp, #10]
+ LIS3DSH_InterruptStruct.State_Machine2_Enable = LIS3DSH_SM_ENABLE;
+ 8000918: f88d 500d strb.w r5, [sp, #13]
+ LIS3DSH_InterruptConfig(&LIS3DSH_InterruptStruct);
+ 800091c: f7ff ffc2 bl 80008a4
+ ctrl=0x03;
+ 8000920: 2303 movs r3, #3
+ 8000922: f804 3d09 strb.w r3, [r4, #-9]!
+ ACCELERO_IO_Write(&ctrl, LIS3DSH_TIM2_1_L_ADDR,1);
+ 8000926: 462a mov r2, r5
+ 8000928: 4620 mov r0, r4
+ 800092a: 2152 movs r1, #82 ; 0x52
+ 800092c: f000 f920 bl 8000b70
+ ctrl=0xC8;
+ 8000930: 23c8 movs r3, #200 ; 0xc8
+ ACCELERO_IO_Write(&ctrl, LIS3DSH_TIM1_1_L_ADDR,1);
+ 8000932: 462a mov r2, r5
+ 8000934: 4620 mov r0, r4
+ 8000936: 2154 movs r1, #84 ; 0x54
+ ctrl=0xC8;
+ 8000938: f88d 3007 strb.w r3, [sp, #7]
+ ACCELERO_IO_Write(&ctrl, LIS3DSH_TIM1_1_L_ADDR,1);
+ 800093c: f000 f918 bl 8000b70
+ ctrl=0x45;
+ 8000940: 2345 movs r3, #69 ; 0x45
+ ACCELERO_IO_Write(&ctrl, LIS3DSH_THRS2_1_ADDR,1);
+ 8000942: 462a mov r2, r5
+ 8000944: 4620 mov r0, r4
+ 8000946: 2156 movs r1, #86 ; 0x56
+ ctrl=0x45;
+ 8000948: f88d 3007 strb.w r3, [sp, #7]
+ ACCELERO_IO_Write(&ctrl, LIS3DSH_THRS2_1_ADDR,1);
+ 800094c: f000 f910 bl 8000b70
+ ctrl=0xFC;
+ 8000950: 23fc movs r3, #252 ; 0xfc
+ ACCELERO_IO_Write(&ctrl, LIS3DSH_MASK1_A_ADDR,1);
+ 8000952: 462a mov r2, r5
+ 8000954: 4620 mov r0, r4
+ 8000956: 215a movs r1, #90 ; 0x5a
+ ctrl=0xFC;
+ 8000958: f88d 3007 strb.w r3, [sp, #7]
+ ACCELERO_IO_Write(&ctrl, LIS3DSH_MASK1_A_ADDR,1);
+ 800095c: f000 f908 bl 8000b70
+ ctrl=0xA1;
+ 8000960: 23a1 movs r3, #161 ; 0xa1
+ ACCELERO_IO_Write(&ctrl, LIS3DSH_SETT1_ADDR,1);
+ 8000962: 462a mov r2, r5
+ 8000964: 4620 mov r0, r4
+ 8000966: 215b movs r1, #91 ; 0x5b
+ ctrl=0xA1;
+ 8000968: f88d 3007 strb.w r3, [sp, #7]
+ ACCELERO_IO_Write(&ctrl, LIS3DSH_SETT1_ADDR,1);
+ 800096c: f000 f900 bl 8000b70
+ ACCELERO_IO_Write(&ctrl, LIS3DSH_PR1_ADDR,1);
+ 8000970: 462a mov r2, r5
+ 8000972: 4620 mov r0, r4
+ 8000974: 215c movs r1, #92 ; 0x5c
+ ctrl=0x01;
+ 8000976: f88d 5007 strb.w r5, [sp, #7]
+ ACCELERO_IO_Write(&ctrl, LIS3DSH_PR1_ADDR,1);
+ 800097a: f000 f8f9 bl 8000b70
+ ACCELERO_IO_Write(&ctrl, LIS3DSH_SETT2_ADDR,1);
+ 800097e: 462a mov r2, r5
+ 8000980: 4620 mov r0, r4
+ 8000982: 217b movs r1, #123 ; 0x7b
+ 8000984: f000 f8f4 bl 8000b70
+ ACCELERO_IO_Write(&ctrl, LIS3DSH_ST2_1_ADDR,1);
+ 8000988: 462a mov r2, r5
+ 800098a: 4620 mov r0, r4
+ 800098c: 2160 movs r1, #96 ; 0x60
+ 800098e: f000 f8ef bl 8000b70
+ ctrl=0x06;
+ 8000992: 2306 movs r3, #6
+ ACCELERO_IO_Write(&ctrl, LIS3DSH_ST2_2_ADDR,1);
+ 8000994: 462a mov r2, r5
+ 8000996: 4620 mov r0, r4
+ 8000998: 2161 movs r1, #97 ; 0x61
+ ctrl=0x06;
+ 800099a: f88d 3007 strb.w r3, [sp, #7]
+ ACCELERO_IO_Write(&ctrl, LIS3DSH_ST2_2_ADDR,1);
+ 800099e: f000 f8e7 bl 8000b70
+ ctrl=0x28;
+ 80009a2: 2328 movs r3, #40 ; 0x28
+ ACCELERO_IO_Write(&ctrl, LIS3DSH_ST2_3_ADDR,1);
+ 80009a4: 462a mov r2, r5
+ 80009a6: 4620 mov r0, r4
+ 80009a8: 2162 movs r1, #98 ; 0x62
+ ctrl=0x28;
+ 80009aa: f88d 3007 strb.w r3, [sp, #7]
+ ACCELERO_IO_Write(&ctrl, LIS3DSH_ST2_3_ADDR,1);
+ 80009ae: f000 f8df bl 8000b70
+ ctrl=0x11;
+ 80009b2: 2311 movs r3, #17
+ ACCELERO_IO_Write(&ctrl, LIS3DSH_ST2_4_ADDR,1);
+ 80009b4: 462a mov r2, r5
+ 80009b6: 2163 movs r1, #99 ; 0x63
+ 80009b8: 4620 mov r0, r4
+ ctrl=0x11;
+ 80009ba: f88d 3007 strb.w r3, [sp, #7]
+ ACCELERO_IO_Write(&ctrl, LIS3DSH_ST2_4_ADDR,1);
+ 80009be: f000 f8d7 bl 8000b70
+}
+ 80009c2: b005 add sp, #20
+ 80009c4: bd30 pop {r4, r5, pc}
+ ...
+
+080009c8 :
+
+/**
+ * @brief SPIx Bus initialization
+ */
+static void SPIx_Init(void)
+{
+ 80009c8: b510 push {r4, lr}
+ if(HAL_SPI_GetState(&SpiHandle) == HAL_SPI_STATE_RESET)
+ 80009ca: 4c20 ldr r4, [pc, #128] ; (8000a4c )
+{
+ 80009cc: b088 sub sp, #32
+ if(HAL_SPI_GetState(&SpiHandle) == HAL_SPI_STATE_RESET)
+ 80009ce: 4620 mov r0, r4
+ 80009d0: f001 ff7c bl 80028cc
+ 80009d4: 2800 cmp r0, #0
+ 80009d6: d137 bne.n 8000a48
+ {
+ /* SPI configuration -----------------------------------------------------*/
+ SpiHandle.Instance = DISCOVERY_SPIx;
+ 80009d8: 4b1d ldr r3, [pc, #116] ; (8000a50 )
+ 80009da: 6023 str r3, [r4, #0]
+ SpiHandle.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16;
+ 80009dc: 2318 movs r3, #24
+ 80009de: 61e3 str r3, [r4, #28]
+ SpiHandle.Init.Direction = SPI_DIRECTION_2LINES;
+ SpiHandle.Init.CLKPhase = SPI_PHASE_1EDGE;
+ SpiHandle.Init.CLKPolarity = SPI_POLARITY_LOW;
+ SpiHandle.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLED;
+ SpiHandle.Init.CRCPolynomial = 7;
+ 80009e0: 2307 movs r3, #7
+ 80009e2: 62e3 str r3, [r4, #44] ; 0x2c
+ SpiHandle.Init.DataSize = SPI_DATASIZE_8BIT;
+ SpiHandle.Init.FirstBit = SPI_FIRSTBIT_MSB;
+ SpiHandle.Init.NSS = SPI_NSS_SOFT;
+ 80009e4: f44f 7300 mov.w r3, #512 ; 0x200
+ 80009e8: 61a3 str r3, [r4, #24]
+ SpiHandle.Init.TIMode = SPI_TIMODE_DISABLED;
+ SpiHandle.Init.Mode = SPI_MODE_MASTER;
+ 80009ea: f44f 7382 mov.w r3, #260 ; 0x104
+ 80009ee: 6063 str r3, [r4, #4]
+static void SPIx_MspInit(void)
+{
+ GPIO_InitTypeDef GPIO_InitStructure;
+
+ /* Enable the SPI peripheral */
+ DISCOVERY_SPIx_CLK_ENABLE();
+ 80009f0: 4b18 ldr r3, [pc, #96] ; (8000a54 )
+ 80009f2: 9001 str r0, [sp, #4]
+ SpiHandle.Init.Direction = SPI_DIRECTION_2LINES;
+ 80009f4: 60a0 str r0, [r4, #8]
+ SpiHandle.Init.CLKPhase = SPI_PHASE_1EDGE;
+ 80009f6: 6160 str r0, [r4, #20]
+ SpiHandle.Init.CLKPolarity = SPI_POLARITY_LOW;
+ 80009f8: 6120 str r0, [r4, #16]
+ SpiHandle.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLED;
+ 80009fa: 62a0 str r0, [r4, #40] ; 0x28
+ SpiHandle.Init.DataSize = SPI_DATASIZE_8BIT;
+ 80009fc: 60e0 str r0, [r4, #12]
+ SpiHandle.Init.FirstBit = SPI_FIRSTBIT_MSB;
+ 80009fe: 6220 str r0, [r4, #32]
+ SpiHandle.Init.TIMode = SPI_TIMODE_DISABLED;
+ 8000a00: 6260 str r0, [r4, #36] ; 0x24
+ DISCOVERY_SPIx_CLK_ENABLE();
+ 8000a02: 6c5a ldr r2, [r3, #68] ; 0x44
+ 8000a04: f442 5280 orr.w r2, r2, #4096 ; 0x1000
+ 8000a08: 645a str r2, [r3, #68] ; 0x44
+ 8000a0a: 6c5a ldr r2, [r3, #68] ; 0x44
+ 8000a0c: f402 5280 and.w r2, r2, #4096 ; 0x1000
+ 8000a10: 9201 str r2, [sp, #4]
+ 8000a12: 9a01 ldr r2, [sp, #4]
+
+ /* Enable SCK, MOSI and MISO GPIO clocks */
+ DISCOVERY_SPIx_GPIO_CLK_ENABLE();
+ 8000a14: 9002 str r0, [sp, #8]
+ 8000a16: 6b1a ldr r2, [r3, #48] ; 0x30
+ GPIO_InitStructure.Pin = (DISCOVERY_SPIx_SCK_PIN | DISCOVERY_SPIx_MISO_PIN | DISCOVERY_SPIx_MOSI_PIN);
+ GPIO_InitStructure.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStructure.Pull = GPIO_PULLDOWN;
+ GPIO_InitStructure.Speed = GPIO_SPEED_MEDIUM;
+ GPIO_InitStructure.Alternate = DISCOVERY_SPIx_AF;
+ HAL_GPIO_Init(DISCOVERY_SPIx_GPIO_PORT, &GPIO_InitStructure);
+ 8000a18: 480f ldr r0, [pc, #60] ; (8000a58 )
+ DISCOVERY_SPIx_GPIO_CLK_ENABLE();
+ 8000a1a: f042 0201 orr.w r2, r2, #1
+ 8000a1e: 631a str r2, [r3, #48] ; 0x30
+ 8000a20: 6b1b ldr r3, [r3, #48] ; 0x30
+ 8000a22: f003 0301 and.w r3, r3, #1
+ 8000a26: 9302 str r3, [sp, #8]
+ 8000a28: 9b02 ldr r3, [sp, #8]
+ GPIO_InitStructure.Pin = (DISCOVERY_SPIx_SCK_PIN | DISCOVERY_SPIx_MISO_PIN | DISCOVERY_SPIx_MOSI_PIN);
+ 8000a2a: 23e0 movs r3, #224 ; 0xe0
+ 8000a2c: 9303 str r3, [sp, #12]
+ GPIO_InitStructure.Mode = GPIO_MODE_AF_PP;
+ 8000a2e: 2302 movs r3, #2
+ 8000a30: 9304 str r3, [sp, #16]
+ GPIO_InitStructure.Pull = GPIO_PULLDOWN;
+ 8000a32: 9305 str r3, [sp, #20]
+ GPIO_InitStructure.Speed = GPIO_SPEED_MEDIUM;
+ 8000a34: 2301 movs r3, #1
+ 8000a36: 9306 str r3, [sp, #24]
+ HAL_GPIO_Init(DISCOVERY_SPIx_GPIO_PORT, &GPIO_InitStructure);
+ 8000a38: a903 add r1, sp, #12
+ GPIO_InitStructure.Alternate = DISCOVERY_SPIx_AF;
+ 8000a3a: 2305 movs r3, #5
+ 8000a3c: 9307 str r3, [sp, #28]
+ HAL_GPIO_Init(DISCOVERY_SPIx_GPIO_PORT, &GPIO_InitStructure);
+ 8000a3e: f000 f9d5 bl 8000dec
+ HAL_SPI_Init(&SpiHandle);
+ 8000a42: 4620 mov r0, r4
+ 8000a44: f001 fdf3 bl 800262e
+}
+ 8000a48: b008 add sp, #32
+ 8000a4a: bd10 pop {r4, pc}
+ 8000a4c: 20000260 .word 0x20000260
+ 8000a50: 40013000 .word 0x40013000
+ 8000a54: 40023800 .word 0x40023800
+ 8000a58: 40020000 .word 0x40020000
+
+08000a5c :
+{
+ 8000a5c: b57f push {r0, r1, r2, r3, r4, r5, r6, lr}
+ uint8_t receivedbyte = 0;
+ 8000a5e: aa06 add r2, sp, #24
+ 8000a60: 2300 movs r3, #0
+ 8000a62: f802 3d01 strb.w r3, [r2, #-1]!
+ if(HAL_SPI_TransmitReceive(&SpiHandle, (uint8_t*) &Byte, (uint8_t*) &receivedbyte, 1, SpixTimeout) != HAL_OK)
+ 8000a66: 4b0b ldr r3, [pc, #44] ; (8000a94 )
+{
+ 8000a68: f88d 000f strb.w r0, [sp, #15]
+ if(HAL_SPI_TransmitReceive(&SpiHandle, (uint8_t*) &Byte, (uint8_t*) &receivedbyte, 1, SpixTimeout) != HAL_OK)
+ 8000a6c: 681b ldr r3, [r3, #0]
+ 8000a6e: 9300 str r3, [sp, #0]
+ 8000a70: f10d 010f add.w r1, sp, #15
+ 8000a74: 2301 movs r3, #1
+ 8000a76: 4808 ldr r0, [pc, #32] ; (8000a98 )
+ 8000a78: f001 fe2c bl 80026d4
+ 8000a7c: b120 cbz r0, 8000a88
+ HAL_SPI_DeInit(&SpiHandle);
+ 8000a7e: 4806 ldr r0, [pc, #24] ; (8000a98 )
+ 8000a80: f001 fe12 bl 80026a8
+ SPIx_Init();
+ 8000a84: f7ff ffa0 bl 80009c8
+}
+ 8000a88: f89d 0017 ldrb.w r0, [sp, #23]
+ 8000a8c: b007 add sp, #28
+ 8000a8e: f85d fb04 ldr.w pc, [sp], #4
+ 8000a92: bf00 nop
+ 8000a94: 20000078 .word 0x20000078
+ 8000a98: 20000260 .word 0x20000260
+
+08000a9c :
+ HAL_GPIO_WritePin(GPIO_PORT[Led], GPIO_PIN[Led], GPIO_PIN_SET);
+ 8000a9c: 4b04 ldr r3, [pc, #16] ; (8000ab0 )
+ 8000a9e: f833 1010 ldrh.w r1, [r3, r0, lsl #1]
+ 8000aa2: 4b04 ldr r3, [pc, #16] ; (8000ab4 )
+ 8000aa4: 2201 movs r2, #1
+ 8000aa6: f853 0020 ldr.w r0, [r3, r0, lsl #2]
+ 8000aaa: f000 bb17 b.w 80010dc
+ 8000aae: bf00 nop
+ 8000ab0: 08006c60 .word 0x08006c60
+ 8000ab4: 20000068 .word 0x20000068
+
+08000ab8 :
+ HAL_GPIO_WritePin(GPIO_PORT[Led], GPIO_PIN[Led], GPIO_PIN_RESET);
+ 8000ab8: 4b04 ldr r3, [pc, #16] ; (8000acc )
+ 8000aba: f833 1010 ldrh.w r1, [r3, r0, lsl #1]
+ 8000abe: 4b04 ldr r3, [pc, #16] ; (8000ad0 )
+ 8000ac0: 2200 movs r2, #0
+ 8000ac2: f853 0020 ldr.w r0, [r3, r0, lsl #2]
+ 8000ac6: f000 bb09 b.w 80010dc
+ 8000aca: bf00 nop
+ 8000acc: 08006c60 .word 0x08006c60
+ 8000ad0: 20000068 .word 0x20000068
+
+08000ad4 :
+
+/**
+ * @brief Configures the Accelerometer SPI interface.
+ */
+void ACCELERO_IO_Init(void)
+{
+ 8000ad4: b570 push {r4, r5, r6, lr}
+ 8000ad6: b086 sub sp, #24
+ GPIO_InitTypeDef GPIO_InitStructure;
+
+ /* Configure the Accelerometer Control pins --------------------------------*/
+ /* Enable CS GPIO clock and configure GPIO pin for Accelerometer Chip select */
+ ACCELERO_CS_GPIO_CLK_ENABLE();
+ 8000ad8: 2100 movs r1, #0
+ 8000ada: 4b0f ldr r3, [pc, #60] ; (8000b18 )
+ 8000adc: 9100 str r1, [sp, #0]
+ 8000ade: 6b1a ldr r2, [r3, #48] ; 0x30
+ /* Configure GPIO PIN for LIS Chip select */
+ GPIO_InitStructure.Pin = ACCELERO_CS_PIN;
+ GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStructure.Pull = GPIO_NOPULL;
+ GPIO_InitStructure.Speed = GPIO_SPEED_MEDIUM;
+ HAL_GPIO_Init(ACCELERO_CS_GPIO_PORT, &GPIO_InitStructure);
+ 8000ae0: 4d0e ldr r5, [pc, #56] ; (8000b1c )
+ ACCELERO_CS_GPIO_CLK_ENABLE();
+ 8000ae2: f042 0210 orr.w r2, r2, #16
+ 8000ae6: 631a str r2, [r3, #48] ; 0x30
+ 8000ae8: 6b1b ldr r3, [r3, #48] ; 0x30
+ GPIO_InitStructure.Pull = GPIO_NOPULL;
+ 8000aea: 9103 str r1, [sp, #12]
+ ACCELERO_CS_GPIO_CLK_ENABLE();
+ 8000aec: f003 0310 and.w r3, r3, #16
+ GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
+ 8000af0: 2401 movs r4, #1
+ ACCELERO_CS_GPIO_CLK_ENABLE();
+ 8000af2: 9300 str r3, [sp, #0]
+ GPIO_InitStructure.Pin = ACCELERO_CS_PIN;
+ 8000af4: 2608 movs r6, #8
+ HAL_GPIO_Init(ACCELERO_CS_GPIO_PORT, &GPIO_InitStructure);
+ 8000af6: a901 add r1, sp, #4
+ 8000af8: 4628 mov r0, r5
+ ACCELERO_CS_GPIO_CLK_ENABLE();
+ 8000afa: 9b00 ldr r3, [sp, #0]
+ GPIO_InitStructure.Pin = ACCELERO_CS_PIN;
+ 8000afc: 9601 str r6, [sp, #4]
+ GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
+ 8000afe: 9402 str r4, [sp, #8]
+ GPIO_InitStructure.Speed = GPIO_SPEED_MEDIUM;
+ 8000b00: 9404 str r4, [sp, #16]
+ HAL_GPIO_Init(ACCELERO_CS_GPIO_PORT, &GPIO_InitStructure);
+ 8000b02: f000 f973 bl 8000dec
+
+ /* Deselect: Chip Select high */
+ ACCELERO_CS_HIGH();
+ 8000b06: 4622 mov r2, r4
+ 8000b08: 4631 mov r1, r6
+ 8000b0a: 4628 mov r0, r5
+ 8000b0c: f000 fae6 bl 80010dc
+
+ SPIx_Init();
+ 8000b10: f7ff ff5a bl 80009c8
+}
+ 8000b14: b006 add sp, #24
+ 8000b16: bd70 pop {r4, r5, r6, pc}
+ 8000b18: 40023800 .word 0x40023800
+ 8000b1c: 40021000 .word 0x40021000
+
+08000b20 :
+/**
+ * @brief Configures the Accelerometer INT2.
+ * EXTI0 is already used by user button so INT1 is not configured here.
+ */
+void ACCELERO_IO_ITConfig(void)
+{
+ 8000b20: b510 push {r4, lr}
+ 8000b22: b086 sub sp, #24
+ GPIO_InitTypeDef GPIO_InitStructure;
+
+ /* Enable INT2 GPIO clock and configure GPIO PINs to detect Interrupts */
+ ACCELERO_INT_GPIO_CLK_ENABLE();
+ 8000b24: 2400 movs r4, #0
+ 8000b26: 4b0f ldr r3, [pc, #60] ; (8000b64 )
+ 8000b28: 9400 str r4, [sp, #0]
+ 8000b2a: 6b1a ldr r2, [r3, #48] ; 0x30
+ /* Configure GPIO PINs to detect Interrupts */
+ GPIO_InitStructure.Pin = ACCELERO_INT2_PIN;
+ GPIO_InitStructure.Mode = GPIO_MODE_IT_RISING;
+ GPIO_InitStructure.Speed = GPIO_SPEED_FAST;
+ GPIO_InitStructure.Pull = GPIO_NOPULL;
+ HAL_GPIO_Init(ACCELERO_INT_GPIO_PORT, &GPIO_InitStructure);
+ 8000b2c: 480e ldr r0, [pc, #56] ; (8000b68 )
+ ACCELERO_INT_GPIO_CLK_ENABLE();
+ 8000b2e: f042 0210 orr.w r2, r2, #16
+ 8000b32: 631a str r2, [r3, #48] ; 0x30
+ 8000b34: 6b1b ldr r3, [r3, #48] ; 0x30
+ GPIO_InitStructure.Mode = GPIO_MODE_IT_RISING;
+ 8000b36: 4a0d ldr r2, [pc, #52] ; (8000b6c )
+ 8000b38: 9202 str r2, [sp, #8]
+ ACCELERO_INT_GPIO_CLK_ENABLE();
+ 8000b3a: f003 0310 and.w r3, r3, #16
+ 8000b3e: 9300 str r3, [sp, #0]
+ 8000b40: 9b00 ldr r3, [sp, #0]
+ GPIO_InitStructure.Pull = GPIO_NOPULL;
+ 8000b42: 9403 str r4, [sp, #12]
+ GPIO_InitStructure.Pin = ACCELERO_INT2_PIN;
+ 8000b44: 2302 movs r3, #2
+ HAL_GPIO_Init(ACCELERO_INT_GPIO_PORT, &GPIO_InitStructure);
+ 8000b46: a901 add r1, sp, #4
+ GPIO_InitStructure.Pin = ACCELERO_INT2_PIN;
+ 8000b48: 9301 str r3, [sp, #4]
+ GPIO_InitStructure.Speed = GPIO_SPEED_FAST;
+ 8000b4a: 9304 str r3, [sp, #16]
+ HAL_GPIO_Init(ACCELERO_INT_GPIO_PORT, &GPIO_InitStructure);
+ 8000b4c: f000 f94e bl 8000dec
+
+ /* Enable and set Accelerometer INT2 to the lowest priority */
+ HAL_NVIC_SetPriority((IRQn_Type)ACCELERO_INT2_EXTI_IRQn, 0x0F, 0);
+ 8000b50: 4622 mov r2, r4
+ 8000b52: 210f movs r1, #15
+ 8000b54: 2007 movs r0, #7
+ 8000b56: f000 f8e7 bl 8000d28
+ HAL_NVIC_EnableIRQ((IRQn_Type)ACCELERO_INT2_EXTI_IRQn);
+ 8000b5a: 2007 movs r0, #7
+ 8000b5c: f000 f918 bl 8000d90
+}
+ 8000b60: b006 add sp, #24
+ 8000b62: bd10 pop {r4, pc}
+ 8000b64: 40023800 .word 0x40023800
+ 8000b68: 40021000 .word 0x40021000
+ 8000b6c: 10110000 .word 0x10110000
+
+08000b70 :
+{
+ /* Configure the MS bit:
+ - When 0, the address will remain unchanged in multiple read/write commands.
+ - When 1, the address will be auto incremented in multiple read/write commands.
+ */
+ if(NumByteToWrite > 0x01)
+ 8000b70: 2a01 cmp r2, #1
+{
+ 8000b72: b570 push {r4, r5, r6, lr}
+ 8000b74: 460d mov r5, r1
+ 8000b76: 4606 mov r6, r0
+ {
+ WriteAddr |= (uint8_t)MULTIPLEBYTE_CMD;
+ 8000b78: bf88 it hi
+ 8000b7a: f041 0540 orrhi.w r5, r1, #64 ; 0x40
+ }
+ /* Set chip select Low at the start of the transmission */
+ ACCELERO_CS_LOW();
+ 8000b7e: 480c ldr r0, [pc, #48] ; (8000bb0 )
+{
+ 8000b80: 4614 mov r4, r2
+ ACCELERO_CS_LOW();
+ 8000b82: 2108 movs r1, #8
+ 8000b84: 2200 movs r2, #0
+ 8000b86: f000 faa9 bl 80010dc
+
+ /* Send the Address of the indexed register */
+ SPIx_WriteRead(WriteAddr);
+ 8000b8a: 4628 mov r0, r5
+ 8000b8c: f7ff ff66 bl 8000a5c
+
+ /* Send the data that will be written into the device (MSB First) */
+ while(NumByteToWrite >= 0x01)
+ 8000b90: b934 cbnz r4, 8000ba0
+ NumByteToWrite--;
+ pBuffer++;
+ }
+
+ /* Set chip select High at the end of the transmission */
+ ACCELERO_CS_HIGH();
+ 8000b92: 2201 movs r2, #1
+ 8000b94: 2108 movs r1, #8
+ 8000b96: 4806 ldr r0, [pc, #24] ; (8000bb0 )
+}
+ 8000b98: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr}
+ ACCELERO_CS_HIGH();
+ 8000b9c: f000 ba9e b.w 80010dc
+ SPIx_WriteRead(*pBuffer);
+ 8000ba0: f816 0b01 ldrb.w r0, [r6], #1
+ NumByteToWrite--;
+ 8000ba4: 3c01 subs r4, #1
+ SPIx_WriteRead(*pBuffer);
+ 8000ba6: f7ff ff59 bl 8000a5c
+ NumByteToWrite--;
+ 8000baa: b2a4 uxth r4, r4
+ 8000bac: e7f0 b.n 8000b90
+ 8000bae: bf00 nop
+ 8000bb0: 40021000 .word 0x40021000
+
+08000bb4 :
+ * @param ReadAddr: Accelerometer's internal address to read from.
+ * @param NumByteToRead: number of bytes to read from the Accelerometer.
+ */
+void ACCELERO_IO_Read(uint8_t *pBuffer, uint8_t ReadAddr, uint16_t NumByteToRead)
+{
+ if(NumByteToRead > 0x01)
+ 8000bb4: 2a01 cmp r2, #1
+{
+ 8000bb6: b570 push {r4, r5, r6, lr}
+ {
+ ReadAddr |= (uint8_t)(READWRITE_CMD | MULTIPLEBYTE_CMD);
+ 8000bb8: bf8c ite hi
+ 8000bba: f041 05c0 orrhi.w r5, r1, #192 ; 0xc0
+ }
+ else
+ {
+ ReadAddr |= (uint8_t)READWRITE_CMD;
+ 8000bbe: f041 0580 orrls.w r5, r1, #128 ; 0x80
+{
+ 8000bc2: 4606 mov r6, r0
+ 8000bc4: 4614 mov r4, r2
+ }
+ /* Set chip select Low at the start of the transmission */
+ ACCELERO_CS_LOW();
+ 8000bc6: 480c ldr r0, [pc, #48] ; (8000bf8 )
+ 8000bc8: 2200 movs r2, #0
+ 8000bca: 2108 movs r1, #8
+ 8000bcc: f000 fa86 bl 80010dc
+
+ /* Send the Address of the indexed register */
+ SPIx_WriteRead(ReadAddr);
+ 8000bd0: 4628 mov r0, r5
+ 8000bd2: f7ff ff43 bl 8000a5c
+
+ /* Receive the data that will be read from the device (MSB First) */
+ while(NumByteToRead > 0x00)
+ 8000bd6: b934 cbnz r4, 8000be6
+ NumByteToRead--;
+ pBuffer++;
+ }
+
+ /* Set chip select High at the end of the transmission */
+ ACCELERO_CS_HIGH();
+ 8000bd8: 2201 movs r2, #1
+ 8000bda: 2108 movs r1, #8
+ 8000bdc: 4806 ldr r0, [pc, #24] ; (8000bf8 )
+}
+ 8000bde: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr}
+ ACCELERO_CS_HIGH();
+ 8000be2: f000 ba7b b.w 80010dc
+ *pBuffer = SPIx_WriteRead(DUMMY_BYTE);
+ 8000be6: 2000 movs r0, #0
+ 8000be8: f7ff ff38 bl 8000a5c
+ NumByteToRead--;
+ 8000bec: 3c01 subs r4, #1
+ *pBuffer = SPIx_WriteRead(DUMMY_BYTE);
+ 8000bee: f806 0b01 strb.w r0, [r6], #1
+ NumByteToRead--;
+ 8000bf2: b2a4 uxth r4, r4
+ 8000bf4: e7ef b.n 8000bd6
+ 8000bf6: bf00 nop
+ 8000bf8: 40021000 .word 0x40021000
+
+08000bfc :
+/**
+ * @brief Setx Accelerometer Initialization.
+ * @retval ACCELERO_OK if no problem during initialization
+ */
+uint8_t BSP_ACCELERO_Init(void)
+{
+ 8000bfc: b538 push {r3, r4, r5, lr}
+ uint16_t ctrl = 0x0000;
+ LIS302DL_InitTypeDef lis302dl_initstruct;
+ LIS302DL_FilterConfigTypeDef lis302dl_filter = {0,0,0};
+ LIS3DSH_InitTypeDef l1s3dsh_InitStruct;
+
+ if(Lis302dlDrv.ReadID() == I_AM_LIS302DL)
+ 8000bfe: 4c0e ldr r4, [pc, #56] ; (8000c38 )
+ 8000c00: 68a3 ldr r3, [r4, #8]
+ 8000c02: 4798 blx r3
+ 8000c04: 283b cmp r0, #59 ; 0x3b
+ 8000c06: d10a bne.n 8000c1e
+ {
+ /* Initialize the accelerometer driver structure */
+ AcceleroDrv = &Lis302dlDrv;
+ 8000c08: 4d0c ldr r5, [pc, #48] ; (8000c3c )
+ ctrl = (uint16_t) (lis302dl_initstruct.Output_DataRate | lis302dl_initstruct.Power_Mode | \
+ lis302dl_initstruct.Full_Scale | lis302dl_initstruct.Self_Test | \
+ lis302dl_initstruct.Axes_Enable);
+
+ /* Configure the accelerometer main parameters */
+ AcceleroDrv->Init(ctrl);
+ 8000c0a: 6823 ldr r3, [r4, #0]
+ AcceleroDrv = &Lis302dlDrv;
+ 8000c0c: 602c str r4, [r5, #0]
+ AcceleroDrv->Init(ctrl);
+ 8000c0e: 2047 movs r0, #71 ; 0x47
+ 8000c10: 4798 blx r3
+ ctrl = (uint8_t)(lis302dl_filter.HighPassFilter_Data_Selection | \
+ lis302dl_filter.HighPassFilter_CutOff_Frequency | \
+ lis302dl_filter.HighPassFilter_Interrupt);
+
+ /* Configure the accelerometer LPF main parameters */
+ AcceleroDrv->FilterConfig(ctrl);
+ 8000c12: 682b ldr r3, [r5, #0]
+ 8000c14: 202d movs r0, #45 ; 0x2d
+ 8000c16: 6a9b ldr r3, [r3, #40] ; 0x28
+ 8000c18: 4798 blx r3
+ l1s3dsh_InitStruct.Filter_BW) << 8);
+
+ /* Configure the accelerometer main parameters */
+ AcceleroDrv->Init(ctrl);
+
+ ret = ACCELERO_OK;
+ 8000c1a: 2000 movs r0, #0
+ 8000c1c: bd38 pop {r3, r4, r5, pc}
+ else if(Lis3dshDrv.ReadID() == I_AM_LIS3DSH)
+ 8000c1e: 4c08 ldr r4, [pc, #32] ; (8000c40 )
+ 8000c20: 68a3 ldr r3, [r4, #8]
+ 8000c22: 4798 blx r3
+ 8000c24: 283f cmp r0, #63 ; 0x3f
+ 8000c26: d105 bne.n 8000c34
+ AcceleroDrv = &Lis3dshDrv;
+ 8000c28: 4b04 ldr r3, [pc, #16] ; (8000c3c )
+ AcceleroDrv->Init(ctrl);
+ 8000c2a: 2067 movs r0, #103 ; 0x67
+ AcceleroDrv = &Lis3dshDrv;
+ 8000c2c: 601c str r4, [r3, #0]
+ AcceleroDrv->Init(ctrl);
+ 8000c2e: 6823 ldr r3, [r4, #0]
+ 8000c30: 4798 blx r3
+ 8000c32: e7f2 b.n 8000c1a
+ }
+
+ else
+ {
+ ret = ACCELERO_ERROR;
+ 8000c34: 2001 movs r0, #1
+ }
+ return ret;
+}
+ 8000c36: bd38 pop {r3, r4, r5, pc}
+ 8000c38: 20000000 .word 0x20000000
+ 8000c3c: 200002b8 .word 0x200002b8
+ 8000c40: 20000034 .word 0x20000034
+
+08000c44 :
+ * @brief Get XYZ axes acceleration.
+ * @param pDataXYZ: Pointer to 3 angular acceleration axes.
+ * pDataXYZ[0] = X axis, pDataXYZ[1] = Y axis, pDataXYZ[2] = Z axis
+ */
+void BSP_ACCELERO_GetXYZ(int16_t *pDataXYZ)
+{
+ 8000c44: b538 push {r3, r4, r5, lr}
+ float SwitchXY = 0;
+
+ if(AcceleroDrv->GetXYZ != NULL)
+ 8000c46: 4d0d ldr r5, [pc, #52] ; (8000c7c )
+ 8000c48: 682b ldr r3, [r5, #0]
+ 8000c4a: 6b1b ldr r3, [r3, #48] ; 0x30
+{
+ 8000c4c: 4604 mov r4, r0
+ if(AcceleroDrv->GetXYZ != NULL)
+ 8000c4e: b19b cbz r3, 8000c78
+ {
+ AcceleroDrv->GetXYZ(pDataXYZ);
+ 8000c50: 4798 blx r3
+
+ /* Switch X and Y Axes in case of LIS302DL MEMS */
+ if(AcceleroDrv == &Lis302dlDrv)
+ 8000c52: 682a ldr r2, [r5, #0]
+ 8000c54: 4b0a ldr r3, [pc, #40] ; (8000c80 )
+ 8000c56: 429a cmp r2, r3
+ 8000c58: d10e bne.n 8000c78
+ {
+ SwitchXY = pDataXYZ[0];
+ 8000c5a: f9b4 3000 ldrsh.w r3, [r4]
+ 8000c5e: ee07 3a90 vmov s15, r3
+ 8000c62: eef8 7ae7 vcvt.f32.s32 s15, s15
+ pDataXYZ[0] = pDataXYZ[1];
+ 8000c66: 8863 ldrh r3, [r4, #2]
+ 8000c68: 8023 strh r3, [r4, #0]
+ /* Invert Y Axis to be compliant with LIS3DSH MEMS */
+ pDataXYZ[1] = -SwitchXY;
+ 8000c6a: eef1 7a67 vneg.f32 s15, s15
+ 8000c6e: eefd 7ae7 vcvt.s32.f32 s15, s15
+ 8000c72: ee17 3a90 vmov r3, s15
+ 8000c76: 8063 strh r3, [r4, #2]
+ 8000c78: bd38 pop {r3, r4, r5, pc}
+ 8000c7a: bf00 nop
+ 8000c7c: 200002b8 .word 0x200002b8
+ 8000c80: 20000000 .word 0x20000000
+
+08000c84 :
+ * need to ensure that the SysTick time base is always set to 1 millisecond
+ * to have correct HAL operation.
+ * @retval HAL status
+ */
+HAL_StatusTypeDef HAL_Init(void)
+{
+ 8000c84: b508 push {r3, lr}
+ /* Configure Flash prefetch, Instruction cache, Data cache */
+#if (INSTRUCTION_CACHE_ENABLE != 0U)
+ __HAL_FLASH_INSTRUCTION_CACHE_ENABLE();
+ 8000c86: 4b0b ldr r3, [pc, #44] ; (8000cb4 )
+ 8000c88: 681a ldr r2, [r3, #0]
+ 8000c8a: f442 7200 orr.w r2, r2, #512 ; 0x200
+ 8000c8e: 601a str r2, [r3, #0]
+#endif /* INSTRUCTION_CACHE_ENABLE */
+
+#if (DATA_CACHE_ENABLE != 0U)
+ __HAL_FLASH_DATA_CACHE_ENABLE();
+ 8000c90: 681a ldr r2, [r3, #0]
+ 8000c92: f442 6280 orr.w r2, r2, #1024 ; 0x400
+ 8000c96: 601a str r2, [r3, #0]
+#endif /* DATA_CACHE_ENABLE */
+
+#if (PREFETCH_ENABLE != 0U)
+ __HAL_FLASH_PREFETCH_BUFFER_ENABLE();
+ 8000c98: 681a ldr r2, [r3, #0]
+ 8000c9a: f442 7280 orr.w r2, r2, #256 ; 0x100
+ 8000c9e: 601a str r2, [r3, #0]
+#endif /* PREFETCH_ENABLE */
+
+ /* Set Interrupt Group Priority */
+ HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);
+ 8000ca0: 2003 movs r0, #3
+ 8000ca2: f000 f82f bl 8000d04
+
+ /* Use systick as time base source and configure 1ms tick (default clock after Reset is HSI) */
+ HAL_InitTick(TICK_INT_PRIORITY);
+ 8000ca6: 2000 movs r0, #0
+ 8000ca8: f004 fffe bl 8005ca8
+
+ /* Init the low level hardware */
+ HAL_MspInit();
+ 8000cac: f004 ff1e bl 8005aec
+
+ /* Return function status */
+ return HAL_OK;
+}
+ 8000cb0: 2000 movs r0, #0
+ 8000cb2: bd08 pop {r3, pc}
+ 8000cb4: 40023c00 .word 0x40023c00
+
+08000cb8 :
+ * implementations in user file.
+ * @retval None
+ */
+__weak void HAL_IncTick(void)
+{
+ uwTick += uwTickFreq;
+ 8000cb8: 4a03 ldr r2, [pc, #12] ; (8000cc8 )
+ 8000cba: 4b04 ldr r3, [pc, #16] ; (8000ccc )
+ 8000cbc: 6811 ldr r1, [r2, #0]
+ 8000cbe: 781b ldrb r3, [r3, #0]
+ 8000cc0: 440b add r3, r1
+ 8000cc2: 6013 str r3, [r2, #0]
+ 8000cc4: 4770 bx lr
+ 8000cc6: bf00 nop
+ 8000cc8: 20004014 .word 0x20004014
+ 8000ccc: 2000007c .word 0x2000007c
+
+08000cd0 :
+ * implementations in user file.
+ * @retval tick value
+ */
+__weak uint32_t HAL_GetTick(void)
+{
+ return uwTick;
+ 8000cd0: 4b01 ldr r3, [pc, #4] ; (8000cd8 )
+ 8000cd2: 6818 ldr r0, [r3, #0]
+}
+ 8000cd4: 4770 bx lr
+ 8000cd6: bf00 nop
+ 8000cd8: 20004014 .word 0x20004014
+
+08000cdc :
+ * implementations in user file.
+ * @param Delay specifies the delay time length, in milliseconds.
+ * @retval None
+ */
+__weak void HAL_Delay(uint32_t Delay)
+{
+ 8000cdc: b538 push {r3, r4, r5, lr}
+ 8000cde: 4604 mov r4, r0
+ uint32_t tickstart = HAL_GetTick();
+ 8000ce0: f7ff fff6 bl 8000cd0
+ uint32_t wait = Delay;
+
+ /* Add a freq to guarantee minimum wait */
+ if (wait < HAL_MAX_DELAY)
+ 8000ce4: 1c63 adds r3, r4, #1
+ {
+ wait += (uint32_t)(uwTickFreq);
+ 8000ce6: bf1c itt ne
+ 8000ce8: 4b05 ldrne r3, [pc, #20] ; (8000d00 )
+ 8000cea: 781b ldrbne r3, [r3, #0]
+ uint32_t tickstart = HAL_GetTick();
+ 8000cec: 4605 mov r5, r0
+ wait += (uint32_t)(uwTickFreq);
+ 8000cee: bf18 it ne
+ 8000cf0: 18e4 addne r4, r4, r3
+ }
+
+ while((HAL_GetTick() - tickstart) < wait)
+ 8000cf2: f7ff ffed bl 8000cd0
+ 8000cf6: 1b40 subs r0, r0, r5
+ 8000cf8: 4284 cmp r4, r0
+ 8000cfa: d8fa bhi.n 8000cf2
+ {
+ }
+}
+ 8000cfc: bd38 pop {r3, r4, r5, pc}
+ 8000cfe: bf00 nop
+ 8000d00: 2000007c .word 0x2000007c
+
+08000d04 :
+__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 */
+ 8000d04: 4a07 ldr r2, [pc, #28] ; (8000d24 )
+ 8000d06: 68d3 ldr r3, [r2, #12]
+ reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */
+ 8000d08: f423 63e0 bic.w r3, r3, #1792 ; 0x700
+ 8000d0c: 041b lsls r3, r3, #16
+ 8000d0e: 0c1b lsrs r3, r3, #16
+ 8000d10: f043 63bf orr.w r3, r3, #100139008 ; 0x5f80000
+ reg_value = (reg_value |
+ ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
+ (PriorityGroupTmp << 8U) ); /* Insert write key and priorty group */
+ 8000d14: 0200 lsls r0, r0, #8
+ 8000d16: f443 3300 orr.w r3, r3, #131072 ; 0x20000
+ 8000d1a: f400 60e0 and.w r0, r0, #1792 ; 0x700
+ reg_value = (reg_value |
+ 8000d1e: 4303 orrs r3, r0
+ SCB->AIRCR = reg_value;
+ 8000d20: 60d3 str r3, [r2, #12]
+ 8000d22: 4770 bx lr
+ 8000d24: e000ed00 .word 0xe000ed00
+
+08000d28 :
+ \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));
+ 8000d28: 4b17 ldr r3, [pc, #92] ; (8000d88 )
+ * This parameter can be a value between 0 and 15
+ * A lower priority value indicates a higher priority.
+ * @retval None
+ */
+void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)
+{
+ 8000d2a: b530 push {r4, r5, lr}
+ 8000d2c: 68dc ldr r4, [r3, #12]
+ 8000d2e: f3c4 2402 ubfx r4, r4, #8, #3
+{
+ 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);
+ 8000d32: f1c4 0307 rsb r3, r4, #7
+ SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));
+ 8000d36: 1d25 adds r5, r4, #4
+ PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);
+ 8000d38: 2b04 cmp r3, #4
+ 8000d3a: bf28 it cs
+ 8000d3c: 2304 movcs r3, #4
+ SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));
+ 8000d3e: 2d06 cmp r5, #6
+
+ return (
+ ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |
+ 8000d40: f04f 0501 mov.w r5, #1
+ 8000d44: fa05 f303 lsl.w r3, r5, r3
+ 8000d48: f103 33ff add.w r3, r3, #4294967295
+ SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));
+ 8000d4c: bf8c ite hi
+ 8000d4e: 3c03 subhi r4, #3
+ 8000d50: 2400 movls r4, #0
+ ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |
+ 8000d52: 4019 ands r1, r3
+ 8000d54: 40a1 lsls r1, r4
+ ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL)))
+ 8000d56: fa05 f404 lsl.w r4, r5, r4
+ 8000d5a: 3c01 subs r4, #1
+ 8000d5c: 4022 ands r2, r4
+ if ((int32_t)(IRQn) < 0)
+ 8000d5e: 2800 cmp r0, #0
+ ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |
+ 8000d60: ea42 0201 orr.w r2, r2, r1
+ 8000d64: ea4f 1202 mov.w r2, r2, lsl #4
+ NVIC->IP[((uint32_t)(int32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
+ 8000d68: bfaf iteee ge
+ 8000d6a: f100 4060 addge.w r0, r0, #3758096384 ; 0xe0000000
+ SCB->SHP[(((uint32_t)(int32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
+ 8000d6e: f000 000f andlt.w r0, r0, #15
+ 8000d72: 4b06 ldrlt r3, [pc, #24] ; (8000d8c )
+ 8000d74: b2d2 uxtblt r2, r2
+ NVIC->IP[((uint32_t)(int32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
+ 8000d76: bfa5 ittet ge
+ 8000d78: f500 4061 addge.w r0, r0, #57600 ; 0xe100
+ 8000d7c: b2d2 uxtbge r2, r2
+ SCB->SHP[(((uint32_t)(int32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
+ 8000d7e: 541a strblt r2, [r3, r0]
+ NVIC->IP[((uint32_t)(int32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
+ 8000d80: f880 2300 strbge.w r2, [r0, #768] ; 0x300
+ 8000d84: bd30 pop {r4, r5, pc}
+ 8000d86: bf00 nop
+ 8000d88: e000ed00 .word 0xe000ed00
+ 8000d8c: e000ed14 .word 0xe000ed14
+
+08000d90 :
+ NVIC->ISER[(((uint32_t)(int32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
+ 8000d90: 0942 lsrs r2, r0, #5
+ 8000d92: 2301 movs r3, #1
+ 8000d94: f000 001f and.w r0, r0, #31
+ 8000d98: fa03 f000 lsl.w r0, r3, r0
+ 8000d9c: 4b01 ldr r3, [pc, #4] ; (8000da4 )
+ 8000d9e: f843 0022 str.w r0, [r3, r2, lsl #2]
+ 8000da2: 4770 bx lr
+ 8000da4: e000e100 .word 0xe000e100
+
+08000da8 :
+ 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)
+ 8000da8: 3801 subs r0, #1
+ 8000daa: f1b0 7f80 cmp.w r0, #16777216 ; 0x1000000
+ 8000dae: d20a bcs.n 8000dc6
+ {
+ return (1UL); /* Reload value impossible */
+ }
+
+ SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */
+ 8000db0: 4b06 ldr r3, [pc, #24] ; (8000dcc )
+ SCB->SHP[(((uint32_t)(int32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
+ 8000db2: 4a07 ldr r2, [pc, #28] ; (8000dd0 )
+ SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */
+ 8000db4: 6058 str r0, [r3, #4]
+ SCB->SHP[(((uint32_t)(int32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
+ 8000db6: 21f0 movs r1, #240 ; 0xf0
+ 8000db8: f882 1023 strb.w r1, [r2, #35] ; 0x23
+ NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */
+ SysTick->VAL = 0UL; /* Load the SysTick Counter Value */
+ 8000dbc: 2000 movs r0, #0
+ SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |
+ 8000dbe: 2207 movs r2, #7
+ SysTick->VAL = 0UL; /* Load the SysTick Counter Value */
+ 8000dc0: 6098 str r0, [r3, #8]
+ SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |
+ 8000dc2: 601a str r2, [r3, #0]
+ 8000dc4: 4770 bx lr
+ return (1UL); /* Reload value impossible */
+ 8000dc6: 2001 movs r0, #1
+ * - 1 Function failed.
+ */
+uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb)
+{
+ return SysTick_Config(TicksNumb);
+}
+ 8000dc8: 4770 bx lr
+ 8000dca: bf00 nop
+ 8000dcc: e000e010 .word 0xe000e010
+ 8000dd0: e000ed00 .word 0xe000ed00
+
+08000dd4 :
+ * @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)
+{
+ 8000dd4: 4b04 ldr r3, [pc, #16] ; (8000de8 )
+ /* Check the parameters */
+ assert_param(IS_SYSTICK_CLK_SOURCE(CLKSource));
+ if (CLKSource == SYSTICK_CLKSOURCE_HCLK)
+ {
+ SysTick->CTRL |= SYSTICK_CLKSOURCE_HCLK;
+ 8000dd6: 681a ldr r2, [r3, #0]
+ if (CLKSource == SYSTICK_CLKSOURCE_HCLK)
+ 8000dd8: 2804 cmp r0, #4
+ SysTick->CTRL |= SYSTICK_CLKSOURCE_HCLK;
+ 8000dda: bf0c ite eq
+ 8000ddc: f042 0204 orreq.w r2, r2, #4
+ }
+ else
+ {
+ SysTick->CTRL &= ~SYSTICK_CLKSOURCE_HCLK;
+ 8000de0: f022 0204 bicne.w r2, r2, #4
+ 8000de4: 601a str r2, [r3, #0]
+ 8000de6: 4770 bx lr
+ 8000de8: e000e010 .word 0xe000e010
+
+08000dec :
+ * @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)
+{
+ 8000dec: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ 8000df0: b085 sub sp, #20
+ for(position = 0U; position < GPIO_NUMBER; position++)
+ {
+ /* Get the IO position */
+ ioposition = 0x01U << position;
+ /* Get the current IO position */
+ iocurrent = (uint32_t)(GPIO_Init->Pin) & ioposition;
+ 8000df2: 680b ldr r3, [r1, #0]
+ /*--------------------- EXTI Mode Configuration ------------------------*/
+ /* Configure the External Interrupt or event for the current IO */
+ if((GPIO_Init->Mode & EXTI_MODE) == EXTI_MODE)
+ {
+ /* Enable SYSCFG Clock */
+ __HAL_RCC_SYSCFG_CLK_ENABLE();
+ 8000df4: f8df 81ac ldr.w r8, [pc, #428] ; 8000fa4
+ temp &= ~(0x0FU << (4U * (position & 0x03U)));
+ temp |= ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4U * (position & 0x03U)));
+ SYSCFG->EXTICR[position >> 2U] = temp;
+
+ /* Clear EXTI line configuration */
+ temp = EXTI->IMR;
+ 8000df8: 4a68 ldr r2, [pc, #416] ; (8000f9c )
+ temp |= ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4U * (position & 0x03U)));
+ 8000dfa: f8df 91ac ldr.w r9, [pc, #428] ; 8000fa8
+ iocurrent = (uint32_t)(GPIO_Init->Pin) & ioposition;
+ 8000dfe: 9301 str r3, [sp, #4]
+ for(position = 0U; position < GPIO_NUMBER; position++)
+ 8000e00: 2300 movs r3, #0
+ ioposition = 0x01U << position;
+ 8000e02: f04f 0e01 mov.w lr, #1
+ iocurrent = (uint32_t)(GPIO_Init->Pin) & ioposition;
+ 8000e06: 9c01 ldr r4, [sp, #4]
+ ioposition = 0x01U << position;
+ 8000e08: fa0e fe03 lsl.w lr, lr, r3
+ iocurrent = (uint32_t)(GPIO_Init->Pin) & ioposition;
+ 8000e0c: ea0e 0604 and.w r6, lr, r4
+ if(iocurrent == ioposition)
+ 8000e10: 45b6 cmp lr, r6
+ 8000e12: f040 80ae bne.w 8000f72
+ if((GPIO_Init->Mode == GPIO_MODE_AF_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_OD))
+ 8000e16: 684c ldr r4, [r1, #4]
+ 8000e18: f024 0710 bic.w r7, r4, #16
+ 8000e1c: 2f02 cmp r7, #2
+ 8000e1e: d116 bne.n 8000e4e
+ temp = GPIOx->AFR[position >> 3U];
+ 8000e20: ea4f 0ad3 mov.w sl, r3, lsr #3
+ 8000e24: eb00 0a8a add.w sl, r0, sl, lsl #2
+ temp &= ~(0xFU << ((uint32_t)(position & 0x07U) * 4U)) ;
+ 8000e28: f003 0b07 and.w fp, r3, #7
+ temp = GPIOx->AFR[position >> 3U];
+ 8000e2c: f8da 5020 ldr.w r5, [sl, #32]
+ temp &= ~(0xFU << ((uint32_t)(position & 0x07U) * 4U)) ;
+ 8000e30: ea4f 0b8b mov.w fp, fp, lsl #2
+ 8000e34: f04f 0c0f mov.w ip, #15
+ 8000e38: fa0c fc0b lsl.w ip, ip, fp
+ 8000e3c: ea25 0c0c bic.w ip, r5, ip
+ temp |= ((uint32_t)(GPIO_Init->Alternate) << (((uint32_t)position & 0x07U) * 4U));
+ 8000e40: 690d ldr r5, [r1, #16]
+ 8000e42: fa05 f50b lsl.w r5, r5, fp
+ 8000e46: ea45 050c orr.w r5, r5, ip
+ GPIOx->AFR[position >> 3U] = temp;
+ 8000e4a: f8ca 5020 str.w r5, [sl, #32]
+ 8000e4e: ea4f 0a43 mov.w sl, r3, lsl #1
+ temp &= ~(GPIO_MODER_MODER0 << (position * 2U));
+ 8000e52: 2503 movs r5, #3
+ temp = GPIOx->MODER;
+ 8000e54: f8d0 b000 ldr.w fp, [r0]
+ temp &= ~(GPIO_MODER_MODER0 << (position * 2U));
+ 8000e58: fa05 f50a lsl.w r5, r5, sl
+ 8000e5c: 43ed mvns r5, r5
+ temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2U));
+ 8000e5e: f004 0c03 and.w ip, r4, #3
+ temp &= ~(GPIO_MODER_MODER0 << (position * 2U));
+ 8000e62: ea0b 0b05 and.w fp, fp, r5
+ temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2U));
+ 8000e66: fa0c fc0a lsl.w ip, ip, sl
+ if((GPIO_Init->Mode == GPIO_MODE_OUTPUT_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_PP) ||
+ 8000e6a: 3f01 subs r7, #1
+ temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2U));
+ 8000e6c: ea4c 0c0b orr.w ip, ip, fp
+ if((GPIO_Init->Mode == GPIO_MODE_OUTPUT_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_PP) ||
+ 8000e70: 2f01 cmp r7, #1
+ GPIOx->MODER = temp;
+ 8000e72: f8c0 c000 str.w ip, [r0]
+ if((GPIO_Init->Mode == GPIO_MODE_OUTPUT_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_PP) ||
+ 8000e76: d811 bhi.n 8000e9c
+ temp = GPIOx->OSPEEDR;
+ 8000e78: 6887 ldr r7, [r0, #8]
+ temp &= ~(GPIO_OSPEEDER_OSPEEDR0 << (position * 2U));
+ 8000e7a: ea07 0b05 and.w fp, r7, r5
+ temp |= (GPIO_Init->Speed << (position * 2U));
+ 8000e7e: 68cf ldr r7, [r1, #12]
+ 8000e80: fa07 fc0a lsl.w ip, r7, sl
+ 8000e84: ea4c 070b orr.w r7, ip, fp
+ GPIOx->OSPEEDR = temp;
+ 8000e88: 6087 str r7, [r0, #8]
+ temp = GPIOx->OTYPER;
+ 8000e8a: 6847 ldr r7, [r0, #4]
+ temp &= ~(GPIO_OTYPER_OT_0 << position) ;
+ 8000e8c: ea27 0e0e bic.w lr, r7, lr
+ temp |= (((GPIO_Init->Mode & GPIO_OUTPUT_TYPE) >> 4U) << position);
+ 8000e90: f3c4 1700 ubfx r7, r4, #4, #1
+ 8000e94: 409f lsls r7, r3
+ 8000e96: ea47 070e orr.w r7, r7, lr
+ GPIOx->OTYPER = temp;
+ 8000e9a: 6047 str r7, [r0, #4]
+ temp = GPIOx->PUPDR;
+ 8000e9c: 68c7 ldr r7, [r0, #12]
+ temp &= ~(GPIO_PUPDR_PUPDR0 << (position * 2U));
+ 8000e9e: 403d ands r5, r7
+ temp |= ((GPIO_Init->Pull) << (position * 2U));
+ 8000ea0: 688f ldr r7, [r1, #8]
+ 8000ea2: fa07 f70a lsl.w r7, r7, sl
+ 8000ea6: 433d orrs r5, r7
+ GPIOx->PUPDR = temp;
+ 8000ea8: 60c5 str r5, [r0, #12]
+ if((GPIO_Init->Mode & EXTI_MODE) == EXTI_MODE)
+ 8000eaa: 00e5 lsls r5, r4, #3
+ 8000eac: d561 bpl.n 8000f72
+ __HAL_RCC_SYSCFG_CLK_ENABLE();
+ 8000eae: f04f 0b00 mov.w fp, #0
+ 8000eb2: f8cd b00c str.w fp, [sp, #12]
+ 8000eb6: f8d8 7044 ldr.w r7, [r8, #68] ; 0x44
+ temp |= ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4U * (position & 0x03U)));
+ 8000eba: 4d39 ldr r5, [pc, #228] ; (8000fa0 )
+ __HAL_RCC_SYSCFG_CLK_ENABLE();
+ 8000ebc: f447 4780 orr.w r7, r7, #16384 ; 0x4000
+ 8000ec0: f8c8 7044 str.w r7, [r8, #68] ; 0x44
+ 8000ec4: f8d8 7044 ldr.w r7, [r8, #68] ; 0x44
+ 8000ec8: f407 4780 and.w r7, r7, #16384 ; 0x4000
+ 8000ecc: 9703 str r7, [sp, #12]
+ 8000ece: 9f03 ldr r7, [sp, #12]
+ 8000ed0: f023 0703 bic.w r7, r3, #3
+ 8000ed4: f107 4780 add.w r7, r7, #1073741824 ; 0x40000000
+ 8000ed8: f507 379c add.w r7, r7, #79872 ; 0x13800
+ temp &= ~(0x0FU << (4U * (position & 0x03U)));
+ 8000edc: f003 0c03 and.w ip, r3, #3
+ temp = SYSCFG->EXTICR[position >> 2U];
+ 8000ee0: f8d7 a008 ldr.w sl, [r7, #8]
+ temp &= ~(0x0FU << (4U * (position & 0x03U)));
+ 8000ee4: ea4f 0c8c mov.w ip, ip, lsl #2
+ 8000ee8: f04f 0e0f mov.w lr, #15
+ 8000eec: fa0e fe0c lsl.w lr, lr, ip
+ temp |= ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4U * (position & 0x03U)));
+ 8000ef0: 42a8 cmp r0, r5
+ temp &= ~(0x0FU << (4U * (position & 0x03U)));
+ 8000ef2: ea2a 0e0e bic.w lr, sl, lr
+ temp |= ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4U * (position & 0x03U)));
+ 8000ef6: d043 beq.n 8000f80
+ 8000ef8: f505 6580 add.w r5, r5, #1024 ; 0x400
+ 8000efc: 42a8 cmp r0, r5
+ 8000efe: d041 beq.n 8000f84
+ 8000f00: f505 6580 add.w r5, r5, #1024 ; 0x400
+ 8000f04: 42a8 cmp r0, r5
+ 8000f06: d03f beq.n 8000f88
+ 8000f08: f505 6580 add.w r5, r5, #1024 ; 0x400
+ 8000f0c: 42a8 cmp r0, r5
+ 8000f0e: d03d beq.n 8000f8c
+ 8000f10: f505 6580 add.w r5, r5, #1024 ; 0x400
+ 8000f14: 42a8 cmp r0, r5
+ 8000f16: d03b beq.n 8000f90
+ 8000f18: 4548 cmp r0, r9
+ 8000f1a: d03b beq.n 8000f94
+ 8000f1c: f505 6500 add.w r5, r5, #2048 ; 0x800
+ 8000f20: 42a8 cmp r0, r5
+ 8000f22: d039 beq.n 8000f98
+ 8000f24: f505 6580 add.w r5, r5, #1024 ; 0x400
+ 8000f28: 42a8 cmp r0, r5
+ 8000f2a: bf14 ite ne
+ 8000f2c: 2508 movne r5, #8
+ 8000f2e: 2507 moveq r5, #7
+ 8000f30: fa05 f50c lsl.w r5, r5, ip
+ 8000f34: ea45 050e orr.w r5, r5, lr
+ SYSCFG->EXTICR[position >> 2U] = temp;
+ 8000f38: 60bd str r5, [r7, #8]
+ temp = EXTI->IMR;
+ 8000f3a: 6815 ldr r5, [r2, #0]
+ temp &= ~((uint32_t)iocurrent);
+ 8000f3c: 43f7 mvns r7, r6
+ if((GPIO_Init->Mode & GPIO_MODE_IT) == GPIO_MODE_IT)
+ 8000f3e: f414 3f80 tst.w r4, #65536 ; 0x10000
+ temp &= ~((uint32_t)iocurrent);
+ 8000f42: bf0c ite eq
+ 8000f44: 403d andeq r5, r7
+ {
+ temp |= iocurrent;
+ 8000f46: 4335 orrne r5, r6
+ }
+ EXTI->IMR = temp;
+ 8000f48: 6015 str r5, [r2, #0]
+
+ temp = EXTI->EMR;
+ 8000f4a: 6855 ldr r5, [r2, #4]
+ temp &= ~((uint32_t)iocurrent);
+ if((GPIO_Init->Mode & GPIO_MODE_EVT) == GPIO_MODE_EVT)
+ 8000f4c: f414 3f00 tst.w r4, #131072 ; 0x20000
+ temp &= ~((uint32_t)iocurrent);
+ 8000f50: bf0c ite eq
+ 8000f52: 403d andeq r5, r7
+ {
+ temp |= iocurrent;
+ 8000f54: 4335 orrne r5, r6
+ }
+ EXTI->EMR = temp;
+ 8000f56: 6055 str r5, [r2, #4]
+
+ /* Clear Rising Falling edge configuration */
+ temp = EXTI->RTSR;
+ 8000f58: 6895 ldr r5, [r2, #8]
+ temp &= ~((uint32_t)iocurrent);
+ if((GPIO_Init->Mode & RISING_EDGE) == RISING_EDGE)
+ 8000f5a: f414 1f80 tst.w r4, #1048576 ; 0x100000
+ temp &= ~((uint32_t)iocurrent);
+ 8000f5e: bf0c ite eq
+ 8000f60: 403d andeq r5, r7
+ {
+ temp |= iocurrent;
+ 8000f62: 4335 orrne r5, r6
+ }
+ EXTI->RTSR = temp;
+ 8000f64: 6095 str r5, [r2, #8]
+
+ temp = EXTI->FTSR;
+ 8000f66: 68d5 ldr r5, [r2, #12]
+ temp &= ~((uint32_t)iocurrent);
+ if((GPIO_Init->Mode & FALLING_EDGE) == FALLING_EDGE)
+ 8000f68: 02a4 lsls r4, r4, #10
+ temp &= ~((uint32_t)iocurrent);
+ 8000f6a: bf54 ite pl
+ 8000f6c: 403d andpl r5, r7
+ {
+ temp |= iocurrent;
+ 8000f6e: 4335 orrmi r5, r6
+ }
+ EXTI->FTSR = temp;
+ 8000f70: 60d5 str r5, [r2, #12]
+ for(position = 0U; position < GPIO_NUMBER; position++)
+ 8000f72: 3301 adds r3, #1
+ 8000f74: 2b10 cmp r3, #16
+ 8000f76: f47f af44 bne.w 8000e02
+ }
+ }
+ }
+}
+ 8000f7a: b005 add sp, #20
+ 8000f7c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+ temp |= ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4U * (position & 0x03U)));
+ 8000f80: 465d mov r5, fp
+ 8000f82: e7d5 b.n 8000f30
+ 8000f84: 2501 movs r5, #1
+ 8000f86: e7d3 b.n 8000f30
+ 8000f88: 2502 movs r5, #2
+ 8000f8a: e7d1 b.n 8000f30
+ 8000f8c: 2503 movs r5, #3
+ 8000f8e: e7cf b.n 8000f30
+ 8000f90: 2504 movs r5, #4
+ 8000f92: e7cd b.n 8000f30
+ 8000f94: 2505 movs r5, #5
+ 8000f96: e7cb b.n 8000f30
+ 8000f98: 2506 movs r5, #6
+ 8000f9a: e7c9 b.n 8000f30
+ 8000f9c: 40013c00 .word 0x40013c00
+ 8000fa0: 40020000 .word 0x40020000
+ 8000fa4: 40023800 .word 0x40023800
+ 8000fa8: 40021400 .word 0x40021400
+
+08000fac :
+ * @param GPIO_Pin specifies the port bit to be written.
+ * This parameter can be one of GPIO_PIN_x where x can be (0..15).
+ * @retval None
+ */
+void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin)
+{
+ 8000fac: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ /* Configure the External Interrupt or event for the current IO */
+ tmp = 0x0FU << (4U * (position & 0x03U));
+ SYSCFG->EXTICR[position >> 2U] &= ~tmp;
+
+ /* Clear EXTI line configuration */
+ EXTI->IMR &= ~((uint32_t)iocurrent);
+ 8000fb0: 4e46 ldr r6, [pc, #280] ; (80010cc )
+ if(tmp == ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4U * (position & 0x03U))))
+ 8000fb2: f8df a120 ldr.w sl, [pc, #288] ; 80010d4
+ 8000fb6: f8df b120 ldr.w fp, [pc, #288] ; 80010d8
+ for(position = 0U; position < GPIO_NUMBER; position++)
+ 8000fba: 2400 movs r4, #0
+ ioposition = 0x01U << position;
+ 8000fbc: f04f 0901 mov.w r9, #1
+ 8000fc0: fa09 f204 lsl.w r2, r9, r4
+ if(iocurrent == ioposition)
+ 8000fc4: ea32 0301 bics.w r3, r2, r1
+ 8000fc8: d16c bne.n 80010a4
+ GPIOx->MODER &= ~(GPIO_MODER_MODER0 << (position * 2U));
+ 8000fca: 2303 movs r3, #3
+ 8000fcc: fa04 f509 lsl.w r5, r4, r9
+ 8000fd0: 6807 ldr r7, [r0, #0]
+ 8000fd2: fa03 f505 lsl.w r5, r3, r5
+ 8000fd6: 43ed mvns r5, r5
+ GPIOx->AFR[position >> 3U] &= ~(0xFU << ((uint32_t)(position & 0x07U) * 4U)) ;
+ 8000fd8: fa24 fc03 lsr.w ip, r4, r3
+ GPIOx->MODER &= ~(GPIO_MODER_MODER0 << (position * 2U));
+ 8000fdc: 402f ands r7, r5
+ 8000fde: eb00 0c8c add.w ip, r0, ip, lsl #2
+ 8000fe2: 6007 str r7, [r0, #0]
+ GPIOx->AFR[position >> 3U] &= ~(0xFU << ((uint32_t)(position & 0x07U) * 4U)) ;
+ 8000fe4: f004 0e07 and.w lr, r4, #7
+ 8000fe8: f8dc 8020 ldr.w r8, [ip, #32]
+ 8000fec: 270f movs r7, #15
+ 8000fee: ea4f 0e8e mov.w lr, lr, lsl #2
+ 8000ff2: fa07 fe0e lsl.w lr, r7, lr
+ 8000ff6: ea28 0e0e bic.w lr, r8, lr
+ 8000ffa: f8cc e020 str.w lr, [ip, #32]
+ GPIOx->OSPEEDR &= ~(GPIO_OSPEEDER_OSPEEDR0 << (position * 2U));
+ 8000ffe: f8d0 e008 ldr.w lr, [r0, #8]
+ 8001002: ea05 0e0e and.w lr, r5, lr
+ 8001006: f8c0 e008 str.w lr, [r0, #8]
+ GPIOx->OTYPER &= ~(GPIO_OTYPER_OT_0 << position) ;
+ 800100a: f8d0 e004 ldr.w lr, [r0, #4]
+ 800100e: 43d2 mvns r2, r2
+ 8001010: ea02 0e0e and.w lr, r2, lr
+ 8001014: f8c0 e004 str.w lr, [r0, #4]
+ GPIOx->PUPDR &= ~(GPIO_PUPDR_PUPDR0 << (position * 2U));
+ 8001018: f8d0 e00c ldr.w lr, [r0, #12]
+ 800101c: ea05 050e and.w r5, r5, lr
+ 8001020: 60c5 str r5, [r0, #12]
+ 8001022: f024 0503 bic.w r5, r4, #3
+ 8001026: f105 4580 add.w r5, r5, #1073741824 ; 0x40000000
+ 800102a: f505 359c add.w r5, r5, #79872 ; 0x13800
+ tmp &= (0x0FU << (4U * (position & 0x03U)));
+ 800102e: ea04 0e03 and.w lr, r4, r3
+ if(tmp == ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4U * (position & 0x03U))))
+ 8001032: 4b27 ldr r3, [pc, #156] ; (80010d0 )
+ tmp = SYSCFG->EXTICR[position >> 2U];
+ 8001034: f8d5 c008 ldr.w ip, [r5, #8]
+ tmp &= (0x0FU << (4U * (position & 0x03U)));
+ 8001038: ea4f 0e8e mov.w lr, lr, lsl #2
+ 800103c: fa07 f70e lsl.w r7, r7, lr
+ if(tmp == ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4U * (position & 0x03U))))
+ 8001040: 4298 cmp r0, r3
+ tmp &= (0x0FU << (4U * (position & 0x03U)));
+ 8001042: ea0c 0c07 and.w ip, ip, r7
+ if(tmp == ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4U * (position & 0x03U))))
+ 8001046: d032 beq.n 80010ae
+ 8001048: f503 6380 add.w r3, r3, #1024 ; 0x400
+ 800104c: 4298 cmp r0, r3
+ 800104e: d030 beq.n 80010b2
+ 8001050: f503 6380 add.w r3, r3, #1024 ; 0x400
+ 8001054: 4298 cmp r0, r3
+ 8001056: d02e beq.n 80010b6
+ 8001058: f503 6380 add.w r3, r3, #1024 ; 0x400
+ 800105c: 4298 cmp r0, r3
+ 800105e: d02c beq.n 80010ba
+ 8001060: f503 6380 add.w r3, r3, #1024 ; 0x400
+ 8001064: 4298 cmp r0, r3
+ 8001066: d02a beq.n 80010be
+ 8001068: f503 6380 add.w r3, r3, #1024 ; 0x400
+ 800106c: 4298 cmp r0, r3
+ 800106e: d028 beq.n 80010c2
+ 8001070: 4550 cmp r0, sl
+ 8001072: d028 beq.n 80010c6
+ 8001074: 4558 cmp r0, fp
+ 8001076: bf0c ite eq
+ 8001078: 2307 moveq r3, #7
+ 800107a: 2308 movne r3, #8
+ 800107c: fa03 f30e lsl.w r3, r3, lr
+ 8001080: 459c cmp ip, r3
+ 8001082: d10f bne.n 80010a4
+ SYSCFG->EXTICR[position >> 2U] &= ~tmp;
+ 8001084: 68ab ldr r3, [r5, #8]
+ 8001086: ea23 0707 bic.w r7, r3, r7
+ 800108a: 60af str r7, [r5, #8]
+ EXTI->IMR &= ~((uint32_t)iocurrent);
+ 800108c: 6833 ldr r3, [r6, #0]
+ 800108e: 4013 ands r3, r2
+ 8001090: 6033 str r3, [r6, #0]
+ EXTI->EMR &= ~((uint32_t)iocurrent);
+ 8001092: 6873 ldr r3, [r6, #4]
+ 8001094: 4013 ands r3, r2
+ 8001096: 6073 str r3, [r6, #4]
+
+ /* Clear Rising Falling edge configuration */
+ EXTI->RTSR &= ~((uint32_t)iocurrent);
+ 8001098: 68b3 ldr r3, [r6, #8]
+ 800109a: 4013 ands r3, r2
+ 800109c: 60b3 str r3, [r6, #8]
+ EXTI->FTSR &= ~((uint32_t)iocurrent);
+ 800109e: 68f3 ldr r3, [r6, #12]
+ 80010a0: 401a ands r2, r3
+ 80010a2: 60f2 str r2, [r6, #12]
+ for(position = 0U; position < GPIO_NUMBER; position++)
+ 80010a4: 3401 adds r4, #1
+ 80010a6: 2c10 cmp r4, #16
+ 80010a8: d188 bne.n 8000fbc
+ }
+ }
+ }
+}
+ 80010aa: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
+ if(tmp == ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4U * (position & 0x03U))))
+ 80010ae: 2300 movs r3, #0
+ 80010b0: e7e4 b.n 800107c
+ 80010b2: 464b mov r3, r9
+ 80010b4: e7e2 b.n 800107c
+ 80010b6: 2302 movs r3, #2
+ 80010b8: e7e0 b.n 800107c
+ 80010ba: 2303 movs r3, #3
+ 80010bc: e7de b.n 800107c
+ 80010be: 2304 movs r3, #4
+ 80010c0: e7dc b.n 800107c
+ 80010c2: 2305 movs r3, #5
+ 80010c4: e7da b.n 800107c
+ 80010c6: 2306 movs r3, #6
+ 80010c8: e7d8 b.n 800107c
+ 80010ca: bf00 nop
+ 80010cc: 40013c00 .word 0x40013c00
+ 80010d0: 40020000 .word 0x40020000
+ 80010d4: 40021800 .word 0x40021800
+ 80010d8: 40021c00 .word 0x40021c00
+
+080010dc :
+{
+ /* Check the parameters */
+ assert_param(IS_GPIO_PIN(GPIO_Pin));
+ assert_param(IS_GPIO_PIN_ACTION(PinState));
+
+ if(PinState != GPIO_PIN_RESET)
+ 80010dc: b10a cbz r2, 80010e2
+ {
+ GPIOx->BSRR = GPIO_Pin;
+ }
+ else
+ {
+ GPIOx->BSRR = (uint32_t)GPIO_Pin << 16U;
+ 80010de: 6181 str r1, [r0, #24]
+ 80010e0: 4770 bx lr
+ 80010e2: 0409 lsls r1, r1, #16
+ 80010e4: e7fb b.n 80010de
+ ...
+
+080010e8 :
+ * @param hi2c pointer to a I2C_HandleTypeDef structure that contains
+ * the configuration information for I2C module
+ * @retval HAL status
+ */
+HAL_StatusTypeDef HAL_I2C_Init(I2C_HandleTypeDef *hi2c)
+{
+ 80010e8: b570 push {r4, r5, r6, lr}
+ uint32_t freqrange = 0U;
+ uint32_t pclk1 = 0U;
+
+ /* Check the I2C handle allocation */
+ if(hi2c == NULL)
+ 80010ea: 4604 mov r4, r0
+ 80010ec: 2800 cmp r0, #0
+ 80010ee: d062 beq.n 80011b6
+ assert_param(IS_I2C_DUAL_ADDRESS(hi2c->Init.DualAddressMode));
+ assert_param(IS_I2C_OWN_ADDRESS2(hi2c->Init.OwnAddress2));
+ 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)
+ 80010f0: f890 303d ldrb.w r3, [r0, #61] ; 0x3d
+ 80010f4: f003 02ff and.w r2, r3, #255 ; 0xff
+ 80010f8: b91b cbnz r3, 8001102
+ {
+ /* Allocate lock resource and initialize it */
+ hi2c->Lock = HAL_UNLOCKED;
+ 80010fa: f880 203c strb.w r2, [r0, #60] ; 0x3c
+ /* Init the low level hardware : GPIO, CLOCK, NVIC */
+ HAL_I2C_MspInit(hi2c);
+ 80010fe: f004 fd3d bl 8005b7c
+ }
+
+ hi2c->State = HAL_I2C_STATE_BUSY;
+
+ /* Disable the selected I2C peripheral */
+ __HAL_I2C_DISABLE(hi2c);
+ 8001102: 6822 ldr r2, [r4, #0]
+ /* Configure I2Cx: Frequency range */
+ hi2c->Instance->CR2 = freqrange;
+
+ /*---------------------------- I2Cx TRISE Configuration --------------------*/
+ /* Configure I2Cx: Rise Time */
+ hi2c->Instance->TRISE = I2C_RISE_TIME(freqrange, hi2c->Init.ClockSpeed);
+ 8001104: 4e2d ldr r6, [pc, #180] ; (80011bc )
+ freqrange = I2C_FREQRANGE(pclk1);
+ 8001106: 4d2e ldr r5, [pc, #184] ; (80011c0 )
+ hi2c->State = HAL_I2C_STATE_BUSY;
+ 8001108: 2324 movs r3, #36 ; 0x24
+ 800110a: f884 303d strb.w r3, [r4, #61] ; 0x3d
+ __HAL_I2C_DISABLE(hi2c);
+ 800110e: 6813 ldr r3, [r2, #0]
+ 8001110: f023 0301 bic.w r3, r3, #1
+ 8001114: 6013 str r3, [r2, #0]
+ pclk1 = HAL_RCC_GetPCLK1Freq();
+ 8001116: f001 f93f bl 8002398
+ hi2c->Instance->TRISE = I2C_RISE_TIME(freqrange, hi2c->Init.ClockSpeed);
+ 800111a: 6863 ldr r3, [r4, #4]
+ hi2c->Instance->CR2 = freqrange;
+ 800111c: 6822 ldr r2, [r4, #0]
+ freqrange = I2C_FREQRANGE(pclk1);
+ 800111e: fbb0 f5f5 udiv r5, r0, r5
+ hi2c->Instance->TRISE = I2C_RISE_TIME(freqrange, hi2c->Init.ClockSpeed);
+ 8001122: 42b3 cmp r3, r6
+ 8001124: bf84 itt hi
+ 8001126: f44f 7196 movhi.w r1, #300 ; 0x12c
+ 800112a: 4369 mulhi r1, r5
+ hi2c->Instance->CR2 = freqrange;
+ 800112c: 6055 str r5, [r2, #4]
+ hi2c->Instance->TRISE = I2C_RISE_TIME(freqrange, hi2c->Init.ClockSpeed);
+ 800112e: bf91 iteee ls
+ 8001130: 1c69 addls r1, r5, #1
+ 8001132: f44f 757a movhi.w r5, #1000 ; 0x3e8
+ 8001136: fbb1 f1f5 udivhi r1, r1, r5
+ 800113a: 3101 addhi r1, #1
+
+ /*---------------------------- I2Cx CCR Configuration ----------------------*/
+ /* Configure I2Cx: Speed */
+ hi2c->Instance->CCR = I2C_SPEED(pclk1, hi2c->Init.ClockSpeed, hi2c->Init.DutyCycle);
+ 800113c: 42b3 cmp r3, r6
+ hi2c->Instance->TRISE = I2C_RISE_TIME(freqrange, hi2c->Init.ClockSpeed);
+ 800113e: 6211 str r1, [r2, #32]
+ hi2c->Instance->CCR = I2C_SPEED(pclk1, hi2c->Init.ClockSpeed, hi2c->Init.DutyCycle);
+ 8001140: d821 bhi.n 8001186
+ 8001142: 005b lsls r3, r3, #1
+ 8001144: fbb0 f0f3 udiv r0, r0, r3
+ 8001148: f3c0 030b ubfx r3, r0, #0, #12
+ 800114c: 2b03 cmp r3, #3
+ 800114e: bf98 it ls
+ 8001150: 2004 movls r0, #4
+
+ /*---------------------------- I2Cx CR1 Configuration ----------------------*/
+ /* Configure I2Cx: Generalcall and NoStretch mode */
+ hi2c->Instance->CR1 = (hi2c->Init.GeneralCallMode | hi2c->Init.NoStretchMode);
+ 8001152: 6a21 ldr r1, [r4, #32]
+ 8001154: 69e3 ldr r3, [r4, #28]
+ hi2c->Instance->CCR = I2C_SPEED(pclk1, hi2c->Init.ClockSpeed, hi2c->Init.DutyCycle);
+ 8001156: 61d0 str r0, [r2, #28]
+ hi2c->Instance->CR1 = (hi2c->Init.GeneralCallMode | hi2c->Init.NoStretchMode);
+ 8001158: 430b orrs r3, r1
+ 800115a: 6013 str r3, [r2, #0]
+
+ /*---------------------------- I2Cx OAR1 Configuration ---------------------*/
+ /* Configure I2Cx: Own Address1 and addressing mode */
+ hi2c->Instance->OAR1 = (hi2c->Init.AddressingMode | hi2c->Init.OwnAddress1);
+ 800115c: 68e1 ldr r1, [r4, #12]
+ 800115e: 6923 ldr r3, [r4, #16]
+ 8001160: 430b orrs r3, r1
+ 8001162: 6093 str r3, [r2, #8]
+
+ /*---------------------------- I2Cx OAR2 Configuration ---------------------*/
+ /* Configure I2Cx: Dual mode and Own Address2 */
+ hi2c->Instance->OAR2 = (hi2c->Init.DualAddressMode | hi2c->Init.OwnAddress2);
+ 8001164: 69a1 ldr r1, [r4, #24]
+ 8001166: 6963 ldr r3, [r4, #20]
+ 8001168: 430b orrs r3, r1
+ 800116a: 60d3 str r3, [r2, #12]
+
+ /* Enable the selected I2C peripheral */
+ __HAL_I2C_ENABLE(hi2c);
+ 800116c: 6813 ldr r3, [r2, #0]
+ 800116e: f043 0301 orr.w r3, r3, #1
+ 8001172: 6013 str r3, [r2, #0]
+
+ hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
+ 8001174: 2000 movs r0, #0
+ hi2c->State = HAL_I2C_STATE_READY;
+ 8001176: 2320 movs r3, #32
+ hi2c->ErrorCode = HAL_I2C_ERROR_NONE;
+ 8001178: 6420 str r0, [r4, #64] ; 0x40
+ hi2c->State = HAL_I2C_STATE_READY;
+ 800117a: f884 303d strb.w r3, [r4, #61] ; 0x3d
+ hi2c->PreviousState = I2C_STATE_NONE;
+ 800117e: 6320 str r0, [r4, #48] ; 0x30
+ hi2c->Mode = HAL_I2C_MODE_NONE;
+ 8001180: f884 003e strb.w r0, [r4, #62] ; 0x3e
+
+ return HAL_OK;
+ 8001184: bd70 pop {r4, r5, r6, pc}
+ hi2c->Instance->CCR = I2C_SPEED(pclk1, hi2c->Init.ClockSpeed, hi2c->Init.DutyCycle);
+ 8001186: 68a1 ldr r1, [r4, #8]
+ 8001188: b949 cbnz r1, 800119e
+ 800118a: eb03 0343 add.w r3, r3, r3, lsl #1
+ 800118e: fbb0 f0f3 udiv r0, r0, r3
+ 8001192: f3c0 030b ubfx r3, r0, #0, #12
+ 8001196: b163 cbz r3, 80011b2
+ 8001198: f440 4000 orr.w r0, r0, #32768 ; 0x8000
+ 800119c: e7d9 b.n 8001152
+ 800119e: 2119 movs r1, #25
+ 80011a0: 434b muls r3, r1
+ 80011a2: fbb0 f0f3 udiv r0, r0, r3
+ 80011a6: f3c0 030b ubfx r3, r0, #0, #12
+ 80011aa: b113 cbz r3, 80011b2
+ 80011ac: f440 4040 orr.w r0, r0, #49152 ; 0xc000
+ 80011b0: e7cf b.n 8001152
+ 80011b2: 2001 movs r0, #1
+ 80011b4: e7cd b.n 8001152
+ return HAL_ERROR;
+ 80011b6: 2001 movs r0, #1
+}
+ 80011b8: bd70 pop {r4, r5, r6, pc}
+ 80011ba: bf00 nop
+ 80011bc: 000186a0 .word 0x000186a0
+ 80011c0: 000f4240 .word 0x000f4240
+
+080011c4 :
+ 80011c4: 4770 bx lr
+
+080011c6 :
+ 80011c6: 4770 bx lr
+
+080011c8