diff --git a/.cproject b/.cproject
new file mode 100644
index 0000000..58bf25c
--- /dev/null
+++ b/.cproject
@@ -0,0 +1,393 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.mxproject b/.mxproject
new file mode 100644
index 0000000..7116191
--- /dev/null
+++ b/.mxproject
@@ -0,0 +1,35 @@
+[PreviousLibFiles]
+LibFiles=Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_hcd.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_usb.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;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_exti.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_uart.h;Middlewares/ST/STM32_USB_Host_Library/Core/Inc/usbh_core.h;Middlewares/ST/STM32_USB_Host_Library/Core/Inc/usbh_ctlreq.h;Middlewares/ST/STM32_USB_Host_Library/Core/Inc/usbh_def.h;Middlewares/ST/STM32_USB_Host_Library/Core/Inc/usbh_ioreq.h;Middlewares/ST/STM32_USB_Host_Library/Core/Inc/usbh_pipes.h;Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc/usbh_cdc.h;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.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;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.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_uart.c;Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.c;Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ctlreq.c;Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ioreq.c;Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.c;Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/usbh_cdc.c;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_hcd.h;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_usb.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;Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_exti.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_uart.h;Middlewares/ST/STM32_USB_Host_Library/Core/Inc/usbh_core.h;Middlewares/ST/STM32_USB_Host_Library/Core/Inc/usbh_ctlreq.h;Middlewares/ST/STM32_USB_Host_Library/Core/Inc/usbh_def.h;Middlewares/ST/STM32_USB_Host_Library/Core/Inc/usbh_ioreq.h;Middlewares/ST/STM32_USB_Host_Library/Core/Inc/usbh_pipes.h;Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc/usbh_cdc.h;Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f401xc.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;Drivers/CMSIS/Include/cmsis_armcc.h;Drivers/CMSIS/Include/cmsis_armclang.h;Drivers/CMSIS/Include/cmsis_compiler.h;Drivers/CMSIS/Include/cmsis_gcc.h;Drivers/CMSIS/Include/cmsis_iccarm.h;Drivers/CMSIS/Include/cmsis_version.h;Drivers/CMSIS/Include/core_armv8mbl.h;Drivers/CMSIS/Include/core_armv8mml.h;Drivers/CMSIS/Include/core_cm0.h;Drivers/CMSIS/Include/core_cm0plus.h;Drivers/CMSIS/Include/core_cm1.h;Drivers/CMSIS/Include/core_cm23.h;Drivers/CMSIS/Include/core_cm3.h;Drivers/CMSIS/Include/core_cm33.h;Drivers/CMSIS/Include/core_cm4.h;Drivers/CMSIS/Include/core_cm7.h;Drivers/CMSIS/Include/core_sc000.h;Drivers/CMSIS/Include/core_sc300.h;Drivers/CMSIS/Include/mpu_armv7.h;Drivers/CMSIS/Include/mpu_armv8.h;Drivers/CMSIS/Include/tz_context.h;
+
+[PreviousUsedCubeIDEFiles]
+SourceFiles=Core\Src\main.c;USB_HOST\App\usb_host.c;USB_HOST\Target\usbh_conf.c;USB_HOST\Target\usbh_platform.c;Core\Src\stm32f4xx_it.c;Core\Src\stm32f4xx_hal_msp.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.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;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.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_uart.c;Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.c;Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ctlreq.c;Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ioreq.c;Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.c;Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/usbh_cdc.c;Core\Src/system_stm32f4xx.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.c;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.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;Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.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_uart.c;Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.c;Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ctlreq.c;Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ioreq.c;Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.c;Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/usbh_cdc.c;Core\Src/system_stm32f4xx.c;Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c;;Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.c;Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ctlreq.c;Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ioreq.c;Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.c;Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/usbh_cdc.c;
+HeaderPath=Drivers\STM32F4xx_HAL_Driver\Inc;Drivers\STM32F4xx_HAL_Driver\Inc\Legacy;Middlewares\ST\STM32_USB_Host_Library\Core\Inc;Middlewares\ST\STM32_USB_Host_Library\Class\CDC\Inc;Drivers\CMSIS\Device\ST\STM32F4xx\Include;Drivers\CMSIS\Include;USB_HOST\App;USB_HOST\Target;Core\Inc;
+CDefines=USE_HAL_DRIVER;STM32F401xC;USE_HAL_DRIVER;USE_HAL_DRIVER;
+
+[PreviousGenFiles]
+AdvancedFolderStructure=true
+HeaderFileListSize=6
+HeaderFiles#0=D:/Users/Think/Programmation/STM32CUBEIDE/Test/USB_HOST/App/usb_host.h
+HeaderFiles#1=D:/Users/Think/Programmation/STM32CUBEIDE/Test/USB_HOST/Target/usbh_conf.h
+HeaderFiles#2=D:/Users/Think/Programmation/STM32CUBEIDE/Test/USB_HOST/Target/usbh_platform.h
+HeaderFiles#3=D:/Users/Think/Programmation/STM32CUBEIDE/Test/Core/Inc/stm32f4xx_it.h
+HeaderFiles#4=D:/Users/Think/Programmation/STM32CUBEIDE/Test/Core/Inc/stm32f4xx_hal_conf.h
+HeaderFiles#5=D:/Users/Think/Programmation/STM32CUBEIDE/Test/Core/Inc/main.h
+HeaderFolderListSize=3
+HeaderPath#0=D:/Users/Think/Programmation/STM32CUBEIDE/Test/USB_HOST/App
+HeaderPath#1=D:/Users/Think/Programmation/STM32CUBEIDE/Test/USB_HOST/Target
+HeaderPath#2=D:/Users/Think/Programmation/STM32CUBEIDE/Test/Core/Inc
+HeaderFiles=;
+SourceFileListSize=6
+SourceFiles#0=D:/Users/Think/Programmation/STM32CUBEIDE/Test/USB_HOST/App/usb_host.c
+SourceFiles#1=D:/Users/Think/Programmation/STM32CUBEIDE/Test/USB_HOST/Target/usbh_conf.c
+SourceFiles#2=D:/Users/Think/Programmation/STM32CUBEIDE/Test/USB_HOST/Target/usbh_platform.c
+SourceFiles#3=D:/Users/Think/Programmation/STM32CUBEIDE/Test/Core/Src/stm32f4xx_it.c
+SourceFiles#4=D:/Users/Think/Programmation/STM32CUBEIDE/Test/Core/Src/stm32f4xx_hal_msp.c
+SourceFiles#5=D:/Users/Think/Programmation/STM32CUBEIDE/Test/Core/Src/main.c
+SourceFolderListSize=3
+SourcePath#0=D:/Users/Think/Programmation/STM32CUBEIDE/Test/USB_HOST/App
+SourcePath#1=D:/Users/Think/Programmation/STM32CUBEIDE/Test/USB_HOST/Target
+SourcePath#2=D:/Users/Think/Programmation/STM32CUBEIDE/Test/Core/Src
+SourceFiles=;
+
diff --git a/.project b/.project
new file mode 100644
index 0000000..12a4132
--- /dev/null
+++ b/.project
@@ -0,0 +1,34 @@
+
+
+ eCompass
+
+
+
+
+
+ org.eclipse.cdt.managedbuilder.core.genmakebuilder
+ clean,full,incremental,
+
+
+
+
+ org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder
+ full,incremental,
+
+
+
+
+
+ com.st.stm32cube.ide.mcu.MCUProjectNature
+ com.st.stm32cube.ide.mcu.MCUCubeProjectNature
+ org.eclipse.cdt.core.cnature
+ org.eclipse.cdt.core.ccnature
+ com.st.stm32cube.ide.mcu.MCUCubeIdeServicesRevAev2ProjectNature
+ com.st.stm32cube.ide.mcu.MCUAdvancedStructureProjectNature
+ com.st.stm32cube.ide.mcu.MCUEndUserDisabledTrustZoneProjectNature
+ com.st.stm32cube.ide.mcu.MCUSingleCpuProjectNature
+ com.st.stm32cube.ide.mcu.MCURootProjectNature
+ org.eclipse.cdt.managedbuilder.core.managedBuildNature
+ org.eclipse.cdt.managedbuilder.core.ScannerConfigNature
+
+
diff --git a/.settings/language.settings.xml b/.settings/language.settings.xml
new file mode 100644
index 0000000..92c71d9
--- /dev/null
+++ b/.settings/language.settings.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.settings/stm32cubeide.project.prefs b/.settings/stm32cubeide.project.prefs
new file mode 100644
index 0000000..df27a66
--- /dev/null
+++ b/.settings/stm32cubeide.project.prefs
@@ -0,0 +1,3 @@
+8DF89ED150041C4CBC7CB9A9CAA90856=0200E7423990B2759ED933AA554D57BA
+DC22A860405A8BF2F2C095E5B6529F12=0200E7423990B2759ED933AA554D57BA
+eclipse.preferences.version=1
diff --git a/Core/Inc/app.h b/Core/Inc/app.h
new file mode 100644
index 0000000..8247217
--- /dev/null
+++ b/Core/Inc/app.h
@@ -0,0 +1,15 @@
+/*
+ * app.h
+ *
+ * Created on: Apr 3, 2021
+ * Author: Think
+ */
+
+#ifndef INC_APP_H_
+#define INC_APP_H_
+
+void setup(void);
+void loop(void);
+
+
+#endif /* INC_APP_H_ */
diff --git a/Core/Inc/main.h b/Core/Inc/main.h
new file mode 100644
index 0000000..8020901
--- /dev/null
+++ b/Core/Inc/main.h
@@ -0,0 +1,135 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.h
+ * @brief : Header for main.c file.
+ * This file contains the common defines of the application.
+ ******************************************************************************
+ * @attention
+ *
+ *
© Copyright (c) 2021 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __MAIN_H
+#define __MAIN_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f4xx_hal.h"
+
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Exported types ------------------------------------------------------------*/
+/* USER CODE BEGIN ET */
+
+/* USER CODE END ET */
+
+/* Exported constants --------------------------------------------------------*/
+/* USER CODE BEGIN EC */
+
+/* USER CODE END EC */
+
+/* Exported macro ------------------------------------------------------------*/
+/* USER CODE BEGIN EM */
+
+/* USER CODE END EM */
+
+/* Exported functions prototypes ---------------------------------------------*/
+void Error_Handler(void);
+
+/* USER CODE BEGIN EFP */
+
+/* USER CODE END EFP */
+
+/* Private defines -----------------------------------------------------------*/
+#define CS_I2C_SPI_Pin GPIO_PIN_3
+#define CS_I2C_SPI_GPIO_Port GPIOE
+#define PC14_OSC32_IN_Pin GPIO_PIN_14
+#define PC14_OSC32_IN_GPIO_Port GPIOC
+#define PC15_OSC32_OUT_Pin GPIO_PIN_15
+#define PC15_OSC32_OUT_GPIO_Port GPIOC
+#define PH0_OSC_IN_Pin GPIO_PIN_0
+#define PH0_OSC_IN_GPIO_Port GPIOH
+#define PH1_OSC_OUT_Pin GPIO_PIN_1
+#define PH1_OSC_OUT_GPIO_Port GPIOH
+#define OTG_FS_PowerSwitchOn_Pin GPIO_PIN_0
+#define OTG_FS_PowerSwitchOn_GPIO_Port GPIOC
+#define PDM_OUT_Pin GPIO_PIN_3
+#define PDM_OUT_GPIO_Port GPIOC
+#define B1_Pin GPIO_PIN_0
+#define B1_GPIO_Port GPIOA
+#define I2S3_WS_Pin GPIO_PIN_4
+#define I2S3_WS_GPIO_Port GPIOA
+#define SPI1_SCK_Pin GPIO_PIN_5
+#define SPI1_SCK_GPIO_Port GPIOA
+#define SPI1_MISO_Pin GPIO_PIN_6
+#define SPI1_MISO_GPIO_Port GPIOA
+#define SPI1_MISOA7_Pin GPIO_PIN_7
+#define SPI1_MISOA7_GPIO_Port GPIOA
+#define CLK_IN_Pin GPIO_PIN_10
+#define CLK_IN_GPIO_Port GPIOB
+#define LD4_Pin GPIO_PIN_12
+#define LD4_GPIO_Port GPIOD
+#define LD3_Pin GPIO_PIN_13
+#define LD3_GPIO_Port GPIOD
+#define LD5_Pin GPIO_PIN_14
+#define LD5_GPIO_Port GPIOD
+#define LD6_Pin GPIO_PIN_15
+#define LD6_GPIO_Port GPIOD
+#define I2S3_MCK_Pin GPIO_PIN_7
+#define I2S3_MCK_GPIO_Port GPIOC
+#define VBUS_FS_Pin GPIO_PIN_9
+#define VBUS_FS_GPIO_Port GPIOA
+#define OTG_FS_ID_Pin GPIO_PIN_10
+#define OTG_FS_ID_GPIO_Port GPIOA
+#define OTG_FS_DM_Pin GPIO_PIN_11
+#define OTG_FS_DM_GPIO_Port GPIOA
+#define OTG_FS_DP_Pin GPIO_PIN_12
+#define OTG_FS_DP_GPIO_Port GPIOA
+#define SWDIO_Pin GPIO_PIN_13
+#define SWDIO_GPIO_Port GPIOA
+#define SWCLK_Pin GPIO_PIN_14
+#define SWCLK_GPIO_Port GPIOA
+#define I2S3_SCK_Pin GPIO_PIN_10
+#define I2S3_SCK_GPIO_Port GPIOC
+#define I2S3_SD_Pin GPIO_PIN_12
+#define I2S3_SD_GPIO_Port GPIOC
+#define Audio_RST_Pin GPIO_PIN_4
+#define Audio_RST_GPIO_Port GPIOD
+#define OTG_FS_OverCurrent_Pin GPIO_PIN_5
+#define OTG_FS_OverCurrent_GPIO_Port GPIOD
+#define SWO_Pin GPIO_PIN_3
+#define SWO_GPIO_Port GPIOB
+#define Audio_SCL_Pin GPIO_PIN_6
+#define Audio_SCL_GPIO_Port GPIOB
+#define Audio_SDA_Pin GPIO_PIN_9
+#define Audio_SDA_GPIO_Port GPIOB
+#define MEMS_INT2_Pin GPIO_PIN_1
+#define MEMS_INT2_GPIO_Port GPIOE
+/* USER CODE BEGIN Private defines */
+
+/* USER CODE END Private defines */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __MAIN_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Core/Inc/stm32f4xx_hal_conf.h b/Core/Inc/stm32f4xx_hal_conf.h
new file mode 100644
index 0000000..f6735b1
--- /dev/null
+++ b/Core/Inc/stm32f4xx_hal_conf.h
@@ -0,0 +1,486 @@
+/**
+ ******************************************************************************
+ * @file stm32f4xx_hal_conf_template.h
+ * @author MCD Application Team
+ * @brief HAL configuration template file.
+ * This file should be copied to the application folder and renamed
+ * to stm32f4xx_hal_conf.h.
+ ******************************************************************************
+ * @attention
+ *
+ * © Copyright (c) 2017 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software component is licensed by ST under BSD 3-Clause license,
+ * the "License"; You may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ * opensource.org/licenses/BSD-3-Clause
+ *
+ ******************************************************************************
+ */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32F4xx_HAL_CONF_H
+#define __STM32F4xx_HAL_CONF_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Exported types ------------------------------------------------------------*/
+/* Exported constants --------------------------------------------------------*/
+
+/* ########################## Module Selection ############################## */
+/**
+ * @brief This is the list of modules to be used in the HAL driver
+ */
+#define HAL_MODULE_ENABLED
+
+ /* #define HAL_ADC_MODULE_ENABLED */
+/* #define HAL_CRYP_MODULE_ENABLED */
+/* #define HAL_CAN_MODULE_ENABLED */
+/* #define HAL_CRC_MODULE_ENABLED */
+/* #define HAL_CAN_LEGACY_MODULE_ENABLED */
+/* #define HAL_CRYP_MODULE_ENABLED */
+/* #define HAL_DAC_MODULE_ENABLED */
+/* #define HAL_DCMI_MODULE_ENABLED */
+/* #define HAL_DMA2D_MODULE_ENABLED */
+/* #define HAL_ETH_MODULE_ENABLED */
+/* #define HAL_NAND_MODULE_ENABLED */
+/* #define HAL_NOR_MODULE_ENABLED */
+/* #define HAL_PCCARD_MODULE_ENABLED */
+/* #define HAL_SRAM_MODULE_ENABLED */
+/* #define HAL_SDRAM_MODULE_ENABLED */
+/* #define HAL_HASH_MODULE_ENABLED */
+#define HAL_I2C_MODULE_ENABLED
+#define HAL_I2S_MODULE_ENABLED
+/* #define HAL_IWDG_MODULE_ENABLED */
+/* #define HAL_LTDC_MODULE_ENABLED */
+/* #define HAL_RNG_MODULE_ENABLED */
+/* #define HAL_RTC_MODULE_ENABLED */
+/* #define HAL_SAI_MODULE_ENABLED */
+/* #define HAL_SD_MODULE_ENABLED */
+/* #define HAL_MMC_MODULE_ENABLED */
+#define HAL_SPI_MODULE_ENABLED
+/* #define HAL_TIM_MODULE_ENABLED */
+#define HAL_UART_MODULE_ENABLED
+/* #define HAL_USART_MODULE_ENABLED */
+/* #define HAL_IRDA_MODULE_ENABLED */
+/* #define HAL_SMARTCARD_MODULE_ENABLED */
+/* #define HAL_SMBUS_MODULE_ENABLED */
+/* #define HAL_WWDG_MODULE_ENABLED */
+/* #define HAL_PCD_MODULE_ENABLED */
+#define HAL_HCD_MODULE_ENABLED
+/* #define HAL_DSI_MODULE_ENABLED */
+/* #define HAL_QSPI_MODULE_ENABLED */
+/* #define HAL_QSPI_MODULE_ENABLED */
+/* #define HAL_CEC_MODULE_ENABLED */
+/* #define HAL_FMPI2C_MODULE_ENABLED */
+/* #define HAL_SPDIFRX_MODULE_ENABLED */
+/* #define HAL_DFSDM_MODULE_ENABLED */
+/* #define HAL_LPTIM_MODULE_ENABLED */
+#define HAL_GPIO_MODULE_ENABLED
+#define HAL_EXTI_MODULE_ENABLED
+#define HAL_DMA_MODULE_ENABLED
+#define HAL_RCC_MODULE_ENABLED
+#define HAL_FLASH_MODULE_ENABLED
+#define HAL_PWR_MODULE_ENABLED
+#define HAL_CORTEX_MODULE_ENABLED
+
+/* ########################## HSE/HSI Values adaptation ##################### */
+/**
+ * @brief Adjust the value of External High Speed oscillator (HSE) used in your application.
+ * This value is used by the RCC HAL module to compute the system frequency
+ * (when HSE is used as system clock source, directly or through the PLL).
+ */
+#if !defined (HSE_VALUE)
+ #define HSE_VALUE ((uint32_t)8000000U) /*!< Value of the External oscillator in Hz */
+#endif /* HSE_VALUE */
+
+#if !defined (HSE_STARTUP_TIMEOUT)
+ #define HSE_STARTUP_TIMEOUT ((uint32_t)100U) /*!< Time out for HSE start up, in ms */
+#endif /* HSE_STARTUP_TIMEOUT */
+
+/**
+ * @brief Internal High Speed oscillator (HSI) value.
+ * This value is used by the RCC HAL module to compute the system frequency
+ * (when HSI is used as system clock source, directly or through the PLL).
+ */
+#if !defined (HSI_VALUE)
+ #define HSI_VALUE ((uint32_t)16000000U) /*!< Value of the Internal oscillator in Hz*/
+#endif /* HSI_VALUE */
+
+/**
+ * @brief Internal Low Speed oscillator (LSI) value.
+ */
+#if !defined (LSI_VALUE)
+ #define LSI_VALUE ((uint32_t)32000U) /*!< LSI Typical Value in Hz*/
+#endif /* LSI_VALUE */ /*!< Value of the Internal Low Speed oscillator in Hz
+ The real value may vary depending on the variations
+ in voltage and temperature.*/
+/**
+ * @brief External Low Speed oscillator (LSE) value.
+ */
+#if !defined (LSE_VALUE)
+ #define LSE_VALUE ((uint32_t)32768U) /*!< Value of the External Low Speed oscillator in Hz */
+#endif /* LSE_VALUE */
+
+#if !defined (LSE_STARTUP_TIMEOUT)
+ #define LSE_STARTUP_TIMEOUT ((uint32_t)5000U) /*!< Time out for LSE start up, in ms */
+#endif /* LSE_STARTUP_TIMEOUT */
+
+/**
+ * @brief External clock source for I2S peripheral
+ * This value is used by the I2S HAL module to compute the I2S clock source
+ * frequency, this source is inserted directly through I2S_CKIN pad.
+ */
+#if !defined (EXTERNAL_CLOCK_VALUE)
+ #define EXTERNAL_CLOCK_VALUE ((uint32_t)12288000U) /*!< Value of the External audio frequency in Hz*/
+#endif /* EXTERNAL_CLOCK_VALUE */
+
+/* Tip: To avoid modifying this file each time you need to use different HSE,
+ === you can define the HSE value in your toolchain compiler preprocessor. */
+
+/* ########################### System Configuration ######################### */
+/**
+ * @brief This is the HAL system configuration section
+ */
+#define VDD_VALUE ((uint32_t)3300U) /*!< Value of VDD in mv */
+#define TICK_INT_PRIORITY ((uint32_t)0U) /*!< tick interrupt priority */
+#define USE_RTOS 0U
+#define PREFETCH_ENABLE 1U
+#define INSTRUCTION_CACHE_ENABLE 1U
+#define DATA_CACHE_ENABLE 1U
+
+#define USE_HAL_ADC_REGISTER_CALLBACKS 0U /* ADC register callback disabled */
+#define USE_HAL_CAN_REGISTER_CALLBACKS 0U /* CAN register callback disabled */
+#define USE_HAL_CEC_REGISTER_CALLBACKS 0U /* CEC register callback disabled */
+#define USE_HAL_CRYP_REGISTER_CALLBACKS 0U /* CRYP register callback disabled */
+#define USE_HAL_DAC_REGISTER_CALLBACKS 0U /* DAC register callback disabled */
+#define USE_HAL_DCMI_REGISTER_CALLBACKS 0U /* DCMI register callback disabled */
+#define USE_HAL_DFSDM_REGISTER_CALLBACKS 0U /* DFSDM register callback disabled */
+#define USE_HAL_DMA2D_REGISTER_CALLBACKS 0U /* DMA2D register callback disabled */
+#define USE_HAL_DSI_REGISTER_CALLBACKS 0U /* DSI register callback disabled */
+#define USE_HAL_ETH_REGISTER_CALLBACKS 0U /* ETH register callback disabled */
+#define USE_HAL_HASH_REGISTER_CALLBACKS 0U /* HASH register callback disabled */
+#define USE_HAL_HCD_REGISTER_CALLBACKS 0U /* HCD register callback disabled */
+#define USE_HAL_I2C_REGISTER_CALLBACKS 0U /* I2C register callback disabled */
+#define USE_HAL_FMPI2C_REGISTER_CALLBACKS 0U /* FMPI2C register callback disabled */
+#define USE_HAL_I2S_REGISTER_CALLBACKS 0U /* I2S register callback disabled */
+#define USE_HAL_IRDA_REGISTER_CALLBACKS 0U /* IRDA register callback disabled */
+#define USE_HAL_LPTIM_REGISTER_CALLBACKS 0U /* LPTIM register callback disabled */
+#define USE_HAL_LTDC_REGISTER_CALLBACKS 0U /* LTDC register callback disabled */
+#define USE_HAL_MMC_REGISTER_CALLBACKS 0U /* MMC register callback disabled */
+#define USE_HAL_NAND_REGISTER_CALLBACKS 0U /* NAND register callback disabled */
+#define USE_HAL_NOR_REGISTER_CALLBACKS 0U /* NOR register callback disabled */
+#define USE_HAL_PCCARD_REGISTER_CALLBACKS 0U /* PCCARD register callback disabled */
+#define USE_HAL_PCD_REGISTER_CALLBACKS 0U /* PCD register callback disabled */
+#define USE_HAL_QSPI_REGISTER_CALLBACKS 0U /* QSPI register callback disabled */
+#define USE_HAL_RNG_REGISTER_CALLBACKS 0U /* RNG register callback disabled */
+#define USE_HAL_RTC_REGISTER_CALLBACKS 0U /* RTC register callback disabled */
+#define USE_HAL_SAI_REGISTER_CALLBACKS 0U /* SAI register callback disabled */
+#define USE_HAL_SD_REGISTER_CALLBACKS 0U /* SD register callback disabled */
+#define USE_HAL_SMARTCARD_REGISTER_CALLBACKS 0U /* SMARTCARD register callback disabled */
+#define USE_HAL_SDRAM_REGISTER_CALLBACKS 0U /* SDRAM register callback disabled */
+#define USE_HAL_SRAM_REGISTER_CALLBACKS 0U /* SRAM register callback disabled */
+#define USE_HAL_SPDIFRX_REGISTER_CALLBACKS 0U /* SPDIFRX register callback disabled */
+#define USE_HAL_SMBUS_REGISTER_CALLBACKS 0U /* SMBUS register callback disabled */
+#define USE_HAL_SPI_REGISTER_CALLBACKS 0U /* SPI register callback disabled */
+#define USE_HAL_TIM_REGISTER_CALLBACKS 0U /* TIM register callback disabled */
+#define USE_HAL_UART_REGISTER_CALLBACKS 0U /* UART register callback disabled */
+#define USE_HAL_USART_REGISTER_CALLBACKS 0U /* USART register callback disabled */
+#define USE_HAL_WWDG_REGISTER_CALLBACKS 0U /* WWDG register callback disabled */
+
+/* ########################## Assert Selection ############################## */
+/**
+ * @brief Uncomment the line below to expanse the "assert_param" macro in the
+ * HAL drivers code
+ */
+/* #define USE_FULL_ASSERT 1U */
+
+/* ################## Ethernet peripheral configuration ##################### */
+
+/* Section 1 : Ethernet peripheral configuration */
+
+/* MAC ADDRESS: MAC_ADDR0:MAC_ADDR1:MAC_ADDR2:MAC_ADDR3:MAC_ADDR4:MAC_ADDR5 */
+#define MAC_ADDR0 2U
+#define MAC_ADDR1 0U
+#define MAC_ADDR2 0U
+#define MAC_ADDR3 0U
+#define MAC_ADDR4 0U
+#define MAC_ADDR5 0U
+
+/* Definition of the Ethernet driver buffers size and count */
+#define ETH_RX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for receive */
+#define ETH_TX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for transmit */
+#define ETH_RXBUFNB ((uint32_t)4U) /* 4 Rx buffers of size ETH_RX_BUF_SIZE */
+#define ETH_TXBUFNB ((uint32_t)4U) /* 4 Tx buffers of size ETH_TX_BUF_SIZE */
+
+/* Section 2: PHY configuration section */
+
+/* DP83848_PHY_ADDRESS Address*/
+#define DP83848_PHY_ADDRESS 0x01U
+/* PHY Reset delay these values are based on a 1 ms Systick interrupt*/
+#define PHY_RESET_DELAY ((uint32_t)0x000000FFU)
+/* PHY Configuration delay */
+#define PHY_CONFIG_DELAY ((uint32_t)0x00000FFFU)
+
+#define PHY_READ_TO ((uint32_t)0x0000FFFFU)
+#define PHY_WRITE_TO ((uint32_t)0x0000FFFFU)
+
+/* Section 3: Common PHY Registers */
+
+#define PHY_BCR ((uint16_t)0x0000U) /*!< Transceiver Basic Control Register */
+#define PHY_BSR ((uint16_t)0x0001U) /*!< Transceiver Basic Status Register */
+
+#define PHY_RESET ((uint16_t)0x8000U) /*!< PHY Reset */
+#define PHY_LOOPBACK ((uint16_t)0x4000U) /*!< Select loop-back mode */
+#define PHY_FULLDUPLEX_100M ((uint16_t)0x2100U) /*!< Set the full-duplex mode at 100 Mb/s */
+#define PHY_HALFDUPLEX_100M ((uint16_t)0x2000U) /*!< Set the half-duplex mode at 100 Mb/s */
+#define PHY_FULLDUPLEX_10M ((uint16_t)0x0100U) /*!< Set the full-duplex mode at 10 Mb/s */
+#define PHY_HALFDUPLEX_10M ((uint16_t)0x0000U) /*!< Set the half-duplex mode at 10 Mb/s */
+#define PHY_AUTONEGOTIATION ((uint16_t)0x1000U) /*!< Enable auto-negotiation function */
+#define PHY_RESTART_AUTONEGOTIATION ((uint16_t)0x0200U) /*!< Restart auto-negotiation function */
+#define PHY_POWERDOWN ((uint16_t)0x0800U) /*!< Select the power down mode */
+#define PHY_ISOLATE ((uint16_t)0x0400U) /*!< Isolate PHY from MII */
+
+#define PHY_AUTONEGO_COMPLETE ((uint16_t)0x0020U) /*!< Auto-Negotiation process completed */
+#define PHY_LINKED_STATUS ((uint16_t)0x0004U) /*!< Valid link established */
+#define PHY_JABBER_DETECTION ((uint16_t)0x0002U) /*!< Jabber condition detected */
+
+/* Section 4: Extended PHY Registers */
+#define PHY_SR ((uint16_t)0x10U) /*!< PHY status register Offset */
+
+#define PHY_SPEED_STATUS ((uint16_t)0x0002U) /*!< PHY Speed mask */
+#define PHY_DUPLEX_STATUS ((uint16_t)0x0004U) /*!< PHY Duplex mask */
+
+/* ################## SPI peripheral configuration ########################## */
+
+/* CRC FEATURE: Use to activate CRC feature inside HAL SPI Driver
+* Activated: CRC code is present inside driver
+* Deactivated: CRC code cleaned from driver
+*/
+
+#define USE_SPI_CRC 0U
+
+/* Includes ------------------------------------------------------------------*/
+/**
+ * @brief Include module's header file
+ */
+
+#ifdef HAL_RCC_MODULE_ENABLED
+ #include "stm32f4xx_hal_rcc.h"
+#endif /* HAL_RCC_MODULE_ENABLED */
+
+#ifdef HAL_GPIO_MODULE_ENABLED
+ #include "stm32f4xx_hal_gpio.h"
+#endif /* HAL_GPIO_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+ #include "stm32f4xx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
+
+#ifdef HAL_DMA_MODULE_ENABLED
+ #include "stm32f4xx_hal_dma.h"
+#endif /* HAL_DMA_MODULE_ENABLED */
+
+#ifdef HAL_CORTEX_MODULE_ENABLED
+ #include "stm32f4xx_hal_cortex.h"
+#endif /* HAL_CORTEX_MODULE_ENABLED */
+
+#ifdef HAL_ADC_MODULE_ENABLED
+ #include "stm32f4xx_hal_adc.h"
+#endif /* HAL_ADC_MODULE_ENABLED */
+
+#ifdef HAL_CAN_MODULE_ENABLED
+ #include "stm32f4xx_hal_can.h"
+#endif /* HAL_CAN_MODULE_ENABLED */
+
+#ifdef HAL_CAN_LEGACY_MODULE_ENABLED
+ #include "stm32f4xx_hal_can_legacy.h"
+#endif /* HAL_CAN_LEGACY_MODULE_ENABLED */
+
+#ifdef HAL_CRC_MODULE_ENABLED
+ #include "stm32f4xx_hal_crc.h"
+#endif /* HAL_CRC_MODULE_ENABLED */
+
+#ifdef HAL_CRYP_MODULE_ENABLED
+ #include "stm32f4xx_hal_cryp.h"
+#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_DMA2D_MODULE_ENABLED
+ #include "stm32f4xx_hal_dma2d.h"
+#endif /* HAL_DMA2D_MODULE_ENABLED */
+
+#ifdef HAL_DAC_MODULE_ENABLED
+ #include "stm32f4xx_hal_dac.h"
+#endif /* HAL_DAC_MODULE_ENABLED */
+
+#ifdef HAL_DCMI_MODULE_ENABLED
+ #include "stm32f4xx_hal_dcmi.h"
+#endif /* HAL_DCMI_MODULE_ENABLED */
+
+#ifdef HAL_ETH_MODULE_ENABLED
+ #include "stm32f4xx_hal_eth.h"
+#endif /* HAL_ETH_MODULE_ENABLED */
+
+#ifdef HAL_FLASH_MODULE_ENABLED
+ #include "stm32f4xx_hal_flash.h"
+#endif /* HAL_FLASH_MODULE_ENABLED */
+
+#ifdef HAL_SRAM_MODULE_ENABLED
+ #include "stm32f4xx_hal_sram.h"
+#endif /* HAL_SRAM_MODULE_ENABLED */
+
+#ifdef HAL_NOR_MODULE_ENABLED
+ #include "stm32f4xx_hal_nor.h"
+#endif /* HAL_NOR_MODULE_ENABLED */
+
+#ifdef HAL_NAND_MODULE_ENABLED
+ #include "stm32f4xx_hal_nand.h"
+#endif /* HAL_NAND_MODULE_ENABLED */
+
+#ifdef HAL_PCCARD_MODULE_ENABLED
+ #include "stm32f4xx_hal_pccard.h"
+#endif /* HAL_PCCARD_MODULE_ENABLED */
+
+#ifdef HAL_SDRAM_MODULE_ENABLED
+ #include "stm32f4xx_hal_sdram.h"
+#endif /* HAL_SDRAM_MODULE_ENABLED */
+
+#ifdef HAL_HASH_MODULE_ENABLED
+ #include "stm32f4xx_hal_hash.h"
+#endif /* HAL_HASH_MODULE_ENABLED */
+
+#ifdef HAL_I2C_MODULE_ENABLED
+ #include "stm32f4xx_hal_i2c.h"
+#endif /* HAL_I2C_MODULE_ENABLED */
+
+#ifdef HAL_SMBUS_MODULE_ENABLED
+ #include "stm32f4xx_hal_smbus.h"
+#endif /* HAL_SMBUS_MODULE_ENABLED */
+
+#ifdef HAL_I2S_MODULE_ENABLED
+ #include "stm32f4xx_hal_i2s.h"
+#endif /* HAL_I2S_MODULE_ENABLED */
+
+#ifdef HAL_IWDG_MODULE_ENABLED
+ #include "stm32f4xx_hal_iwdg.h"
+#endif /* HAL_IWDG_MODULE_ENABLED */
+
+#ifdef HAL_LTDC_MODULE_ENABLED
+ #include "stm32f4xx_hal_ltdc.h"
+#endif /* HAL_LTDC_MODULE_ENABLED */
+
+#ifdef HAL_PWR_MODULE_ENABLED
+ #include "stm32f4xx_hal_pwr.h"
+#endif /* HAL_PWR_MODULE_ENABLED */
+
+#ifdef HAL_RNG_MODULE_ENABLED
+ #include "stm32f4xx_hal_rng.h"
+#endif /* HAL_RNG_MODULE_ENABLED */
+
+#ifdef HAL_RTC_MODULE_ENABLED
+ #include "stm32f4xx_hal_rtc.h"
+#endif /* HAL_RTC_MODULE_ENABLED */
+
+#ifdef HAL_SAI_MODULE_ENABLED
+ #include "stm32f4xx_hal_sai.h"
+#endif /* HAL_SAI_MODULE_ENABLED */
+
+#ifdef HAL_SD_MODULE_ENABLED
+ #include "stm32f4xx_hal_sd.h"
+#endif /* HAL_SD_MODULE_ENABLED */
+
+#ifdef HAL_SPI_MODULE_ENABLED
+ #include "stm32f4xx_hal_spi.h"
+#endif /* HAL_SPI_MODULE_ENABLED */
+
+#ifdef HAL_TIM_MODULE_ENABLED
+ #include "stm32f4xx_hal_tim.h"
+#endif /* HAL_TIM_MODULE_ENABLED */
+
+#ifdef HAL_UART_MODULE_ENABLED
+ #include "stm32f4xx_hal_uart.h"
+#endif /* HAL_UART_MODULE_ENABLED */
+
+#ifdef HAL_USART_MODULE_ENABLED
+ #include "stm32f4xx_hal_usart.h"
+#endif /* HAL_USART_MODULE_ENABLED */
+
+#ifdef HAL_IRDA_MODULE_ENABLED
+ #include "stm32f4xx_hal_irda.h"
+#endif /* HAL_IRDA_MODULE_ENABLED */
+
+#ifdef HAL_SMARTCARD_MODULE_ENABLED
+ #include "stm32f4xx_hal_smartcard.h"
+#endif /* HAL_SMARTCARD_MODULE_ENABLED */
+
+#ifdef HAL_WWDG_MODULE_ENABLED
+ #include "stm32f4xx_hal_wwdg.h"
+#endif /* HAL_WWDG_MODULE_ENABLED */
+
+#ifdef HAL_PCD_MODULE_ENABLED
+ #include "stm32f4xx_hal_pcd.h"
+#endif /* HAL_PCD_MODULE_ENABLED */
+
+#ifdef HAL_HCD_MODULE_ENABLED
+ #include "stm32f4xx_hal_hcd.h"
+#endif /* HAL_HCD_MODULE_ENABLED */
+
+#ifdef HAL_DSI_MODULE_ENABLED
+ #include "stm32f4xx_hal_dsi.h"
+#endif /* HAL_DSI_MODULE_ENABLED */
+
+#ifdef HAL_QSPI_MODULE_ENABLED
+ #include "stm32f4xx_hal_qspi.h"
+#endif /* HAL_QSPI_MODULE_ENABLED */
+
+#ifdef HAL_CEC_MODULE_ENABLED
+ #include "stm32f4xx_hal_cec.h"
+#endif /* HAL_CEC_MODULE_ENABLED */
+
+#ifdef HAL_FMPI2C_MODULE_ENABLED
+ #include "stm32f4xx_hal_fmpi2c.h"
+#endif /* HAL_FMPI2C_MODULE_ENABLED */
+
+#ifdef HAL_SPDIFRX_MODULE_ENABLED
+ #include "stm32f4xx_hal_spdifrx.h"
+#endif /* HAL_SPDIFRX_MODULE_ENABLED */
+
+#ifdef HAL_DFSDM_MODULE_ENABLED
+ #include "stm32f4xx_hal_dfsdm.h"
+#endif /* HAL_DFSDM_MODULE_ENABLED */
+
+#ifdef HAL_LPTIM_MODULE_ENABLED
+ #include "stm32f4xx_hal_lptim.h"
+#endif /* HAL_LPTIM_MODULE_ENABLED */
+
+#ifdef HAL_MMC_MODULE_ENABLED
+ #include "stm32f4xx_hal_mmc.h"
+#endif /* HAL_MMC_MODULE_ENABLED */
+
+/* Exported macro ------------------------------------------------------------*/
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief The assert_param macro is used for function's parameters check.
+ * @param expr If expr is false, it calls assert_failed function
+ * which reports the name of the source file and the source
+ * line number of the call that failed.
+ * If expr is true, it returns no value.
+ * @retval None
+ */
+ #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
+/* Exported functions ------------------------------------------------------- */
+ void assert_failed(uint8_t* file, uint32_t line);
+#else
+ #define assert_param(expr) ((void)0U)
+#endif /* USE_FULL_ASSERT */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __STM32F4xx_HAL_CONF_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Core/Inc/stm32f4xx_it.h b/Core/Inc/stm32f4xx_it.h
new file mode 100644
index 0000000..86b00e6
--- /dev/null
+++ b/Core/Inc/stm32f4xx_it.h
@@ -0,0 +1,70 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file stm32f4xx_it.h
+ * @brief This file contains the headers of the interrupt handlers.
+ ******************************************************************************
+ * @attention
+ *
+ * © Copyright (c) 2021 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32F4xx_IT_H
+#define __STM32F4xx_IT_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Exported types ------------------------------------------------------------*/
+/* USER CODE BEGIN ET */
+
+/* USER CODE END ET */
+
+/* Exported constants --------------------------------------------------------*/
+/* USER CODE BEGIN EC */
+
+/* USER CODE END EC */
+
+/* Exported macro ------------------------------------------------------------*/
+/* USER CODE BEGIN EM */
+
+/* USER CODE END EM */
+
+/* Exported functions prototypes ---------------------------------------------*/
+void NMI_Handler(void);
+void HardFault_Handler(void);
+void MemManage_Handler(void);
+void BusFault_Handler(void);
+void UsageFault_Handler(void);
+void SVC_Handler(void);
+void DebugMon_Handler(void);
+void PendSV_Handler(void);
+void SysTick_Handler(void);
+void OTG_FS_IRQHandler(void);
+/* USER CODE BEGIN EFP */
+
+/* USER CODE END EFP */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __STM32F4xx_IT_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Core/Src/app.c b/Core/Src/app.c
new file mode 100644
index 0000000..d3f3ed1
--- /dev/null
+++ b/Core/Src/app.c
@@ -0,0 +1,78 @@
+/*
+ * app.c
+ *
+ * Created on: Apr 3, 2021
+ * Author: Think
+ */
+
+#include
+#include
+#include
+#include
+#include "app.h"
+#include "main.h"
+#include "LSM303DLHC.h"
+
+#include "COMPASS_LEDS.h"
+
+#define BLINK_RATE_MS 500
+#define PRINT_RATE_MS 100
+
+uint32_t ts_blink = 0, ts_print = 0;
+int16_t x = 0, y = 0, z = 0;
+uint8_t id[3] = {0};
+
+//eCompasse declaration
+extern I2C_HandleTypeDef hi2c1;
+LSM303 eComp;
+COMPASS_LEDS compLeds;
+
+void setup(void)
+{
+ COMPASS_LEDS_Init(&compLeds);
+
+ if(!LSM303_Init(&eComp, &hi2c1))
+ printf("Failed to init eCompass\r\n");
+
+ if(!LSM303_EnableTemperatureSensor(&eComp, true))
+ printf("Failed to enable temp sensor\r\n");
+
+ if(!LSM303_ApplyConfig(&eComp))
+ printf("Failed to apply config\r\n");
+
+ if(!LSM303_GetDeviceID(&eComp, id))
+ printf("Failed to retrieve id\r\n");
+ else
+ printf("LSM303 ID : %#X,%#X,%#X\r\n", id[0], id[1], id[2]);
+}
+
+void loop(void)
+{
+ if(HAL_GetTick() - ts_print > PRINT_RATE_MS)
+ {
+ //Lets read the temperature :
+ float temperature = 0;
+
+ if(!LSM303_GetTemperature(&eComp, &temperature, NULL))
+ printf("Failed to get temperature\r\n");
+ else
+ printf("Temp is : %.3f\r\n", temperature);
+
+ if(!LSM303_GetMagneticFieldData(&eComp, &x, &y, &z))
+ printf("Failed to get magnetic data\r\n");
+ else
+ printf("x : %d, y : %d, z : %d\r\n", x, y, z);
+
+ ts_print = HAL_GetTick();
+ }
+
+ if(x > 0 && x > abs(y) - 50)
+ COMPASS_LEDS_Light(&compLeds, NORTH);
+ if(x < 0 && abs(x) > abs(y) - 50)
+ COMPASS_LEDS_Light(&compLeds, SOUTH);
+ if(y > 0 && y > abs(x) - 50)
+ COMPASS_LEDS_Light(&compLeds, EAST);
+ if(y < 0 && abs(y) > abs(x) - 50)
+ COMPASS_LEDS_Light(&compLeds, WEST);
+}
+
diff --git a/Core/Src/main.c b/Core/Src/main.c
new file mode 100644
index 0000000..36270f3
--- /dev/null
+++ b/Core/Src/main.c
@@ -0,0 +1,469 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * © Copyright (c) 2021 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_host.h"
+
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+#include
+#include "app.h"
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+I2C_HandleTypeDef hi2c1;
+
+I2S_HandleTypeDef hi2s2;
+I2S_HandleTypeDef hi2s3;
+
+SPI_HandleTypeDef hspi1;
+
+UART_HandleTypeDef huart2;
+
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+static void MX_I2C1_Init(void);
+static void MX_I2S2_Init(void);
+static void MX_I2S3_Init(void);
+static void MX_SPI1_Init(void);
+static void MX_USART2_UART_Init(void);
+void MX_USB_HOST_Process(void);
+
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+int __io_putchar(int ch)
+{
+ HAL_UART_Transmit(&huart2, (uint8_t*)&ch, 1, HAL_MAX_DELAY);
+ return ch;
+}
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_I2C1_Init();
+ MX_I2S2_Init();
+ MX_I2S3_Init();
+ MX_SPI1_Init();
+ MX_USB_HOST_Init();
+ MX_USART2_UART_Init();
+ /* USER CODE BEGIN 2 */
+ setup();
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+ MX_USB_HOST_Process();
+
+ /* USER CODE BEGIN 3 */
+ loop();
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+ RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE2);
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
+ RCC_OscInitStruct.HSEState = RCC_HSE_ON;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 8;
+ RCC_OscInitStruct.PLL.PLLN = 336;
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV4;
+ RCC_OscInitStruct.PLL.PLLQ = 7;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_I2S;
+ PeriphClkInitStruct.PLLI2S.PLLI2SN = 192;
+ PeriphClkInitStruct.PLLI2S.PLLI2SR = 2;
+ if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+
+ /* USER CODE BEGIN I2C1_Init 0 */
+
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ hi2c1.Init.ClockSpeed = 100000;
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ hi2c1.Init.OwnAddress1 = 0;
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ hi2c1.Init.OwnAddress2 = 0;
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+
+/**
+ * @brief I2S2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2S2_Init(void)
+{
+
+ /* USER CODE BEGIN I2S2_Init 0 */
+
+ /* USER CODE END I2S2_Init 0 */
+
+ /* USER CODE BEGIN I2S2_Init 1 */
+
+ /* USER CODE END I2S2_Init 1 */
+ hi2s2.Instance = SPI2;
+ hi2s2.Init.Mode = I2S_MODE_MASTER_TX;
+ hi2s2.Init.Standard = I2S_STANDARD_PHILIPS;
+ hi2s2.Init.DataFormat = I2S_DATAFORMAT_16B;
+ hi2s2.Init.MCLKOutput = I2S_MCLKOUTPUT_DISABLE;
+ hi2s2.Init.AudioFreq = I2S_AUDIOFREQ_8K;
+ hi2s2.Init.CPOL = I2S_CPOL_LOW;
+ hi2s2.Init.ClockSource = I2S_CLOCK_PLL;
+ hi2s2.Init.FullDuplexMode = I2S_FULLDUPLEXMODE_DISABLE;
+ if (HAL_I2S_Init(&hi2s2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2S2_Init 2 */
+
+ /* USER CODE END I2S2_Init 2 */
+
+}
+
+/**
+ * @brief I2S3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2S3_Init(void)
+{
+
+ /* USER CODE BEGIN I2S3_Init 0 */
+
+ /* USER CODE END I2S3_Init 0 */
+
+ /* USER CODE BEGIN I2S3_Init 1 */
+
+ /* USER CODE END I2S3_Init 1 */
+ hi2s3.Instance = SPI3;
+ hi2s3.Init.Mode = I2S_MODE_MASTER_TX;
+ hi2s3.Init.Standard = I2S_STANDARD_PHILIPS;
+ hi2s3.Init.DataFormat = I2S_DATAFORMAT_16B;
+ hi2s3.Init.MCLKOutput = I2S_MCLKOUTPUT_ENABLE;
+ hi2s3.Init.AudioFreq = I2S_AUDIOFREQ_96K;
+ hi2s3.Init.CPOL = I2S_CPOL_LOW;
+ hi2s3.Init.ClockSource = I2S_CLOCK_PLL;
+ hi2s3.Init.FullDuplexMode = I2S_FULLDUPLEXMODE_DISABLE;
+ if (HAL_I2S_Init(&hi2s3) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN I2S3_Init 2 */
+
+ /* USER CODE END I2S3_Init 2 */
+
+}
+
+/**
+ * @brief SPI1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_SPI1_Init(void)
+{
+
+ /* USER CODE BEGIN SPI1_Init 0 */
+
+ /* USER CODE END SPI1_Init 0 */
+
+ /* USER CODE BEGIN SPI1_Init 1 */
+
+ /* USER CODE END SPI1_Init 1 */
+ /* SPI1 parameter configuration*/
+ hspi1.Instance = SPI1;
+ hspi1.Init.Mode = SPI_MODE_MASTER;
+ hspi1.Init.Direction = SPI_DIRECTION_2LINES;
+ hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
+ hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
+ hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
+ hspi1.Init.NSS = SPI_NSS_SOFT;
+ hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;
+ hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
+ hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
+ hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
+ hspi1.Init.CRCPolynomial = 10;
+ if (HAL_SPI_Init(&hspi1) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN SPI1_Init 2 */
+
+ /* USER CODE END SPI1_Init 2 */
+
+}
+
+/**
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+
+ /* USER CODE BEGIN USART2_Init 0 */
+
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ huart2.Init.BaudRate = 115200;
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ huart2.Init.Parity = UART_PARITY_NONE;
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ {
+ Error_Handler();
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOE_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+ __HAL_RCC_GPIOD_CLK_ENABLE();
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(CS_I2C_SPI_GPIO_Port, CS_I2C_SPI_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(OTG_FS_PowerSwitchOn_GPIO_Port, OTG_FS_PowerSwitchOn_Pin, GPIO_PIN_SET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOD, LD4_Pin|LD3_Pin|LD5_Pin|LD6_Pin
+ |Audio_RST_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin : PE2 */
+ GPIO_InitStruct.Pin = GPIO_PIN_2;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
+
+ /*Configure GPIO pin : CS_I2C_SPI_Pin */
+ GPIO_InitStruct.Pin = CS_I2C_SPI_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(CS_I2C_SPI_GPIO_Port, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : PE4 PE5 MEMS_INT2_Pin */
+ GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5|MEMS_INT2_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
+
+ /*Configure GPIO pin : OTG_FS_PowerSwitchOn_Pin */
+ GPIO_InitStruct.Pin = OTG_FS_PowerSwitchOn_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(OTG_FS_PowerSwitchOn_GPIO_Port, &GPIO_InitStruct);
+
+ /*Configure GPIO pin : B1_Pin */
+ GPIO_InitStruct.Pin = B1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ HAL_GPIO_Init(B1_GPIO_Port, &GPIO_InitStruct);
+
+ /*Configure GPIO pins : LD4_Pin LD3_Pin LD5_Pin LD6_Pin
+ Audio_RST_Pin */
+ GPIO_InitStruct.Pin = LD4_Pin|LD3_Pin|LD5_Pin|LD6_Pin
+ |Audio_RST_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
+
+ /*Configure GPIO pin : OTG_FS_OverCurrent_Pin */
+ GPIO_InitStruct.Pin = OTG_FS_OverCurrent_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ HAL_GPIO_Init(OTG_FS_OverCurrent_GPIO_Port, &GPIO_InitStruct);
+
+}
+
+/* USER CODE BEGIN 4 */
+
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Core/Src/stm32f4xx_hal_msp.c b/Core/Src/stm32f4xx_hal_msp.c
new file mode 100644
index 0000000..2b74e2a
--- /dev/null
+++ b/Core/Src/stm32f4xx_hal_msp.c
@@ -0,0 +1,418 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file stm32f4xx_hal_msp.c
+ * @brief This file provides code for the MSP Initialization
+ * and de-Initialization codes.
+ ******************************************************************************
+ * @attention
+ *
+ * © Copyright (c) 2021 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN TD */
+
+/* USER CODE END TD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN Define */
+
+/* USER CODE END Define */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN Macro */
+
+/* USER CODE END Macro */
+
+/* Private variables ---------------------------------------------------------*/
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* External functions --------------------------------------------------------*/
+/* USER CODE BEGIN ExternalFunctions */
+
+/* USER CODE END ExternalFunctions */
+
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+/**
+ * Initializes the Global MSP.
+ */
+void HAL_MspInit(void)
+{
+ /* USER CODE BEGIN MspInit 0 */
+
+ /* USER CODE END MspInit 0 */
+
+ __HAL_RCC_SYSCFG_CLK_ENABLE();
+ __HAL_RCC_PWR_CLK_ENABLE();
+
+ HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_0);
+
+ /* System interrupt init*/
+
+ /* USER CODE BEGIN MspInit 1 */
+
+ /* USER CODE END MspInit 1 */
+}
+
+/**
+* @brief I2C MSP Initialization
+* This function configures the hardware resources used in this example
+* @param hi2c: I2C handle pointer
+* @retval None
+*/
+void HAL_I2C_MspInit(I2C_HandleTypeDef* hi2c)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ if(hi2c->Instance==I2C1)
+ {
+ /* USER CODE BEGIN I2C1_MspInit 0 */
+
+ /* USER CODE END I2C1_MspInit 0 */
+
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+ /**I2C1 GPIO Configuration
+ PB6 ------> I2C1_SCL
+ PB9 ------> I2C1_SDA
+ */
+ GPIO_InitStruct.Pin = Audio_SCL_Pin|Audio_SDA_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
+ GPIO_InitStruct.Pull = GPIO_PULLUP;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ GPIO_InitStruct.Alternate = GPIO_AF4_I2C1;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* Peripheral clock enable */
+ __HAL_RCC_I2C1_CLK_ENABLE();
+ /* USER CODE BEGIN I2C1_MspInit 1 */
+
+ /* USER CODE END I2C1_MspInit 1 */
+ }
+
+}
+
+/**
+* @brief I2C MSP De-Initialization
+* This function freeze the hardware resources used in this example
+* @param hi2c: I2C handle pointer
+* @retval None
+*/
+void HAL_I2C_MspDeInit(I2C_HandleTypeDef* hi2c)
+{
+ if(hi2c->Instance==I2C1)
+ {
+ /* USER CODE BEGIN I2C1_MspDeInit 0 */
+
+ /* USER CODE END I2C1_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_I2C1_CLK_DISABLE();
+
+ /**I2C1 GPIO Configuration
+ PB6 ------> I2C1_SCL
+ PB9 ------> I2C1_SDA
+ */
+ HAL_GPIO_DeInit(Audio_SCL_GPIO_Port, Audio_SCL_Pin);
+
+ HAL_GPIO_DeInit(Audio_SDA_GPIO_Port, Audio_SDA_Pin);
+
+ /* USER CODE BEGIN I2C1_MspDeInit 1 */
+
+ /* USER CODE END I2C1_MspDeInit 1 */
+ }
+
+}
+
+/**
+* @brief I2S MSP Initialization
+* This function configures the hardware resources used in this example
+* @param hi2s: I2S handle pointer
+* @retval None
+*/
+void HAL_I2S_MspInit(I2S_HandleTypeDef* hi2s)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ if(hi2s->Instance==SPI2)
+ {
+ /* USER CODE BEGIN SPI2_MspInit 0 */
+
+ /* USER CODE END SPI2_MspInit 0 */
+ /* Peripheral clock enable */
+ __HAL_RCC_SPI2_CLK_ENABLE();
+
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+ /**I2S2 GPIO Configuration
+ PC3 ------> I2S2_SD
+ PB10 ------> I2S2_CK
+ PB12 ------> I2S2_WS
+ */
+ GPIO_InitStruct.Pin = PDM_OUT_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ GPIO_InitStruct.Alternate = GPIO_AF5_SPI2;
+ HAL_GPIO_Init(PDM_OUT_GPIO_Port, &GPIO_InitStruct);
+
+ GPIO_InitStruct.Pin = CLK_IN_Pin|GPIO_PIN_12;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ GPIO_InitStruct.Alternate = GPIO_AF5_SPI2;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN SPI2_MspInit 1 */
+
+ /* USER CODE END SPI2_MspInit 1 */
+ }
+ else if(hi2s->Instance==SPI3)
+ {
+ /* USER CODE BEGIN SPI3_MspInit 0 */
+
+ /* USER CODE END SPI3_MspInit 0 */
+ /* Peripheral clock enable */
+ __HAL_RCC_SPI3_CLK_ENABLE();
+
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ /**I2S3 GPIO Configuration
+ PA4 ------> I2S3_WS
+ PC7 ------> I2S3_MCK
+ PC10 ------> I2S3_CK
+ PC12 ------> I2S3_SD
+ */
+ GPIO_InitStruct.Pin = I2S3_WS_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ GPIO_InitStruct.Alternate = GPIO_AF6_SPI3;
+ HAL_GPIO_Init(I2S3_WS_GPIO_Port, &GPIO_InitStruct);
+
+ GPIO_InitStruct.Pin = I2S3_MCK_Pin|I2S3_SCK_Pin|I2S3_SD_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ GPIO_InitStruct.Alternate = GPIO_AF6_SPI3;
+ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN SPI3_MspInit 1 */
+
+ /* USER CODE END SPI3_MspInit 1 */
+ }
+
+}
+
+/**
+* @brief I2S MSP De-Initialization
+* This function freeze the hardware resources used in this example
+* @param hi2s: I2S handle pointer
+* @retval None
+*/
+void HAL_I2S_MspDeInit(I2S_HandleTypeDef* hi2s)
+{
+ if(hi2s->Instance==SPI2)
+ {
+ /* USER CODE BEGIN SPI2_MspDeInit 0 */
+
+ /* USER CODE END SPI2_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_SPI2_CLK_DISABLE();
+
+ /**I2S2 GPIO Configuration
+ PC3 ------> I2S2_SD
+ PB10 ------> I2S2_CK
+ PB12 ------> I2S2_WS
+ */
+ HAL_GPIO_DeInit(PDM_OUT_GPIO_Port, PDM_OUT_Pin);
+
+ HAL_GPIO_DeInit(GPIOB, CLK_IN_Pin|GPIO_PIN_12);
+
+ /* USER CODE BEGIN SPI2_MspDeInit 1 */
+
+ /* USER CODE END SPI2_MspDeInit 1 */
+ }
+ else if(hi2s->Instance==SPI3)
+ {
+ /* USER CODE BEGIN SPI3_MspDeInit 0 */
+
+ /* USER CODE END SPI3_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_SPI3_CLK_DISABLE();
+
+ /**I2S3 GPIO Configuration
+ PA4 ------> I2S3_WS
+ PC7 ------> I2S3_MCK
+ PC10 ------> I2S3_CK
+ PC12 ------> I2S3_SD
+ */
+ HAL_GPIO_DeInit(I2S3_WS_GPIO_Port, I2S3_WS_Pin);
+
+ HAL_GPIO_DeInit(GPIOC, I2S3_MCK_Pin|I2S3_SCK_Pin|I2S3_SD_Pin);
+
+ /* USER CODE BEGIN SPI3_MspDeInit 1 */
+
+ /* USER CODE END SPI3_MspDeInit 1 */
+ }
+
+}
+
+/**
+* @brief SPI MSP Initialization
+* This function configures the hardware resources used in this example
+* @param hspi: SPI handle pointer
+* @retval None
+*/
+void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ if(hspi->Instance==SPI1)
+ {
+ /* USER CODE BEGIN SPI1_MspInit 0 */
+
+ /* USER CODE END SPI1_MspInit 0 */
+ /* Peripheral clock enable */
+ __HAL_RCC_SPI1_CLK_ENABLE();
+
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ /**SPI1 GPIO Configuration
+ PA5 ------> SPI1_SCK
+ PA6 ------> SPI1_MISO
+ PA7 ------> SPI1_MOSI
+ */
+ GPIO_InitStruct.Pin = SPI1_SCK_Pin|SPI1_MISO_Pin|SPI1_MISOA7_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+ GPIO_InitStruct.Alternate = GPIO_AF5_SPI1;
+ HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN SPI1_MspInit 1 */
+
+ /* USER CODE END SPI1_MspInit 1 */
+ }
+
+}
+
+/**
+* @brief SPI MSP De-Initialization
+* This function freeze the hardware resources used in this example
+* @param hspi: SPI handle pointer
+* @retval None
+*/
+void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi)
+{
+ if(hspi->Instance==SPI1)
+ {
+ /* USER CODE BEGIN SPI1_MspDeInit 0 */
+
+ /* USER CODE END SPI1_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_SPI1_CLK_DISABLE();
+
+ /**SPI1 GPIO Configuration
+ PA5 ------> SPI1_SCK
+ PA6 ------> SPI1_MISO
+ PA7 ------> SPI1_MOSI
+ */
+ HAL_GPIO_DeInit(GPIOA, SPI1_SCK_Pin|SPI1_MISO_Pin|SPI1_MISOA7_Pin);
+
+ /* USER CODE BEGIN SPI1_MspDeInit 1 */
+
+ /* USER CODE END SPI1_MspDeInit 1 */
+ }
+
+}
+
+/**
+* @brief UART MSP Initialization
+* This function configures the hardware resources used in this example
+* @param huart: UART handle pointer
+* @retval None
+*/
+void HAL_UART_MspInit(UART_HandleTypeDef* huart)
+{
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ if(huart->Instance==USART2)
+ {
+ /* USER CODE BEGIN USART2_MspInit 0 */
+
+ /* USER CODE END USART2_MspInit 0 */
+ /* Peripheral clock enable */
+ __HAL_RCC_USART2_CLK_ENABLE();
+
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ /**USART2 GPIO Configuration
+ PA2 ------> USART2_TX
+ PA3 ------> USART2_RX
+ */
+ GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3;
+ GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+ GPIO_InitStruct.Alternate = GPIO_AF7_USART2;
+ HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+
+ /* USER CODE BEGIN USART2_MspInit 1 */
+
+ /* USER CODE END USART2_MspInit 1 */
+ }
+
+}
+
+/**
+* @brief UART MSP De-Initialization
+* This function freeze the hardware resources used in this example
+* @param huart: UART handle pointer
+* @retval None
+*/
+void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
+{
+ if(huart->Instance==USART2)
+ {
+ /* USER CODE BEGIN USART2_MspDeInit 0 */
+
+ /* USER CODE END USART2_MspDeInit 0 */
+ /* Peripheral clock disable */
+ __HAL_RCC_USART2_CLK_DISABLE();
+
+ /**USART2 GPIO Configuration
+ PA2 ------> USART2_TX
+ PA3 ------> USART2_RX
+ */
+ HAL_GPIO_DeInit(GPIOA, GPIO_PIN_2|GPIO_PIN_3);
+
+ /* USER CODE BEGIN USART2_MspDeInit 1 */
+
+ /* USER CODE END USART2_MspDeInit 1 */
+ }
+
+}
+
+/* USER CODE BEGIN 1 */
+
+/* USER CODE END 1 */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Core/Src/stm32f4xx_it.c b/Core/Src/stm32f4xx_it.c
new file mode 100644
index 0000000..a134e3d
--- /dev/null
+++ b/Core/Src/stm32f4xx_it.c
@@ -0,0 +1,219 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file stm32f4xx_it.c
+ * @brief Interrupt Service Routines.
+ ******************************************************************************
+ * @attention
+ *
+ * © Copyright (c) 2021 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software component is licensed by ST under Ultimate Liberty license
+ * SLA0044, the "License"; You may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at:
+ * www.st.com/SLA0044
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "stm32f4xx_it.h"
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN TD */
+
+/* USER CODE END TD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/* External variables --------------------------------------------------------*/
+extern HCD_HandleTypeDef hhcd_USB_OTG_FS;
+/* USER CODE BEGIN EV */
+
+/* USER CODE END EV */
+
+/******************************************************************************/
+/* Cortex-M4 Processor Interruption and Exception Handlers */
+/******************************************************************************/
+/**
+ * @brief This function handles Non maskable interrupt.
+ */
+void NMI_Handler(void)
+{
+ /* USER CODE BEGIN NonMaskableInt_IRQn 0 */
+
+ /* USER CODE END NonMaskableInt_IRQn 0 */
+ /* USER CODE BEGIN NonMaskableInt_IRQn 1 */
+ while (1)
+ {
+ }
+ /* USER CODE END NonMaskableInt_IRQn 1 */
+}
+
+/**
+ * @brief This function handles Hard fault interrupt.
+ */
+void HardFault_Handler(void)
+{
+ /* USER CODE BEGIN HardFault_IRQn 0 */
+
+ /* USER CODE END HardFault_IRQn 0 */
+ while (1)
+ {
+ /* USER CODE BEGIN W1_HardFault_IRQn 0 */
+ /* USER CODE END W1_HardFault_IRQn 0 */
+ }
+}
+
+/**
+ * @brief This function handles Memory management fault.
+ */
+void MemManage_Handler(void)
+{
+ /* USER CODE BEGIN MemoryManagement_IRQn 0 */
+
+ /* USER CODE END MemoryManagement_IRQn 0 */
+ while (1)
+ {
+ /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */
+ /* USER CODE END W1_MemoryManagement_IRQn 0 */
+ }
+}
+
+/**
+ * @brief This function handles Pre-fetch fault, memory access fault.
+ */
+void BusFault_Handler(void)
+{
+ /* USER CODE BEGIN BusFault_IRQn 0 */
+
+ /* USER CODE END BusFault_IRQn 0 */
+ while (1)
+ {
+ /* USER CODE BEGIN W1_BusFault_IRQn 0 */
+ /* USER CODE END W1_BusFault_IRQn 0 */
+ }
+}
+
+/**
+ * @brief This function handles Undefined instruction or illegal state.
+ */
+void UsageFault_Handler(void)
+{
+ /* USER CODE BEGIN UsageFault_IRQn 0 */
+
+ /* USER CODE END UsageFault_IRQn 0 */
+ while (1)
+ {
+ /* USER CODE BEGIN W1_UsageFault_IRQn 0 */
+ /* USER CODE END W1_UsageFault_IRQn 0 */
+ }
+}
+
+/**
+ * @brief This function handles System service call via SWI instruction.
+ */
+void SVC_Handler(void)
+{
+ /* USER CODE BEGIN SVCall_IRQn 0 */
+
+ /* USER CODE END SVCall_IRQn 0 */
+ /* USER CODE BEGIN SVCall_IRQn 1 */
+
+ /* USER CODE END SVCall_IRQn 1 */
+}
+
+/**
+ * @brief This function handles Debug monitor.
+ */
+void DebugMon_Handler(void)
+{
+ /* USER CODE BEGIN DebugMonitor_IRQn 0 */
+
+ /* USER CODE END DebugMonitor_IRQn 0 */
+ /* USER CODE BEGIN DebugMonitor_IRQn 1 */
+
+ /* USER CODE END DebugMonitor_IRQn 1 */
+}
+
+/**
+ * @brief This function handles Pendable request for system service.
+ */
+void PendSV_Handler(void)
+{
+ /* USER CODE BEGIN PendSV_IRQn 0 */
+
+ /* USER CODE END PendSV_IRQn 0 */
+ /* USER CODE BEGIN PendSV_IRQn 1 */
+
+ /* USER CODE END PendSV_IRQn 1 */
+}
+
+/**
+ * @brief This function handles System tick timer.
+ */
+void SysTick_Handler(void)
+{
+ /* USER CODE BEGIN SysTick_IRQn 0 */
+
+ /* USER CODE END SysTick_IRQn 0 */
+ HAL_IncTick();
+ /* USER CODE BEGIN SysTick_IRQn 1 */
+
+ /* USER CODE END SysTick_IRQn 1 */
+}
+
+/******************************************************************************/
+/* STM32F4xx Peripheral Interrupt Handlers */
+/* Add here the Interrupt Handlers for the used peripherals. */
+/* For the available peripheral interrupt handler names, */
+/* please refer to the startup file (startup_stm32f4xx.s). */
+/******************************************************************************/
+
+/**
+ * @brief This function handles USB On The Go FS global interrupt.
+ */
+void OTG_FS_IRQHandler(void)
+{
+ /* USER CODE BEGIN OTG_FS_IRQn 0 */
+
+ /* USER CODE END OTG_FS_IRQn 0 */
+ HAL_HCD_IRQHandler(&hhcd_USB_OTG_FS);
+ /* USER CODE BEGIN OTG_FS_IRQn 1 */
+
+ /* USER CODE END OTG_FS_IRQn 1 */
+}
+
+/* USER CODE BEGIN 1 */
+
+/* USER CODE END 1 */
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Core/Src/syscalls.c b/Core/Src/syscalls.c
new file mode 100644
index 0000000..4ec9584
--- /dev/null
+++ b/Core/Src/syscalls.c
@@ -0,0 +1,159 @@
+/**
+ ******************************************************************************
+ * @file syscalls.c
+ * @author Auto-generated by STM32CubeIDE
+ * @brief STM32CubeIDE Minimal System calls file
+ *
+ * For more information about which c-functions
+ * need which of these lowlevel functions
+ * please consult the Newlib libc-manual
+ ******************************************************************************
+ * @attention
+ *
+ * © Copyright (c) 2020 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software component is licensed by ST under BSD 3-Clause license,
+ * the "License"; You may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ * opensource.org/licenses/BSD-3-Clause
+ *
+ ******************************************************************************
+ */
+
+/* Includes */
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+
+/* Variables */
+//#undef errno
+extern int errno;
+extern int __io_putchar(int ch) __attribute__((weak));
+extern int __io_getchar(void) __attribute__((weak));
+
+register char * stack_ptr asm("sp");
+
+char *__env[1] = { 0 };
+char **environ = __env;
+
+
+/* Functions */
+void initialise_monitor_handles()
+{
+}
+
+int _getpid(void)
+{
+ return 1;
+}
+
+int _kill(int pid, int sig)
+{
+ errno = EINVAL;
+ return -1;
+}
+
+void _exit (int status)
+{
+ _kill(status, -1);
+ while (1) {} /* Make sure we hang here */
+}
+
+__attribute__((weak)) int _read(int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ *ptr++ = __io_getchar();
+ }
+
+return len;
+}
+
+__attribute__((weak)) int _write(int file, char *ptr, int len)
+{
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ __io_putchar(*ptr++);
+ }
+ return len;
+}
+
+int _close(int file)
+{
+ return -1;
+}
+
+
+int _fstat(int file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _isatty(int file)
+{
+ return 1;
+}
+
+int _lseek(int file, int ptr, int dir)
+{
+ return 0;
+}
+
+int _open(char *path, int flags, ...)
+{
+ /* Pretend like we always fail */
+ return -1;
+}
+
+int _wait(int *status)
+{
+ errno = ECHILD;
+ return -1;
+}
+
+int _unlink(char *name)
+{
+ errno = ENOENT;
+ return -1;
+}
+
+int _times(struct tms *buf)
+{
+ return -1;
+}
+
+int _stat(char *file, struct stat *st)
+{
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _link(char *old, char *new)
+{
+ errno = EMLINK;
+ return -1;
+}
+
+int _fork(void)
+{
+ errno = EAGAIN;
+ return -1;
+}
+
+int _execve(char *name, char **argv, char **env)
+{
+ errno = ENOMEM;
+ return -1;
+}
diff --git a/Core/Src/sysmem.c b/Core/Src/sysmem.c
new file mode 100644
index 0000000..d7cc52c
--- /dev/null
+++ b/Core/Src/sysmem.c
@@ -0,0 +1,80 @@
+/**
+ ******************************************************************************
+ * @file sysmem.c
+ * @author Generated by STM32CubeIDE
+ * @brief STM32CubeIDE System Memory calls file
+ *
+ * For more information about which C functions
+ * need which of these lowlevel functions
+ * please consult the newlib libc manual
+ ******************************************************************************
+ * @attention
+ *
+ * © Copyright (c) 2020 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software component is licensed by ST under BSD 3-Clause license,
+ * the "License"; You may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ * opensource.org/licenses/BSD-3-Clause
+ *
+ ******************************************************************************
+ */
+
+/* Includes */
+#include
+#include
+
+/**
+ * Pointer to the current high watermark of the heap usage
+ */
+static uint8_t *__sbrk_heap_end = NULL;
+
+/**
+ * @brief _sbrk() allocates memory to the newlib heap and is used by malloc
+ * and others from the C library
+ *
+ * @verbatim
+ * ############################################################################
+ * # .data # .bss # newlib heap # MSP stack #
+ * # # # # Reserved by _Min_Stack_Size #
+ * ############################################################################
+ * ^-- RAM start ^-- _end _estack, RAM end --^
+ * @endverbatim
+ *
+ * This implementation starts allocating at the '_end' linker symbol
+ * The '_Min_Stack_Size' linker symbol reserves a memory for the MSP stack
+ * The implementation considers '_estack' linker symbol to be RAM end
+ * NOTE: If the MSP stack, at any point during execution, grows larger than the
+ * reserved size, please increase the '_Min_Stack_Size'.
+ *
+ * @param incr Memory size
+ * @return Pointer to allocated memory
+ */
+void *_sbrk(ptrdiff_t incr)
+{
+ extern uint8_t _end; /* Symbol defined in the linker script */
+ extern uint8_t _estack; /* Symbol defined in the linker script */
+ extern uint32_t _Min_Stack_Size; /* Symbol defined in the linker script */
+ const uint32_t stack_limit = (uint32_t)&_estack - (uint32_t)&_Min_Stack_Size;
+ const uint8_t *max_heap = (uint8_t *)stack_limit;
+ uint8_t *prev_heap_end;
+
+ /* Initialize heap end at first call */
+ if (NULL == __sbrk_heap_end)
+ {
+ __sbrk_heap_end = &_end;
+ }
+
+ /* Protect heap from growing into the reserved MSP stack */
+ if (__sbrk_heap_end + incr > max_heap)
+ {
+ errno = ENOMEM;
+ return (void *)-1;
+ }
+
+ prev_heap_end = __sbrk_heap_end;
+ __sbrk_heap_end += incr;
+
+ return (void *)prev_heap_end;
+}
diff --git a/Core/Src/system_stm32f4xx.c b/Core/Src/system_stm32f4xx.c
new file mode 100644
index 0000000..bcb2b9f
--- /dev/null
+++ b/Core/Src/system_stm32f4xx.c
@@ -0,0 +1,727 @@
+/**
+ ******************************************************************************
+ * @file system_stm32f4xx.c
+ * @author MCD Application Team
+ * @brief CMSIS Cortex-M4 Device Peripheral Access Layer System Source File.
+ *
+ * This file provides two functions and one global variable to be called from
+ * user application:
+ * - SystemInit(): This function is called at startup just after reset and
+ * before branch to main program. This call is made inside
+ * the "startup_stm32f4xx.s" file.
+ *
+ * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used
+ * by the user application to setup the SysTick
+ * timer or configure other parameters.
+ *
+ * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must
+ * be called whenever the core clock is changed
+ * during program execution.
+ *
+ *
+ ******************************************************************************
+ * @attention
+ *
+ * © Copyright (c) 2017 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software component is licensed by ST under BSD 3-Clause license,
+ * the "License"; You may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ * opensource.org/licenses/BSD-3-Clause
+ *
+ ******************************************************************************
+ */
+
+/** @addtogroup CMSIS
+ * @{
+ */
+
+/** @addtogroup stm32f4xx_system
+ * @{
+ */
+
+/** @addtogroup STM32F4xx_System_Private_Includes
+ * @{
+ */
+
+
+#include "stm32f4xx.h"
+
+#if !defined (HSE_VALUE)
+ #define HSE_VALUE ((uint32_t)25000000) /*!< Default value of the External oscillator in Hz */
+#endif /* HSE_VALUE */
+
+#if !defined (HSI_VALUE)
+ #define HSI_VALUE ((uint32_t)16000000) /*!< Value of the Internal oscillator in Hz*/
+#endif /* HSI_VALUE */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F4xx_System_Private_TypesDefinitions
+ * @{
+ */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F4xx_System_Private_Defines
+ * @{
+ */
+
+/************************* Miscellaneous Configuration ************************/
+/*!< Uncomment the following line if you need to use external SRAM or SDRAM as data memory */
+#if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx)\
+ || defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\
+ || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx)
+/* #define DATA_IN_ExtSRAM */
+#endif /* STM32F40xxx || STM32F41xxx || STM32F42xxx || STM32F43xxx || STM32F469xx || STM32F479xx ||\
+ STM32F412Zx || STM32F412Vx */
+
+#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\
+ || defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx)
+/* #define DATA_IN_ExtSDRAM */
+#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F446xx || STM32F469xx ||\
+ STM32F479xx */
+
+/*!< Uncomment the following line if you need to relocate your vector Table in
+ Internal SRAM. */
+/* #define VECT_TAB_SRAM */
+#define VECT_TAB_OFFSET 0x00 /*!< Vector Table base offset field.
+ This value must be a multiple of 0x200. */
+/******************************************************************************/
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F4xx_System_Private_Macros
+ * @{
+ */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F4xx_System_Private_Variables
+ * @{
+ */
+ /* This variable is updated in three ways:
+ 1) by calling CMSIS function SystemCoreClockUpdate()
+ 2) by calling HAL API function HAL_RCC_GetHCLKFreq()
+ 3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency
+ Note: If you use this function to configure the system clock; then there
+ is no need to call the 2 first functions listed above, since SystemCoreClock
+ variable is updated automatically.
+ */
+uint32_t SystemCoreClock = 16000000;
+const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};
+const uint8_t APBPrescTable[8] = {0, 0, 0, 0, 1, 2, 3, 4};
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F4xx_System_Private_FunctionPrototypes
+ * @{
+ */
+
+#if defined (DATA_IN_ExtSRAM) || defined (DATA_IN_ExtSDRAM)
+ static void SystemInit_ExtMemCtl(void);
+#endif /* DATA_IN_ExtSRAM || DATA_IN_ExtSDRAM */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F4xx_System_Private_Functions
+ * @{
+ */
+
+/**
+ * @brief Setup the microcontroller system
+ * Initialize the FPU setting, vector table location and External memory
+ * configuration.
+ * @param None
+ * @retval None
+ */
+void SystemInit(void)
+{
+ /* FPU settings ------------------------------------------------------------*/
+ #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
+ SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */
+ #endif
+
+#if defined (DATA_IN_ExtSRAM) || defined (DATA_IN_ExtSDRAM)
+ SystemInit_ExtMemCtl();
+#endif /* DATA_IN_ExtSRAM || DATA_IN_ExtSDRAM */
+
+ /* Configure the Vector Table location add offset address ------------------*/
+#ifdef VECT_TAB_SRAM
+ SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */
+#else
+ SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */
+#endif
+}
+
+/**
+ * @brief Update SystemCoreClock variable according to Clock Register Values.
+ * The SystemCoreClock variable contains the core clock (HCLK), it can
+ * be used by the user application to setup the SysTick timer or configure
+ * other parameters.
+ *
+ * @note Each time the core clock (HCLK) changes, this function must be called
+ * to update SystemCoreClock variable value. Otherwise, any configuration
+ * based on this variable will be incorrect.
+ *
+ * @note - The system frequency computed by this function is not the real
+ * frequency in the chip. It is calculated based on the predefined
+ * constant and the selected clock source:
+ *
+ * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*)
+ *
+ * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**)
+ *
+ * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**)
+ * or HSI_VALUE(*) multiplied/divided by the PLL factors.
+ *
+ * (*) HSI_VALUE is a constant defined in stm32f4xx_hal_conf.h file (default value
+ * 16 MHz) but the real value may vary depending on the variations
+ * in voltage and temperature.
+ *
+ * (**) HSE_VALUE is a constant defined in stm32f4xx_hal_conf.h file (its value
+ * depends on the application requirements), user has to ensure that HSE_VALUE
+ * is same as the real frequency of the crystal used. Otherwise, this function
+ * may have wrong result.
+ *
+ * - The result of this function could be not correct when using fractional
+ * value for HSE crystal.
+ *
+ * @param None
+ * @retval None
+ */
+void SystemCoreClockUpdate(void)
+{
+ uint32_t tmp = 0, pllvco = 0, pllp = 2, pllsource = 0, pllm = 2;
+
+ /* Get SYSCLK source -------------------------------------------------------*/
+ tmp = RCC->CFGR & RCC_CFGR_SWS;
+
+ switch (tmp)
+ {
+ case 0x00: /* HSI used as system clock source */
+ SystemCoreClock = HSI_VALUE;
+ break;
+ case 0x04: /* HSE used as system clock source */
+ SystemCoreClock = HSE_VALUE;
+ break;
+ case 0x08: /* PLL used as system clock source */
+
+ /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N
+ SYSCLK = PLL_VCO / PLL_P
+ */
+ pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) >> 22;
+ pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM;
+
+ if (pllsource != 0)
+ {
+ /* HSE used as PLL clock source */
+ pllvco = (HSE_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);
+ }
+ else
+ {
+ /* HSI used as PLL clock source */
+ pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);
+ }
+
+ pllp = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >>16) + 1 ) *2;
+ SystemCoreClock = pllvco/pllp;
+ break;
+ default:
+ SystemCoreClock = HSI_VALUE;
+ break;
+ }
+ /* Compute HCLK frequency --------------------------------------------------*/
+ /* Get HCLK prescaler */
+ tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)];
+ /* HCLK frequency */
+ SystemCoreClock >>= tmp;
+}
+
+#if defined (DATA_IN_ExtSRAM) && defined (DATA_IN_ExtSDRAM)
+#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\
+ || defined(STM32F469xx) || defined(STM32F479xx)
+/**
+ * @brief Setup the external memory controller.
+ * Called in startup_stm32f4xx.s before jump to main.
+ * This function configures the external memories (SRAM/SDRAM)
+ * This SRAM/SDRAM will be used as program data memory (including heap and stack).
+ * @param None
+ * @retval None
+ */
+void SystemInit_ExtMemCtl(void)
+{
+ __IO uint32_t tmp = 0x00;
+
+ register uint32_t tmpreg = 0, timeout = 0xFFFF;
+ register __IO uint32_t index;
+
+ /* Enable GPIOC, GPIOD, GPIOE, GPIOF, GPIOG, GPIOH and GPIOI interface clock */
+ RCC->AHB1ENR |= 0x000001F8;
+
+ /* Delay after an RCC peripheral clock enabling */
+ tmp = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOCEN);
+
+ /* Connect PDx pins to FMC Alternate function */
+ GPIOD->AFR[0] = 0x00CCC0CC;
+ GPIOD->AFR[1] = 0xCCCCCCCC;
+ /* Configure PDx pins in Alternate function mode */
+ GPIOD->MODER = 0xAAAA0A8A;
+ /* Configure PDx pins speed to 100 MHz */
+ GPIOD->OSPEEDR = 0xFFFF0FCF;
+ /* Configure PDx pins Output type to push-pull */
+ GPIOD->OTYPER = 0x00000000;
+ /* No pull-up, pull-down for PDx pins */
+ GPIOD->PUPDR = 0x00000000;
+
+ /* Connect PEx pins to FMC Alternate function */
+ GPIOE->AFR[0] = 0xC00CC0CC;
+ GPIOE->AFR[1] = 0xCCCCCCCC;
+ /* Configure PEx pins in Alternate function mode */
+ GPIOE->MODER = 0xAAAA828A;
+ /* Configure PEx pins speed to 100 MHz */
+ GPIOE->OSPEEDR = 0xFFFFC3CF;
+ /* Configure PEx pins Output type to push-pull */
+ GPIOE->OTYPER = 0x00000000;
+ /* No pull-up, pull-down for PEx pins */
+ GPIOE->PUPDR = 0x00000000;
+
+ /* Connect PFx pins to FMC Alternate function */
+ GPIOF->AFR[0] = 0xCCCCCCCC;
+ GPIOF->AFR[1] = 0xCCCCCCCC;
+ /* Configure PFx pins in Alternate function mode */
+ GPIOF->MODER = 0xAA800AAA;
+ /* Configure PFx pins speed to 50 MHz */
+ GPIOF->OSPEEDR = 0xAA800AAA;
+ /* Configure PFx pins Output type to push-pull */
+ GPIOF->OTYPER = 0x00000000;
+ /* No pull-up, pull-down for PFx pins */
+ GPIOF->PUPDR = 0x00000000;
+
+ /* Connect PGx pins to FMC Alternate function */
+ GPIOG->AFR[0] = 0xCCCCCCCC;
+ GPIOG->AFR[1] = 0xCCCCCCCC;
+ /* Configure PGx pins in Alternate function mode */
+ GPIOG->MODER = 0xAAAAAAAA;
+ /* Configure PGx pins speed to 50 MHz */
+ GPIOG->OSPEEDR = 0xAAAAAAAA;
+ /* Configure PGx pins Output type to push-pull */
+ GPIOG->OTYPER = 0x00000000;
+ /* No pull-up, pull-down for PGx pins */
+ GPIOG->PUPDR = 0x00000000;
+
+ /* Connect PHx pins to FMC Alternate function */
+ GPIOH->AFR[0] = 0x00C0CC00;
+ GPIOH->AFR[1] = 0xCCCCCCCC;
+ /* Configure PHx pins in Alternate function mode */
+ GPIOH->MODER = 0xAAAA08A0;
+ /* Configure PHx pins speed to 50 MHz */
+ GPIOH->OSPEEDR = 0xAAAA08A0;
+ /* Configure PHx pins Output type to push-pull */
+ GPIOH->OTYPER = 0x00000000;
+ /* No pull-up, pull-down for PHx pins */
+ GPIOH->PUPDR = 0x00000000;
+
+ /* Connect PIx pins to FMC Alternate function */
+ GPIOI->AFR[0] = 0xCCCCCCCC;
+ GPIOI->AFR[1] = 0x00000CC0;
+ /* Configure PIx pins in Alternate function mode */
+ GPIOI->MODER = 0x0028AAAA;
+ /* Configure PIx pins speed to 50 MHz */
+ GPIOI->OSPEEDR = 0x0028AAAA;
+ /* Configure PIx pins Output type to push-pull */
+ GPIOI->OTYPER = 0x00000000;
+ /* No pull-up, pull-down for PIx pins */
+ GPIOI->PUPDR = 0x00000000;
+
+/*-- FMC Configuration -------------------------------------------------------*/
+ /* Enable the FMC interface clock */
+ RCC->AHB3ENR |= 0x00000001;
+ /* Delay after an RCC peripheral clock enabling */
+ tmp = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN);
+
+ FMC_Bank5_6->SDCR[0] = 0x000019E4;
+ FMC_Bank5_6->SDTR[0] = 0x01115351;
+
+ /* SDRAM initialization sequence */
+ /* Clock enable command */
+ FMC_Bank5_6->SDCMR = 0x00000011;
+ tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
+ while((tmpreg != 0) && (timeout-- > 0))
+ {
+ tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
+ }
+
+ /* Delay */
+ for (index = 0; index<1000; index++);
+
+ /* PALL command */
+ FMC_Bank5_6->SDCMR = 0x00000012;
+ timeout = 0xFFFF;
+ while((tmpreg != 0) && (timeout-- > 0))
+ {
+ tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
+ }
+
+ /* Auto refresh command */
+ FMC_Bank5_6->SDCMR = 0x00000073;
+ timeout = 0xFFFF;
+ while((tmpreg != 0) && (timeout-- > 0))
+ {
+ tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
+ }
+
+ /* MRD register program */
+ FMC_Bank5_6->SDCMR = 0x00046014;
+ timeout = 0xFFFF;
+ while((tmpreg != 0) && (timeout-- > 0))
+ {
+ tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
+ }
+
+ /* Set refresh count */
+ tmpreg = FMC_Bank5_6->SDRTR;
+ FMC_Bank5_6->SDRTR = (tmpreg | (0x0000027C<<1));
+
+ /* Disable write protection */
+ tmpreg = FMC_Bank5_6->SDCR[0];
+ FMC_Bank5_6->SDCR[0] = (tmpreg & 0xFFFFFDFF);
+
+#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)
+ /* Configure and enable Bank1_SRAM2 */
+ FMC_Bank1->BTCR[2] = 0x00001011;
+ FMC_Bank1->BTCR[3] = 0x00000201;
+ FMC_Bank1E->BWTR[2] = 0x0fffffff;
+#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx */
+#if defined(STM32F469xx) || defined(STM32F479xx)
+ /* Configure and enable Bank1_SRAM2 */
+ FMC_Bank1->BTCR[2] = 0x00001091;
+ FMC_Bank1->BTCR[3] = 0x00110212;
+ FMC_Bank1E->BWTR[2] = 0x0fffffff;
+#endif /* STM32F469xx || STM32F479xx */
+
+ (void)(tmp);
+}
+#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F469xx || STM32F479xx */
+#elif defined (DATA_IN_ExtSRAM) || defined (DATA_IN_ExtSDRAM)
+/**
+ * @brief Setup the external memory controller.
+ * Called in startup_stm32f4xx.s before jump to main.
+ * This function configures the external memories (SRAM/SDRAM)
+ * This SRAM/SDRAM will be used as program data memory (including heap and stack).
+ * @param None
+ * @retval None
+ */
+void SystemInit_ExtMemCtl(void)
+{
+ __IO uint32_t tmp = 0x00;
+#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\
+ || defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx)
+#if defined (DATA_IN_ExtSDRAM)
+ register uint32_t tmpreg = 0, timeout = 0xFFFF;
+ register __IO uint32_t index;
+
+#if defined(STM32F446xx)
+ /* Enable GPIOA, GPIOC, GPIOD, GPIOE, GPIOF, GPIOG interface
+ clock */
+ RCC->AHB1ENR |= 0x0000007D;
+#else
+ /* Enable GPIOC, GPIOD, GPIOE, GPIOF, GPIOG, GPIOH and GPIOI interface
+ clock */
+ RCC->AHB1ENR |= 0x000001F8;
+#endif /* STM32F446xx */
+ /* Delay after an RCC peripheral clock enabling */
+ tmp = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOCEN);
+
+#if defined(STM32F446xx)
+ /* Connect PAx pins to FMC Alternate function */
+ GPIOA->AFR[0] |= 0xC0000000;
+ GPIOA->AFR[1] |= 0x00000000;
+ /* Configure PDx pins in Alternate function mode */
+ GPIOA->MODER |= 0x00008000;
+ /* Configure PDx pins speed to 50 MHz */
+ GPIOA->OSPEEDR |= 0x00008000;
+ /* Configure PDx pins Output type to push-pull */
+ GPIOA->OTYPER |= 0x00000000;
+ /* No pull-up, pull-down for PDx pins */
+ GPIOA->PUPDR |= 0x00000000;
+
+ /* Connect PCx pins to FMC Alternate function */
+ GPIOC->AFR[0] |= 0x00CC0000;
+ GPIOC->AFR[1] |= 0x00000000;
+ /* Configure PDx pins in Alternate function mode */
+ GPIOC->MODER |= 0x00000A00;
+ /* Configure PDx pins speed to 50 MHz */
+ GPIOC->OSPEEDR |= 0x00000A00;
+ /* Configure PDx pins Output type to push-pull */
+ GPIOC->OTYPER |= 0x00000000;
+ /* No pull-up, pull-down for PDx pins */
+ GPIOC->PUPDR |= 0x00000000;
+#endif /* STM32F446xx */
+
+ /* Connect PDx pins to FMC Alternate function */
+ GPIOD->AFR[0] = 0x000000CC;
+ GPIOD->AFR[1] = 0xCC000CCC;
+ /* Configure PDx pins in Alternate function mode */
+ GPIOD->MODER = 0xA02A000A;
+ /* Configure PDx pins speed to 50 MHz */
+ GPIOD->OSPEEDR = 0xA02A000A;
+ /* Configure PDx pins Output type to push-pull */
+ GPIOD->OTYPER = 0x00000000;
+ /* No pull-up, pull-down for PDx pins */
+ GPIOD->PUPDR = 0x00000000;
+
+ /* Connect PEx pins to FMC Alternate function */
+ GPIOE->AFR[0] = 0xC00000CC;
+ GPIOE->AFR[1] = 0xCCCCCCCC;
+ /* Configure PEx pins in Alternate function mode */
+ GPIOE->MODER = 0xAAAA800A;
+ /* Configure PEx pins speed to 50 MHz */
+ GPIOE->OSPEEDR = 0xAAAA800A;
+ /* Configure PEx pins Output type to push-pull */
+ GPIOE->OTYPER = 0x00000000;
+ /* No pull-up, pull-down for PEx pins */
+ GPIOE->PUPDR = 0x00000000;
+
+ /* Connect PFx pins to FMC Alternate function */
+ GPIOF->AFR[0] = 0xCCCCCCCC;
+ GPIOF->AFR[1] = 0xCCCCCCCC;
+ /* Configure PFx pins in Alternate function mode */
+ GPIOF->MODER = 0xAA800AAA;
+ /* Configure PFx pins speed to 50 MHz */
+ GPIOF->OSPEEDR = 0xAA800AAA;
+ /* Configure PFx pins Output type to push-pull */
+ GPIOF->OTYPER = 0x00000000;
+ /* No pull-up, pull-down for PFx pins */
+ GPIOF->PUPDR = 0x00000000;
+
+ /* Connect PGx pins to FMC Alternate function */
+ GPIOG->AFR[0] = 0xCCCCCCCC;
+ GPIOG->AFR[1] = 0xCCCCCCCC;
+ /* Configure PGx pins in Alternate function mode */
+ GPIOG->MODER = 0xAAAAAAAA;
+ /* Configure PGx pins speed to 50 MHz */
+ GPIOG->OSPEEDR = 0xAAAAAAAA;
+ /* Configure PGx pins Output type to push-pull */
+ GPIOG->OTYPER = 0x00000000;
+ /* No pull-up, pull-down for PGx pins */
+ GPIOG->PUPDR = 0x00000000;
+
+#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\
+ || defined(STM32F469xx) || defined(STM32F479xx)
+ /* Connect PHx pins to FMC Alternate function */
+ GPIOH->AFR[0] = 0x00C0CC00;
+ GPIOH->AFR[1] = 0xCCCCCCCC;
+ /* Configure PHx pins in Alternate function mode */
+ GPIOH->MODER = 0xAAAA08A0;
+ /* Configure PHx pins speed to 50 MHz */
+ GPIOH->OSPEEDR = 0xAAAA08A0;
+ /* Configure PHx pins Output type to push-pull */
+ GPIOH->OTYPER = 0x00000000;
+ /* No pull-up, pull-down for PHx pins */
+ GPIOH->PUPDR = 0x00000000;
+
+ /* Connect PIx pins to FMC Alternate function */
+ GPIOI->AFR[0] = 0xCCCCCCCC;
+ GPIOI->AFR[1] = 0x00000CC0;
+ /* Configure PIx pins in Alternate function mode */
+ GPIOI->MODER = 0x0028AAAA;
+ /* Configure PIx pins speed to 50 MHz */
+ GPIOI->OSPEEDR = 0x0028AAAA;
+ /* Configure PIx pins Output type to push-pull */
+ GPIOI->OTYPER = 0x00000000;
+ /* No pull-up, pull-down for PIx pins */
+ GPIOI->PUPDR = 0x00000000;
+#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F469xx || STM32F479xx */
+
+/*-- FMC Configuration -------------------------------------------------------*/
+ /* Enable the FMC interface clock */
+ RCC->AHB3ENR |= 0x00000001;
+ /* Delay after an RCC peripheral clock enabling */
+ tmp = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN);
+
+ /* Configure and enable SDRAM bank1 */
+#if defined(STM32F446xx)
+ FMC_Bank5_6->SDCR[0] = 0x00001954;
+#else
+ FMC_Bank5_6->SDCR[0] = 0x000019E4;
+#endif /* STM32F446xx */
+ FMC_Bank5_6->SDTR[0] = 0x01115351;
+
+ /* SDRAM initialization sequence */
+ /* Clock enable command */
+ FMC_Bank5_6->SDCMR = 0x00000011;
+ tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
+ while((tmpreg != 0) && (timeout-- > 0))
+ {
+ tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
+ }
+
+ /* Delay */
+ for (index = 0; index<1000; index++);
+
+ /* PALL command */
+ FMC_Bank5_6->SDCMR = 0x00000012;
+ timeout = 0xFFFF;
+ while((tmpreg != 0) && (timeout-- > 0))
+ {
+ tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
+ }
+
+ /* Auto refresh command */
+#if defined(STM32F446xx)
+ FMC_Bank5_6->SDCMR = 0x000000F3;
+#else
+ FMC_Bank5_6->SDCMR = 0x00000073;
+#endif /* STM32F446xx */
+ timeout = 0xFFFF;
+ while((tmpreg != 0) && (timeout-- > 0))
+ {
+ tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
+ }
+
+ /* MRD register program */
+#if defined(STM32F446xx)
+ FMC_Bank5_6->SDCMR = 0x00044014;
+#else
+ FMC_Bank5_6->SDCMR = 0x00046014;
+#endif /* STM32F446xx */
+ timeout = 0xFFFF;
+ while((tmpreg != 0) && (timeout-- > 0))
+ {
+ tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
+ }
+
+ /* Set refresh count */
+ tmpreg = FMC_Bank5_6->SDRTR;
+#if defined(STM32F446xx)
+ FMC_Bank5_6->SDRTR = (tmpreg | (0x0000050C<<1));
+#else
+ FMC_Bank5_6->SDRTR = (tmpreg | (0x0000027C<<1));
+#endif /* STM32F446xx */
+
+ /* Disable write protection */
+ tmpreg = FMC_Bank5_6->SDCR[0];
+ FMC_Bank5_6->SDCR[0] = (tmpreg & 0xFFFFFDFF);
+#endif /* DATA_IN_ExtSDRAM */
+#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F446xx || STM32F469xx || STM32F479xx */
+
+#if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx)\
+ || defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\
+ || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx)
+
+#if defined(DATA_IN_ExtSRAM)
+/*-- GPIOs Configuration -----------------------------------------------------*/
+ /* Enable GPIOD, GPIOE, GPIOF and GPIOG interface clock */
+ RCC->AHB1ENR |= 0x00000078;
+ /* Delay after an RCC peripheral clock enabling */
+ tmp = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIODEN);
+
+ /* Connect PDx pins to FMC Alternate function */
+ GPIOD->AFR[0] = 0x00CCC0CC;
+ GPIOD->AFR[1] = 0xCCCCCCCC;
+ /* Configure PDx pins in Alternate function mode */
+ GPIOD->MODER = 0xAAAA0A8A;
+ /* Configure PDx pins speed to 100 MHz */
+ GPIOD->OSPEEDR = 0xFFFF0FCF;
+ /* Configure PDx pins Output type to push-pull */
+ GPIOD->OTYPER = 0x00000000;
+ /* No pull-up, pull-down for PDx pins */
+ GPIOD->PUPDR = 0x00000000;
+
+ /* Connect PEx pins to FMC Alternate function */
+ GPIOE->AFR[0] = 0xC00CC0CC;
+ GPIOE->AFR[1] = 0xCCCCCCCC;
+ /* Configure PEx pins in Alternate function mode */
+ GPIOE->MODER = 0xAAAA828A;
+ /* Configure PEx pins speed to 100 MHz */
+ GPIOE->OSPEEDR = 0xFFFFC3CF;
+ /* Configure PEx pins Output type to push-pull */
+ GPIOE->OTYPER = 0x00000000;
+ /* No pull-up, pull-down for PEx pins */
+ GPIOE->PUPDR = 0x00000000;
+
+ /* Connect PFx pins to FMC Alternate function */
+ GPIOF->AFR[0] = 0x00CCCCCC;
+ GPIOF->AFR[1] = 0xCCCC0000;
+ /* Configure PFx pins in Alternate function mode */
+ GPIOF->MODER = 0xAA000AAA;
+ /* Configure PFx pins speed to 100 MHz */
+ GPIOF->OSPEEDR = 0xFF000FFF;
+ /* Configure PFx pins Output type to push-pull */
+ GPIOF->OTYPER = 0x00000000;
+ /* No pull-up, pull-down for PFx pins */
+ GPIOF->PUPDR = 0x00000000;
+
+ /* Connect PGx pins to FMC Alternate function */
+ GPIOG->AFR[0] = 0x00CCCCCC;
+ GPIOG->AFR[1] = 0x000000C0;
+ /* Configure PGx pins in Alternate function mode */
+ GPIOG->MODER = 0x00085AAA;
+ /* Configure PGx pins speed to 100 MHz */
+ GPIOG->OSPEEDR = 0x000CAFFF;
+ /* Configure PGx pins Output type to push-pull */
+ GPIOG->OTYPER = 0x00000000;
+ /* No pull-up, pull-down for PGx pins */
+ GPIOG->PUPDR = 0x00000000;
+
+/*-- FMC/FSMC Configuration --------------------------------------------------*/
+ /* Enable the FMC/FSMC interface clock */
+ RCC->AHB3ENR |= 0x00000001;
+
+#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)
+ /* Delay after an RCC peripheral clock enabling */
+ tmp = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN);
+ /* Configure and enable Bank1_SRAM2 */
+ FMC_Bank1->BTCR[2] = 0x00001011;
+ FMC_Bank1->BTCR[3] = 0x00000201;
+ FMC_Bank1E->BWTR[2] = 0x0fffffff;
+#endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx */
+#if defined(STM32F469xx) || defined(STM32F479xx)
+ /* Delay after an RCC peripheral clock enabling */
+ tmp = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN);
+ /* Configure and enable Bank1_SRAM2 */
+ FMC_Bank1->BTCR[2] = 0x00001091;
+ FMC_Bank1->BTCR[3] = 0x00110212;
+ FMC_Bank1E->BWTR[2] = 0x0fffffff;
+#endif /* STM32F469xx || STM32F479xx */
+#if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx)|| defined(STM32F417xx)\
+ || defined(STM32F412Zx) || defined(STM32F412Vx)
+ /* Delay after an RCC peripheral clock enabling */
+ tmp = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FSMCEN);
+ /* Configure and enable Bank1_SRAM2 */
+ FSMC_Bank1->BTCR[2] = 0x00001011;
+ FSMC_Bank1->BTCR[3] = 0x00000201;
+ FSMC_Bank1E->BWTR[2] = 0x0FFFFFFF;
+#endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx || STM32F412Zx || STM32F412Vx */
+
+#endif /* DATA_IN_ExtSRAM */
+#endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx || STM32F427xx || STM32F437xx ||\
+ STM32F429xx || STM32F439xx || STM32F469xx || STM32F479xx || STM32F412Zx || STM32F412Vx */
+ (void)(tmp);
+}
+#endif /* DATA_IN_ExtSRAM && DATA_IN_ExtSDRAM */
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/Core/Startup/startup_stm32f401vctx.s b/Core/Startup/startup_stm32f401vctx.s
new file mode 100644
index 0000000..10ad298
--- /dev/null
+++ b/Core/Startup/startup_stm32f401vctx.s
@@ -0,0 +1,432 @@
+/**
+ ******************************************************************************
+ * @file startup_stm32f401xc.s
+ * @author MCD Application Team
+ * @brief STM32F401xCxx Devices vector table for GCC based toolchains.
+ * This module performs:
+ * - Set the initial SP
+ * - Set the initial PC == Reset_Handler,
+ * - Set the vector table entries with the exceptions ISR address
+ * - Branches to main in the C library (which eventually
+ * calls main()).
+ * After Reset the Cortex-M4 processor is in Thread mode,
+ * priority is Privileged, and the Stack is set to Main.
+ ******************************************************************************
+ * @attention
+ *
+ * © Copyright (c) 2017 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software component is licensed by ST under BSD 3-Clause license,
+ * the "License"; You may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ * opensource.org/licenses/BSD-3-Clause
+ *
+ ******************************************************************************
+ */
+
+ .syntax unified
+ .cpu cortex-m4
+ .fpu softvfp
+ .thumb
+
+.global g_pfnVectors
+.global Default_Handler
+
+/* start address for the initialization values of the .data section.
+defined in linker script */
+.word _sidata
+/* start address for the .data section. defined in linker script */
+.word _sdata
+/* end address for the .data section. defined in linker script */
+.word _edata
+/* start address for the .bss section. defined in linker script */
+.word _sbss
+/* end address for the .bss section. defined in linker script */
+.word _ebss
+/* stack used for SystemInit_ExtMemCtl; always internal RAM used */
+
+/**
+ * @brief This is the code that gets called when the processor first
+ * starts execution following a reset event. Only the absolutely
+ * necessary set is performed, after which the application
+ * supplied main() routine is called.
+ * @param None
+ * @retval : None
+*/
+
+ .section .text.Reset_Handler
+ .weak Reset_Handler
+ .type Reset_Handler, %function
+Reset_Handler:
+ ldr sp, =_estack /* set stack pointer */
+
+/* Copy the data segment initializers from flash to SRAM */
+ movs r1, #0
+ b LoopCopyDataInit
+
+CopyDataInit:
+ ldr r3, =_sidata
+ ldr r3, [r3, r1]
+ str r3, [r0, r1]
+ adds r1, r1, #4
+
+LoopCopyDataInit:
+ ldr r0, =_sdata
+ ldr r3, =_edata
+ adds r2, r0, r1
+ cmp r2, r3
+ bcc CopyDataInit
+ ldr r2, =_sbss
+ b LoopFillZerobss
+/* Zero fill the bss segment. */
+FillZerobss:
+ movs r3, #0
+ str r3, [r2], #4
+
+LoopFillZerobss:
+ ldr r3, = _ebss
+ cmp r2, r3
+ bcc FillZerobss
+
+/* Call the clock system intitialization function.*/
+ bl SystemInit
+/* Call static constructors */
+ bl __libc_init_array
+/* Call the application's entry point.*/
+ bl main
+ bx lr
+.size Reset_Handler, .-Reset_Handler
+
+/**
+ * @brief This is the code that gets called when the processor receives an
+ * unexpected interrupt. This simply enters an infinite loop, preserving
+ * the system state for examination by a debugger.
+ * @param None
+ * @retval None
+*/
+ .section .text.Default_Handler,"ax",%progbits
+Default_Handler:
+Infinite_Loop:
+ b Infinite_Loop
+ .size Default_Handler, .-Default_Handler
+/******************************************************************************
+*
+* The minimal vector table for a Cortex M3. Note that the proper constructs
+* must be placed on this to ensure that it ends up at physical address
+* 0x0000.0000.
+*
+*******************************************************************************/
+ .section .isr_vector,"a",%progbits
+ .type g_pfnVectors, %object
+ .size g_pfnVectors, .-g_pfnVectors
+
+g_pfnVectors:
+ .word _estack
+ .word Reset_Handler
+ .word NMI_Handler
+ .word HardFault_Handler
+ .word MemManage_Handler
+ .word BusFault_Handler
+ .word UsageFault_Handler
+ .word 0
+ .word 0
+ .word 0
+ .word 0
+ .word SVC_Handler
+ .word DebugMon_Handler
+ .word 0
+ .word PendSV_Handler
+ .word SysTick_Handler
+
+ /* External Interrupts */
+ .word WWDG_IRQHandler /* Window WatchDog */
+ .word PVD_IRQHandler /* PVD through EXTI Line detection */
+ .word TAMP_STAMP_IRQHandler /* Tamper and TimeStamps through the EXTI line */
+ .word RTC_WKUP_IRQHandler /* RTC Wakeup through the EXTI line */
+ .word FLASH_IRQHandler /* FLASH */
+ .word RCC_IRQHandler /* RCC */
+ .word EXTI0_IRQHandler /* EXTI Line0 */
+ .word EXTI1_IRQHandler /* EXTI Line1 */
+ .word EXTI2_IRQHandler /* EXTI Line2 */
+ .word EXTI3_IRQHandler /* EXTI Line3 */
+ .word EXTI4_IRQHandler /* EXTI Line4 */
+ .word DMA1_Stream0_IRQHandler /* DMA1 Stream 0 */
+ .word DMA1_Stream1_IRQHandler /* DMA1 Stream 1 */
+ .word DMA1_Stream2_IRQHandler /* DMA1 Stream 2 */
+ .word DMA1_Stream3_IRQHandler /* DMA1 Stream 3 */
+ .word DMA1_Stream4_IRQHandler /* DMA1 Stream 4 */
+ .word DMA1_Stream5_IRQHandler /* DMA1 Stream 5 */
+ .word DMA1_Stream6_IRQHandler /* DMA1 Stream 6 */
+ .word ADC_IRQHandler /* ADC1 */
+ .word 0 /* Reserved */
+ .word 0 /* Reserved */
+ .word 0 /* Reserved */
+ .word 0 /* Reserved */
+ .word EXTI9_5_IRQHandler /* External Line[9:5]s */
+ .word TIM1_BRK_TIM9_IRQHandler /* TIM1 Break and TIM9 */
+ .word TIM1_UP_TIM10_IRQHandler /* TIM1 Update and TIM10 */
+ .word TIM1_TRG_COM_TIM11_IRQHandler /* TIM1 Trigger and Commutation and TIM11 */
+ .word TIM1_CC_IRQHandler /* TIM1 Capture Compare */
+ .word TIM2_IRQHandler /* TIM2 */
+ .word TIM3_IRQHandler /* TIM3 */
+ .word TIM4_IRQHandler /* TIM4 */
+ .word I2C1_EV_IRQHandler /* I2C1 Event */
+ .word I2C1_ER_IRQHandler /* I2C1 Error */
+ .word I2C2_EV_IRQHandler /* I2C2 Event */
+ .word I2C2_ER_IRQHandler /* I2C2 Error */
+ .word SPI1_IRQHandler /* SPI1 */
+ .word SPI2_IRQHandler /* SPI2 */
+ .word USART1_IRQHandler /* USART1 */
+ .word USART2_IRQHandler /* USART2 */
+ .word 0 /* Reserved */
+ .word EXTI15_10_IRQHandler /* External Line[15:10]s */
+ .word RTC_Alarm_IRQHandler /* RTC Alarm (A and B) through EXTI Line */
+ .word OTG_FS_WKUP_IRQHandler /* USB OTG FS Wakeup through EXTI line */
+ .word 0 /* Reserved */
+ .word 0 /* Reserved */
+ .word 0 /* Reserved */
+ .word 0 /* Reserved */
+ .word DMA1_Stream7_IRQHandler /* DMA1 Stream7 */
+ .word 0 /* Reserved */
+ .word SDIO_IRQHandler /* SDIO */
+ .word TIM5_IRQHandler /* TIM5 */
+ .word SPI3_IRQHandler /* SPI3 */
+ .word 0 /* Reserved */
+ .word 0 /* Reserved */
+ .word 0 /* Reserved */
+ .word 0 /* Reserved */
+ .word DMA2_Stream0_IRQHandler /* DMA2 Stream 0 */
+ .word DMA2_Stream1_IRQHandler /* DMA2 Stream 1 */
+ .word DMA2_Stream2_IRQHandler /* DMA2 Stream 2 */
+ .word DMA2_Stream3_IRQHandler /* DMA2 Stream 3 */
+ .word DMA2_Stream4_IRQHandler /* DMA2 Stream 4 */
+ .word 0 /* Reserved */
+ .word 0 /* Reserved */
+ .word 0 /* Reserved */
+ .word 0 /* Reserved */
+ .word 0 /* Reserved */
+ .word 0 /* Reserved */
+ .word OTG_FS_IRQHandler /* USB OTG FS */
+ .word DMA2_Stream5_IRQHandler /* DMA2 Stream 5 */
+ .word DMA2_Stream6_IRQHandler /* DMA2 Stream 6 */
+ .word DMA2_Stream7_IRQHandler /* DMA2 Stream 7 */
+ .word USART6_IRQHandler /* USART6 */
+ .word I2C3_EV_IRQHandler /* I2C3 event */
+ .word I2C3_ER_IRQHandler /* I2C3 error */
+ .word 0 /* Reserved */
+ .word 0 /* Reserved */
+ .word 0 /* Reserved */
+ .word 0 /* Reserved */
+ .word 0 /* Reserved */
+ .word 0 /* Reserved */
+ .word 0 /* Reserved */
+ .word FPU_IRQHandler /* FPU */
+ .word 0 /* Reserved */
+ .word 0 /* Reserved */
+ .word SPI4_IRQHandler /* SPI4 */
+
+/*******************************************************************************
+*
+* Provide weak aliases for each Exception handler to the Default_Handler.
+* As they are weak aliases, any function with the same name will override
+* this definition.
+*
+*******************************************************************************/
+ .weak NMI_Handler
+ .thumb_set NMI_Handler,Default_Handler
+
+ .weak HardFault_Handler
+ .thumb_set HardFault_Handler,Default_Handler
+
+ .weak MemManage_Handler
+ .thumb_set MemManage_Handler,Default_Handler
+
+ .weak BusFault_Handler
+ .thumb_set BusFault_Handler,Default_Handler
+
+ .weak UsageFault_Handler
+ .thumb_set UsageFault_Handler,Default_Handler
+
+ .weak SVC_Handler
+ .thumb_set SVC_Handler,Default_Handler
+
+ .weak DebugMon_Handler
+ .thumb_set DebugMon_Handler,Default_Handler
+
+ .weak PendSV_Handler
+ .thumb_set PendSV_Handler,Default_Handler
+
+ .weak SysTick_Handler
+ .thumb_set SysTick_Handler,Default_Handler
+
+ .weak WWDG_IRQHandler
+ .thumb_set WWDG_IRQHandler,Default_Handler
+
+ .weak PVD_IRQHandler
+ .thumb_set PVD_IRQHandler,Default_Handler
+
+ .weak TAMP_STAMP_IRQHandler
+ .thumb_set TAMP_STAMP_IRQHandler,Default_Handler
+
+ .weak RTC_WKUP_IRQHandler
+ .thumb_set RTC_WKUP_IRQHandler,Default_Handler
+
+ .weak FLASH_IRQHandler
+ .thumb_set FLASH_IRQHandler,Default_Handler
+
+ .weak RCC_IRQHandler
+ .thumb_set RCC_IRQHandler,Default_Handler
+
+ .weak EXTI0_IRQHandler
+ .thumb_set EXTI0_IRQHandler,Default_Handler
+
+ .weak EXTI1_IRQHandler
+ .thumb_set EXTI1_IRQHandler,Default_Handler
+
+ .weak EXTI2_IRQHandler
+ .thumb_set EXTI2_IRQHandler,Default_Handler
+
+ .weak EXTI3_IRQHandler
+ .thumb_set EXTI3_IRQHandler,Default_Handler
+
+ .weak EXTI4_IRQHandler
+ .thumb_set EXTI4_IRQHandler,Default_Handler
+
+ .weak DMA1_Stream0_IRQHandler
+ .thumb_set DMA1_Stream0_IRQHandler,Default_Handler
+
+ .weak DMA1_Stream1_IRQHandler
+ .thumb_set DMA1_Stream1_IRQHandler,Default_Handler
+
+ .weak DMA1_Stream2_IRQHandler
+ .thumb_set DMA1_Stream2_IRQHandler,Default_Handler
+
+ .weak DMA1_Stream3_IRQHandler
+ .thumb_set DMA1_Stream3_IRQHandler,Default_Handler
+
+ .weak DMA1_Stream4_IRQHandler
+ .thumb_set DMA1_Stream4_IRQHandler,Default_Handler
+
+ .weak DMA1_Stream5_IRQHandler
+ .thumb_set DMA1_Stream5_IRQHandler,Default_Handler
+
+ .weak DMA1_Stream6_IRQHandler
+ .thumb_set DMA1_Stream6_IRQHandler,Default_Handler
+
+ .weak ADC_IRQHandler
+ .thumb_set ADC_IRQHandler,Default_Handler
+
+ .weak EXTI9_5_IRQHandler
+ .thumb_set EXTI9_5_IRQHandler,Default_Handler
+
+ .weak TIM1_BRK_TIM9_IRQHandler
+ .thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler
+
+ .weak TIM1_UP_TIM10_IRQHandler
+ .thumb_set TIM1_UP_TIM10_IRQHandler,Default_Handler
+
+ .weak TIM1_TRG_COM_TIM11_IRQHandler
+ .thumb_set TIM1_TRG_COM_TIM11_IRQHandler,Default_Handler
+
+ .weak TIM1_CC_IRQHandler
+ .thumb_set TIM1_CC_IRQHandler,Default_Handler
+
+ .weak TIM2_IRQHandler
+ .thumb_set TIM2_IRQHandler,Default_Handler
+
+ .weak TIM3_IRQHandler
+ .thumb_set TIM3_IRQHandler,Default_Handler
+
+ .weak TIM4_IRQHandler
+ .thumb_set TIM4_IRQHandler,Default_Handler
+
+ .weak I2C1_EV_IRQHandler
+ .thumb_set I2C1_EV_IRQHandler,Default_Handler
+
+ .weak I2C1_ER_IRQHandler
+ .thumb_set I2C1_ER_IRQHandler,Default_Handler
+
+ .weak I2C2_EV_IRQHandler
+ .thumb_set I2C2_EV_IRQHandler,Default_Handler
+
+ .weak I2C2_ER_IRQHandler
+ .thumb_set I2C2_ER_IRQHandler,Default_Handler
+
+ .weak SPI1_IRQHandler
+ .thumb_set SPI1_IRQHandler,Default_Handler
+
+ .weak SPI2_IRQHandler
+ .thumb_set SPI2_IRQHandler,Default_Handler
+
+ .weak USART1_IRQHandler
+ .thumb_set USART1_IRQHandler,Default_Handler
+
+ .weak USART2_IRQHandler
+ .thumb_set USART2_IRQHandler,Default_Handler
+
+ .weak EXTI15_10_IRQHandler
+ .thumb_set EXTI15_10_IRQHandler,Default_Handler
+
+ .weak RTC_Alarm_IRQHandler
+ .thumb_set RTC_Alarm_IRQHandler,Default_Handler
+
+ .weak OTG_FS_WKUP_IRQHandler
+ .thumb_set OTG_FS_WKUP_IRQHandler,Default_Handler
+
+ .weak DMA1_Stream7_IRQHandler
+ .thumb_set DMA1_Stream7_IRQHandler,Default_Handler
+
+ .weak SDIO_IRQHandler
+ .thumb_set SDIO_IRQHandler,Default_Handler
+
+ .weak TIM5_IRQHandler
+ .thumb_set TIM5_IRQHandler,Default_Handler
+
+ .weak SPI3_IRQHandler
+ .thumb_set SPI3_IRQHandler,Default_Handler
+
+ .weak DMA2_Stream0_IRQHandler
+ .thumb_set DMA2_Stream0_IRQHandler,Default_Handler
+
+ .weak DMA2_Stream1_IRQHandler
+ .thumb_set DMA2_Stream1_IRQHandler,Default_Handler
+
+ .weak DMA2_Stream2_IRQHandler
+ .thumb_set DMA2_Stream2_IRQHandler,Default_Handler
+
+ .weak DMA2_Stream3_IRQHandler
+ .thumb_set DMA2_Stream3_IRQHandler,Default_Handler
+
+ .weak DMA2_Stream4_IRQHandler
+ .thumb_set DMA2_Stream4_IRQHandler,Default_Handler
+
+ .weak OTG_FS_IRQHandler
+ .thumb_set OTG_FS_IRQHandler,Default_Handler
+
+ .weak DMA2_Stream5_IRQHandler
+ .thumb_set DMA2_Stream5_IRQHandler,Default_Handler
+
+ .weak DMA2_Stream6_IRQHandler
+ .thumb_set DMA2_Stream6_IRQHandler,Default_Handler
+
+ .weak DMA2_Stream7_IRQHandler
+ .thumb_set DMA2_Stream7_IRQHandler,Default_Handler
+
+ .weak USART6_IRQHandler
+ .thumb_set USART6_IRQHandler,Default_Handler
+
+ .weak I2C3_EV_IRQHandler
+ .thumb_set I2C3_EV_IRQHandler,Default_Handler
+
+ .weak I2C3_ER_IRQHandler
+ .thumb_set I2C3_ER_IRQHandler,Default_Handler
+
+ .weak FPU_IRQHandler
+ .thumb_set FPU_IRQHandler,Default_Handler
+
+ .weak SPI4_IRQHandler
+ .thumb_set SPI4_IRQHandler,Default_Handler
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
+
diff --git a/Debug/Core/Src/subdir.mk b/Debug/Core/Src/subdir.mk
new file mode 100644
index 0000000..1c34243
--- /dev/null
+++ b/Debug/Core/Src/subdir.mk
@@ -0,0 +1,49 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+C_SRCS += \
+../Core/Src/app.c \
+../Core/Src/main.c \
+../Core/Src/stm32f4xx_hal_msp.c \
+../Core/Src/stm32f4xx_it.c \
+../Core/Src/syscalls.c \
+../Core/Src/sysmem.c \
+../Core/Src/system_stm32f4xx.c
+
+C_DEPS += \
+./Core/Src/app.d \
+./Core/Src/main.d \
+./Core/Src/stm32f4xx_hal_msp.d \
+./Core/Src/stm32f4xx_it.d \
+./Core/Src/syscalls.d \
+./Core/Src/sysmem.d \
+./Core/Src/system_stm32f4xx.d
+
+OBJS += \
+./Core/Src/app.o \
+./Core/Src/main.o \
+./Core/Src/stm32f4xx_hal_msp.o \
+./Core/Src/stm32f4xx_it.o \
+./Core/Src/syscalls.o \
+./Core/Src/sysmem.o \
+./Core/Src/system_stm32f4xx.o
+
+
+# Each subdirectory must supply rules for building sources it contributes
+Core/Src/app.o: ../Core/Src/app.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Core/Src/app.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+Core/Src/main.o: ../Core/Src/main.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Core/Src/main.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+Core/Src/stm32f4xx_hal_msp.o: ../Core/Src/stm32f4xx_hal_msp.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Core/Src/stm32f4xx_hal_msp.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+Core/Src/stm32f4xx_it.o: ../Core/Src/stm32f4xx_it.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Core/Src/stm32f4xx_it.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+Core/Src/syscalls.o: ../Core/Src/syscalls.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Core/Src/syscalls.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+Core/Src/sysmem.o: ../Core/Src/sysmem.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Core/Src/sysmem.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+Core/Src/system_stm32f4xx.o: ../Core/Src/system_stm32f4xx.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Core/Src/system_stm32f4xx.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+
diff --git a/Debug/Core/Startup/subdir.mk b/Debug/Core/Startup/subdir.mk
new file mode 100644
index 0000000..ee377a6
--- /dev/null
+++ b/Debug/Core/Startup/subdir.mk
@@ -0,0 +1,19 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+S_SRCS += \
+../Core/Startup/startup_stm32f401vctx.s
+
+S_DEPS += \
+./Core/Startup/startup_stm32f401vctx.d
+
+OBJS += \
+./Core/Startup/startup_stm32f401vctx.o
+
+
+# Each subdirectory must supply rules for building sources it contributes
+Core/Startup/startup_stm32f401vctx.o: ../Core/Startup/startup_stm32f401vctx.s
+ arm-none-eabi-gcc -mcpu=cortex-m4 -g3 -c -x assembler-with-cpp -MMD -MP -MF"Core/Startup/startup_stm32f401vctx.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@" "$<"
+
diff --git a/Debug/Drivers/COMPASS_LEDS/subdir.mk b/Debug/Drivers/COMPASS_LEDS/subdir.mk
new file mode 100644
index 0000000..6e1e336
--- /dev/null
+++ b/Debug/Drivers/COMPASS_LEDS/subdir.mk
@@ -0,0 +1,19 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+C_SRCS += \
+../Drivers/COMPASS_LEDS/COMPASS_LEDS.c
+
+C_DEPS += \
+./Drivers/COMPASS_LEDS/COMPASS_LEDS.d
+
+OBJS += \
+./Drivers/COMPASS_LEDS/COMPASS_LEDS.o
+
+
+# Each subdirectory must supply rules for building sources it contributes
+Drivers/COMPASS_LEDS/COMPASS_LEDS.o: ../Drivers/COMPASS_LEDS/COMPASS_LEDS.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/COMPASS_LEDS/COMPASS_LEDS.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+
diff --git a/Debug/Drivers/LSM303DLHC/subdir.mk b/Debug/Drivers/LSM303DLHC/subdir.mk
new file mode 100644
index 0000000..ad5689d
--- /dev/null
+++ b/Debug/Drivers/LSM303DLHC/subdir.mk
@@ -0,0 +1,19 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+C_SRCS += \
+../Drivers/LSM303DLHC/LSM303DLHC.c
+
+C_DEPS += \
+./Drivers/LSM303DLHC/LSM303DLHC.d
+
+OBJS += \
+./Drivers/LSM303DLHC/LSM303DLHC.o
+
+
+# Each subdirectory must supply rules for building sources it contributes
+Drivers/LSM303DLHC/LSM303DLHC.o: ../Drivers/LSM303DLHC/LSM303DLHC.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/LSM303DLHC/LSM303DLHC.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+
diff --git a/Debug/Drivers/STM32F4xx_HAL_Driver/Src/subdir.mk b/Debug/Drivers/STM32F4xx_HAL_Driver/Src/subdir.mk
new file mode 100644
index 0000000..057bd06
--- /dev/null
+++ b/Debug/Drivers/STM32F4xx_HAL_Driver/Src/subdir.mk
@@ -0,0 +1,129 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+C_SRCS += \
+../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c \
+../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c \
+../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c \
+../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c \
+../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.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_hcd.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_pwr.c \
+../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_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_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_uart.c \
+../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c
+
+C_DEPS += \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.d \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.d \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.d \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.d \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.d \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.d \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.d \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.d \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.d \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.d \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.d \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.d \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s.d \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s_ex.d \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.d \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.d \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.d \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.d \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.d \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.d \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.d \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.d \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.d
+
+OBJS += \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.o \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.o \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.o \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.o \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.o \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.o \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.o \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.o \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s.o \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s_ex.o \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.o \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.o \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o \
+./Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o
+
+
+# Each subdirectory must supply rules for building sources it contributes
+Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.o: ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.o: ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.o: ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.o: ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.o: ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.o: ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.o: ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.o: ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.o: ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.o: ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.o: ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.o: ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s.o: ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s_ex.o: ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s_ex.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2s_ex.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.o: ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.o: ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.o: ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.o: ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.o: ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.o: ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.o: ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.o: ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.o: ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+
diff --git a/Debug/Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/subdir.mk b/Debug/Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/subdir.mk
new file mode 100644
index 0000000..3d351dc
--- /dev/null
+++ b/Debug/Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/subdir.mk
@@ -0,0 +1,19 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+C_SRCS += \
+../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/usbh_cdc.c
+
+C_DEPS += \
+./Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/usbh_cdc.d
+
+OBJS += \
+./Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/usbh_cdc.o
+
+
+# Each subdirectory must supply rules for building sources it contributes
+Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/usbh_cdc.o: ../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/usbh_cdc.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/usbh_cdc.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+
diff --git a/Debug/Middlewares/ST/STM32_USB_Host_Library/Core/Src/subdir.mk b/Debug/Middlewares/ST/STM32_USB_Host_Library/Core/Src/subdir.mk
new file mode 100644
index 0000000..87783c5
--- /dev/null
+++ b/Debug/Middlewares/ST/STM32_USB_Host_Library/Core/Src/subdir.mk
@@ -0,0 +1,34 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+C_SRCS += \
+../Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.c \
+../Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ctlreq.c \
+../Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ioreq.c \
+../Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.c
+
+C_DEPS += \
+./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.d \
+./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ctlreq.d \
+./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ioreq.d \
+./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.d
+
+OBJS += \
+./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o \
+./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ctlreq.o \
+./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ioreq.o \
+./Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.o
+
+
+# Each subdirectory must supply rules for building sources it contributes
+Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.o: ../Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ctlreq.o: ../Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ctlreq.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ctlreq.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ioreq.o: ../Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ioreq.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ioreq.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.o: ../Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+
diff --git a/Debug/USB_HOST/App/subdir.mk b/Debug/USB_HOST/App/subdir.mk
new file mode 100644
index 0000000..dfb37cc
--- /dev/null
+++ b/Debug/USB_HOST/App/subdir.mk
@@ -0,0 +1,19 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+C_SRCS += \
+../USB_HOST/App/usb_host.c
+
+C_DEPS += \
+./USB_HOST/App/usb_host.d
+
+OBJS += \
+./USB_HOST/App/usb_host.o
+
+
+# Each subdirectory must supply rules for building sources it contributes
+USB_HOST/App/usb_host.o: ../USB_HOST/App/usb_host.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"USB_HOST/App/usb_host.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+
diff --git a/Debug/USB_HOST/Target/subdir.mk b/Debug/USB_HOST/Target/subdir.mk
new file mode 100644
index 0000000..65baee5
--- /dev/null
+++ b/Debug/USB_HOST/Target/subdir.mk
@@ -0,0 +1,24 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+C_SRCS += \
+../USB_HOST/Target/usbh_conf.c \
+../USB_HOST/Target/usbh_platform.c
+
+C_DEPS += \
+./USB_HOST/Target/usbh_conf.d \
+./USB_HOST/Target/usbh_platform.d
+
+OBJS += \
+./USB_HOST/Target/usbh_conf.o \
+./USB_HOST/Target/usbh_platform.o
+
+
+# Each subdirectory must supply rules for building sources it contributes
+USB_HOST/Target/usbh_conf.o: ../USB_HOST/Target/usbh_conf.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"USB_HOST/Target/usbh_conf.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+USB_HOST/Target/usbh_platform.o: ../USB_HOST/Target/usbh_platform.c
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F401xC -DDEBUG -c -I../USB_HOST/App -I../USB_HOST/Target -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Host_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/COMPASS_LEDS" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/LSM303DLHC" -I"D:/Users/Think/Programmation/STM32CUBEIDE/eCompass/Drivers/MY_TYPES" -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"USB_HOST/Target/usbh_platform.d" -MT"$@" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "$@"
+
diff --git a/Debug/eCompass.bin b/Debug/eCompass.bin
new file mode 100644
index 0000000..032667a
Binary files /dev/null and b/Debug/eCompass.bin differ
diff --git a/Debug/eCompass.list b/Debug/eCompass.list
new file mode 100644
index 0000000..057d94d
--- /dev/null
+++ b/Debug/eCompass.list
@@ -0,0 +1,33036 @@
+
+eCompass.elf: file format elf32-littlearm
+
+Sections:
+Idx Name Size VMA LMA File off Algn
+ 0 .isr_vector 00000194 08000000 08000000 00010000 2**0
+ CONTENTS, ALLOC, LOAD, READONLY, DATA
+ 1 .text 0000e680 080001a0 080001a0 000101a0 2**4
+ CONTENTS, ALLOC, LOAD, READONLY, CODE
+ 2 .rodata 00000438 0800e820 0800e820 0001e820 2**3
+ CONTENTS, ALLOC, LOAD, READONLY, DATA
+ 3 .ARM.extab 00000000 0800ec58 0800ec58 000201fc 2**0
+ CONTENTS
+ 4 .ARM 00000008 0800ec58 0800ec58 0001ec58 2**2
+ CONTENTS, ALLOC, LOAD, READONLY, DATA
+ 5 .preinit_array 00000000 0800ec60 0800ec60 000201fc 2**0
+ CONTENTS, ALLOC, LOAD, DATA
+ 6 .init_array 00000004 0800ec60 0800ec60 0001ec60 2**2
+ CONTENTS, ALLOC, LOAD, DATA
+ 7 .fini_array 00000004 0800ec64 0800ec64 0001ec64 2**2
+ CONTENTS, ALLOC, LOAD, DATA
+ 8 .data 000001fc 20000000 0800ec68 00020000 2**2
+ CONTENTS, ALLOC, LOAD, DATA
+ 9 .bss 000008b8 200001fc 0800ee64 000201fc 2**2
+ ALLOC
+ 10 ._user_heap_stack 00000604 20000ab4 0800ee64 00020ab4 2**0
+ ALLOC
+ 11 .ARM.attributes 00000030 00000000 00000000 000201fc 2**0
+ CONTENTS, READONLY
+ 12 .debug_info 0001d66d 00000000 00000000 0002022c 2**0
+ CONTENTS, READONLY, DEBUGGING
+ 13 .debug_abbrev 00004048 00000000 00000000 0003d899 2**0
+ CONTENTS, READONLY, DEBUGGING
+ 14 .debug_aranges 00001458 00000000 00000000 000418e8 2**3
+ CONTENTS, READONLY, DEBUGGING
+ 15 .debug_ranges 000012a8 00000000 00000000 00042d40 2**3
+ CONTENTS, READONLY, DEBUGGING
+ 16 .debug_macro 0001ba14 00000000 00000000 00043fe8 2**0
+ CONTENTS, READONLY, DEBUGGING
+ 17 .debug_line 000147bf 00000000 00000000 0005f9fc 2**0
+ CONTENTS, READONLY, DEBUGGING
+ 18 .debug_str 00092511 00000000 00000000 000741bb 2**0
+ CONTENTS, READONLY, DEBUGGING
+ 19 .comment 0000007b 00000000 00000000 001066cc 2**0
+ CONTENTS, READONLY
+ 20 .debug_frame 000066f8 00000000 00000000 00106748 2**2
+ CONTENTS, READONLY, DEBUGGING
+
+Disassembly of section .text:
+
+080001a0 <__do_global_dtors_aux>:
+ 80001a0: b510 push {r4, lr}
+ 80001a2: 4c05 ldr r4, [pc, #20] ; (80001b8 <__do_global_dtors_aux+0x18>)
+ 80001a4: 7823 ldrb r3, [r4, #0]
+ 80001a6: b933 cbnz r3, 80001b6 <__do_global_dtors_aux+0x16>
+ 80001a8: 4b04 ldr r3, [pc, #16] ; (80001bc <__do_global_dtors_aux+0x1c>)
+ 80001aa: b113 cbz r3, 80001b2 <__do_global_dtors_aux+0x12>
+ 80001ac: 4804 ldr r0, [pc, #16] ; (80001c0 <__do_global_dtors_aux+0x20>)
+ 80001ae: f3af 8000 nop.w
+ 80001b2: 2301 movs r3, #1
+ 80001b4: 7023 strb r3, [r4, #0]
+ 80001b6: bd10 pop {r4, pc}
+ 80001b8: 200001fc .word 0x200001fc
+ 80001bc: 00000000 .word 0x00000000
+ 80001c0: 0800e808 .word 0x0800e808
+
+080001c4 :
+ 80001c4: b508 push {r3, lr}
+ 80001c6: 4b03 ldr r3, [pc, #12] ; (80001d4 )
+ 80001c8: b11b cbz r3, 80001d2
+ 80001ca: 4903 ldr r1, [pc, #12] ; (80001d8 )
+ 80001cc: 4803 ldr r0, [pc, #12] ; (80001dc )
+ 80001ce: f3af 8000 nop.w
+ 80001d2: bd08 pop {r3, pc}
+ 80001d4: 00000000 .word 0x00000000
+ 80001d8: 20000200 .word 0x20000200
+ 80001dc: 0800e808 .word 0x0800e808
+
+080001e0 :
+ 80001e0: 4603 mov r3, r0
+ 80001e2: f813 2b01 ldrb.w r2, [r3], #1
+ 80001e6: 2a00 cmp r2, #0
+ 80001e8: d1fb bne.n 80001e2
+ 80001ea: 1a18 subs r0, r3, r0
+ 80001ec: 3801 subs r0, #1
+ 80001ee: 4770 bx lr
+
+080001f0 :
+ 80001f0: f001 01ff and.w r1, r1, #255 ; 0xff
+ 80001f4: 2a10 cmp r2, #16
+ 80001f6: db2b blt.n 8000250
+ 80001f8: f010 0f07 tst.w r0, #7
+ 80001fc: d008 beq.n 8000210
+ 80001fe: f810 3b01 ldrb.w r3, [r0], #1
+ 8000202: 3a01 subs r2, #1
+ 8000204: 428b cmp r3, r1
+ 8000206: d02d beq.n 8000264
+ 8000208: f010 0f07 tst.w r0, #7
+ 800020c: b342 cbz r2, 8000260
+ 800020e: d1f6 bne.n 80001fe
+ 8000210: b4f0 push {r4, r5, r6, r7}
+ 8000212: ea41 2101 orr.w r1, r1, r1, lsl #8
+ 8000216: ea41 4101 orr.w r1, r1, r1, lsl #16
+ 800021a: f022 0407 bic.w r4, r2, #7
+ 800021e: f07f 0700 mvns.w r7, #0
+ 8000222: 2300 movs r3, #0
+ 8000224: e8f0 5602 ldrd r5, r6, [r0], #8
+ 8000228: 3c08 subs r4, #8
+ 800022a: ea85 0501 eor.w r5, r5, r1
+ 800022e: ea86 0601 eor.w r6, r6, r1
+ 8000232: fa85 f547 uadd8 r5, r5, r7
+ 8000236: faa3 f587 sel r5, r3, r7
+ 800023a: fa86 f647 uadd8 r6, r6, r7
+ 800023e: faa5 f687 sel r6, r5, r7
+ 8000242: b98e cbnz r6, 8000268
+ 8000244: d1ee bne.n 8000224
+ 8000246: bcf0 pop {r4, r5, r6, r7}
+ 8000248: f001 01ff and.w r1, r1, #255 ; 0xff
+ 800024c: f002 0207 and.w r2, r2, #7
+ 8000250: b132 cbz r2, 8000260
+ 8000252: f810 3b01 ldrb.w r3, [r0], #1
+ 8000256: 3a01 subs r2, #1
+ 8000258: ea83 0301 eor.w r3, r3, r1
+ 800025c: b113 cbz r3, 8000264
+ 800025e: d1f8 bne.n 8000252
+ 8000260: 2000 movs r0, #0
+ 8000262: 4770 bx lr
+ 8000264: 3801 subs r0, #1
+ 8000266: 4770 bx lr
+ 8000268: 2d00 cmp r5, #0
+ 800026a: bf06 itte eq
+ 800026c: 4635 moveq r5, r6
+ 800026e: 3803 subeq r0, #3
+ 8000270: 3807 subne r0, #7
+ 8000272: f015 0f01 tst.w r5, #1
+ 8000276: d107 bne.n 8000288
+ 8000278: 3001 adds r0, #1
+ 800027a: f415 7f80 tst.w r5, #256 ; 0x100
+ 800027e: bf02 ittt eq
+ 8000280: 3001 addeq r0, #1
+ 8000282: f415 3fc0 tsteq.w r5, #98304 ; 0x18000
+ 8000286: 3001 addeq r0, #1
+ 8000288: bcf0 pop {r4, r5, r6, r7}
+ 800028a: 3801 subs r0, #1
+ 800028c: 4770 bx lr
+ 800028e: bf00 nop
+
+08000290 <__aeabi_drsub>:
+ 8000290: f081 4100 eor.w r1, r1, #2147483648 ; 0x80000000
+ 8000294: e002 b.n 800029c <__adddf3>
+ 8000296: bf00 nop
+
+08000298 <__aeabi_dsub>:
+ 8000298: f083 4300 eor.w r3, r3, #2147483648 ; 0x80000000
+
+0800029c <__adddf3>:
+ 800029c: b530 push {r4, r5, lr}
+ 800029e: ea4f 0441 mov.w r4, r1, lsl #1
+ 80002a2: ea4f 0543 mov.w r5, r3, lsl #1
+ 80002a6: ea94 0f05 teq r4, r5
+ 80002aa: bf08 it eq
+ 80002ac: ea90 0f02 teqeq r0, r2
+ 80002b0: bf1f itttt ne
+ 80002b2: ea54 0c00 orrsne.w ip, r4, r0
+ 80002b6: ea55 0c02 orrsne.w ip, r5, r2
+ 80002ba: ea7f 5c64 mvnsne.w ip, r4, asr #21
+ 80002be: ea7f 5c65 mvnsne.w ip, r5, asr #21
+ 80002c2: f000 80e2 beq.w 800048a <__adddf3+0x1ee>
+ 80002c6: ea4f 5454 mov.w r4, r4, lsr #21
+ 80002ca: ebd4 5555 rsbs r5, r4, r5, lsr #21
+ 80002ce: bfb8 it lt
+ 80002d0: 426d neglt r5, r5
+ 80002d2: dd0c ble.n 80002ee <__adddf3+0x52>
+ 80002d4: 442c add r4, r5
+ 80002d6: ea80 0202 eor.w r2, r0, r2
+ 80002da: ea81 0303 eor.w r3, r1, r3
+ 80002de: ea82 0000 eor.w r0, r2, r0
+ 80002e2: ea83 0101 eor.w r1, r3, r1
+ 80002e6: ea80 0202 eor.w r2, r0, r2
+ 80002ea: ea81 0303 eor.w r3, r1, r3
+ 80002ee: 2d36 cmp r5, #54 ; 0x36
+ 80002f0: bf88 it hi
+ 80002f2: bd30 pophi {r4, r5, pc}
+ 80002f4: f011 4f00 tst.w r1, #2147483648 ; 0x80000000
+ 80002f8: ea4f 3101 mov.w r1, r1, lsl #12
+ 80002fc: f44f 1c80 mov.w ip, #1048576 ; 0x100000
+ 8000300: ea4c 3111 orr.w r1, ip, r1, lsr #12
+ 8000304: d002 beq.n 800030c <__adddf3+0x70>
+ 8000306: 4240 negs r0, r0
+ 8000308: eb61 0141 sbc.w r1, r1, r1, lsl #1
+ 800030c: f013 4f00 tst.w r3, #2147483648 ; 0x80000000
+ 8000310: ea4f 3303 mov.w r3, r3, lsl #12
+ 8000314: ea4c 3313 orr.w r3, ip, r3, lsr #12
+ 8000318: d002 beq.n 8000320 <__adddf3+0x84>
+ 800031a: 4252 negs r2, r2
+ 800031c: eb63 0343 sbc.w r3, r3, r3, lsl #1
+ 8000320: ea94 0f05 teq r4, r5
+ 8000324: f000 80a7 beq.w 8000476 <__adddf3+0x1da>
+ 8000328: f1a4 0401 sub.w r4, r4, #1
+ 800032c: f1d5 0e20 rsbs lr, r5, #32
+ 8000330: db0d blt.n 800034e <__adddf3+0xb2>
+ 8000332: fa02 fc0e lsl.w ip, r2, lr
+ 8000336: fa22 f205 lsr.w r2, r2, r5
+ 800033a: 1880 adds r0, r0, r2
+ 800033c: f141 0100 adc.w r1, r1, #0
+ 8000340: fa03 f20e lsl.w r2, r3, lr
+ 8000344: 1880 adds r0, r0, r2
+ 8000346: fa43 f305 asr.w r3, r3, r5
+ 800034a: 4159 adcs r1, r3
+ 800034c: e00e b.n 800036c <__adddf3+0xd0>
+ 800034e: f1a5 0520 sub.w r5, r5, #32
+ 8000352: f10e 0e20 add.w lr, lr, #32
+ 8000356: 2a01 cmp r2, #1
+ 8000358: fa03 fc0e lsl.w ip, r3, lr
+ 800035c: bf28 it cs
+ 800035e: f04c 0c02 orrcs.w ip, ip, #2
+ 8000362: fa43 f305 asr.w r3, r3, r5
+ 8000366: 18c0 adds r0, r0, r3
+ 8000368: eb51 71e3 adcs.w r1, r1, r3, asr #31
+ 800036c: f001 4500 and.w r5, r1, #2147483648 ; 0x80000000
+ 8000370: d507 bpl.n 8000382 <__adddf3+0xe6>
+ 8000372: f04f 0e00 mov.w lr, #0
+ 8000376: f1dc 0c00 rsbs ip, ip, #0
+ 800037a: eb7e 0000 sbcs.w r0, lr, r0
+ 800037e: eb6e 0101 sbc.w r1, lr, r1
+ 8000382: f5b1 1f80 cmp.w r1, #1048576 ; 0x100000
+ 8000386: d31b bcc.n 80003c0 <__adddf3+0x124>
+ 8000388: f5b1 1f00 cmp.w r1, #2097152 ; 0x200000
+ 800038c: d30c bcc.n 80003a8 <__adddf3+0x10c>
+ 800038e: 0849 lsrs r1, r1, #1
+ 8000390: ea5f 0030 movs.w r0, r0, rrx
+ 8000394: ea4f 0c3c mov.w ip, ip, rrx
+ 8000398: f104 0401 add.w r4, r4, #1
+ 800039c: ea4f 5244 mov.w r2, r4, lsl #21
+ 80003a0: f512 0f80 cmn.w r2, #4194304 ; 0x400000
+ 80003a4: f080 809a bcs.w 80004dc <__adddf3+0x240>
+ 80003a8: f1bc 4f00 cmp.w ip, #2147483648 ; 0x80000000
+ 80003ac: bf08 it eq
+ 80003ae: ea5f 0c50 movseq.w ip, r0, lsr #1
+ 80003b2: f150 0000 adcs.w r0, r0, #0
+ 80003b6: eb41 5104 adc.w r1, r1, r4, lsl #20
+ 80003ba: ea41 0105 orr.w r1, r1, r5
+ 80003be: bd30 pop {r4, r5, pc}
+ 80003c0: ea5f 0c4c movs.w ip, ip, lsl #1
+ 80003c4: 4140 adcs r0, r0
+ 80003c6: eb41 0101 adc.w r1, r1, r1
+ 80003ca: f411 1f80 tst.w r1, #1048576 ; 0x100000
+ 80003ce: f1a4 0401 sub.w r4, r4, #1
+ 80003d2: d1e9 bne.n 80003a8 <__adddf3+0x10c>
+ 80003d4: f091 0f00 teq r1, #0
+ 80003d8: bf04 itt eq
+ 80003da: 4601 moveq r1, r0
+ 80003dc: 2000 moveq r0, #0
+ 80003de: fab1 f381 clz r3, r1
+ 80003e2: bf08 it eq
+ 80003e4: 3320 addeq r3, #32
+ 80003e6: f1a3 030b sub.w r3, r3, #11
+ 80003ea: f1b3 0220 subs.w r2, r3, #32
+ 80003ee: da0c bge.n 800040a <__adddf3+0x16e>
+ 80003f0: 320c adds r2, #12
+ 80003f2: dd08 ble.n 8000406 <__adddf3+0x16a>
+ 80003f4: f102 0c14 add.w ip, r2, #20
+ 80003f8: f1c2 020c rsb r2, r2, #12
+ 80003fc: fa01 f00c lsl.w r0, r1, ip
+ 8000400: fa21 f102 lsr.w r1, r1, r2
+ 8000404: e00c b.n 8000420 <__adddf3+0x184>
+ 8000406: f102 0214 add.w r2, r2, #20
+ 800040a: bfd8 it le
+ 800040c: f1c2 0c20 rsble ip, r2, #32
+ 8000410: fa01 f102 lsl.w r1, r1, r2
+ 8000414: fa20 fc0c lsr.w ip, r0, ip
+ 8000418: bfdc itt le
+ 800041a: ea41 010c orrle.w r1, r1, ip
+ 800041e: 4090 lslle r0, r2
+ 8000420: 1ae4 subs r4, r4, r3
+ 8000422: bfa2 ittt ge
+ 8000424: eb01 5104 addge.w r1, r1, r4, lsl #20
+ 8000428: 4329 orrge r1, r5
+ 800042a: bd30 popge {r4, r5, pc}
+ 800042c: ea6f 0404 mvn.w r4, r4
+ 8000430: 3c1f subs r4, #31
+ 8000432: da1c bge.n 800046e <__adddf3+0x1d2>
+ 8000434: 340c adds r4, #12
+ 8000436: dc0e bgt.n 8000456 <__adddf3+0x1ba>
+ 8000438: f104 0414 add.w r4, r4, #20
+ 800043c: f1c4 0220 rsb r2, r4, #32
+ 8000440: fa20 f004 lsr.w r0, r0, r4
+ 8000444: fa01 f302 lsl.w r3, r1, r2
+ 8000448: ea40 0003 orr.w r0, r0, r3
+ 800044c: fa21 f304 lsr.w r3, r1, r4
+ 8000450: ea45 0103 orr.w r1, r5, r3
+ 8000454: bd30 pop {r4, r5, pc}
+ 8000456: f1c4 040c rsb r4, r4, #12
+ 800045a: f1c4 0220 rsb r2, r4, #32
+ 800045e: fa20 f002 lsr.w r0, r0, r2
+ 8000462: fa01 f304 lsl.w r3, r1, r4
+ 8000466: ea40 0003 orr.w r0, r0, r3
+ 800046a: 4629 mov r1, r5
+ 800046c: bd30 pop {r4, r5, pc}
+ 800046e: fa21 f004 lsr.w r0, r1, r4
+ 8000472: 4629 mov r1, r5
+ 8000474: bd30 pop {r4, r5, pc}
+ 8000476: f094 0f00 teq r4, #0
+ 800047a: f483 1380 eor.w r3, r3, #1048576 ; 0x100000
+ 800047e: bf06 itte eq
+ 8000480: f481 1180 eoreq.w r1, r1, #1048576 ; 0x100000
+ 8000484: 3401 addeq r4, #1
+ 8000486: 3d01 subne r5, #1
+ 8000488: e74e b.n 8000328 <__adddf3+0x8c>
+ 800048a: ea7f 5c64 mvns.w ip, r4, asr #21
+ 800048e: bf18 it ne
+ 8000490: ea7f 5c65 mvnsne.w ip, r5, asr #21
+ 8000494: d029 beq.n 80004ea <__adddf3+0x24e>
+ 8000496: ea94 0f05 teq r4, r5
+ 800049a: bf08 it eq
+ 800049c: ea90 0f02 teqeq r0, r2
+ 80004a0: d005 beq.n 80004ae <__adddf3+0x212>
+ 80004a2: ea54 0c00 orrs.w ip, r4, r0
+ 80004a6: bf04 itt eq
+ 80004a8: 4619 moveq r1, r3
+ 80004aa: 4610 moveq r0, r2
+ 80004ac: bd30 pop {r4, r5, pc}
+ 80004ae: ea91 0f03 teq r1, r3
+ 80004b2: bf1e ittt ne
+ 80004b4: 2100 movne r1, #0
+ 80004b6: 2000 movne r0, #0
+ 80004b8: bd30 popne {r4, r5, pc}
+ 80004ba: ea5f 5c54 movs.w ip, r4, lsr #21
+ 80004be: d105 bne.n 80004cc <__adddf3+0x230>
+ 80004c0: 0040 lsls r0, r0, #1
+ 80004c2: 4149 adcs r1, r1
+ 80004c4: bf28 it cs
+ 80004c6: f041 4100 orrcs.w r1, r1, #2147483648 ; 0x80000000
+ 80004ca: bd30 pop {r4, r5, pc}
+ 80004cc: f514 0480 adds.w r4, r4, #4194304 ; 0x400000
+ 80004d0: bf3c itt cc
+ 80004d2: f501 1180 addcc.w r1, r1, #1048576 ; 0x100000
+ 80004d6: bd30 popcc {r4, r5, pc}
+ 80004d8: f001 4500 and.w r5, r1, #2147483648 ; 0x80000000
+ 80004dc: f045 41fe orr.w r1, r5, #2130706432 ; 0x7f000000
+ 80004e0: f441 0170 orr.w r1, r1, #15728640 ; 0xf00000
+ 80004e4: f04f 0000 mov.w r0, #0
+ 80004e8: bd30 pop {r4, r5, pc}
+ 80004ea: ea7f 5c64 mvns.w ip, r4, asr #21
+ 80004ee: bf1a itte ne
+ 80004f0: 4619 movne r1, r3
+ 80004f2: 4610 movne r0, r2
+ 80004f4: ea7f 5c65 mvnseq.w ip, r5, asr #21
+ 80004f8: bf1c itt ne
+ 80004fa: 460b movne r3, r1
+ 80004fc: 4602 movne r2, r0
+ 80004fe: ea50 3401 orrs.w r4, r0, r1, lsl #12
+ 8000502: bf06 itte eq
+ 8000504: ea52 3503 orrseq.w r5, r2, r3, lsl #12
+ 8000508: ea91 0f03 teqeq r1, r3
+ 800050c: f441 2100 orrne.w r1, r1, #524288 ; 0x80000
+ 8000510: bd30 pop {r4, r5, pc}
+ 8000512: bf00 nop
+
+08000514 <__aeabi_ui2d>:
+ 8000514: f090 0f00 teq r0, #0
+ 8000518: bf04 itt eq
+ 800051a: 2100 moveq r1, #0
+ 800051c: 4770 bxeq lr
+ 800051e: b530 push {r4, r5, lr}
+ 8000520: f44f 6480 mov.w r4, #1024 ; 0x400
+ 8000524: f104 0432 add.w r4, r4, #50 ; 0x32
+ 8000528: f04f 0500 mov.w r5, #0
+ 800052c: f04f 0100 mov.w r1, #0
+ 8000530: e750 b.n 80003d4 <__adddf3+0x138>
+ 8000532: bf00 nop
+
+08000534 <__aeabi_i2d>:
+ 8000534: f090 0f00 teq r0, #0
+ 8000538: bf04 itt eq
+ 800053a: 2100 moveq r1, #0
+ 800053c: 4770 bxeq lr
+ 800053e: b530 push {r4, r5, lr}
+ 8000540: f44f 6480 mov.w r4, #1024 ; 0x400
+ 8000544: f104 0432 add.w r4, r4, #50 ; 0x32
+ 8000548: f010 4500 ands.w r5, r0, #2147483648 ; 0x80000000
+ 800054c: bf48 it mi
+ 800054e: 4240 negmi r0, r0
+ 8000550: f04f 0100 mov.w r1, #0
+ 8000554: e73e b.n 80003d4 <__adddf3+0x138>
+ 8000556: bf00 nop
+
+08000558 <__aeabi_f2d>:
+ 8000558: 0042 lsls r2, r0, #1
+ 800055a: ea4f 01e2 mov.w r1, r2, asr #3
+ 800055e: ea4f 0131 mov.w r1, r1, rrx
+ 8000562: ea4f 7002 mov.w r0, r2, lsl #28
+ 8000566: bf1f itttt ne
+ 8000568: f012 437f andsne.w r3, r2, #4278190080 ; 0xff000000
+ 800056c: f093 4f7f teqne r3, #4278190080 ; 0xff000000
+ 8000570: f081 5160 eorne.w r1, r1, #939524096 ; 0x38000000
+ 8000574: 4770 bxne lr
+ 8000576: f032 427f bics.w r2, r2, #4278190080 ; 0xff000000
+ 800057a: bf08 it eq
+ 800057c: 4770 bxeq lr
+ 800057e: f093 4f7f teq r3, #4278190080 ; 0xff000000
+ 8000582: bf04 itt eq
+ 8000584: f441 2100 orreq.w r1, r1, #524288 ; 0x80000
+ 8000588: 4770 bxeq lr
+ 800058a: b530 push {r4, r5, lr}
+ 800058c: f44f 7460 mov.w r4, #896 ; 0x380
+ 8000590: f001 4500 and.w r5, r1, #2147483648 ; 0x80000000
+ 8000594: f021 4100 bic.w r1, r1, #2147483648 ; 0x80000000
+ 8000598: e71c b.n 80003d4 <__adddf3+0x138>
+ 800059a: bf00 nop
+
+0800059c <__aeabi_ul2d>:
+ 800059c: ea50 0201 orrs.w r2, r0, r1
+ 80005a0: bf08 it eq
+ 80005a2: 4770 bxeq lr
+ 80005a4: b530 push {r4, r5, lr}
+ 80005a6: f04f 0500 mov.w r5, #0
+ 80005aa: e00a b.n 80005c2 <__aeabi_l2d+0x16>
+
+080005ac <__aeabi_l2d>:
+ 80005ac: ea50 0201 orrs.w r2, r0, r1
+ 80005b0: bf08 it eq
+ 80005b2: 4770 bxeq lr
+ 80005b4: b530 push {r4, r5, lr}
+ 80005b6: f011 4500 ands.w r5, r1, #2147483648 ; 0x80000000
+ 80005ba: d502 bpl.n 80005c2 <__aeabi_l2d+0x16>
+ 80005bc: 4240 negs r0, r0
+ 80005be: eb61 0141 sbc.w r1, r1, r1, lsl #1
+ 80005c2: f44f 6480 mov.w r4, #1024 ; 0x400
+ 80005c6: f104 0432 add.w r4, r4, #50 ; 0x32
+ 80005ca: ea5f 5c91 movs.w ip, r1, lsr #22
+ 80005ce: f43f aed8 beq.w 8000382 <__adddf3+0xe6>
+ 80005d2: f04f 0203 mov.w r2, #3
+ 80005d6: ea5f 0cdc movs.w ip, ip, lsr #3
+ 80005da: bf18 it ne
+ 80005dc: 3203 addne r2, #3
+ 80005de: ea5f 0cdc movs.w ip, ip, lsr #3
+ 80005e2: bf18 it ne
+ 80005e4: 3203 addne r2, #3
+ 80005e6: eb02 02dc add.w r2, r2, ip, lsr #3
+ 80005ea: f1c2 0320 rsb r3, r2, #32
+ 80005ee: fa00 fc03 lsl.w ip, r0, r3
+ 80005f2: fa20 f002 lsr.w r0, r0, r2
+ 80005f6: fa01 fe03 lsl.w lr, r1, r3
+ 80005fa: ea40 000e orr.w r0, r0, lr
+ 80005fe: fa21 f102 lsr.w r1, r1, r2
+ 8000602: 4414 add r4, r2
+ 8000604: e6bd b.n 8000382 <__adddf3+0xe6>
+ 8000606: bf00 nop
+
+08000608 <__aeabi_dmul>:
+ 8000608: b570 push {r4, r5, r6, lr}
+ 800060a: f04f 0cff mov.w ip, #255 ; 0xff
+ 800060e: f44c 6ce0 orr.w ip, ip, #1792 ; 0x700
+ 8000612: ea1c 5411 ands.w r4, ip, r1, lsr #20
+ 8000616: bf1d ittte ne
+ 8000618: ea1c 5513 andsne.w r5, ip, r3, lsr #20
+ 800061c: ea94 0f0c teqne r4, ip
+ 8000620: ea95 0f0c teqne r5, ip
+ 8000624: f000 f8de bleq 80007e4 <__aeabi_dmul+0x1dc>
+ 8000628: 442c add r4, r5
+ 800062a: ea81 0603 eor.w r6, r1, r3
+ 800062e: ea21 514c bic.w r1, r1, ip, lsl #21
+ 8000632: ea23 534c bic.w r3, r3, ip, lsl #21
+ 8000636: ea50 3501 orrs.w r5, r0, r1, lsl #12
+ 800063a: bf18 it ne
+ 800063c: ea52 3503 orrsne.w r5, r2, r3, lsl #12
+ 8000640: f441 1180 orr.w r1, r1, #1048576 ; 0x100000
+ 8000644: f443 1380 orr.w r3, r3, #1048576 ; 0x100000
+ 8000648: d038 beq.n 80006bc <__aeabi_dmul+0xb4>
+ 800064a: fba0 ce02 umull ip, lr, r0, r2
+ 800064e: f04f 0500 mov.w r5, #0
+ 8000652: fbe1 e502 umlal lr, r5, r1, r2
+ 8000656: f006 4200 and.w r2, r6, #2147483648 ; 0x80000000
+ 800065a: fbe0 e503 umlal lr, r5, r0, r3
+ 800065e: f04f 0600 mov.w r6, #0
+ 8000662: fbe1 5603 umlal r5, r6, r1, r3
+ 8000666: f09c 0f00 teq ip, #0
+ 800066a: bf18 it ne
+ 800066c: f04e 0e01 orrne.w lr, lr, #1
+ 8000670: f1a4 04ff sub.w r4, r4, #255 ; 0xff
+ 8000674: f5b6 7f00 cmp.w r6, #512 ; 0x200
+ 8000678: f564 7440 sbc.w r4, r4, #768 ; 0x300
+ 800067c: d204 bcs.n 8000688 <__aeabi_dmul+0x80>
+ 800067e: ea5f 0e4e movs.w lr, lr, lsl #1
+ 8000682: 416d adcs r5, r5
+ 8000684: eb46 0606 adc.w r6, r6, r6
+ 8000688: ea42 21c6 orr.w r1, r2, r6, lsl #11
+ 800068c: ea41 5155 orr.w r1, r1, r5, lsr #21
+ 8000690: ea4f 20c5 mov.w r0, r5, lsl #11
+ 8000694: ea40 505e orr.w r0, r0, lr, lsr #21
+ 8000698: ea4f 2ece mov.w lr, lr, lsl #11
+ 800069c: f1b4 0cfd subs.w ip, r4, #253 ; 0xfd
+ 80006a0: bf88 it hi
+ 80006a2: f5bc 6fe0 cmphi.w ip, #1792 ; 0x700
+ 80006a6: d81e bhi.n 80006e6 <__aeabi_dmul+0xde>
+ 80006a8: f1be 4f00 cmp.w lr, #2147483648 ; 0x80000000
+ 80006ac: bf08 it eq
+ 80006ae: ea5f 0e50 movseq.w lr, r0, lsr #1
+ 80006b2: f150 0000 adcs.w r0, r0, #0
+ 80006b6: eb41 5104 adc.w r1, r1, r4, lsl #20
+ 80006ba: bd70 pop {r4, r5, r6, pc}
+ 80006bc: f006 4600 and.w r6, r6, #2147483648 ; 0x80000000
+ 80006c0: ea46 0101 orr.w r1, r6, r1
+ 80006c4: ea40 0002 orr.w r0, r0, r2
+ 80006c8: ea81 0103 eor.w r1, r1, r3
+ 80006cc: ebb4 045c subs.w r4, r4, ip, lsr #1
+ 80006d0: bfc2 ittt gt
+ 80006d2: ebd4 050c rsbsgt r5, r4, ip
+ 80006d6: ea41 5104 orrgt.w r1, r1, r4, lsl #20
+ 80006da: bd70 popgt {r4, r5, r6, pc}
+ 80006dc: f441 1180 orr.w r1, r1, #1048576 ; 0x100000
+ 80006e0: f04f 0e00 mov.w lr, #0
+ 80006e4: 3c01 subs r4, #1
+ 80006e6: f300 80ab bgt.w 8000840 <__aeabi_dmul+0x238>
+ 80006ea: f114 0f36 cmn.w r4, #54 ; 0x36
+ 80006ee: bfde ittt le
+ 80006f0: 2000 movle r0, #0
+ 80006f2: f001 4100 andle.w r1, r1, #2147483648 ; 0x80000000
+ 80006f6: bd70 pople {r4, r5, r6, pc}
+ 80006f8: f1c4 0400 rsb r4, r4, #0
+ 80006fc: 3c20 subs r4, #32
+ 80006fe: da35 bge.n 800076c <__aeabi_dmul+0x164>
+ 8000700: 340c adds r4, #12
+ 8000702: dc1b bgt.n 800073c <__aeabi_dmul+0x134>
+ 8000704: f104 0414 add.w r4, r4, #20
+ 8000708: f1c4 0520 rsb r5, r4, #32
+ 800070c: fa00 f305 lsl.w r3, r0, r5
+ 8000710: fa20 f004 lsr.w r0, r0, r4
+ 8000714: fa01 f205 lsl.w r2, r1, r5
+ 8000718: ea40 0002 orr.w r0, r0, r2
+ 800071c: f001 4200 and.w r2, r1, #2147483648 ; 0x80000000
+ 8000720: f021 4100 bic.w r1, r1, #2147483648 ; 0x80000000
+ 8000724: eb10 70d3 adds.w r0, r0, r3, lsr #31
+ 8000728: fa21 f604 lsr.w r6, r1, r4
+ 800072c: eb42 0106 adc.w r1, r2, r6
+ 8000730: ea5e 0e43 orrs.w lr, lr, r3, lsl #1
+ 8000734: bf08 it eq
+ 8000736: ea20 70d3 biceq.w r0, r0, r3, lsr #31
+ 800073a: bd70 pop {r4, r5, r6, pc}
+ 800073c: f1c4 040c rsb r4, r4, #12
+ 8000740: f1c4 0520 rsb r5, r4, #32
+ 8000744: fa00 f304 lsl.w r3, r0, r4
+ 8000748: fa20 f005 lsr.w r0, r0, r5
+ 800074c: fa01 f204 lsl.w r2, r1, r4
+ 8000750: ea40 0002 orr.w r0, r0, r2
+ 8000754: f001 4100 and.w r1, r1, #2147483648 ; 0x80000000
+ 8000758: eb10 70d3 adds.w r0, r0, r3, lsr #31
+ 800075c: f141 0100 adc.w r1, r1, #0
+ 8000760: ea5e 0e43 orrs.w lr, lr, r3, lsl #1
+ 8000764: bf08 it eq
+ 8000766: ea20 70d3 biceq.w r0, r0, r3, lsr #31
+ 800076a: bd70 pop {r4, r5, r6, pc}
+ 800076c: f1c4 0520 rsb r5, r4, #32
+ 8000770: fa00 f205 lsl.w r2, r0, r5
+ 8000774: ea4e 0e02 orr.w lr, lr, r2
+ 8000778: fa20 f304 lsr.w r3, r0, r4
+ 800077c: fa01 f205 lsl.w r2, r1, r5
+ 8000780: ea43 0302 orr.w r3, r3, r2
+ 8000784: fa21 f004 lsr.w r0, r1, r4
+ 8000788: f001 4100 and.w r1, r1, #2147483648 ; 0x80000000
+ 800078c: fa21 f204 lsr.w r2, r1, r4
+ 8000790: ea20 0002 bic.w r0, r0, r2
+ 8000794: eb00 70d3 add.w r0, r0, r3, lsr #31
+ 8000798: ea5e 0e43 orrs.w lr, lr, r3, lsl #1
+ 800079c: bf08 it eq
+ 800079e: ea20 70d3 biceq.w r0, r0, r3, lsr #31
+ 80007a2: bd70 pop {r4, r5, r6, pc}
+ 80007a4: f094 0f00 teq r4, #0
+ 80007a8: d10f bne.n 80007ca <__aeabi_dmul+0x1c2>
+ 80007aa: f001 4600 and.w r6, r1, #2147483648 ; 0x80000000
+ 80007ae: 0040 lsls r0, r0, #1
+ 80007b0: eb41 0101 adc.w r1, r1, r1
+ 80007b4: f411 1f80 tst.w r1, #1048576 ; 0x100000
+ 80007b8: bf08 it eq
+ 80007ba: 3c01 subeq r4, #1
+ 80007bc: d0f7 beq.n 80007ae <__aeabi_dmul+0x1a6>
+ 80007be: ea41 0106 orr.w r1, r1, r6
+ 80007c2: f095 0f00 teq r5, #0
+ 80007c6: bf18 it ne
+ 80007c8: 4770 bxne lr
+ 80007ca: f003 4600 and.w r6, r3, #2147483648 ; 0x80000000
+ 80007ce: 0052 lsls r2, r2, #1
+ 80007d0: eb43 0303 adc.w r3, r3, r3
+ 80007d4: f413 1f80 tst.w r3, #1048576 ; 0x100000
+ 80007d8: bf08 it eq
+ 80007da: 3d01 subeq r5, #1
+ 80007dc: d0f7 beq.n 80007ce <__aeabi_dmul+0x1c6>
+ 80007de: ea43 0306 orr.w r3, r3, r6
+ 80007e2: 4770 bx lr
+ 80007e4: ea94 0f0c teq r4, ip
+ 80007e8: ea0c 5513 and.w r5, ip, r3, lsr #20
+ 80007ec: bf18 it ne
+ 80007ee: ea95 0f0c teqne r5, ip
+ 80007f2: d00c beq.n 800080e <__aeabi_dmul+0x206>
+ 80007f4: ea50 0641 orrs.w r6, r0, r1, lsl #1
+ 80007f8: bf18 it ne
+ 80007fa: ea52 0643 orrsne.w r6, r2, r3, lsl #1
+ 80007fe: d1d1 bne.n 80007a4 <__aeabi_dmul+0x19c>
+ 8000800: ea81 0103 eor.w r1, r1, r3
+ 8000804: f001 4100 and.w r1, r1, #2147483648 ; 0x80000000
+ 8000808: f04f 0000 mov.w r0, #0
+ 800080c: bd70 pop {r4, r5, r6, pc}
+ 800080e: ea50 0641 orrs.w r6, r0, r1, lsl #1
+ 8000812: bf06 itte eq
+ 8000814: 4610 moveq r0, r2
+ 8000816: 4619 moveq r1, r3
+ 8000818: ea52 0643 orrsne.w r6, r2, r3, lsl #1
+ 800081c: d019 beq.n 8000852 <__aeabi_dmul+0x24a>
+ 800081e: ea94 0f0c teq r4, ip
+ 8000822: d102 bne.n 800082a <__aeabi_dmul+0x222>
+ 8000824: ea50 3601 orrs.w r6, r0, r1, lsl #12
+ 8000828: d113 bne.n 8000852 <__aeabi_dmul+0x24a>
+ 800082a: ea95 0f0c teq r5, ip
+ 800082e: d105 bne.n 800083c <__aeabi_dmul+0x234>
+ 8000830: ea52 3603 orrs.w r6, r2, r3, lsl #12
+ 8000834: bf1c itt ne
+ 8000836: 4610 movne r0, r2
+ 8000838: 4619 movne r1, r3
+ 800083a: d10a bne.n 8000852 <__aeabi_dmul+0x24a>
+ 800083c: ea81 0103 eor.w r1, r1, r3
+ 8000840: f001 4100 and.w r1, r1, #2147483648 ; 0x80000000
+ 8000844: f041 41fe orr.w r1, r1, #2130706432 ; 0x7f000000
+ 8000848: f441 0170 orr.w r1, r1, #15728640 ; 0xf00000
+ 800084c: f04f 0000 mov.w r0, #0
+ 8000850: bd70 pop {r4, r5, r6, pc}
+ 8000852: f041 41fe orr.w r1, r1, #2130706432 ; 0x7f000000
+ 8000856: f441 0178 orr.w r1, r1, #16252928 ; 0xf80000
+ 800085a: bd70 pop {r4, r5, r6, pc}
+
+0800085c <__aeabi_ddiv>:
+ 800085c: b570 push {r4, r5, r6, lr}
+ 800085e: f04f 0cff mov.w ip, #255 ; 0xff
+ 8000862: f44c 6ce0 orr.w ip, ip, #1792 ; 0x700
+ 8000866: ea1c 5411 ands.w r4, ip, r1, lsr #20
+ 800086a: bf1d ittte ne
+ 800086c: ea1c 5513 andsne.w r5, ip, r3, lsr #20
+ 8000870: ea94 0f0c teqne r4, ip
+ 8000874: ea95 0f0c teqne r5, ip
+ 8000878: f000 f8a7 bleq 80009ca <__aeabi_ddiv+0x16e>
+ 800087c: eba4 0405 sub.w r4, r4, r5
+ 8000880: ea81 0e03 eor.w lr, r1, r3
+ 8000884: ea52 3503 orrs.w r5, r2, r3, lsl #12
+ 8000888: ea4f 3101 mov.w r1, r1, lsl #12
+ 800088c: f000 8088 beq.w 80009a0 <__aeabi_ddiv+0x144>
+ 8000890: ea4f 3303 mov.w r3, r3, lsl #12
+ 8000894: f04f 5580 mov.w r5, #268435456 ; 0x10000000
+ 8000898: ea45 1313 orr.w r3, r5, r3, lsr #4
+ 800089c: ea43 6312 orr.w r3, r3, r2, lsr #24
+ 80008a0: ea4f 2202 mov.w r2, r2, lsl #8
+ 80008a4: ea45 1511 orr.w r5, r5, r1, lsr #4
+ 80008a8: ea45 6510 orr.w r5, r5, r0, lsr #24
+ 80008ac: ea4f 2600 mov.w r6, r0, lsl #8
+ 80008b0: f00e 4100 and.w r1, lr, #2147483648 ; 0x80000000
+ 80008b4: 429d cmp r5, r3
+ 80008b6: bf08 it eq
+ 80008b8: 4296 cmpeq r6, r2
+ 80008ba: f144 04fd adc.w r4, r4, #253 ; 0xfd
+ 80008be: f504 7440 add.w r4, r4, #768 ; 0x300
+ 80008c2: d202 bcs.n 80008ca <__aeabi_ddiv+0x6e>
+ 80008c4: 085b lsrs r3, r3, #1
+ 80008c6: ea4f 0232 mov.w r2, r2, rrx
+ 80008ca: 1ab6 subs r6, r6, r2
+ 80008cc: eb65 0503 sbc.w r5, r5, r3
+ 80008d0: 085b lsrs r3, r3, #1
+ 80008d2: ea4f 0232 mov.w r2, r2, rrx
+ 80008d6: f44f 1080 mov.w r0, #1048576 ; 0x100000
+ 80008da: f44f 2c00 mov.w ip, #524288 ; 0x80000
+ 80008de: ebb6 0e02 subs.w lr, r6, r2
+ 80008e2: eb75 0e03 sbcs.w lr, r5, r3
+ 80008e6: bf22 ittt cs
+ 80008e8: 1ab6 subcs r6, r6, r2
+ 80008ea: 4675 movcs r5, lr
+ 80008ec: ea40 000c orrcs.w r0, r0, ip
+ 80008f0: 085b lsrs r3, r3, #1
+ 80008f2: ea4f 0232 mov.w r2, r2, rrx
+ 80008f6: ebb6 0e02 subs.w lr, r6, r2
+ 80008fa: eb75 0e03 sbcs.w lr, r5, r3
+ 80008fe: bf22 ittt cs
+ 8000900: 1ab6 subcs r6, r6, r2
+ 8000902: 4675 movcs r5, lr
+ 8000904: ea40 005c orrcs.w r0, r0, ip, lsr #1
+ 8000908: 085b lsrs r3, r3, #1
+ 800090a: ea4f 0232 mov.w r2, r2, rrx
+ 800090e: ebb6 0e02 subs.w lr, r6, r2
+ 8000912: eb75 0e03 sbcs.w lr, r5, r3
+ 8000916: bf22 ittt cs
+ 8000918: 1ab6 subcs r6, r6, r2
+ 800091a: 4675 movcs r5, lr
+ 800091c: ea40 009c orrcs.w r0, r0, ip, lsr #2
+ 8000920: 085b lsrs r3, r3, #1
+ 8000922: ea4f 0232 mov.w r2, r2, rrx
+ 8000926: ebb6 0e02 subs.w lr, r6, r2
+ 800092a: eb75 0e03 sbcs.w lr, r5, r3
+ 800092e: bf22 ittt cs
+ 8000930: 1ab6 subcs r6, r6, r2
+ 8000932: 4675 movcs r5, lr
+ 8000934: ea40 00dc orrcs.w r0, r0, ip, lsr #3
+ 8000938: ea55 0e06 orrs.w lr, r5, r6
+ 800093c: d018 beq.n 8000970 <__aeabi_ddiv+0x114>
+ 800093e: ea4f 1505 mov.w r5, r5, lsl #4
+ 8000942: ea45 7516 orr.w r5, r5, r6, lsr #28
+ 8000946: ea4f 1606 mov.w r6, r6, lsl #4
+ 800094a: ea4f 03c3 mov.w r3, r3, lsl #3
+ 800094e: ea43 7352 orr.w r3, r3, r2, lsr #29
+ 8000952: ea4f 02c2 mov.w r2, r2, lsl #3
+ 8000956: ea5f 1c1c movs.w ip, ip, lsr #4
+ 800095a: d1c0 bne.n 80008de <__aeabi_ddiv+0x82>
+ 800095c: f411 1f80 tst.w r1, #1048576 ; 0x100000
+ 8000960: d10b bne.n 800097a <__aeabi_ddiv+0x11e>
+ 8000962: ea41 0100 orr.w r1, r1, r0
+ 8000966: f04f 0000 mov.w r0, #0
+ 800096a: f04f 4c00 mov.w ip, #2147483648 ; 0x80000000
+ 800096e: e7b6 b.n 80008de <__aeabi_ddiv+0x82>
+ 8000970: f411 1f80 tst.w r1, #1048576 ; 0x100000
+ 8000974: bf04 itt eq
+ 8000976: 4301 orreq r1, r0
+ 8000978: 2000 moveq r0, #0
+ 800097a: f1b4 0cfd subs.w ip, r4, #253 ; 0xfd
+ 800097e: bf88 it hi
+ 8000980: f5bc 6fe0 cmphi.w ip, #1792 ; 0x700
+ 8000984: f63f aeaf bhi.w 80006e6 <__aeabi_dmul+0xde>
+ 8000988: ebb5 0c03 subs.w ip, r5, r3
+ 800098c: bf04 itt eq
+ 800098e: ebb6 0c02 subseq.w ip, r6, r2
+ 8000992: ea5f 0c50 movseq.w ip, r0, lsr #1
+ 8000996: f150 0000 adcs.w r0, r0, #0
+ 800099a: eb41 5104 adc.w r1, r1, r4, lsl #20
+ 800099e: bd70 pop {r4, r5, r6, pc}
+ 80009a0: f00e 4e00 and.w lr, lr, #2147483648 ; 0x80000000
+ 80009a4: ea4e 3111 orr.w r1, lr, r1, lsr #12
+ 80009a8: eb14 045c adds.w r4, r4, ip, lsr #1
+ 80009ac: bfc2 ittt gt
+ 80009ae: ebd4 050c rsbsgt r5, r4, ip
+ 80009b2: ea41 5104 orrgt.w r1, r1, r4, lsl #20
+ 80009b6: bd70 popgt {r4, r5, r6, pc}
+ 80009b8: f441 1180 orr.w r1, r1, #1048576 ; 0x100000
+ 80009bc: f04f 0e00 mov.w lr, #0
+ 80009c0: 3c01 subs r4, #1
+ 80009c2: e690 b.n 80006e6 <__aeabi_dmul+0xde>
+ 80009c4: ea45 0e06 orr.w lr, r5, r6
+ 80009c8: e68d b.n 80006e6 <__aeabi_dmul+0xde>
+ 80009ca: ea0c 5513 and.w r5, ip, r3, lsr #20
+ 80009ce: ea94 0f0c teq r4, ip
+ 80009d2: bf08 it eq
+ 80009d4: ea95 0f0c teqeq r5, ip
+ 80009d8: f43f af3b beq.w 8000852 <__aeabi_dmul+0x24a>
+ 80009dc: ea94 0f0c teq r4, ip
+ 80009e0: d10a bne.n 80009f8 <__aeabi_ddiv+0x19c>
+ 80009e2: ea50 3401 orrs.w r4, r0, r1, lsl #12
+ 80009e6: f47f af34 bne.w 8000852 <__aeabi_dmul+0x24a>
+ 80009ea: ea95 0f0c teq r5, ip
+ 80009ee: f47f af25 bne.w 800083c <__aeabi_dmul+0x234>
+ 80009f2: 4610 mov r0, r2
+ 80009f4: 4619 mov r1, r3
+ 80009f6: e72c b.n 8000852 <__aeabi_dmul+0x24a>
+ 80009f8: ea95 0f0c teq r5, ip
+ 80009fc: d106 bne.n 8000a0c <__aeabi_ddiv+0x1b0>
+ 80009fe: ea52 3503 orrs.w r5, r2, r3, lsl #12
+ 8000a02: f43f aefd beq.w 8000800 <__aeabi_dmul+0x1f8>
+ 8000a06: 4610 mov r0, r2
+ 8000a08: 4619 mov r1, r3
+ 8000a0a: e722 b.n 8000852 <__aeabi_dmul+0x24a>
+ 8000a0c: ea50 0641 orrs.w r6, r0, r1, lsl #1
+ 8000a10: bf18 it ne
+ 8000a12: ea52 0643 orrsne.w r6, r2, r3, lsl #1
+ 8000a16: f47f aec5 bne.w 80007a4 <__aeabi_dmul+0x19c>
+ 8000a1a: ea50 0441 orrs.w r4, r0, r1, lsl #1
+ 8000a1e: f47f af0d bne.w 800083c <__aeabi_dmul+0x234>
+ 8000a22: ea52 0543 orrs.w r5, r2, r3, lsl #1
+ 8000a26: f47f aeeb bne.w 8000800 <__aeabi_dmul+0x1f8>
+ 8000a2a: e712 b.n 8000852 <__aeabi_dmul+0x24a>
+
+08000a2c <__gedf2>:
+ 8000a2c: f04f 3cff mov.w ip, #4294967295
+ 8000a30: e006 b.n 8000a40 <__cmpdf2+0x4>
+ 8000a32: bf00 nop
+
+08000a34 <__ledf2>:
+ 8000a34: f04f 0c01 mov.w ip, #1
+ 8000a38: e002 b.n 8000a40 <__cmpdf2+0x4>
+ 8000a3a: bf00 nop
+
+08000a3c <__cmpdf2>:
+ 8000a3c: f04f 0c01 mov.w ip, #1
+ 8000a40: f84d cd04 str.w ip, [sp, #-4]!
+ 8000a44: ea4f 0c41 mov.w ip, r1, lsl #1
+ 8000a48: ea7f 5c6c mvns.w ip, ip, asr #21
+ 8000a4c: ea4f 0c43 mov.w ip, r3, lsl #1
+ 8000a50: bf18 it ne
+ 8000a52: ea7f 5c6c mvnsne.w ip, ip, asr #21
+ 8000a56: d01b beq.n 8000a90 <__cmpdf2+0x54>
+ 8000a58: b001 add sp, #4
+ 8000a5a: ea50 0c41 orrs.w ip, r0, r1, lsl #1
+ 8000a5e: bf0c ite eq
+ 8000a60: ea52 0c43 orrseq.w ip, r2, r3, lsl #1
+ 8000a64: ea91 0f03 teqne r1, r3
+ 8000a68: bf02 ittt eq
+ 8000a6a: ea90 0f02 teqeq r0, r2
+ 8000a6e: 2000 moveq r0, #0
+ 8000a70: 4770 bxeq lr
+ 8000a72: f110 0f00 cmn.w r0, #0
+ 8000a76: ea91 0f03 teq r1, r3
+ 8000a7a: bf58 it pl
+ 8000a7c: 4299 cmppl r1, r3
+ 8000a7e: bf08 it eq
+ 8000a80: 4290 cmpeq r0, r2
+ 8000a82: bf2c ite cs
+ 8000a84: 17d8 asrcs r0, r3, #31
+ 8000a86: ea6f 70e3 mvncc.w r0, r3, asr #31
+ 8000a8a: f040 0001 orr.w r0, r0, #1
+ 8000a8e: 4770 bx lr
+ 8000a90: ea4f 0c41 mov.w ip, r1, lsl #1
+ 8000a94: ea7f 5c6c mvns.w ip, ip, asr #21
+ 8000a98: d102 bne.n 8000aa0 <__cmpdf2+0x64>
+ 8000a9a: ea50 3c01 orrs.w ip, r0, r1, lsl #12
+ 8000a9e: d107 bne.n 8000ab0 <__cmpdf2+0x74>
+ 8000aa0: ea4f 0c43 mov.w ip, r3, lsl #1
+ 8000aa4: ea7f 5c6c mvns.w ip, ip, asr #21
+ 8000aa8: d1d6 bne.n 8000a58 <__cmpdf2+0x1c>
+ 8000aaa: ea52 3c03 orrs.w ip, r2, r3, lsl #12
+ 8000aae: d0d3 beq.n 8000a58 <__cmpdf2+0x1c>
+ 8000ab0: f85d 0b04 ldr.w r0, [sp], #4
+ 8000ab4: 4770 bx lr
+ 8000ab6: bf00 nop
+
+08000ab8 <__aeabi_cdrcmple>:
+ 8000ab8: 4684 mov ip, r0
+ 8000aba: 4610 mov r0, r2
+ 8000abc: 4662 mov r2, ip
+ 8000abe: 468c mov ip, r1
+ 8000ac0: 4619 mov r1, r3
+ 8000ac2: 4663 mov r3, ip
+ 8000ac4: e000 b.n 8000ac8 <__aeabi_cdcmpeq>
+ 8000ac6: bf00 nop
+
+08000ac8 <__aeabi_cdcmpeq>:
+ 8000ac8: b501 push {r0, lr}
+ 8000aca: f7ff ffb7 bl 8000a3c <__cmpdf2>
+ 8000ace: 2800 cmp r0, #0
+ 8000ad0: bf48 it mi
+ 8000ad2: f110 0f00 cmnmi.w r0, #0
+ 8000ad6: bd01 pop {r0, pc}
+
+08000ad8 <__aeabi_dcmpeq>:
+ 8000ad8: f84d ed08 str.w lr, [sp, #-8]!
+ 8000adc: f7ff fff4 bl 8000ac8 <__aeabi_cdcmpeq>
+ 8000ae0: bf0c ite eq
+ 8000ae2: 2001 moveq r0, #1
+ 8000ae4: 2000 movne r0, #0
+ 8000ae6: f85d fb08 ldr.w pc, [sp], #8
+ 8000aea: bf00 nop
+
+08000aec <__aeabi_dcmplt>:
+ 8000aec: f84d ed08 str.w lr, [sp, #-8]!
+ 8000af0: f7ff ffea bl 8000ac8 <__aeabi_cdcmpeq>
+ 8000af4: bf34 ite cc
+ 8000af6: 2001 movcc r0, #1
+ 8000af8: 2000 movcs r0, #0
+ 8000afa: f85d fb08 ldr.w pc, [sp], #8
+ 8000afe: bf00 nop
+
+08000b00 <__aeabi_dcmple>:
+ 8000b00: f84d ed08 str.w lr, [sp, #-8]!
+ 8000b04: f7ff ffe0 bl 8000ac8 <__aeabi_cdcmpeq>
+ 8000b08: bf94 ite ls
+ 8000b0a: 2001 movls r0, #1
+ 8000b0c: 2000 movhi r0, #0
+ 8000b0e: f85d fb08 ldr.w pc, [sp], #8
+ 8000b12: bf00 nop
+
+08000b14 <__aeabi_dcmpge>:
+ 8000b14: f84d ed08 str.w lr, [sp, #-8]!
+ 8000b18: f7ff ffce bl 8000ab8 <__aeabi_cdrcmple>
+ 8000b1c: bf94 ite ls
+ 8000b1e: 2001 movls r0, #1
+ 8000b20: 2000 movhi r0, #0
+ 8000b22: f85d fb08 ldr.w pc, [sp], #8
+ 8000b26: bf00 nop
+
+08000b28 <__aeabi_dcmpgt>:
+ 8000b28: f84d ed08 str.w lr, [sp, #-8]!
+ 8000b2c: f7ff ffc4 bl 8000ab8 <__aeabi_cdrcmple>
+ 8000b30: bf34 ite cc
+ 8000b32: 2001 movcc r0, #1
+ 8000b34: 2000 movcs r0, #0
+ 8000b36: f85d fb08 ldr.w pc, [sp], #8
+ 8000b3a: bf00 nop
+
+08000b3c <__aeabi_dcmpun>:
+ 8000b3c: ea4f 0c41 mov.w ip, r1, lsl #1
+ 8000b40: ea7f 5c6c mvns.w ip, ip, asr #21
+ 8000b44: d102 bne.n 8000b4c <__aeabi_dcmpun+0x10>
+ 8000b46: ea50 3c01 orrs.w ip, r0, r1, lsl #12
+ 8000b4a: d10a bne.n 8000b62 <__aeabi_dcmpun+0x26>
+ 8000b4c: ea4f 0c43 mov.w ip, r3, lsl #1
+ 8000b50: ea7f 5c6c mvns.w ip, ip, asr #21
+ 8000b54: d102 bne.n 8000b5c <__aeabi_dcmpun+0x20>
+ 8000b56: ea52 3c03 orrs.w ip, r2, r3, lsl #12
+ 8000b5a: d102 bne.n 8000b62 <__aeabi_dcmpun+0x26>
+ 8000b5c: f04f 0000 mov.w r0, #0
+ 8000b60: 4770 bx lr
+ 8000b62: f04f 0001 mov.w r0, #1
+ 8000b66: 4770 bx lr
+
+08000b68 <__aeabi_d2iz>:
+ 8000b68: ea4f 0241 mov.w r2, r1, lsl #1
+ 8000b6c: f512 1200 adds.w r2, r2, #2097152 ; 0x200000
+ 8000b70: d215 bcs.n 8000b9e <__aeabi_d2iz+0x36>
+ 8000b72: d511 bpl.n 8000b98 <__aeabi_d2iz+0x30>
+ 8000b74: f46f 7378 mvn.w r3, #992 ; 0x3e0
+ 8000b78: ebb3 5262 subs.w r2, r3, r2, asr #21
+ 8000b7c: d912 bls.n 8000ba4 <__aeabi_d2iz+0x3c>
+ 8000b7e: ea4f 23c1 mov.w r3, r1, lsl #11
+ 8000b82: f043 4300 orr.w r3, r3, #2147483648 ; 0x80000000
+ 8000b86: ea43 5350 orr.w r3, r3, r0, lsr #21
+ 8000b8a: f011 4f00 tst.w r1, #2147483648 ; 0x80000000
+ 8000b8e: fa23 f002 lsr.w r0, r3, r2
+ 8000b92: bf18 it ne
+ 8000b94: 4240 negne r0, r0
+ 8000b96: 4770 bx lr
+ 8000b98: f04f 0000 mov.w r0, #0
+ 8000b9c: 4770 bx lr
+ 8000b9e: ea50 3001 orrs.w r0, r0, r1, lsl #12
+ 8000ba2: d105 bne.n 8000bb0 <__aeabi_d2iz+0x48>
+ 8000ba4: f011 4000 ands.w r0, r1, #2147483648 ; 0x80000000
+ 8000ba8: bf08 it eq
+ 8000baa: f06f 4000 mvneq.w r0, #2147483648 ; 0x80000000
+ 8000bae: 4770 bx lr
+ 8000bb0: f04f 0000 mov.w r0, #0
+ 8000bb4: 4770 bx lr
+ 8000bb6: bf00 nop
+
+08000bb8 <__aeabi_d2uiz>:
+ 8000bb8: 004a lsls r2, r1, #1
+ 8000bba: d211 bcs.n 8000be0 <__aeabi_d2uiz+0x28>
+ 8000bbc: f512 1200 adds.w r2, r2, #2097152 ; 0x200000
+ 8000bc0: d211 bcs.n 8000be6 <__aeabi_d2uiz+0x2e>
+ 8000bc2: d50d bpl.n 8000be0 <__aeabi_d2uiz+0x28>
+ 8000bc4: f46f 7378 mvn.w r3, #992 ; 0x3e0
+ 8000bc8: ebb3 5262 subs.w r2, r3, r2, asr #21
+ 8000bcc: d40e bmi.n 8000bec <__aeabi_d2uiz+0x34>
+ 8000bce: ea4f 23c1 mov.w r3, r1, lsl #11
+ 8000bd2: f043 4300 orr.w r3, r3, #2147483648 ; 0x80000000
+ 8000bd6: ea43 5350 orr.w r3, r3, r0, lsr #21
+ 8000bda: fa23 f002 lsr.w r0, r3, r2
+ 8000bde: 4770 bx lr
+ 8000be0: f04f 0000 mov.w r0, #0
+ 8000be4: 4770 bx lr
+ 8000be6: ea50 3001 orrs.w r0, r0, r1, lsl #12
+ 8000bea: d102 bne.n 8000bf2 <__aeabi_d2uiz+0x3a>
+ 8000bec: f04f 30ff mov.w r0, #4294967295
+ 8000bf0: 4770 bx lr
+ 8000bf2: f04f 0000 mov.w r0, #0
+ 8000bf6: 4770 bx lr
+
+08000bf8 <__aeabi_d2f>:
+ 8000bf8: ea4f 0241 mov.w r2, r1, lsl #1
+ 8000bfc: f1b2 43e0 subs.w r3, r2, #1879048192 ; 0x70000000
+ 8000c00: bf24 itt cs
+ 8000c02: f5b3 1c00 subscs.w ip, r3, #2097152 ; 0x200000
+ 8000c06: f1dc 5cfe rsbscs ip, ip, #532676608 ; 0x1fc00000
+ 8000c0a: d90d bls.n 8000c28 <__aeabi_d2f+0x30>
+ 8000c0c: f001 4c00 and.w ip, r1, #2147483648 ; 0x80000000
+ 8000c10: ea4f 02c0 mov.w r2, r0, lsl #3
+ 8000c14: ea4c 7050 orr.w r0, ip, r0, lsr #29
+ 8000c18: f1b2 4f00 cmp.w r2, #2147483648 ; 0x80000000
+ 8000c1c: eb40 0083 adc.w r0, r0, r3, lsl #2
+ 8000c20: bf08 it eq
+ 8000c22: f020 0001 biceq.w r0, r0, #1
+ 8000c26: 4770 bx lr
+ 8000c28: f011 4f80 tst.w r1, #1073741824 ; 0x40000000
+ 8000c2c: d121 bne.n 8000c72 <__aeabi_d2f+0x7a>
+ 8000c2e: f113 7238 adds.w r2, r3, #48234496 ; 0x2e00000
+ 8000c32: bfbc itt lt
+ 8000c34: f001 4000 andlt.w r0, r1, #2147483648 ; 0x80000000
+ 8000c38: 4770 bxlt lr
+ 8000c3a: f441 1180 orr.w r1, r1, #1048576 ; 0x100000
+ 8000c3e: ea4f 5252 mov.w r2, r2, lsr #21
+ 8000c42: f1c2 0218 rsb r2, r2, #24
+ 8000c46: f1c2 0c20 rsb ip, r2, #32
+ 8000c4a: fa10 f30c lsls.w r3, r0, ip
+ 8000c4e: fa20 f002 lsr.w r0, r0, r2
+ 8000c52: bf18 it ne
+ 8000c54: f040 0001 orrne.w r0, r0, #1
+ 8000c58: ea4f 23c1 mov.w r3, r1, lsl #11
+ 8000c5c: ea4f 23d3 mov.w r3, r3, lsr #11
+ 8000c60: fa03 fc0c lsl.w ip, r3, ip
+ 8000c64: ea40 000c orr.w r0, r0, ip
+ 8000c68: fa23 f302 lsr.w r3, r3, r2
+ 8000c6c: ea4f 0343 mov.w r3, r3, lsl #1
+ 8000c70: e7cc b.n 8000c0c <__aeabi_d2f+0x14>
+ 8000c72: ea7f 5362 mvns.w r3, r2, asr #21
+ 8000c76: d107 bne.n 8000c88 <__aeabi_d2f+0x90>
+ 8000c78: ea50 3301 orrs.w r3, r0, r1, lsl #12
+ 8000c7c: bf1e ittt ne
+ 8000c7e: f04f 40fe movne.w r0, #2130706432 ; 0x7f000000
+ 8000c82: f440 0040 orrne.w r0, r0, #12582912 ; 0xc00000
+ 8000c86: 4770 bxne lr
+ 8000c88: f001 4000 and.w r0, r1, #2147483648 ; 0x80000000
+ 8000c8c: f040 40fe orr.w r0, r0, #2130706432 ; 0x7f000000
+ 8000c90: f440 0000 orr.w r0, r0, #8388608 ; 0x800000
+ 8000c94: 4770 bx lr
+ 8000c96: bf00 nop
+
+08000c98 <__aeabi_uldivmod>:
+ 8000c98: b953 cbnz r3, 8000cb0 <__aeabi_uldivmod+0x18>
+ 8000c9a: b94a cbnz r2, 8000cb0 <__aeabi_uldivmod+0x18>
+ 8000c9c: 2900 cmp r1, #0
+ 8000c9e: bf08 it eq
+ 8000ca0: 2800 cmpeq r0, #0
+ 8000ca2: bf1c itt ne
+ 8000ca4: f04f 31ff movne.w r1, #4294967295
+ 8000ca8: f04f 30ff movne.w r0, #4294967295
+ 8000cac: f000 b972 b.w 8000f94 <__aeabi_idiv0>
+ 8000cb0: f1ad 0c08 sub.w ip, sp, #8
+ 8000cb4: e96d ce04 strd ip, lr, [sp, #-16]!
+ 8000cb8: f000 f806 bl 8000cc8 <__udivmoddi4>
+ 8000cbc: f8dd e004 ldr.w lr, [sp, #4]
+ 8000cc0: e9dd 2302 ldrd r2, r3, [sp, #8]
+ 8000cc4: b004 add sp, #16
+ 8000cc6: 4770 bx lr
+
+08000cc8 <__udivmoddi4>:
+ 8000cc8: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
+ 8000ccc: 9e08 ldr r6, [sp, #32]
+ 8000cce: 4604 mov r4, r0
+ 8000cd0: 4688 mov r8, r1
+ 8000cd2: 2b00 cmp r3, #0
+ 8000cd4: d14b bne.n 8000d6e <__udivmoddi4+0xa6>
+ 8000cd6: 428a cmp r2, r1
+ 8000cd8: 4615 mov r5, r2
+ 8000cda: d967 bls.n 8000dac <__udivmoddi4+0xe4>
+ 8000cdc: fab2 f282 clz r2, r2
+ 8000ce0: b14a cbz r2, 8000cf6 <__udivmoddi4+0x2e>
+ 8000ce2: f1c2 0720 rsb r7, r2, #32
+ 8000ce6: fa01 f302 lsl.w r3, r1, r2
+ 8000cea: fa20 f707 lsr.w r7, r0, r7
+ 8000cee: 4095 lsls r5, r2
+ 8000cf0: ea47 0803 orr.w r8, r7, r3
+ 8000cf4: 4094 lsls r4, r2
+ 8000cf6: ea4f 4e15 mov.w lr, r5, lsr #16
+ 8000cfa: 0c23 lsrs r3, r4, #16
+ 8000cfc: fbb8 f7fe udiv r7, r8, lr
+ 8000d00: fa1f fc85 uxth.w ip, r5
+ 8000d04: fb0e 8817 mls r8, lr, r7, r8
+ 8000d08: ea43 4308 orr.w r3, r3, r8, lsl #16
+ 8000d0c: fb07 f10c mul.w r1, r7, ip
+ 8000d10: 4299 cmp r1, r3
+ 8000d12: d909 bls.n 8000d28 <__udivmoddi4+0x60>
+ 8000d14: 18eb adds r3, r5, r3
+ 8000d16: f107 30ff add.w r0, r7, #4294967295
+ 8000d1a: f080 811b bcs.w 8000f54 <__udivmoddi4+0x28c>
+ 8000d1e: 4299 cmp r1, r3
+ 8000d20: f240 8118 bls.w 8000f54 <__udivmoddi4+0x28c>
+ 8000d24: 3f02 subs r7, #2
+ 8000d26: 442b add r3, r5
+ 8000d28: 1a5b subs r3, r3, r1
+ 8000d2a: b2a4 uxth r4, r4
+ 8000d2c: fbb3 f0fe udiv r0, r3, lr
+ 8000d30: fb0e 3310 mls r3, lr, r0, r3
+ 8000d34: ea44 4403 orr.w r4, r4, r3, lsl #16
+ 8000d38: fb00 fc0c mul.w ip, r0, ip
+ 8000d3c: 45a4 cmp ip, r4
+ 8000d3e: d909 bls.n 8000d54 <__udivmoddi4+0x8c>
+ 8000d40: 192c adds r4, r5, r4
+ 8000d42: f100 33ff add.w r3, r0, #4294967295
+ 8000d46: f080 8107 bcs.w 8000f58 <__udivmoddi4+0x290>
+ 8000d4a: 45a4 cmp ip, r4
+ 8000d4c: f240 8104 bls.w 8000f58 <__udivmoddi4+0x290>
+ 8000d50: 3802 subs r0, #2
+ 8000d52: 442c add r4, r5
+ 8000d54: ea40 4007 orr.w r0, r0, r7, lsl #16
+ 8000d58: eba4 040c sub.w r4, r4, ip
+ 8000d5c: 2700 movs r7, #0
+ 8000d5e: b11e cbz r6, 8000d68 <__udivmoddi4+0xa0>
+ 8000d60: 40d4 lsrs r4, r2
+ 8000d62: 2300 movs r3, #0
+ 8000d64: e9c6 4300 strd r4, r3, [r6]
+ 8000d68: 4639 mov r1, r7
+ 8000d6a: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
+ 8000d6e: 428b cmp r3, r1
+ 8000d70: d909 bls.n 8000d86 <__udivmoddi4+0xbe>
+ 8000d72: 2e00 cmp r6, #0
+ 8000d74: f000 80eb beq.w 8000f4e <__udivmoddi4+0x286>
+ 8000d78: 2700 movs r7, #0
+ 8000d7a: e9c6 0100 strd r0, r1, [r6]
+ 8000d7e: 4638 mov r0, r7
+ 8000d80: 4639 mov r1, r7
+ 8000d82: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
+ 8000d86: fab3 f783 clz r7, r3
+ 8000d8a: 2f00 cmp r7, #0
+ 8000d8c: d147 bne.n 8000e1e <__udivmoddi4+0x156>
+ 8000d8e: 428b cmp r3, r1
+ 8000d90: d302 bcc.n 8000d98 <__udivmoddi4+0xd0>
+ 8000d92: 4282 cmp r2, r0
+ 8000d94: f200 80fa bhi.w 8000f8c <__udivmoddi4+0x2c4>
+ 8000d98: 1a84 subs r4, r0, r2
+ 8000d9a: eb61 0303 sbc.w r3, r1, r3
+ 8000d9e: 2001 movs r0, #1
+ 8000da0: 4698 mov r8, r3
+ 8000da2: 2e00 cmp r6, #0
+ 8000da4: d0e0 beq.n 8000d68 <__udivmoddi4+0xa0>
+ 8000da6: e9c6 4800 strd r4, r8, [r6]
+ 8000daa: e7dd b.n 8000d68 <__udivmoddi4+0xa0>
+ 8000dac: b902 cbnz r2, 8000db0 <__udivmoddi4+0xe8>
+ 8000dae: deff udf #255 ; 0xff
+ 8000db0: fab2 f282 clz r2, r2
+ 8000db4: 2a00 cmp r2, #0
+ 8000db6: f040 808f bne.w 8000ed8 <__udivmoddi4+0x210>
+ 8000dba: 1b49 subs r1, r1, r5
+ 8000dbc: ea4f 4e15 mov.w lr, r5, lsr #16
+ 8000dc0: fa1f f885 uxth.w r8, r5
+ 8000dc4: 2701 movs r7, #1
+ 8000dc6: fbb1 fcfe udiv ip, r1, lr
+ 8000dca: 0c23 lsrs r3, r4, #16
+ 8000dcc: fb0e 111c mls r1, lr, ip, r1
+ 8000dd0: ea43 4301 orr.w r3, r3, r1, lsl #16
+ 8000dd4: fb08 f10c mul.w r1, r8, ip
+ 8000dd8: 4299 cmp r1, r3
+ 8000dda: d907 bls.n 8000dec <__udivmoddi4+0x124>
+ 8000ddc: 18eb adds r3, r5, r3
+ 8000dde: f10c 30ff add.w r0, ip, #4294967295
+ 8000de2: d202 bcs.n 8000dea <__udivmoddi4+0x122>
+ 8000de4: 4299 cmp r1, r3
+ 8000de6: f200 80cd bhi.w 8000f84 <__udivmoddi4+0x2bc>
+ 8000dea: 4684 mov ip, r0
+ 8000dec: 1a59 subs r1, r3, r1
+ 8000dee: b2a3 uxth r3, r4
+ 8000df0: fbb1 f0fe udiv r0, r1, lr
+ 8000df4: fb0e 1410 mls r4, lr, r0, r1
+ 8000df8: ea43 4404 orr.w r4, r3, r4, lsl #16
+ 8000dfc: fb08 f800 mul.w r8, r8, r0
+ 8000e00: 45a0 cmp r8, r4
+ 8000e02: d907 bls.n 8000e14 <__udivmoddi4+0x14c>
+ 8000e04: 192c adds r4, r5, r4
+ 8000e06: f100 33ff add.w r3, r0, #4294967295
+ 8000e0a: d202 bcs.n 8000e12 <__udivmoddi4+0x14a>
+ 8000e0c: 45a0 cmp r8, r4
+ 8000e0e: f200 80b6 bhi.w 8000f7e <__udivmoddi4+0x2b6>
+ 8000e12: 4618 mov r0, r3
+ 8000e14: eba4 0408 sub.w r4, r4, r8
+ 8000e18: ea40 400c orr.w r0, r0, ip, lsl #16
+ 8000e1c: e79f b.n 8000d5e <__udivmoddi4+0x96>
+ 8000e1e: f1c7 0c20 rsb ip, r7, #32
+ 8000e22: 40bb lsls r3, r7
+ 8000e24: fa22 fe0c lsr.w lr, r2, ip
+ 8000e28: ea4e 0e03 orr.w lr, lr, r3
+ 8000e2c: fa01 f407 lsl.w r4, r1, r7
+ 8000e30: fa20 f50c lsr.w r5, r0, ip
+ 8000e34: fa21 f30c lsr.w r3, r1, ip
+ 8000e38: ea4f 481e mov.w r8, lr, lsr #16
+ 8000e3c: 4325 orrs r5, r4
+ 8000e3e: fbb3 f9f8 udiv r9, r3, r8
+ 8000e42: 0c2c lsrs r4, r5, #16
+ 8000e44: fb08 3319 mls r3, r8, r9, r3
+ 8000e48: fa1f fa8e uxth.w sl, lr
+ 8000e4c: ea44 4303 orr.w r3, r4, r3, lsl #16
+ 8000e50: fb09 f40a mul.w r4, r9, sl
+ 8000e54: 429c cmp r4, r3
+ 8000e56: fa02 f207 lsl.w r2, r2, r7
+ 8000e5a: fa00 f107 lsl.w r1, r0, r7
+ 8000e5e: d90b bls.n 8000e78 <__udivmoddi4+0x1b0>
+ 8000e60: eb1e 0303 adds.w r3, lr, r3
+ 8000e64: f109 30ff add.w r0, r9, #4294967295
+ 8000e68: f080 8087 bcs.w 8000f7a <__udivmoddi4+0x2b2>
+ 8000e6c: 429c cmp r4, r3
+ 8000e6e: f240 8084 bls.w 8000f7a <__udivmoddi4+0x2b2>
+ 8000e72: f1a9 0902 sub.w r9, r9, #2
+ 8000e76: 4473 add r3, lr
+ 8000e78: 1b1b subs r3, r3, r4
+ 8000e7a: b2ad uxth r5, r5
+ 8000e7c: fbb3 f0f8 udiv r0, r3, r8
+ 8000e80: fb08 3310 mls r3, r8, r0, r3
+ 8000e84: ea45 4403 orr.w r4, r5, r3, lsl #16
+ 8000e88: fb00 fa0a mul.w sl, r0, sl
+ 8000e8c: 45a2 cmp sl, r4
+ 8000e8e: d908 bls.n 8000ea2 <__udivmoddi4+0x1da>
+ 8000e90: eb1e 0404 adds.w r4, lr, r4
+ 8000e94: f100 33ff add.w r3, r0, #4294967295
+ 8000e98: d26b bcs.n 8000f72 <__udivmoddi4+0x2aa>
+ 8000e9a: 45a2 cmp sl, r4
+ 8000e9c: d969 bls.n 8000f72 <__udivmoddi4+0x2aa>
+ 8000e9e: 3802 subs r0, #2
+ 8000ea0: 4474 add r4, lr
+ 8000ea2: ea40 4009 orr.w r0, r0, r9, lsl #16
+ 8000ea6: fba0 8902 umull r8, r9, r0, r2
+ 8000eaa: eba4 040a sub.w r4, r4, sl
+ 8000eae: 454c cmp r4, r9
+ 8000eb0: 46c2 mov sl, r8
+ 8000eb2: 464b mov r3, r9
+ 8000eb4: d354 bcc.n 8000f60 <__udivmoddi4+0x298>
+ 8000eb6: d051 beq.n 8000f5c <__udivmoddi4+0x294>
+ 8000eb8: 2e00 cmp r6, #0
+ 8000eba: d069 beq.n 8000f90 <__udivmoddi4+0x2c8>
+ 8000ebc: ebb1 050a subs.w r5, r1, sl
+ 8000ec0: eb64 0403 sbc.w r4, r4, r3
+ 8000ec4: fa04 fc0c lsl.w ip, r4, ip
+ 8000ec8: 40fd lsrs r5, r7
+ 8000eca: 40fc lsrs r4, r7
+ 8000ecc: ea4c 0505 orr.w r5, ip, r5
+ 8000ed0: e9c6 5400 strd r5, r4, [r6]
+ 8000ed4: 2700 movs r7, #0
+ 8000ed6: e747 b.n 8000d68 <__udivmoddi4+0xa0>
+ 8000ed8: f1c2 0320 rsb r3, r2, #32
+ 8000edc: fa20 f703 lsr.w r7, r0, r3
+ 8000ee0: 4095 lsls r5, r2
+ 8000ee2: fa01 f002 lsl.w r0, r1, r2
+ 8000ee6: fa21 f303 lsr.w r3, r1, r3
+ 8000eea: ea4f 4e15 mov.w lr, r5, lsr #16
+ 8000eee: 4338 orrs r0, r7
+ 8000ef0: 0c01 lsrs r1, r0, #16
+ 8000ef2: fbb3 f7fe udiv r7, r3, lr
+ 8000ef6: fa1f f885 uxth.w r8, r5
+ 8000efa: fb0e 3317 mls r3, lr, r7, r3
+ 8000efe: ea41 4103 orr.w r1, r1, r3, lsl #16
+ 8000f02: fb07 f308 mul.w r3, r7, r8
+ 8000f06: 428b cmp r3, r1
+ 8000f08: fa04 f402 lsl.w r4, r4, r2
+ 8000f0c: d907 bls.n 8000f1e <__udivmoddi4+0x256>
+ 8000f0e: 1869 adds r1, r5, r1
+ 8000f10: f107 3cff add.w ip, r7, #4294967295
+ 8000f14: d22f bcs.n 8000f76 <__udivmoddi4+0x2ae>
+ 8000f16: 428b cmp r3, r1
+ 8000f18: d92d bls.n 8000f76 <__udivmoddi4+0x2ae>
+ 8000f1a: 3f02 subs r7, #2
+ 8000f1c: 4429 add r1, r5
+ 8000f1e: 1acb subs r3, r1, r3
+ 8000f20: b281 uxth r1, r0
+ 8000f22: fbb3 f0fe udiv r0, r3, lr
+ 8000f26: fb0e 3310 mls r3, lr, r0, r3
+ 8000f2a: ea41 4103 orr.w r1, r1, r3, lsl #16
+ 8000f2e: fb00 f308 mul.w r3, r0, r8
+ 8000f32: 428b cmp r3, r1
+ 8000f34: d907 bls.n 8000f46 <__udivmoddi4+0x27e>
+ 8000f36: 1869 adds r1, r5, r1
+ 8000f38: f100 3cff add.w ip, r0, #4294967295
+ 8000f3c: d217 bcs.n 8000f6e <__udivmoddi4+0x2a6>
+ 8000f3e: 428b cmp r3, r1
+ 8000f40: d915 bls.n 8000f6e <__udivmoddi4+0x2a6>
+ 8000f42: 3802 subs r0, #2
+ 8000f44: 4429 add r1, r5
+ 8000f46: 1ac9 subs r1, r1, r3
+ 8000f48: ea40 4707 orr.w r7, r0, r7, lsl #16
+ 8000f4c: e73b b.n 8000dc6 <__udivmoddi4+0xfe>
+ 8000f4e: 4637 mov r7, r6
+ 8000f50: 4630 mov r0, r6
+ 8000f52: e709 b.n 8000d68 <__udivmoddi4+0xa0>
+ 8000f54: 4607 mov r7, r0
+ 8000f56: e6e7 b.n 8000d28 <__udivmoddi4+0x60>
+ 8000f58: 4618 mov r0, r3
+ 8000f5a: e6fb b.n 8000d54 <__udivmoddi4+0x8c>
+ 8000f5c: 4541 cmp r1, r8
+ 8000f5e: d2ab bcs.n 8000eb8 <__udivmoddi4+0x1f0>
+ 8000f60: ebb8 0a02 subs.w sl, r8, r2
+ 8000f64: eb69 020e sbc.w r2, r9, lr
+ 8000f68: 3801 subs r0, #1
+ 8000f6a: 4613 mov r3, r2
+ 8000f6c: e7a4 b.n 8000eb8 <__udivmoddi4+0x1f0>
+ 8000f6e: 4660 mov r0, ip
+ 8000f70: e7e9 b.n 8000f46 <__udivmoddi4+0x27e>
+ 8000f72: 4618 mov r0, r3
+ 8000f74: e795 b.n 8000ea2 <__udivmoddi4+0x1da>
+ 8000f76: 4667 mov r7, ip
+ 8000f78: e7d1 b.n 8000f1e <__udivmoddi4+0x256>
+ 8000f7a: 4681 mov r9, r0
+ 8000f7c: e77c b.n 8000e78 <__udivmoddi4+0x1b0>
+ 8000f7e: 3802 subs r0, #2
+ 8000f80: 442c add r4, r5
+ 8000f82: e747 b.n 8000e14 <__udivmoddi4+0x14c>
+ 8000f84: f1ac 0c02 sub.w ip, ip, #2
+ 8000f88: 442b add r3, r5
+ 8000f8a: e72f b.n 8000dec <__udivmoddi4+0x124>
+ 8000f8c: 4638 mov r0, r7
+ 8000f8e: e708 b.n 8000da2 <__udivmoddi4+0xda>
+ 8000f90: 4637 mov r7, r6
+ 8000f92: e6e9 b.n 8000d68 <__udivmoddi4+0xa0>
+
+08000f94 <__aeabi_idiv0>:
+ 8000f94: 4770 bx lr
+ 8000f96: bf00 nop
+
+08000f98 :
+extern I2C_HandleTypeDef hi2c1;
+LSM303 eComp;
+COMPASS_LEDS compLeds;
+
+void setup(void)
+{
+ 8000f98: b580 push {r7, lr}
+ 8000f9a: af00 add r7, sp, #0
+ COMPASS_LEDS_Init(&compLeds);
+ 8000f9c: 481b ldr r0, [pc, #108] ; (800100c )
+ 8000f9e: f000 fe55 bl 8001c4c
+
+ if(!LSM303_Init(&eComp, &hi2c1))
+ 8000fa2: 491b ldr r1, [pc, #108] ; (8001010 )
+ 8000fa4: 481b ldr r0, [pc, #108] ; (8001014 )
+ 8000fa6: f000 ff85 bl 8001eb4
+ 8000faa: 4603 mov r3, r0
+ 8000fac: 2b00 cmp r3, #0
+ 8000fae: d102 bne.n 8000fb6
+ printf("Failed to init eCompass\r\n");
+ 8000fb0: 4819 ldr r0, [pc, #100] ; (8001018 )
+ 8000fb2: f00a f94f bl 800b254
+
+ if(!LSM303_EnableTemperatureSensor(&eComp, true))
+ 8000fb6: 2101 movs r1, #1
+ 8000fb8: 4816 ldr r0, [pc, #88] ; (8001014 )
+ 8000fba: f000 ff9a bl 8001ef2
+ 8000fbe: 4603 mov r3, r0
+ 8000fc0: 2b00 cmp r3, #0
+ 8000fc2: d102 bne.n 8000fca
+ printf("Failed to enable temp sensor\r\n");
+ 8000fc4: 4815 ldr r0, [pc, #84] ; (800101c )
+ 8000fc6: f00a f945 bl 800b254
+
+ if(!LSM303_ApplyConfig(&eComp))
+ 8000fca: 4812 ldr r0, [pc, #72] ; (8001014 )
+ 8000fcc: f000 ffac bl 8001f28
+ 8000fd0: 4603 mov r3, r0
+ 8000fd2: 2b00 cmp r3, #0
+ 8000fd4: d102 bne.n 8000fdc
+ printf("Failed to apply config\r\n");
+ 8000fd6: 4812 ldr r0, [pc, #72] ; (8001020 )
+ 8000fd8: f00a f93c bl 800b254
+
+ if(!LSM303_GetDeviceID(&eComp, id))
+ 8000fdc: 4911 ldr r1, [pc, #68] ; (8001024 )
+ 8000fde: 480d ldr r0, [pc, #52] ; (8001014 )
+ 8000fe0: f000 ffee bl 8001fc0
+ 8000fe4: 4603 mov r3, r0
+ 8000fe6: 2b00 cmp r3, #0
+ 8000fe8: d103 bne.n 8000ff2
+ printf("Failed to retrieve id\r\n");
+ 8000fea: 480f ldr r0, [pc, #60] ; (8001028 )
+ 8000fec: f00a f932 bl 800b254
+ else
+ printf("LSM303 ID : %#X,%#X,%#X\r\n", id[0], id[1], id[2]);
+}
+ 8000ff0: e00a b.n 8001008
+ printf("LSM303 ID : %#X,%#X,%#X\r\n", id[0], id[1], id[2]);
+ 8000ff2: 4b0c ldr r3, [pc, #48] ; (8001024 )
+ 8000ff4: 781b ldrb r3, [r3, #0]
+ 8000ff6: 4619 mov r1, r3
+ 8000ff8: 4b0a ldr r3, [pc, #40] ; (8001024 )
+ 8000ffa: 785b ldrb r3, [r3, #1]
+ 8000ffc: 461a mov r2, r3
+ 8000ffe: 4b09 ldr r3, [pc, #36] ; (8001024 )
+ 8001000: 789b ldrb r3, [r3, #2]
+ 8001002: 480a ldr r0, [pc, #40] ; (800102c )
+ 8001004: f00a f8b2 bl 800b16c
+}
+ 8001008: bf00 nop
+ 800100a: bd80 pop {r7, pc}
+ 800100c: 20000244 .word 0x20000244
+ 8001010: 20000294 .word 0x20000294
+ 8001014: 2000023c .word 0x2000023c
+ 8001018: 0800e820 .word 0x0800e820
+ 800101c: 0800e83c .word 0x0800e83c
+ 8001020: 0800e85c .word 0x0800e85c
+ 8001024: 20000224 .word 0x20000224
+ 8001028: 0800e874 .word 0x0800e874
+ 800102c: 0800e88c .word 0x0800e88c
+
+08001030 :
+
+void loop(void)
+{
+ 8001030: b590 push {r4, r7, lr}
+ 8001032: b083 sub sp, #12
+ 8001034: af00 add r7, sp, #0
+ if(HAL_GetTick() - ts_print > PRINT_RATE_MS)
+ 8001036: f001 f971 bl 800231c
+ 800103a: 4602 mov r2, r0
+ 800103c: 4b50 ldr r3, [pc, #320] ; (8001180 )
+ 800103e: 681b ldr r3, [r3, #0]
+ 8001040: 1ad3 subs r3, r2, r3
+ 8001042: 2b64 cmp r3, #100 ; 0x64
+ 8001044: d93a bls.n 80010bc
+ {
+ //Lets read the temperature :
+ float temperature = 0;
+ 8001046: f04f 0300 mov.w r3, #0
+ 800104a: 607b str r3, [r7, #4]
+
+ if(!LSM303_GetTemperature(&eComp, &temperature, NULL))
+ 800104c: 1d3b adds r3, r7, #4
+ 800104e: 2200 movs r2, #0
+ 8001050: 4619 mov r1, r3
+ 8001052: 484c ldr r0, [pc, #304] ; (8001184 )
+ 8001054: f000 ffe8 bl 8002028
+ 8001058: 4603 mov r3, r0
+ 800105a: 2b00 cmp r3, #0
+ 800105c: d103 bne.n 8001066
+ printf("Failed to get temperature\r\n");
+ 800105e: 484a ldr r0, [pc, #296] ; (8001188 )
+ 8001060: f00a f8f8 bl 800b254
+ 8001064: e00a b.n 800107c
+ else
+ printf("Temp is : %.3f\r\n", temperature);
+ 8001066: 687b ldr r3, [r7, #4]
+ 8001068: 4618 mov r0, r3
+ 800106a: f7ff fa75 bl 8000558 <__aeabi_f2d>
+ 800106e: 4603 mov r3, r0
+ 8001070: 460c mov r4, r1
+ 8001072: 461a mov r2, r3
+ 8001074: 4623 mov r3, r4
+ 8001076: 4845 ldr r0, [pc, #276] ; (800118c )
+ 8001078: f00a f878 bl 800b16c
+
+ if(!LSM303_GetMagneticFieldData(&eComp, &x, &y, &z))
+ 800107c: 4b44 ldr r3, [pc, #272] ; (8001190 )
+ 800107e: 4a45 ldr r2, [pc, #276] ; (8001194 )
+ 8001080: 4945 ldr r1, [pc, #276] ; (8001198 )
+ 8001082: 4840 ldr r0, [pc, #256] ; (8001184 )
+ 8001084: f001 f82a bl 80020dc
+ 8001088: 4603 mov r3, r0
+ 800108a: 2b00 cmp r3, #0
+ 800108c: d103 bne.n 8001096
+ printf("Failed to get magnetic data\r\n");
+ 800108e: 4843 ldr r0, [pc, #268] ; (800119c )
+ 8001090: f00a f8e0 bl 800b254
+ 8001094: e00d b.n 80010b2
+ else
+ printf("x : %d, y : %d, z : %d\r\n", x, y, z);
+ 8001096: 4b40 ldr r3, [pc, #256] ; (8001198 )
+ 8001098: f9b3 3000 ldrsh.w r3, [r3]
+ 800109c: 4619 mov r1, r3
+ 800109e: 4b3d ldr r3, [pc, #244] ; (8001194 )
+ 80010a0: f9b3 3000 ldrsh.w r3, [r3]
+ 80010a4: 461a mov r2, r3
+ 80010a6: 4b3a ldr r3, [pc, #232] ; (8001190 )
+ 80010a8: f9b3 3000 ldrsh.w r3, [r3]
+ 80010ac: 483c ldr r0, [pc, #240] ; (80011a0 )
+ 80010ae: f00a f85d bl 800b16c
+
+ ts_print = HAL_GetTick();
+ 80010b2: f001 f933 bl 800231c
+ 80010b6: 4602 mov r2, r0
+ 80010b8: 4b31 ldr r3, [pc, #196] ; (8001180 )
+ 80010ba: 601a str r2, [r3, #0]
+ }
+
+ if(x > 0 && x > abs(y) - 50)
+ 80010bc: 4b36 ldr r3, [pc, #216] ; (8001198 )
+ 80010be: f9b3 3000 ldrsh.w r3, [r3]
+ 80010c2: 2b00 cmp r3, #0
+ 80010c4: dd10 ble.n 80010e8
+ 80010c6: 4b34 ldr r3, [pc, #208] ; (8001198 )
+ 80010c8: f9b3 3000 ldrsh.w r3, [r3]
+ 80010cc: 461a mov r2, r3
+ 80010ce: 4b31 ldr r3, [pc, #196] ; (8001194 )
+ 80010d0: f9b3 3000 ldrsh.w r3, [r3]
+ 80010d4: 2b00 cmp r3, #0
+ 80010d6: bfb8 it lt
+ 80010d8: 425b neglt r3, r3
+ 80010da: 3b32 subs r3, #50 ; 0x32
+ 80010dc: 429a cmp r2, r3
+ 80010de: dd03 ble.n 80010e8
+ COMPASS_LEDS_Light(&compLeds, NORTH);
+ 80010e0: 2101 movs r1, #1
+ 80010e2: 4830 ldr r0, [pc, #192] ; (80011a4 )
+ 80010e4: f000 fe1c bl 8001d20
+ if(x < 0 && abs(x) > abs(y) - 50)
+ 80010e8: 4b2b ldr r3, [pc, #172] ; (8001198 )
+ 80010ea: f9b3 3000 ldrsh.w r3, [r3]
+ 80010ee: 2b00 cmp r3, #0
+ 80010f0: da13 bge.n 800111a
+ 80010f2: 4b29 ldr r3, [pc, #164] ; (8001198 )
+ 80010f4: f9b3 3000 ldrsh.w r3, [r3]
+ 80010f8: ea83 72e3 eor.w r2, r3, r3, asr #31
+ 80010fc: eba2 72e3 sub.w r2, r2, r3, asr #31
+ 8001100: 4b24 ldr r3, [pc, #144] ; (8001194 )
+ 8001102: f9b3 3000 ldrsh.w r3, [r3]
+ 8001106: 2b00 cmp r3, #0
+ 8001108: bfb8 it lt
+ 800110a: 425b neglt r3, r3
+ 800110c: 3b32 subs r3, #50 ; 0x32
+ 800110e: 429a cmp r2, r3
+ 8001110: dd03 ble.n 800111a
+ COMPASS_LEDS_Light(&compLeds, SOUTH);
+ 8001112: 2102 movs r1, #2
+ 8001114: 4823 ldr r0, [pc, #140] ; (80011a4 )
+ 8001116: f000 fe03 bl 8001d20
+ if(y > 0 && y > abs(x) - 50)
+ 800111a: 4b1e ldr r3, [pc, #120] ; (8001194 )
+ 800111c: f9b3 3000 ldrsh.w r3, [r3]
+ 8001120: 2b00 cmp r3, #0
+ 8001122: dd10 ble.n 8001146
+ 8001124: 4b1b ldr r3, [pc, #108] ; (8001194 )
+ 8001126: f9b3 3000 ldrsh.w r3, [r3]
+ 800112a: 461a mov r2, r3
+ 800112c: 4b1a ldr r3, [pc, #104] ; (8001198 )
+ 800112e: f9b3 3000 ldrsh.w r3, [r3]
+ 8001132: 2b00 cmp r3, #0
+ 8001134: bfb8 it lt
+ 8001136: 425b neglt r3, r3
+ 8001138: 3b32 subs r3, #50 ; 0x32
+ 800113a: 429a cmp r2, r3
+ 800113c: dd03 ble.n 8001146
+ COMPASS_LEDS_Light(&compLeds, EAST);
+ 800113e: 2108 movs r1, #8
+ 8001140: 4818 ldr r0, [pc, #96] ; (80011a4 )
+ 8001142: f000 fded bl 8001d20
+ if(y < 0 && abs(y) > abs(x) - 50)
+ 8001146: 4b13 ldr r3, [pc, #76] ; (8001194 )
+ 8001148: f9b3 3000 ldrsh.w r3, [r3]
+ 800114c: 2b00 cmp r3, #0
+ 800114e: da13 bge.n 8001178
+ 8001150: 4b10 ldr r3, [pc, #64] ; (8001194 )
+ 8001152: f9b3 3000 ldrsh.w r3, [r3]
+ 8001156: ea83 72e3 eor.w r2, r3, r3, asr #31
+ 800115a: eba2 72e3 sub.w r2, r2, r3, asr #31
+ 800115e: 4b0e ldr r3, [pc, #56] ; (8001198 )
+ 8001160: f9b3 3000 ldrsh.w r3, [r3]
+ 8001164: 2b00 cmp r3, #0
+ 8001166: bfb8 it lt
+ 8001168: 425b neglt r3, r3
+ 800116a: 3b32 subs r3, #50 ; 0x32
+ 800116c: 429a cmp r2, r3
+ 800116e: dd03 ble.n 8001178
+ COMPASS_LEDS_Light(&compLeds, WEST);
+ 8001170: 2104 movs r1, #4
+ 8001172: 480c ldr r0, [pc, #48] ; (80011a4 )
+ 8001174: f000 fdd4 bl 8001d20
+}
+ 8001178: bf00 nop
+ 800117a: 370c adds r7, #12
+ 800117c: 46bd mov sp, r7
+ 800117e: bd90 pop {r4, r7, pc}
+ 8001180: 20000218 .word 0x20000218
+ 8001184: 2000023c .word 0x2000023c
+ 8001188: 0800e8a8 .word 0x0800e8a8
+ 800118c: 0800e8c4 .word 0x0800e8c4
+ 8001190: 20000220 .word 0x20000220
+ 8001194: 2000021e .word 0x2000021e
+ 8001198: 2000021c .word 0x2000021c
+ 800119c: 0800e8d8 .word 0x0800e8d8
+ 80011a0: 0800e8f8 .word 0x0800e8f8
+ 80011a4: 20000244 .word 0x20000244
+
+080011a8 <__io_putchar>:
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+int __io_putchar(int ch)
+{
+ 80011a8: b580 push {r7, lr}
+ 80011aa: b082 sub sp, #8
+ 80011ac: af00 add r7, sp, #0
+ 80011ae: 6078 str r0, [r7, #4]
+ HAL_UART_Transmit(&huart2, (uint8_t*)&ch, 1, HAL_MAX_DELAY);
+ 80011b0: 1d39 adds r1, r7, #4
+ 80011b2: f04f 33ff mov.w r3, #4294967295
+ 80011b6: 2201 movs r2, #1
+ 80011b8: 4803 ldr r0, [pc, #12] ; (80011c8 <__io_putchar+0x20>)
+ 80011ba: f005 fb02 bl 80067c2
+ return ch;
+ 80011be: 687b ldr r3, [r7, #4]
+}
+ 80011c0: 4618 mov r0, r3
+ 80011c2: 3708 adds r7, #8
+ 80011c4: 46bd mov sp, r7
+ 80011c6: bd80 pop {r7, pc}
+ 80011c8: 20000340 .word 0x20000340
+
+080011cc :
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+ 80011cc: b580 push {r7, lr}
+ 80011ce: af00 add r7, sp, #0
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+ 80011d0: f001 f83e bl 8002250
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+ 80011d4: f000 f816 bl 8001204
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ 80011d8: f000 f984 bl 80014e4
+ MX_I2C1_Init();
+ 80011dc: f000 f896 bl 800130c
+ MX_I2S2_Init();
+ 80011e0: f000 f8c2 bl 8001368
+ MX_I2S3_Init();
+ 80011e4: f000 f8ee bl 80013c4
+ MX_SPI1_Init();
+ 80011e8: f000 f91c bl 8001424
+ MX_USB_HOST_Init();
+ 80011ec: f008 fd8e bl 8009d0c
+ MX_USART2_UART_Init();
+ 80011f0: f000 f94e bl 8001490
+ /* USER CODE BEGIN 2 */
+ setup();
+ 80011f4: f7ff fed0 bl 8000f98
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+ MX_USB_HOST_Process();
+ 80011f8: f008 fdae bl 8009d58
+
+ /* USER CODE BEGIN 3 */
+ loop();
+ 80011fc: f7ff ff18 bl 8001030
+ MX_USB_HOST_Process();
+ 8001200: e7fa b.n 80011f8
+ ...
+
+08001204 :
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ 8001204: b580 push {r7, lr}
+ 8001206: b098 sub sp, #96 ; 0x60
+ 8001208: af00 add r7, sp, #0
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ 800120a: f107 0330 add.w r3, r7, #48 ; 0x30
+ 800120e: 2230 movs r2, #48 ; 0x30
+ 8001210: 2100 movs r1, #0
+ 8001212: 4618 mov r0, r3
+ 8001214: f009 f8bc bl 800a390
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+ 8001218: f107 031c add.w r3, r7, #28
+ 800121c: 2200 movs r2, #0
+ 800121e: 601a str r2, [r3, #0]
+ 8001220: 605a str r2, [r3, #4]
+ 8001222: 609a str r2, [r3, #8]
+ 8001224: 60da str r2, [r3, #12]
+ 8001226: 611a str r2, [r3, #16]
+ RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
+ 8001228: f107 0308 add.w r3, r7, #8
+ 800122c: 2200 movs r2, #0
+ 800122e: 601a str r2, [r3, #0]
+ 8001230: 605a str r2, [r3, #4]
+ 8001232: 609a str r2, [r3, #8]
+ 8001234: 60da str r2, [r3, #12]
+ 8001236: 611a str r2, [r3, #16]
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_RCC_PWR_CLK_ENABLE();
+ 8001238: 2300 movs r3, #0
+ 800123a: 607b str r3, [r7, #4]
+ 800123c: 4b31 ldr r3, [pc, #196] ; (8001304 )
+ 800123e: 6c1b ldr r3, [r3, #64] ; 0x40
+ 8001240: 4a30 ldr r2, [pc, #192] ; (8001304 )
+ 8001242: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000
+ 8001246: 6413 str r3, [r2, #64] ; 0x40
+ 8001248: 4b2e ldr r3, [pc, #184] ; (8001304 )
+ 800124a: 6c1b ldr r3, [r3, #64] ; 0x40
+ 800124c: f003 5380 and.w r3, r3, #268435456 ; 0x10000000
+ 8001250: 607b str r3, [r7, #4]
+ 8001252: 687b ldr r3, [r7, #4]
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE2);
+ 8001254: 2300 movs r3, #0
+ 8001256: 603b str r3, [r7, #0]
+ 8001258: 4b2b ldr r3, [pc, #172] ; (8001308 )
+ 800125a: 681b ldr r3, [r3, #0]
+ 800125c: f423 4340 bic.w r3, r3, #49152 ; 0xc000
+ 8001260: 4a29 ldr r2, [pc, #164] ; (8001308 )
+ 8001262: f443 4300 orr.w r3, r3, #32768 ; 0x8000
+ 8001266: 6013 str r3, [r2, #0]
+ 8001268: 4b27 ldr r3, [pc, #156] ; (8001308 )
+ 800126a: 681b ldr r3, [r3, #0]
+ 800126c: f403 4340 and.w r3, r3, #49152 ; 0xc000
+ 8001270: 603b str r3, [r7, #0]
+ 8001272: 683b ldr r3, [r7, #0]
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
+ 8001274: 2301 movs r3, #1
+ 8001276: 633b str r3, [r7, #48] ; 0x30
+ RCC_OscInitStruct.HSEState = RCC_HSE_ON;
+ 8001278: f44f 3380 mov.w r3, #65536 ; 0x10000
+ 800127c: 637b str r3, [r7, #52] ; 0x34
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ 800127e: 2302 movs r3, #2
+ 8001280: 64bb str r3, [r7, #72] ; 0x48
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ 8001282: f44f 0380 mov.w r3, #4194304 ; 0x400000
+ 8001286: 64fb str r3, [r7, #76] ; 0x4c
+ RCC_OscInitStruct.PLL.PLLM = 8;
+ 8001288: 2308 movs r3, #8
+ 800128a: 653b str r3, [r7, #80] ; 0x50
+ RCC_OscInitStruct.PLL.PLLN = 336;
+ 800128c: f44f 73a8 mov.w r3, #336 ; 0x150
+ 8001290: 657b str r3, [r7, #84] ; 0x54
+ RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV4;
+ 8001292: 2304 movs r3, #4
+ 8001294: 65bb str r3, [r7, #88] ; 0x58
+ RCC_OscInitStruct.PLL.PLLQ = 7;
+ 8001296: 2307 movs r3, #7
+ 8001298: 65fb str r3, [r7, #92] ; 0x5c
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ 800129a: f107 0330 add.w r3, r7, #48 ; 0x30
+ 800129e: 4618 mov r0, r3
+ 80012a0: f004 fc32 bl 8005b08
+ 80012a4: 4603 mov r3, r0
+ 80012a6: 2b00 cmp r3, #0
+ 80012a8: d001 beq.n 80012ae
+ {
+ Error_Handler();
+ 80012aa: f000 f9f5 bl 8001698
+ }
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ 80012ae: 230f movs r3, #15
+ 80012b0: 61fb str r3, [r7, #28]
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
+ 80012b2: 2302 movs r3, #2
+ 80012b4: 623b str r3, [r7, #32]
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ 80012b6: 2300 movs r3, #0
+ 80012b8: 627b str r3, [r7, #36] ; 0x24
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
+ 80012ba: f44f 5380 mov.w r3, #4096 ; 0x1000
+ 80012be: 62bb str r3, [r7, #40] ; 0x28
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+ 80012c0: 2300 movs r3, #0
+ 80012c2: 62fb str r3, [r7, #44] ; 0x2c
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
+ 80012c4: f107 031c add.w r3, r7, #28
+ 80012c8: 2102 movs r1, #2
+ 80012ca: 4618 mov r0, r3
+ 80012cc: f004 fe8c bl 8005fe8
+ 80012d0: 4603 mov r3, r0
+ 80012d2: 2b00 cmp r3, #0
+ 80012d4: d001 beq.n 80012da
+ {
+ Error_Handler();
+ 80012d6: f000 f9df bl 8001698
+ }
+ PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_I2S;
+ 80012da: 2301 movs r3, #1
+ 80012dc: 60bb str r3, [r7, #8]
+ PeriphClkInitStruct.PLLI2S.PLLI2SN = 192;
+ 80012de: 23c0 movs r3, #192 ; 0xc0
+ 80012e0: 60fb str r3, [r7, #12]
+ PeriphClkInitStruct.PLLI2S.PLLI2SR = 2;
+ 80012e2: 2302 movs r3, #2
+ 80012e4: 613b str r3, [r7, #16]
+ if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
+ 80012e6: f107 0308 add.w r3, r7, #8
+ 80012ea: 4618 mov r0, r3
+ 80012ec: f005 f86e bl 80063cc
+ 80012f0: 4603 mov r3, r0
+ 80012f2: 2b00 cmp r3, #0
+ 80012f4: d001 beq.n 80012fa
+ {
+ Error_Handler();
+ 80012f6: f000 f9cf bl 8001698
+ }
+}
+ 80012fa: bf00 nop
+ 80012fc: 3760 adds r7, #96 ; 0x60
+ 80012fe: 46bd mov sp, r7
+ 8001300: bd80 pop {r7, pc}
+ 8001302: bf00 nop
+ 8001304: 40023800 .word 0x40023800
+ 8001308: 40007000 .word 0x40007000
+
+0800130c :
+ * @brief I2C1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2C1_Init(void)
+{
+ 800130c: b580 push {r7, lr}
+ 800130e: af00 add r7, sp, #0
+ /* USER CODE END I2C1_Init 0 */
+
+ /* USER CODE BEGIN I2C1_Init 1 */
+
+ /* USER CODE END I2C1_Init 1 */
+ hi2c1.Instance = I2C1;
+ 8001310: 4b12 ldr r3, [pc, #72] ; (800135c )
+ 8001312: 4a13 ldr r2, [pc, #76] ; (8001360 )
+ 8001314: 601a str r2, [r3, #0]
+ hi2c1.Init.ClockSpeed = 100000;
+ 8001316: 4b11 ldr r3, [pc, #68] ; (800135c )
+ 8001318: 4a12 ldr r2, [pc, #72] ; (8001364 )
+ 800131a: 605a str r2, [r3, #4]
+ hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
+ 800131c: 4b0f ldr r3, [pc, #60] ; (800135c )
+ 800131e: 2200 movs r2, #0
+ 8001320: 609a str r2, [r3, #8]
+ hi2c1.Init.OwnAddress1 = 0;
+ 8001322: 4b0e ldr r3, [pc, #56] ; (800135c )
+ 8001324: 2200 movs r2, #0
+ 8001326: 60da str r2, [r3, #12]
+ hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+ 8001328: 4b0c ldr r3, [pc, #48] ; (800135c )
+ 800132a: f44f 4280 mov.w r2, #16384 ; 0x4000
+ 800132e: 611a str r2, [r3, #16]
+ hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+ 8001330: 4b0a ldr r3, [pc, #40] ; (800135c )
+ 8001332: 2200 movs r2, #0
+ 8001334: 615a str r2, [r3, #20]
+ hi2c1.Init.OwnAddress2 = 0;
+ 8001336: 4b09 ldr r3, [pc, #36] ; (800135c )
+ 8001338: 2200 movs r2, #0
+ 800133a: 619a str r2, [r3, #24]
+ hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+ 800133c: 4b07 ldr r3, [pc, #28] ; (800135c )
+ 800133e: 2200 movs r2, #0
+ 8001340: 61da str r2, [r3, #28]
+ hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+ 8001342: 4b06 ldr r3, [pc, #24] ; (800135c )
+ 8001344: 2200 movs r2, #0
+ 8001346: 621a str r2, [r3, #32]
+ if (HAL_I2C_Init(&hi2c1) != HAL_OK)
+ 8001348: 4804 ldr r0, [pc, #16] ; (800135c )
+ 800134a: f002 ffb3 bl 80042b4
+ 800134e: 4603 mov r3, r0
+ 8001350: 2b00 cmp r3, #0
+ 8001352: d001 beq.n 8001358
+ {
+ Error_Handler();
+ 8001354: f000 f9a0 bl 8001698
+ }
+ /* USER CODE BEGIN I2C1_Init 2 */
+
+ /* USER CODE END I2C1_Init 2 */
+
+}
+ 8001358: bf00 nop
+ 800135a: bd80 pop {r7, pc}
+ 800135c: 20000294 .word 0x20000294
+ 8001360: 40005400 .word 0x40005400
+ 8001364: 000186a0 .word 0x000186a0
+
+08001368 :
+ * @brief I2S2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2S2_Init(void)
+{
+ 8001368: b580 push {r7, lr}
+ 800136a: af00 add r7, sp, #0
+ /* USER CODE END I2S2_Init 0 */
+
+ /* USER CODE BEGIN I2S2_Init 1 */
+
+ /* USER CODE END I2S2_Init 1 */
+ hi2s2.Instance = SPI2;
+ 800136c: 4b13 ldr r3, [pc, #76] ; (80013bc )
+ 800136e: 4a14 ldr r2, [pc, #80] ; (80013c0 )
+ 8001370: 601a str r2, [r3, #0]
+ hi2s2.Init.Mode = I2S_MODE_MASTER_TX;
+ 8001372: 4b12 ldr r3, [pc, #72] ; (80013bc )
+ 8001374: f44f 7200 mov.w r2, #512 ; 0x200
+ 8001378: 605a str r2, [r3, #4]
+ hi2s2.Init.Standard = I2S_STANDARD_PHILIPS;
+ 800137a: 4b10 ldr r3, [pc, #64] ; (80013bc )
+ 800137c: 2200 movs r2, #0
+ 800137e: 609a str r2, [r3, #8]
+ hi2s2.Init.DataFormat = I2S_DATAFORMAT_16B;
+ 8001380: 4b0e ldr r3, [pc, #56] ; (80013bc )
+ 8001382: 2200 movs r2, #0
+ 8001384: 60da str r2, [r3, #12]
+ hi2s2.Init.MCLKOutput = I2S_MCLKOUTPUT_DISABLE;
+ 8001386: 4b0d ldr r3, [pc, #52] ; (80013bc )
+ 8001388: 2200 movs r2, #0
+ 800138a: 611a str r2, [r3, #16]
+ hi2s2.Init.AudioFreq = I2S_AUDIOFREQ_8K;
+ 800138c: 4b0b ldr r3, [pc, #44] ; (80013bc )
+ 800138e: f44f 52fa mov.w r2, #8000 ; 0x1f40
+ 8001392: 615a str r2, [r3, #20]
+ hi2s2.Init.CPOL = I2S_CPOL_LOW;
+ 8001394: 4b09 ldr r3, [pc, #36] ; (80013bc )
+ 8001396: 2200 movs r2, #0
+ 8001398: 619a str r2, [r3, #24]
+ hi2s2.Init.ClockSource = I2S_CLOCK_PLL;
+ 800139a: 4b08 ldr r3, [pc, #32] ; (80013bc )
+ 800139c: 2200 movs r2, #0
+ 800139e: 61da str r2, [r3, #28]
+ hi2s2.Init.FullDuplexMode = I2S_FULLDUPLEXMODE_DISABLE;
+ 80013a0: 4b06 ldr r3, [pc, #24] ; (80013bc )
+ 80013a2: 2200 movs r2, #0
+ 80013a4: 621a str r2, [r3, #32]
+ if (HAL_I2S_Init(&hi2s2) != HAL_OK)
+ 80013a6: 4805 ldr r0, [pc, #20] ; (80013bc )
+ 80013a8: f003 ff0e bl 80051c8
+ 80013ac: 4603 mov r3, r0
+ 80013ae: 2b00 cmp r3, #0
+ 80013b0: d001 beq.n 80013b6
+ {
+ Error_Handler();
+ 80013b2: f000 f971 bl 8001698
+ }
+ /* USER CODE BEGIN I2S2_Init 2 */
+
+ /* USER CODE END I2S2_Init 2 */
+
+}
+ 80013b6: bf00 nop
+ 80013b8: bd80 pop {r7, pc}
+ 80013ba: bf00 nop
+ 80013bc: 20000380 .word 0x20000380
+ 80013c0: 40003800 .word 0x40003800
+
+080013c4 :
+ * @brief I2S3 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_I2S3_Init(void)
+{
+ 80013c4: b580 push {r7, lr}
+ 80013c6: af00 add r7, sp, #0
+ /* USER CODE END I2S3_Init 0 */
+
+ /* USER CODE BEGIN I2S3_Init 1 */
+
+ /* USER CODE END I2S3_Init 1 */
+ hi2s3.Instance = SPI3;
+ 80013c8: 4b13 ldr r3, [pc, #76] ; (8001418 )
+ 80013ca: 4a14 ldr r2, [pc, #80] ; (800141c )
+ 80013cc: 601a str r2, [r3, #0]
+ hi2s3.Init.Mode = I2S_MODE_MASTER_TX;
+ 80013ce: 4b12 ldr r3, [pc, #72] ; (8001418 )
+ 80013d0: f44f 7200 mov.w r2, #512 ; 0x200
+ 80013d4: 605a str r2, [r3, #4]
+ hi2s3.Init.Standard = I2S_STANDARD_PHILIPS;
+ 80013d6: 4b10 ldr r3, [pc, #64] ; (8001418 )
+ 80013d8: 2200 movs r2, #0
+ 80013da: 609a str r2, [r3, #8]
+ hi2s3.Init.DataFormat = I2S_DATAFORMAT_16B;
+ 80013dc: 4b0e ldr r3, [pc, #56] ; (8001418 )
+ 80013de: 2200 movs r2, #0
+ 80013e0: 60da str r2, [r3, #12]
+ hi2s3.Init.MCLKOutput = I2S_MCLKOUTPUT_ENABLE;
+ 80013e2: 4b0d ldr r3, [pc, #52] ; (8001418 )
+ 80013e4: f44f 7200 mov.w r2, #512 ; 0x200
+ 80013e8: 611a str r2, [r3, #16]
+ hi2s3.Init.AudioFreq = I2S_AUDIOFREQ_96K;
+ 80013ea: 4b0b ldr r3, [pc, #44] ; (8001418 )
+ 80013ec: 4a0c ldr r2, [pc, #48] ; (8001420 )
+ 80013ee: 615a str r2, [r3, #20]
+ hi2s3.Init.CPOL = I2S_CPOL_LOW;
+ 80013f0: 4b09 ldr r3, [pc, #36] ; (8001418 )
+ 80013f2: 2200 movs r2, #0
+ 80013f4: 619a str r2, [r3, #24]
+ hi2s3.Init.ClockSource = I2S_CLOCK_PLL;
+ 80013f6: 4b08 ldr r3, [pc, #32] ; (8001418 )
+ 80013f8: 2200 movs r2, #0
+ 80013fa: 61da str r2, [r3, #28]
+ hi2s3.Init.FullDuplexMode = I2S_FULLDUPLEXMODE_DISABLE;
+ 80013fc: 4b06 ldr r3, [pc, #24] ; (8001418 )
+ 80013fe: 2200 movs r2, #0
+ 8001400: 621a str r2, [r3, #32]
+ if (HAL_I2S_Init(&hi2s3) != HAL_OK)
+ 8001402: 4805 ldr r0, [pc, #20] ; (8001418 )
+ 8001404: f003 fee0 bl 80051c8
+ 8001408: 4603 mov r3, r0
+ 800140a: 2b00 cmp r3, #0
+ 800140c: d001 beq.n 8001412
+ {
+ Error_Handler();
+ 800140e: f000 f943 bl 8001698
+ }
+ /* USER CODE BEGIN I2S3_Init 2 */
+
+ /* USER CODE END I2S3_Init 2 */
+
+}
+ 8001412: bf00 nop
+ 8001414: bd80 pop {r7, pc}
+ 8001416: bf00 nop
+ 8001418: 200003c8 .word 0x200003c8
+ 800141c: 40003c00 .word 0x40003c00
+ 8001420: 00017700 .word 0x00017700
+
+08001424 :
+ * @brief SPI1 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_SPI1_Init(void)
+{
+ 8001424: b580 push {r7, lr}
+ 8001426: af00 add r7, sp, #0
+
+ /* USER CODE BEGIN SPI1_Init 1 */
+
+ /* USER CODE END SPI1_Init 1 */
+ /* SPI1 parameter configuration*/
+ hspi1.Instance = SPI1;
+ 8001428: 4b17 ldr r3, [pc, #92] ; (8001488 )
+ 800142a: 4a18 ldr r2, [pc, #96] ; (800148c )
+ 800142c: 601a str r2, [r3, #0]
+ hspi1.Init.Mode = SPI_MODE_MASTER;
+ 800142e: 4b16 ldr r3, [pc, #88] ; (8001488 )
+ 8001430: f44f 7282 mov.w r2, #260 ; 0x104
+ 8001434: 605a str r2, [r3, #4]
+ hspi1.Init.Direction = SPI_DIRECTION_2LINES;
+ 8001436: 4b14 ldr r3, [pc, #80] ; (8001488 )
+ 8001438: 2200 movs r2, #0
+ 800143a: 609a str r2, [r3, #8]
+ hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
+ 800143c: 4b12 ldr r3, [pc, #72] ; (8001488 )
+ 800143e: 2200 movs r2, #0
+ 8001440: 60da str r2, [r3, #12]
+ hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
+ 8001442: 4b11 ldr r3, [pc, #68] ; (8001488 )
+ 8001444: 2200 movs r2, #0
+ 8001446: 611a str r2, [r3, #16]
+ hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
+ 8001448: 4b0f ldr r3, [pc, #60] ; (8001488 )
+ 800144a: 2200 movs r2, #0
+ 800144c: 615a str r2, [r3, #20]
+ hspi1.Init.NSS = SPI_NSS_SOFT;
+ 800144e: 4b0e ldr r3, [pc, #56] ; (8001488 )
+ 8001450: f44f 7200 mov.w r2, #512 ; 0x200
+ 8001454: 619a str r2, [r3, #24]
+ hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;
+ 8001456: 4b0c ldr r3, [pc, #48] ; (8001488 )
+ 8001458: 2200 movs r2, #0
+ 800145a: 61da str r2, [r3, #28]
+ hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
+ 800145c: 4b0a ldr r3, [pc, #40] ; (8001488 )
+ 800145e: 2200 movs r2, #0
+ 8001460: 621a str r2, [r3, #32]
+ hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
+ 8001462: 4b09 ldr r3, [pc, #36] ; (8001488 )
+ 8001464: 2200 movs r2, #0
+ 8001466: 625a str r2, [r3, #36] ; 0x24
+ hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
+ 8001468: 4b07 ldr r3, [pc, #28] ; (8001488 )
+ 800146a: 2200 movs r2, #0
+ 800146c: 629a str r2, [r3, #40] ; 0x28
+ hspi1.Init.CRCPolynomial = 10;
+ 800146e: 4b06 ldr r3, [pc, #24] ; (8001488 )
+ 8001470: 220a movs r2, #10
+ 8001472: 62da str r2, [r3, #44] ; 0x2c
+ if (HAL_SPI_Init(&hspi1) != HAL_OK)
+ 8001474: 4804 ldr r0, [pc, #16] ; (8001488 )
+ 8001476: f005 f8f3 bl 8006660
+ 800147a: 4603 mov r3, r0
+ 800147c: 2b00 cmp r3, #0
+ 800147e: d001 beq.n 8001484
+ {
+ Error_Handler();
+ 8001480: f000 f90a bl 8001698
+ }
+ /* USER CODE BEGIN SPI1_Init 2 */
+
+ /* USER CODE END SPI1_Init 2 */
+
+}
+ 8001484: bf00 nop
+ 8001486: bd80 pop {r7, pc}
+ 8001488: 200002e8 .word 0x200002e8
+ 800148c: 40013000 .word 0x40013000
+
+08001490 :
+ * @brief USART2 Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_USART2_UART_Init(void)
+{
+ 8001490: b580 push {r7, lr}
+ 8001492: af00 add r7, sp, #0
+ /* USER CODE END USART2_Init 0 */
+
+ /* USER CODE BEGIN USART2_Init 1 */
+
+ /* USER CODE END USART2_Init 1 */
+ huart2.Instance = USART2;
+ 8001494: 4b11 ldr r3, [pc, #68] ; (80014dc )
+ 8001496: 4a12 ldr r2, [pc, #72] ; (80014e0 )
+ 8001498: 601a str r2, [r3, #0]
+ huart2.Init.BaudRate = 115200;
+ 800149a: 4b10 ldr r3, [pc, #64] ; (80014dc )
+ 800149c: f44f 32e1 mov.w r2, #115200 ; 0x1c200
+ 80014a0: 605a str r2, [r3, #4]
+ huart2.Init.WordLength = UART_WORDLENGTH_8B;
+ 80014a2: 4b0e ldr r3, [pc, #56] ; (80014dc )
+ 80014a4: 2200 movs r2, #0
+ 80014a6: 609a str r2, [r3, #8]
+ huart2.Init.StopBits = UART_STOPBITS_1;
+ 80014a8: 4b0c ldr r3, [pc, #48] ; (80014dc )
+ 80014aa: 2200 movs r2, #0
+ 80014ac: 60da str r2, [r3, #12]
+ huart2.Init.Parity = UART_PARITY_NONE;
+ 80014ae: 4b0b ldr r3, [pc, #44] ; (80014dc )
+ 80014b0: 2200 movs r2, #0
+ 80014b2: 611a str r2, [r3, #16]
+ huart2.Init.Mode = UART_MODE_TX_RX;
+ 80014b4: 4b09 ldr r3, [pc, #36] ; (80014dc )
+ 80014b6: 220c movs r2, #12
+ 80014b8: 615a str r2, [r3, #20]
+ huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+ 80014ba: 4b08 ldr r3, [pc, #32] ; (80014dc )
+ 80014bc: 2200 movs r2, #0
+ 80014be: 619a str r2, [r3, #24]
+ huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+ 80014c0: 4b06 ldr r3, [pc, #24] ; (80014dc )
+ 80014c2: 2200 movs r2, #0
+ 80014c4: 61da str r2, [r3, #28]
+ if (HAL_UART_Init(&huart2) != HAL_OK)
+ 80014c6: 4805 ldr r0, [pc, #20] ; (80014dc )
+ 80014c8: f005 f92e bl 8006728
+ 80014cc: 4603 mov r3, r0
+ 80014ce: 2b00 cmp r3, #0
+ 80014d0: d001 beq.n 80014d6
+ {
+ Error_Handler();
+ 80014d2: f000 f8e1 bl 8001698
+ }
+ /* USER CODE BEGIN USART2_Init 2 */
+
+ /* USER CODE END USART2_Init 2 */
+
+}
+ 80014d6: bf00 nop
+ 80014d8: bd80 pop {r7, pc}
+ 80014da: bf00 nop
+ 80014dc: 20000340 .word 0x20000340
+ 80014e0: 40004400 .word 0x40004400
+
+080014e4 :
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ 80014e4: b580 push {r7, lr}
+ 80014e6: b08c sub sp, #48 ; 0x30
+ 80014e8: af00 add r7, sp, #0
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
+ 80014ea: f107 031c add.w r3, r7, #28
+ 80014ee: 2200 movs r2, #0
+ 80014f0: 601a str r2, [r3, #0]
+ 80014f2: 605a str r2, [r3, #4]
+ 80014f4: 609a str r2, [r3, #8]
+ 80014f6: 60da str r2, [r3, #12]
+ 80014f8: 611a str r2, [r3, #16]
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOE_CLK_ENABLE();
+ 80014fa: 2300 movs r3, #0
+ 80014fc: 61bb str r3, [r7, #24]
+ 80014fe: 4b60 ldr r3, [pc, #384] ; (8001680 )
+ 8001500: 6b1b ldr r3, [r3, #48] ; 0x30
+ 8001502: 4a5f ldr r2, [pc, #380] ; (8001680 )
+ 8001504: f043 0310 orr.w r3, r3, #16
+ 8001508: 6313 str r3, [r2, #48] ; 0x30
+ 800150a: 4b5d ldr r3, [pc, #372] ; (8001680 )
+ 800150c: 6b1b ldr r3, [r3, #48] ; 0x30
+ 800150e: f003 0310 and.w r3, r3, #16
+ 8001512: 61bb str r3, [r7, #24]
+ 8001514: 69bb ldr r3, [r7, #24]
+ __HAL_RCC_GPIOC_CLK_ENABLE();
+ 8001516: 2300 movs r3, #0
+ 8001518: 617b str r3, [r7, #20]
+ 800151a: 4b59 ldr r3, [pc, #356] ; (8001680 )
+ 800151c: 6b1b ldr r3, [r3, #48] ; 0x30
+ 800151e: 4a58 ldr r2, [pc, #352] ; (8001680 )
+ 8001520: f043 0304 orr.w r3, r3, #4
+ 8001524: 6313 str r3, [r2, #48] ; 0x30
+ 8001526: 4b56 ldr r3, [pc, #344] ; (8001680 )
+ 8001528: 6b1b ldr r3, [r3, #48] ; 0x30
+ 800152a: f003 0304 and.w r3, r3, #4
+ 800152e: 617b str r3, [r7, #20]
+ 8001530: 697b ldr r3, [r7, #20]
+ __HAL_RCC_GPIOH_CLK_ENABLE();
+ 8001532: 2300 movs r3, #0
+ 8001534: 613b str r3, [r7, #16]
+ 8001536: 4b52 ldr r3, [pc, #328] ; (8001680 )
+ 8001538: 6b1b ldr r3, [r3, #48] ; 0x30
+ 800153a: 4a51 ldr r2, [pc, #324] ; (8001680 )
+ 800153c: f043 0380 orr.w r3, r3, #128 ; 0x80
+ 8001540: 6313 str r3, [r2, #48] ; 0x30
+ 8001542: 4b4f ldr r3, [pc, #316] ; (8001680 )
+ 8001544: 6b1b ldr r3, [r3, #48] ; 0x30
+ 8001546: f003 0380 and.w r3, r3, #128 ; 0x80
+ 800154a: 613b str r3, [r7, #16]
+ 800154c: 693b ldr r3, [r7, #16]
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ 800154e: 2300 movs r3, #0
+ 8001550: 60fb str r3, [r7, #12]
+ 8001552: 4b4b ldr r3, [pc, #300] ; (8001680 )
+ 8001554: 6b1b ldr r3, [r3, #48] ; 0x30
+ 8001556: 4a4a ldr r2, [pc, #296] ; (8001680 )
+ 8001558: f043 0301 orr.w r3, r3, #1
+ 800155c: 6313 str r3, [r2, #48] ; 0x30
+ 800155e: 4b48 ldr r3, [pc, #288] ; (8001680 )
+ 8001560: 6b1b ldr r3, [r3, #48] ; 0x30
+ 8001562: f003 0301 and.w r3, r3, #1
+ 8001566: 60fb str r3, [r7, #12]
+ 8001568: 68fb ldr r3, [r7, #12]
+ __HAL_RCC_GPIOB_CLK_ENABLE();
+ 800156a: 2300 movs r3, #0
+ 800156c: 60bb str r3, [r7, #8]
+ 800156e: 4b44 ldr r3, [pc, #272] ; (8001680 )
+ 8001570: 6b1b ldr r3, [r3, #48] ; 0x30
+ 8001572: 4a43 ldr r2, [pc, #268] ; (8001680 )
+ 8001574: f043 0302 orr.w r3, r3, #2
+ 8001578: 6313 str r3, [r2, #48] ; 0x30
+ 800157a: 4b41 ldr r3, [pc, #260] ; (8001680 )
+ 800157c: 6b1b ldr r3, [r3, #48] ; 0x30
+ 800157e: f003 0302 and.w r3, r3, #2
+ 8001582: 60bb str r3, [r7, #8]
+ 8001584: 68bb ldr r3, [r7, #8]
+ __HAL_RCC_GPIOD_CLK_ENABLE();
+ 8001586: 2300 movs r3, #0
+ 8001588: 607b str r3, [r7, #4]
+ 800158a: 4b3d ldr r3, [pc, #244] ; (8001680 )
+ 800158c: 6b1b ldr r3, [r3, #48] ; 0x30
+ 800158e: 4a3c ldr r2, [pc, #240] ; (8001680 )
+ 8001590: f043 0308 orr.w r3, r3, #8
+ 8001594: 6313 str r3, [r2, #48] ; 0x30
+ 8001596: 4b3a ldr r3, [pc, #232] ; (8001680 )
+ 8001598: 6b1b ldr r3, [r3, #48] ; 0x30
+ 800159a: f003 0308 and.w r3, r3, #8
+ 800159e: 607b str r3, [r7, #4]
+ 80015a0: 687b ldr r3, [r7, #4]
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(CS_I2C_SPI_GPIO_Port, CS_I2C_SPI_Pin, GPIO_PIN_RESET);
+ 80015a2: 2200 movs r2, #0
+ 80015a4: 2108 movs r1, #8
+ 80015a6: 4837 ldr r0, [pc, #220] ; (8001684 )
+ 80015a8: f001 f97a bl 80028a0
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(OTG_FS_PowerSwitchOn_GPIO_Port, OTG_FS_PowerSwitchOn_Pin, GPIO_PIN_SET);
+ 80015ac: 2201 movs r2, #1
+ 80015ae: 2101 movs r1, #1
+ 80015b0: 4835 ldr r0, [pc, #212] ; (8001688