diff --git a/firmware/components/HID/STM32_SKBD/.cproject b/firmware/components/HID/STM32_SKBD/.cproject
new file mode 100644
index 00000000..f6b3c056
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/.cproject
@@ -0,0 +1,184 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/firmware/components/HID/STM32_SKBD/.mxproject b/firmware/components/HID/STM32_SKBD/.mxproject
new file mode 100644
index 00000000..b3b22a73
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/.mxproject
@@ -0,0 +1,35 @@
+[PreviousGenFiles]
+AdvancedFolderStructure=true
+HeaderFileListSize=6
+HeaderFiles#0=..\USB_DEVICE\App\usb_device.h
+HeaderFiles#1=..\USB_DEVICE\Target\usbd_conf.h
+HeaderFiles#2=..\USB_DEVICE\App\usbd_desc.h
+HeaderFiles#3=..\Core\Inc\stm32f1xx_it.h
+HeaderFiles#4=..\Core\Inc\stm32f1xx_hal_conf.h
+HeaderFiles#5=..\Core\Inc\main.h
+HeaderFolderListSize=3
+HeaderPath#0=..\USB_DEVICE\App
+HeaderPath#1=..\USB_DEVICE\Target
+HeaderPath#2=..\Core\Inc
+HeaderFiles=;
+SourceFileListSize=6
+SourceFiles#0=..\USB_DEVICE\App\usb_device.c
+SourceFiles#1=..\USB_DEVICE\Target\usbd_conf.c
+SourceFiles#2=..\USB_DEVICE\App\usbd_desc.c
+SourceFiles#3=..\Core\Src\stm32f1xx_it.c
+SourceFiles#4=..\Core\Src\stm32f1xx_hal_msp.c
+SourceFiles#5=..\Core\Src\main.c
+SourceFolderListSize=3
+SourcePath#0=..\USB_DEVICE\App
+SourcePath#1=..\USB_DEVICE\Target
+SourcePath#2=..\Core\Src
+SourceFiles=;
+
+[PreviousLibFiles]
+LibFiles=Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pcd.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pcd_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_usb.h;Drivers\STM32F1xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_def.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_bus.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_rcc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_system.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_utils.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio_ex.h;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_gpio.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_dma.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_cortex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_cortex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pwr.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_pwr.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_exti.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_exti.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_core.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_ctlreq.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_def.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_ioreq.h;Middlewares\ST\STM32_USB_Device_Library\Class\HID\Inc\usbd_hid.h;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pcd.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pcd_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_usb.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_dma.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cortex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pwr.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_exti.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_core.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ctlreq.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ioreq.c;Middlewares\ST\STM32_USB_Device_Library\Class\HID\Src\usbd_hid.c;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pcd.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pcd_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_usb.h;Drivers\STM32F1xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_def.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_bus.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_rcc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_system.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_utils.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio_ex.h;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_gpio.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_dma.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_cortex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_cortex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pwr.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_pwr.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_exti.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_exti.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_core.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_ctlreq.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_def.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_ioreq.h;Middlewares\ST\STM32_USB_Device_Library\Class\HID\Inc\usbd_hid.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f103xb.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f1xx.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\system_stm32f1xx.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\system_stm32f1xx.h;Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.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_DEVICE\App\usb_device.c;USB_DEVICE\Target\usbd_conf.c;USB_DEVICE\App\usbd_desc.c;Core\Src\stm32f1xx_it.c;Core\Src\stm32f1xx_hal_msp.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pcd.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pcd_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_usb.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_dma.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cortex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pwr.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_exti.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_core.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ctlreq.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ioreq.c;Middlewares\ST\STM32_USB_Device_Library\Class\HID\Src\usbd_hid.c;Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c;Core\Src\system_stm32f1xx.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pcd.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pcd_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_usb.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_dma.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cortex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pwr.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_exti.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_core.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ctlreq.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ioreq.c;Middlewares\ST\STM32_USB_Device_Library\Class\HID\Src\usbd_hid.c;Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c;Core\Src\system_stm32f1xx.c;;;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_core.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ctlreq.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ioreq.c;Middlewares\ST\STM32_USB_Device_Library\Class\HID\Src\usbd_hid.c;
+HeaderPath=Drivers\STM32F1xx_HAL_Driver\Inc;Drivers\STM32F1xx_HAL_Driver\Inc\Legacy;Middlewares\ST\STM32_USB_Device_Library\Core\Inc;Middlewares\ST\STM32_USB_Device_Library\Class\HID\Inc;Drivers\CMSIS\Device\ST\STM32F1xx\Include;Drivers\CMSIS\Include;USB_DEVICE\App;USB_DEVICE\Target;Core\Inc;
+CDefines=USE_HAL_DRIVER;STM32F103xB;USE_HAL_DRIVER;USE_HAL_DRIVER;
+
diff --git a/firmware/components/HID/STM32_SKBD/.project b/firmware/components/HID/STM32_SKBD/.project
new file mode 100644
index 00000000..02211b9b
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/.project
@@ -0,0 +1,32 @@
+
+
+ STM32_SKBD
+
+
+
+
+
+ org.eclipse.cdt.managedbuilder.core.genmakebuilder
+ clean,full,incremental,
+
+
+
+
+ org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder
+ full,incremental,
+
+
+
+
+
+ com.st.stm32cube.ide.mcu.MCUProjectNature
+ com.st.stm32cube.ide.mcu.MCUCubeProjectNature
+ org.eclipse.cdt.core.cnature
+ com.st.stm32cube.ide.mcu.MCUCubeIdeServicesRevAev2ProjectNature
+ com.st.stm32cube.ide.mcu.MCUAdvancedStructureProjectNature
+ com.st.stm32cube.ide.mcu.MCUSingleCpuProjectNature
+ com.st.stm32cube.ide.mcu.MCURootProjectNature
+ org.eclipse.cdt.managedbuilder.core.managedBuildNature
+ org.eclipse.cdt.managedbuilder.core.ScannerConfigNature
+
+
diff --git a/firmware/components/HID/STM32_SKBD/.settings/com.st.stm32cube.ide.mcu.sfrview.prefs b/firmware/components/HID/STM32_SKBD/.settings/com.st.stm32cube.ide.mcu.sfrview.prefs
new file mode 100644
index 00000000..98a69fc7
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/.settings/com.st.stm32cube.ide.mcu.sfrview.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+sfrviewstate={"fFavorites"\:{"fLists"\:{}},"fProperties"\:{"fNodeProperties"\:{}}}
diff --git a/firmware/components/HID/STM32_SKBD/.settings/language.settings.xml b/firmware/components/HID/STM32_SKBD/.settings/language.settings.xml
new file mode 100644
index 00000000..03da253a
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/.settings/language.settings.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/firmware/components/HID/STM32_SKBD/.settings/stm32cubeide.project.prefs b/firmware/components/HID/STM32_SKBD/.settings/stm32cubeide.project.prefs
new file mode 100644
index 00000000..3bc2191f
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/.settings/stm32cubeide.project.prefs
@@ -0,0 +1,3 @@
+8DF89ED150041C4CBC7CB9A9CAA90856=011FC405CE3480E1F3D1015D7BC226ED
+DC22A860405A8BF2F2C095E5B6529F12=011FC405CE3480E1F3D1015D7BC226ED
+eclipse.preferences.version=1
diff --git a/firmware/components/HID/STM32_SKBD/Core/Inc/main.h b/firmware/components/HID/STM32_SKBD/Core/Inc/main.h
new file mode 100644
index 00000000..1fa6534b
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Core/Inc/main.h
@@ -0,0 +1,69 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.h
+ * @brief : Header for main.c file.
+ * This file contains the common defines of the application.
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __MAIN_H
+#define __MAIN_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "stm32f1xx_hal.h"
+
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Exported types ------------------------------------------------------------*/
+/* USER CODE BEGIN ET */
+
+/* USER CODE END ET */
+
+/* Exported constants --------------------------------------------------------*/
+/* USER CODE BEGIN EC */
+
+/* USER CODE END EC */
+
+/* Exported macro ------------------------------------------------------------*/
+/* USER CODE BEGIN EM */
+
+/* USER CODE END EM */
+
+/* Exported functions prototypes ---------------------------------------------*/
+void Error_Handler(void);
+
+/* USER CODE BEGIN EFP */
+
+/* USER CODE END EFP */
+
+/* Private defines -----------------------------------------------------------*/
+
+/* USER CODE BEGIN Private defines */
+
+/* USER CODE END Private defines */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __MAIN_H */
diff --git a/firmware/components/HID/STM32_SKBD/Core/Inc/stm32f1xx_hal_conf.h b/firmware/components/HID/STM32_SKBD/Core/Inc/stm32f1xx_hal_conf.h
new file mode 100644
index 00000000..970e15d3
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Core/Inc/stm32f1xx_hal_conf.h
@@ -0,0 +1,391 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file stm32f1xx_hal_conf.h
+ * @brief HAL configuration file.
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2017 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32F1xx_HAL_CONF_H
+#define __STM32F1xx_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_CAN_LEGACY_MODULE_ENABLED */
+/*#define HAL_CEC_MODULE_ENABLED */
+/*#define HAL_CORTEX_MODULE_ENABLED */
+/*#define HAL_CRC_MODULE_ENABLED */
+/*#define HAL_DAC_MODULE_ENABLED */
+/*#define HAL_DMA_MODULE_ENABLED */
+/*#define HAL_ETH_MODULE_ENABLED */
+/*#define HAL_FLASH_MODULE_ENABLED */
+#define HAL_GPIO_MODULE_ENABLED
+/*#define HAL_I2C_MODULE_ENABLED */
+/*#define HAL_I2S_MODULE_ENABLED */
+/*#define HAL_IRDA_MODULE_ENABLED */
+/*#define HAL_IWDG_MODULE_ENABLED */
+/*#define HAL_NOR_MODULE_ENABLED */
+/*#define HAL_NAND_MODULE_ENABLED */
+/*#define HAL_PCCARD_MODULE_ENABLED */
+#define HAL_PCD_MODULE_ENABLED
+/*#define HAL_HCD_MODULE_ENABLED */
+/*#define HAL_PWR_MODULE_ENABLED */
+/*#define HAL_RCC_MODULE_ENABLED */
+/*#define HAL_RTC_MODULE_ENABLED */
+/*#define HAL_SD_MODULE_ENABLED */
+/*#define HAL_MMC_MODULE_ENABLED */
+/*#define HAL_SDRAM_MODULE_ENABLED */
+/*#define HAL_SMARTCARD_MODULE_ENABLED */
+/*#define HAL_SPI_MODULE_ENABLED */
+/*#define HAL_SRAM_MODULE_ENABLED */
+/*#define HAL_TIM_MODULE_ENABLED */
+/*#define HAL_UART_MODULE_ENABLED */
+/*#define HAL_USART_MODULE_ENABLED */
+/*#define HAL_WWDG_MODULE_ENABLED */
+
+#define HAL_CORTEX_MODULE_ENABLED
+#define HAL_DMA_MODULE_ENABLED
+#define HAL_FLASH_MODULE_ENABLED
+#define HAL_EXTI_MODULE_ENABLED
+#define HAL_GPIO_MODULE_ENABLED
+#define HAL_PWR_MODULE_ENABLED
+#define HAL_RCC_MODULE_ENABLED
+
+/* ########################## Oscillator Values adaptation ####################*/
+/**
+ * @brief Adjust the value of External High Speed oscillator (HSE) used in your application.
+ * This value is used by the RCC HAL module to compute the system frequency
+ * (when HSE is used as system clock source, directly or through the PLL).
+ */
+#if !defined (HSE_VALUE)
+ #define HSE_VALUE 8000000U /*!< Value of the External oscillator in Hz */
+#endif /* HSE_VALUE */
+
+#if !defined (HSE_STARTUP_TIMEOUT)
+ #define HSE_STARTUP_TIMEOUT 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 8000000U /*!< Value of the Internal oscillator in Hz*/
+#endif /* HSI_VALUE */
+
+/**
+ * @brief Internal Low Speed oscillator (LSI) value.
+ */
+#if !defined (LSI_VALUE)
+ #define LSI_VALUE 40000U /*!< LSI Typical Value in Hz */
+#endif /* LSI_VALUE */ /*!< Value of the Internal Low Speed oscillator in Hz
+ The real value may vary depending on the variations
+ in voltage and temperature. */
+
+/**
+ * @brief External Low Speed oscillator (LSE) value.
+ * This value is used by the UART, RTC HAL module to compute the system frequency
+ */
+#if !defined (LSE_VALUE)
+ #define LSE_VALUE 32768U /*!< Value of the External oscillator in Hz*/
+#endif /* LSE_VALUE */
+
+#if !defined (LSE_STARTUP_TIMEOUT)
+ #define LSE_STARTUP_TIMEOUT 5000U /*!< Time out for LSE start up, in ms */
+#endif /* LSE_STARTUP_TIMEOUT */
+
+/* Tip: To avoid modifying this file each time you need to use different HSE,
+ === you can define the HSE value in your toolchain compiler preprocessor. */
+
+/* ########################### System Configuration ######################### */
+/**
+ * @brief This is the HAL system configuration section
+ */
+#define VDD_VALUE 3300U /*!< Value of VDD in mv */
+#define TICK_INT_PRIORITY 15U /*!< tick interrupt priority (lowest by default) */
+#define USE_RTOS 0U
+#define PREFETCH_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_DAC_REGISTER_CALLBACKS 0U /* DAC register callback disabled */
+#define USE_HAL_ETH_REGISTER_CALLBACKS 0U /* ETH 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_I2S_REGISTER_CALLBACKS 0U /* I2S 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_RTC_REGISTER_CALLBACKS 0U /* RTC 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_IRDA_REGISTER_CALLBACKS 0U /* IRDA register callback disabled */
+#define USE_HAL_SRAM_REGISTER_CALLBACKS 0U /* SRAM 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 8U /* 4 Rx buffers of size ETH_RX_BUF_SIZE */
+#define ETH_TXBUFNB 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 0x000000FFU
+/* PHY Configuration delay */
+#define PHY_CONFIG_DELAY 0x00000FFFU
+
+#define PHY_READ_TO 0x0000FFFFU
+#define PHY_WRITE_TO 0x0000FFFFU
+
+/* Section 3: Common PHY Registers */
+
+#define PHY_BCR ((uint16_t)0x00) /*!< Transceiver Basic Control Register */
+#define PHY_BSR ((uint16_t)0x01) /*!< Transceiver Basic Status Register */
+
+#define PHY_RESET ((uint16_t)0x8000) /*!< PHY Reset */
+#define PHY_LOOPBACK ((uint16_t)0x4000) /*!< Select loop-back mode */
+#define PHY_FULLDUPLEX_100M ((uint16_t)0x2100) /*!< Set the full-duplex mode at 100 Mb/s */
+#define PHY_HALFDUPLEX_100M ((uint16_t)0x2000) /*!< Set the half-duplex mode at 100 Mb/s */
+#define PHY_FULLDUPLEX_10M ((uint16_t)0x0100) /*!< Set the full-duplex mode at 10 Mb/s */
+#define PHY_HALFDUPLEX_10M ((uint16_t)0x0000) /*!< Set the half-duplex mode at 10 Mb/s */
+#define PHY_AUTONEGOTIATION ((uint16_t)0x1000) /*!< Enable auto-negotiation function */
+#define PHY_RESTART_AUTONEGOTIATION ((uint16_t)0x0200) /*!< Restart auto-negotiation function */
+#define PHY_POWERDOWN ((uint16_t)0x0800) /*!< Select the power down mode */
+#define PHY_ISOLATE ((uint16_t)0x0400) /*!< Isolate PHY from MII */
+
+#define PHY_AUTONEGO_COMPLETE ((uint16_t)0x0020) /*!< Auto-Negotiation process completed */
+#define PHY_LINKED_STATUS ((uint16_t)0x0004) /*!< Valid link established */
+#define PHY_JABBER_DETECTION ((uint16_t)0x0002) /*!< 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 "stm32f1xx_hal_rcc.h"
+#endif /* HAL_RCC_MODULE_ENABLED */
+
+#ifdef HAL_GPIO_MODULE_ENABLED
+#include "stm32f1xx_hal_gpio.h"
+#endif /* HAL_GPIO_MODULE_ENABLED */
+
+#ifdef HAL_EXTI_MODULE_ENABLED
+#include "stm32f1xx_hal_exti.h"
+#endif /* HAL_EXTI_MODULE_ENABLED */
+
+#ifdef HAL_DMA_MODULE_ENABLED
+#include "stm32f1xx_hal_dma.h"
+#endif /* HAL_DMA_MODULE_ENABLED */
+
+#ifdef HAL_ETH_MODULE_ENABLED
+#include "stm32f1xx_hal_eth.h"
+#endif /* HAL_ETH_MODULE_ENABLED */
+
+#ifdef HAL_CAN_MODULE_ENABLED
+#include "stm32f1xx_hal_can.h"
+#endif /* HAL_CAN_MODULE_ENABLED */
+
+#ifdef HAL_CAN_LEGACY_MODULE_ENABLED
+ #include "Legacy/stm32f1xx_hal_can_legacy.h"
+#endif /* HAL_CAN_LEGACY_MODULE_ENABLED */
+
+#ifdef HAL_CEC_MODULE_ENABLED
+#include "stm32f1xx_hal_cec.h"
+#endif /* HAL_CEC_MODULE_ENABLED */
+
+#ifdef HAL_CORTEX_MODULE_ENABLED
+#include "stm32f1xx_hal_cortex.h"
+#endif /* HAL_CORTEX_MODULE_ENABLED */
+
+#ifdef HAL_ADC_MODULE_ENABLED
+#include "stm32f1xx_hal_adc.h"
+#endif /* HAL_ADC_MODULE_ENABLED */
+
+#ifdef HAL_CRC_MODULE_ENABLED
+#include "stm32f1xx_hal_crc.h"
+#endif /* HAL_CRC_MODULE_ENABLED */
+
+#ifdef HAL_DAC_MODULE_ENABLED
+#include "stm32f1xx_hal_dac.h"
+#endif /* HAL_DAC_MODULE_ENABLED */
+
+#ifdef HAL_FLASH_MODULE_ENABLED
+#include "stm32f1xx_hal_flash.h"
+#endif /* HAL_FLASH_MODULE_ENABLED */
+
+#ifdef HAL_SRAM_MODULE_ENABLED
+#include "stm32f1xx_hal_sram.h"
+#endif /* HAL_SRAM_MODULE_ENABLED */
+
+#ifdef HAL_NOR_MODULE_ENABLED
+#include "stm32f1xx_hal_nor.h"
+#endif /* HAL_NOR_MODULE_ENABLED */
+
+#ifdef HAL_I2C_MODULE_ENABLED
+#include "stm32f1xx_hal_i2c.h"
+#endif /* HAL_I2C_MODULE_ENABLED */
+
+#ifdef HAL_I2S_MODULE_ENABLED
+#include "stm32f1xx_hal_i2s.h"
+#endif /* HAL_I2S_MODULE_ENABLED */
+
+#ifdef HAL_IWDG_MODULE_ENABLED
+#include "stm32f1xx_hal_iwdg.h"
+#endif /* HAL_IWDG_MODULE_ENABLED */
+
+#ifdef HAL_PWR_MODULE_ENABLED
+#include "stm32f1xx_hal_pwr.h"
+#endif /* HAL_PWR_MODULE_ENABLED */
+
+#ifdef HAL_RTC_MODULE_ENABLED
+#include "stm32f1xx_hal_rtc.h"
+#endif /* HAL_RTC_MODULE_ENABLED */
+
+#ifdef HAL_PCCARD_MODULE_ENABLED
+#include "stm32f1xx_hal_pccard.h"
+#endif /* HAL_PCCARD_MODULE_ENABLED */
+
+#ifdef HAL_SD_MODULE_ENABLED
+#include "stm32f1xx_hal_sd.h"
+#endif /* HAL_SD_MODULE_ENABLED */
+
+#ifdef HAL_NAND_MODULE_ENABLED
+#include "stm32f1xx_hal_nand.h"
+#endif /* HAL_NAND_MODULE_ENABLED */
+
+#ifdef HAL_SPI_MODULE_ENABLED
+#include "stm32f1xx_hal_spi.h"
+#endif /* HAL_SPI_MODULE_ENABLED */
+
+#ifdef HAL_TIM_MODULE_ENABLED
+#include "stm32f1xx_hal_tim.h"
+#endif /* HAL_TIM_MODULE_ENABLED */
+
+#ifdef HAL_UART_MODULE_ENABLED
+#include "stm32f1xx_hal_uart.h"
+#endif /* HAL_UART_MODULE_ENABLED */
+
+#ifdef HAL_USART_MODULE_ENABLED
+#include "stm32f1xx_hal_usart.h"
+#endif /* HAL_USART_MODULE_ENABLED */
+
+#ifdef HAL_IRDA_MODULE_ENABLED
+#include "stm32f1xx_hal_irda.h"
+#endif /* HAL_IRDA_MODULE_ENABLED */
+
+#ifdef HAL_SMARTCARD_MODULE_ENABLED
+#include "stm32f1xx_hal_smartcard.h"
+#endif /* HAL_SMARTCARD_MODULE_ENABLED */
+
+#ifdef HAL_WWDG_MODULE_ENABLED
+#include "stm32f1xx_hal_wwdg.h"
+#endif /* HAL_WWDG_MODULE_ENABLED */
+
+#ifdef HAL_PCD_MODULE_ENABLED
+#include "stm32f1xx_hal_pcd.h"
+#endif /* HAL_PCD_MODULE_ENABLED */
+
+#ifdef HAL_HCD_MODULE_ENABLED
+#include "stm32f1xx_hal_hcd.h"
+#endif /* HAL_HCD_MODULE_ENABLED */
+
+#ifdef HAL_MMC_MODULE_ENABLED
+#include "stm32f1xx_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 /* __STM32F1xx_HAL_CONF_H */
+
diff --git a/firmware/components/HID/STM32_SKBD/Core/Inc/stm32f1xx_it.h b/firmware/components/HID/STM32_SKBD/Core/Inc/stm32f1xx_it.h
new file mode 100644
index 00000000..8dc4d8c2
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Core/Inc/stm32f1xx_it.h
@@ -0,0 +1,67 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file stm32f1xx_it.h
+ * @brief This file contains the headers of the interrupt handlers.
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32F1xx_IT_H
+#define __STM32F1xx_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 USB_LP_CAN1_RX0_IRQHandler(void);
+/* USER CODE BEGIN EFP */
+
+/* USER CODE END EFP */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __STM32F1xx_IT_H */
diff --git a/firmware/components/HID/STM32_SKBD/Core/Src/main.c b/firmware/components/HID/STM32_SKBD/Core/Src/main.c
new file mode 100644
index 00000000..462308d1
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Core/Src/main.c
@@ -0,0 +1,231 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file : main.c
+ * @brief : Main program body
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "usb_device.h"
+
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+#include "usbd_hid.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 ---------------------------------------------------------*/
+
+/* USER CODE BEGIN PV */
+extern USBD_HandleTypeDef hUsbDeviceFS;
+
+typedef struct {
+ uint8_t MODIFIER;
+ uint8_t RESERVED;
+ uint8_t KEYCODE1;
+ uint8_t KEYCODE2;
+ uint8_t KEYCODE3;
+ uint8_t KEYCODE4;
+ uint8_t KEYCODE5;
+ uint8_t KEYCODE6;
+}keyboardReportDes;
+
+keyboardReportDes HIDkeyBoard = {0,0,0,0,0,0,0,0};
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+
+ /* USER CODE BEGIN 1 */
+
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_USB_DEVICE_Init();
+ /* USER CODE BEGIN 2 */
+
+ /* USER CODE END 2 */
+
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ HIDkeyBoard.MODIFIER = 0x02; // Print Char in Capital
+ HIDkeyBoard.KEYCODE1 = 0x04; // Print 'A'
+ HIDkeyBoard.KEYCODE2 = 0x05; // Print 'B'
+ HIDkeyBoard.KEYCODE3 = 0x06; // Print 'C'
+ USBD_HID_SendReport(&hUsbDeviceFS,&HIDkeyBoard,sizeof(HIDkeyBoard));
+ HAL_Delay(50);
+ HIDkeyBoard.MODIFIER = 0x00; // Release Shift
+ HIDkeyBoard.KEYCODE1 = 0x00; // Release Key
+ HIDkeyBoard.KEYCODE2 = 0x00; // Release Key
+ HIDkeyBoard.KEYCODE3 = 0x00; // Release Key
+ USBD_HID_SendReport(&hUsbDeviceFS,&HIDkeyBoard,sizeof(HIDkeyBoard));
+ HAL_Delay(1000);
+ }
+ /* USER CODE END 3 */
+}
+
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+ RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
+
+ /** 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.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
+ 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();
+ }
+ PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB;
+ PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5;
+ if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
+ {
+ Error_Handler();
+ }
+}
+
+/**
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOD_CLK_ENABLE();
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+
+/* USER CODE BEGIN 4 */
+
+/* USER CODE END 4 */
+
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ {
+ }
+ /* USER CODE END Error_Handler_Debug */
+}
+
+#ifdef USE_FULL_ASSERT
+/**
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
+void assert_failed(uint8_t *file, uint32_t line)
+{
+ /* USER CODE BEGIN 6 */
+ /* User can add his own implementation to report the file name and line number,
+ ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+ /* USER CODE END 6 */
+}
+#endif /* USE_FULL_ASSERT */
diff --git a/firmware/components/HID/STM32_SKBD/Core/Src/stm32f1xx_hal_msp.c b/firmware/components/HID/STM32_SKBD/Core/Src/stm32f1xx_hal_msp.c
new file mode 100644
index 00000000..1d0ebb08
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Core/Src/stm32f1xx_hal_msp.c
@@ -0,0 +1,86 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file stm32f1xx_hal_msp.c
+ * @brief This file provides code for the MSP Initialization
+ * and de-Initialization codes.
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN TD */
+
+/* USER CODE END TD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN Define */
+
+/* USER CODE END Define */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN Macro */
+
+/* USER CODE END Macro */
+
+/* Private variables ---------------------------------------------------------*/
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* External functions --------------------------------------------------------*/
+/* USER CODE BEGIN ExternalFunctions */
+
+/* USER CODE END ExternalFunctions */
+
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+/**
+ * Initializes the Global MSP.
+ */
+void HAL_MspInit(void)
+{
+
+ /* USER CODE BEGIN MspInit 0 */
+
+ /* USER CODE END MspInit 0 */
+
+ __HAL_RCC_AFIO_CLK_ENABLE();
+ __HAL_RCC_PWR_CLK_ENABLE();
+
+ /* System interrupt init*/
+
+ /** NOJTAG: JTAG-DP Disabled and SW-DP Enabled
+ */
+ __HAL_AFIO_REMAP_SWJ_NOJTAG();
+
+ /* USER CODE BEGIN MspInit 1 */
+
+ /* USER CODE END MspInit 1 */
+}
+
+/* USER CODE BEGIN 1 */
+
+/* USER CODE END 1 */
diff --git a/firmware/components/HID/STM32_SKBD/Core/Src/stm32f1xx_it.c b/firmware/components/HID/STM32_SKBD/Core/Src/stm32f1xx_it.c
new file mode 100644
index 00000000..44f2b045
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Core/Src/stm32f1xx_it.c
@@ -0,0 +1,217 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * @file stm32f1xx_it.c
+ * @brief Interrupt Service Routines.
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "stm32f1xx_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 PCD_HandleTypeDef hpcd_USB_FS;
+/* USER CODE BEGIN EV */
+
+/* USER CODE END EV */
+
+/******************************************************************************/
+/* Cortex-M3 Processor Interruption and Exception Handlers */
+/******************************************************************************/
+/**
+ * @brief This function handles Non maskable interrupt.
+ */
+void NMI_Handler(void)
+{
+ /* USER CODE BEGIN NonMaskableInt_IRQn 0 */
+
+ /* USER CODE END NonMaskableInt_IRQn 0 */
+ /* USER CODE BEGIN NonMaskableInt_IRQn 1 */
+ while (1)
+ {
+ }
+ /* USER CODE END NonMaskableInt_IRQn 1 */
+}
+
+/**
+ * @brief This function handles Hard fault interrupt.
+ */
+void HardFault_Handler(void)
+{
+ /* USER CODE BEGIN HardFault_IRQn 0 */
+
+ /* USER CODE END HardFault_IRQn 0 */
+ while (1)
+ {
+ /* USER CODE BEGIN W1_HardFault_IRQn 0 */
+ /* USER CODE END W1_HardFault_IRQn 0 */
+ }
+}
+
+/**
+ * @brief This function handles Memory management fault.
+ */
+void MemManage_Handler(void)
+{
+ /* USER CODE BEGIN MemoryManagement_IRQn 0 */
+
+ /* USER CODE END MemoryManagement_IRQn 0 */
+ while (1)
+ {
+ /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */
+ /* USER CODE END W1_MemoryManagement_IRQn 0 */
+ }
+}
+
+/**
+ * @brief This function handles Prefetch 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 */
+}
+
+/******************************************************************************/
+/* STM32F1xx 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_stm32f1xx.s). */
+/******************************************************************************/
+
+/**
+ * @brief This function handles USB low priority or CAN RX0 interrupts.
+ */
+void USB_LP_CAN1_RX0_IRQHandler(void)
+{
+ /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 0 */
+
+ /* USER CODE END USB_LP_CAN1_RX0_IRQn 0 */
+ HAL_PCD_IRQHandler(&hpcd_USB_FS);
+ /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 1 */
+
+ /* USER CODE END USB_LP_CAN1_RX0_IRQn 1 */
+}
+
+/* USER CODE BEGIN 1 */
+
+/* USER CODE END 1 */
diff --git a/firmware/components/HID/STM32_SKBD/Core/Src/syscalls.c b/firmware/components/HID/STM32_SKBD/Core/Src/syscalls.c
new file mode 100644
index 00000000..8884b5aa
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Core/Src/syscalls.c
@@ -0,0 +1,176 @@
+/**
+ ******************************************************************************
+ * @file syscalls.c
+ * @author Auto-generated by STM32CubeIDE
+ * @brief STM32CubeIDE Minimal System calls file
+ *
+ * For more information about which c-functions
+ * need which of these lowlevel functions
+ * please consult the Newlib libc-manual
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2020-2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+
+/* Includes */
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+
+/* Variables */
+extern int __io_putchar(int ch) __attribute__((weak));
+extern int __io_getchar(void) __attribute__((weak));
+
+
+char *__env[1] = { 0 };
+char **environ = __env;
+
+
+/* Functions */
+void initialise_monitor_handles()
+{
+}
+
+int _getpid(void)
+{
+ return 1;
+}
+
+int _kill(int pid, int sig)
+{
+ (void)pid;
+ (void)sig;
+ errno = EINVAL;
+ return -1;
+}
+
+void _exit (int status)
+{
+ _kill(status, -1);
+ while (1) {} /* Make sure we hang here */
+}
+
+__attribute__((weak)) int _read(int file, char *ptr, int len)
+{
+ (void)file;
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ *ptr++ = __io_getchar();
+ }
+
+ return len;
+}
+
+__attribute__((weak)) int _write(int file, char *ptr, int len)
+{
+ (void)file;
+ int DataIdx;
+
+ for (DataIdx = 0; DataIdx < len; DataIdx++)
+ {
+ __io_putchar(*ptr++);
+ }
+ return len;
+}
+
+int _close(int file)
+{
+ (void)file;
+ return -1;
+}
+
+
+int _fstat(int file, struct stat *st)
+{
+ (void)file;
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _isatty(int file)
+{
+ (void)file;
+ return 1;
+}
+
+int _lseek(int file, int ptr, int dir)
+{
+ (void)file;
+ (void)ptr;
+ (void)dir;
+ return 0;
+}
+
+int _open(char *path, int flags, ...)
+{
+ (void)path;
+ (void)flags;
+ /* Pretend like we always fail */
+ return -1;
+}
+
+int _wait(int *status)
+{
+ (void)status;
+ errno = ECHILD;
+ return -1;
+}
+
+int _unlink(char *name)
+{
+ (void)name;
+ errno = ENOENT;
+ return -1;
+}
+
+int _times(struct tms *buf)
+{
+ (void)buf;
+ return -1;
+}
+
+int _stat(char *file, struct stat *st)
+{
+ (void)file;
+ st->st_mode = S_IFCHR;
+ return 0;
+}
+
+int _link(char *old, char *new)
+{
+ (void)old;
+ (void)new;
+ errno = EMLINK;
+ return -1;
+}
+
+int _fork(void)
+{
+ errno = EAGAIN;
+ return -1;
+}
+
+int _execve(char *name, char **argv, char **env)
+{
+ (void)name;
+ (void)argv;
+ (void)env;
+ errno = ENOMEM;
+ return -1;
+}
diff --git a/firmware/components/HID/STM32_SKBD/Core/Src/sysmem.c b/firmware/components/HID/STM32_SKBD/Core/Src/sysmem.c
new file mode 100644
index 00000000..5d9f7e67
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Core/Src/sysmem.c
@@ -0,0 +1,79 @@
+/**
+ ******************************************************************************
+ * @file sysmem.c
+ * @author Generated by STM32CubeIDE
+ * @brief STM32CubeIDE System Memory calls file
+ *
+ * For more information about which C functions
+ * need which of these lowlevel functions
+ * please consult the newlib libc manual
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2025 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+
+/* Includes */
+#include
+#include
+
+/**
+ * Pointer to the current high watermark of the heap usage
+ */
+static uint8_t *__sbrk_heap_end = NULL;
+
+/**
+ * @brief _sbrk() allocates memory to the newlib heap and is used by malloc
+ * and others from the C library
+ *
+ * @verbatim
+ * ############################################################################
+ * # .data # .bss # newlib heap # MSP stack #
+ * # # # # Reserved by _Min_Stack_Size #
+ * ############################################################################
+ * ^-- RAM start ^-- _end _estack, RAM end --^
+ * @endverbatim
+ *
+ * This implementation starts allocating at the '_end' linker symbol
+ * The '_Min_Stack_Size' linker symbol reserves a memory for the MSP stack
+ * The implementation considers '_estack' linker symbol to be RAM end
+ * NOTE: If the MSP stack, at any point during execution, grows larger than the
+ * reserved size, please increase the '_Min_Stack_Size'.
+ *
+ * @param incr Memory size
+ * @return Pointer to allocated memory
+ */
+void *_sbrk(ptrdiff_t incr)
+{
+ extern uint8_t _end; /* Symbol defined in the linker script */
+ extern uint8_t _estack; /* Symbol defined in the linker script */
+ extern uint32_t _Min_Stack_Size; /* Symbol defined in the linker script */
+ const uint32_t stack_limit = (uint32_t)&_estack - (uint32_t)&_Min_Stack_Size;
+ const uint8_t *max_heap = (uint8_t *)stack_limit;
+ uint8_t *prev_heap_end;
+
+ /* Initialize heap end at first call */
+ if (NULL == __sbrk_heap_end)
+ {
+ __sbrk_heap_end = &_end;
+ }
+
+ /* Protect heap from growing into the reserved MSP stack */
+ if (__sbrk_heap_end + incr > max_heap)
+ {
+ errno = ENOMEM;
+ return (void *)-1;
+ }
+
+ prev_heap_end = __sbrk_heap_end;
+ __sbrk_heap_end += incr;
+
+ return (void *)prev_heap_end;
+}
diff --git a/firmware/components/HID/STM32_SKBD/Core/Src/system_stm32f1xx.c b/firmware/components/HID/STM32_SKBD/Core/Src/system_stm32f1xx.c
new file mode 100644
index 00000000..3afa78db
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Core/Src/system_stm32f1xx.c
@@ -0,0 +1,406 @@
+/**
+ ******************************************************************************
+ * @file system_stm32f1xx.c
+ * @author MCD Application Team
+ * @brief CMSIS Cortex-M3 Device Peripheral Access Layer System Source File.
+ *
+ * 1. This file provides two functions and one global variable to be called from
+ * user application:
+ * - SystemInit(): Setups the system clock (System clock source, PLL Multiplier
+ * factors, AHB/APBx prescalers and Flash settings).
+ * This function is called at startup just after reset and
+ * before branch to main program. This call is made inside
+ * the "startup_stm32f1xx_xx.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.
+ *
+ * 2. After each device reset the HSI (8 MHz) is used as system clock source.
+ * Then SystemInit() function is called, in "startup_stm32f1xx_xx.s" file, to
+ * configure the system clock before to branch to main program.
+ *
+ * 4. The default value of HSE crystal is set to 8 MHz (or 25 MHz, depending on
+ * the product used), refer to "HSE_VALUE".
+ * When HSE is used as system clock source, directly or through PLL, and you
+ * are using different crystal you have to adapt the HSE value to your own
+ * configuration.
+ *
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2017-2021 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+
+/** @addtogroup CMSIS
+ * @{
+ */
+
+/** @addtogroup stm32f1xx_system
+ * @{
+ */
+
+/** @addtogroup STM32F1xx_System_Private_Includes
+ * @{
+ */
+
+#include "stm32f1xx.h"
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F1xx_System_Private_TypesDefinitions
+ * @{
+ */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F1xx_System_Private_Defines
+ * @{
+ */
+
+#if !defined (HSE_VALUE)
+ #define HSE_VALUE 8000000U /*!< Default value of the External oscillator in Hz.
+ This value can be provided and adapted by the user application. */
+#endif /* HSE_VALUE */
+
+#if !defined (HSI_VALUE)
+ #define HSI_VALUE 8000000U /*!< Default value of the Internal oscillator in Hz.
+ This value can be provided and adapted by the user application. */
+#endif /* HSI_VALUE */
+
+/*!< Uncomment the following line if you need to use external SRAM */
+#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG)
+/* #define DATA_IN_ExtSRAM */
+#endif /* STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || STM32F103xG */
+
+/* Note: Following vector table addresses must be defined in line with linker
+ configuration. */
+/*!< Uncomment the following line if you need to relocate the vector table
+ anywhere in Flash or Sram, else the vector table is kept at the automatic
+ remap of boot address selected */
+/* #define USER_VECT_TAB_ADDRESS */
+
+#if defined(USER_VECT_TAB_ADDRESS)
+/*!< Uncomment the following line if you need to relocate your vector Table
+ in Sram else user remap will be done in Flash. */
+/* #define VECT_TAB_SRAM */
+#if defined(VECT_TAB_SRAM)
+#define VECT_TAB_BASE_ADDRESS SRAM_BASE /*!< Vector Table base address field.
+ This value must be a multiple of 0x200. */
+#define VECT_TAB_OFFSET 0x00000000U /*!< Vector Table base offset field.
+ This value must be a multiple of 0x200. */
+#else
+#define VECT_TAB_BASE_ADDRESS FLASH_BASE /*!< Vector Table base address field.
+ This value must be a multiple of 0x200. */
+#define VECT_TAB_OFFSET 0x00000000U /*!< Vector Table base offset field.
+ This value must be a multiple of 0x200. */
+#endif /* VECT_TAB_SRAM */
+#endif /* USER_VECT_TAB_ADDRESS */
+
+/******************************************************************************/
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F1xx_System_Private_Macros
+ * @{
+ */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F1xx_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 = 8000000;
+const uint8_t AHBPrescTable[16U] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};
+const uint8_t APBPrescTable[8U] = {0, 0, 0, 0, 1, 2, 3, 4};
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F1xx_System_Private_FunctionPrototypes
+ * @{
+ */
+
+#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG)
+#ifdef DATA_IN_ExtSRAM
+ static void SystemInit_ExtMemCtl(void);
+#endif /* DATA_IN_ExtSRAM */
+#endif /* STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || STM32F103xG */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F1xx_System_Private_Functions
+ * @{
+ */
+
+/**
+ * @brief Setup the microcontroller system
+ * Initialize the Embedded Flash Interface, the PLL and update the
+ * SystemCoreClock variable.
+ * @note This function should be used only after reset.
+ * @param None
+ * @retval None
+ */
+void SystemInit (void)
+{
+#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG)
+ #ifdef DATA_IN_ExtSRAM
+ SystemInit_ExtMemCtl();
+ #endif /* DATA_IN_ExtSRAM */
+#endif
+
+ /* Configure the Vector Table location -------------------------------------*/
+#if defined(USER_VECT_TAB_ADDRESS)
+ SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */
+#endif /* USER_VECT_TAB_ADDRESS */
+}
+
+/**
+ * @brief Update SystemCoreClock 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 by the PLL factors.
+ *
+ * (*) HSI_VALUE is a constant defined in stm32f1xx.h file (default value
+ * 8 MHz) but the real value may vary depending on the variations
+ * in voltage and temperature.
+ *
+ * (**) HSE_VALUE is a constant defined in stm32f1xx.h file (default value
+ * 8 MHz or 25 MHz, depending on the product used), user has to ensure
+ * that HSE_VALUE is same as the real frequency of the crystal used.
+ * Otherwise, this function may have wrong result.
+ *
+ * - The result of this function could be not correct when using fractional
+ * value for HSE crystal.
+ * @param None
+ * @retval None
+ */
+void SystemCoreClockUpdate (void)
+{
+ uint32_t tmp = 0U, pllmull = 0U, pllsource = 0U;
+
+#if defined(STM32F105xC) || defined(STM32F107xC)
+ uint32_t prediv1source = 0U, prediv1factor = 0U, prediv2factor = 0U, pll2mull = 0U;
+#endif /* STM32F105xC */
+
+#if defined(STM32F100xB) || defined(STM32F100xE)
+ uint32_t prediv1factor = 0U;
+#endif /* STM32F100xB or STM32F100xE */
+
+ /* Get SYSCLK source -------------------------------------------------------*/
+ tmp = RCC->CFGR & RCC_CFGR_SWS;
+
+ switch (tmp)
+ {
+ case 0x00U: /* HSI used as system clock */
+ SystemCoreClock = HSI_VALUE;
+ break;
+ case 0x04U: /* HSE used as system clock */
+ SystemCoreClock = HSE_VALUE;
+ break;
+ case 0x08U: /* PLL used as system clock */
+
+ /* Get PLL clock source and multiplication factor ----------------------*/
+ pllmull = RCC->CFGR & RCC_CFGR_PLLMULL;
+ pllsource = RCC->CFGR & RCC_CFGR_PLLSRC;
+
+#if !defined(STM32F105xC) && !defined(STM32F107xC)
+ pllmull = ( pllmull >> 18U) + 2U;
+
+ if (pllsource == 0x00U)
+ {
+ /* HSI oscillator clock divided by 2 selected as PLL clock entry */
+ SystemCoreClock = (HSI_VALUE >> 1U) * pllmull;
+ }
+ else
+ {
+ #if defined(STM32F100xB) || defined(STM32F100xE)
+ prediv1factor = (RCC->CFGR2 & RCC_CFGR2_PREDIV1) + 1U;
+ /* HSE oscillator clock selected as PREDIV1 clock entry */
+ SystemCoreClock = (HSE_VALUE / prediv1factor) * pllmull;
+ #else
+ /* HSE selected as PLL clock entry */
+ if ((RCC->CFGR & RCC_CFGR_PLLXTPRE) != (uint32_t)RESET)
+ {/* HSE oscillator clock divided by 2 */
+ SystemCoreClock = (HSE_VALUE >> 1U) * pllmull;
+ }
+ else
+ {
+ SystemCoreClock = HSE_VALUE * pllmull;
+ }
+ #endif
+ }
+#else
+ pllmull = pllmull >> 18U;
+
+ if (pllmull != 0x0DU)
+ {
+ pllmull += 2U;
+ }
+ else
+ { /* PLL multiplication factor = PLL input clock * 6.5 */
+ pllmull = 13U / 2U;
+ }
+
+ if (pllsource == 0x00U)
+ {
+ /* HSI oscillator clock divided by 2 selected as PLL clock entry */
+ SystemCoreClock = (HSI_VALUE >> 1U) * pllmull;
+ }
+ else
+ {/* PREDIV1 selected as PLL clock entry */
+
+ /* Get PREDIV1 clock source and division factor */
+ prediv1source = RCC->CFGR2 & RCC_CFGR2_PREDIV1SRC;
+ prediv1factor = (RCC->CFGR2 & RCC_CFGR2_PREDIV1) + 1U;
+
+ if (prediv1source == 0U)
+ {
+ /* HSE oscillator clock selected as PREDIV1 clock entry */
+ SystemCoreClock = (HSE_VALUE / prediv1factor) * pllmull;
+ }
+ else
+ {/* PLL2 clock selected as PREDIV1 clock entry */
+
+ /* Get PREDIV2 division factor and PLL2 multiplication factor */
+ prediv2factor = ((RCC->CFGR2 & RCC_CFGR2_PREDIV2) >> 4U) + 1U;
+ pll2mull = ((RCC->CFGR2 & RCC_CFGR2_PLL2MUL) >> 8U) + 2U;
+ SystemCoreClock = (((HSE_VALUE / prediv2factor) * pll2mull) / prediv1factor) * pllmull;
+ }
+ }
+#endif /* STM32F105xC */
+ break;
+
+ default:
+ SystemCoreClock = HSI_VALUE;
+ break;
+ }
+
+ /* Compute HCLK clock frequency ----------------*/
+ /* Get HCLK prescaler */
+ tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4U)];
+ /* HCLK clock frequency */
+ SystemCoreClock >>= tmp;
+}
+
+#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG)
+/**
+ * @brief Setup the external memory controller. Called in startup_stm32f1xx.s
+ * before jump to __main
+ * @param None
+ * @retval None
+ */
+#ifdef DATA_IN_ExtSRAM
+/**
+ * @brief Setup the external memory controller.
+ * Called in startup_stm32f1xx_xx.s/.c before jump to main.
+ * This function configures the external SRAM mounted on STM3210E-EVAL
+ * board (STM32 High density devices). This SRAM will be used as program
+ * data memory (including heap and stack).
+ * @param None
+ * @retval None
+ */
+void SystemInit_ExtMemCtl(void)
+{
+ __IO uint32_t tmpreg;
+ /*!< FSMC Bank1 NOR/SRAM3 is used for the STM3210E-EVAL, if another Bank is
+ required, then adjust the Register Addresses */
+
+ /* Enable FSMC clock */
+ RCC->AHBENR = 0x00000114U;
+
+ /* Delay after an RCC peripheral clock enabling */
+ tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_FSMCEN);
+
+ /* Enable GPIOD, GPIOE, GPIOF and GPIOG clocks */
+ RCC->APB2ENR = 0x000001E0U;
+
+ /* Delay after an RCC peripheral clock enabling */
+ tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_IOPDEN);
+
+ (void)(tmpreg);
+
+/* --------------- SRAM Data lines, NOE and NWE configuration ---------------*/
+/*---------------- SRAM Address lines configuration -------------------------*/
+/*---------------- NOE and NWE configuration --------------------------------*/
+/*---------------- NE3 configuration ----------------------------------------*/
+/*---------------- NBL0, NBL1 configuration ---------------------------------*/
+
+ GPIOD->CRL = 0x44BB44BBU;
+ GPIOD->CRH = 0xBBBBBBBBU;
+
+ GPIOE->CRL = 0xB44444BBU;
+ GPIOE->CRH = 0xBBBBBBBBU;
+
+ GPIOF->CRL = 0x44BBBBBBU;
+ GPIOF->CRH = 0xBBBB4444U;
+
+ GPIOG->CRL = 0x44BBBBBBU;
+ GPIOG->CRH = 0x444B4B44U;
+
+/*---------------- FSMC Configuration ---------------------------------------*/
+/*---------------- Enable FSMC Bank1_SRAM Bank ------------------------------*/
+
+ FSMC_Bank1->BTCR[4U] = 0x00001091U;
+ FSMC_Bank1->BTCR[5U] = 0x00110212U;
+}
+#endif /* DATA_IN_ExtSRAM */
+#endif /* STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || STM32F103xG */
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
diff --git a/firmware/components/HID/STM32_SKBD/Core/Startup/startup_stm32f103c8tx.s b/firmware/components/HID/STM32_SKBD/Core/Startup/startup_stm32f103c8tx.s
new file mode 100644
index 00000000..76142851
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Core/Startup/startup_stm32f103c8tx.s
@@ -0,0 +1,364 @@
+/**
+ *************** (C) COPYRIGHT 2017 STMicroelectronics ************************
+ * @file startup_stm32f103xb.s
+ * @author MCD Application Team
+ * @brief STM32F103xB Devices vector table for Atollic toolchain.
+ * This module performs:
+ * - Set the initial SP
+ * - Set the initial PC == Reset_Handler,
+ * - Set the vector table entries with the exceptions ISR address
+ * - Configure the clock system
+ * - Branches to main in the C library (which eventually
+ * calls main()).
+ * After Reset the Cortex-M3 processor is in Thread mode,
+ * priority is Privileged, and the Stack is set to Main.
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2017-2021 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+
+ .syntax unified
+ .cpu cortex-m3
+ .fpu softvfp
+ .thumb
+
+.global g_pfnVectors
+.global Default_Handler
+
+/* start address for the initialization values of the .data section.
+defined in linker script */
+.word _sidata
+/* start address for the .data section. defined in linker script */
+.word _sdata
+/* end address for the .data section. defined in linker script */
+.word _edata
+/* start address for the .bss section. defined in linker script */
+.word _sbss
+/* end address for the .bss section. defined in linker script */
+.word _ebss
+
+.equ BootRAM, 0xF108F85F
+/**
+ * @brief This is the code that gets called when the processor first
+ * starts execution following a reset event. Only the absolutely
+ * necessary set is performed, after which the application
+ * supplied main() routine is called.
+ * @param None
+ * @retval : None
+*/
+
+ .section .text.Reset_Handler
+ .weak Reset_Handler
+ .type Reset_Handler, %function
+Reset_Handler:
+
+/* Call the clock system initialization function.*/
+ bl SystemInit
+
+/* Copy the data segment initializers from flash to SRAM */
+ ldr r0, =_sdata
+ ldr r1, =_edata
+ ldr r2, =_sidata
+ movs r3, #0
+ b LoopCopyDataInit
+
+CopyDataInit:
+ ldr r4, [r2, r3]
+ str r4, [r0, r3]
+ adds r3, r3, #4
+
+LoopCopyDataInit:
+ adds r4, r0, r3
+ cmp r4, r1
+ bcc CopyDataInit
+
+/* Zero fill the bss segment. */
+ ldr r2, =_sbss
+ ldr r4, =_ebss
+ movs r3, #0
+ b LoopFillZerobss
+
+FillZerobss:
+ str r3, [r2]
+ adds r2, r2, #4
+
+LoopFillZerobss:
+ cmp r2, r4
+ bcc FillZerobss
+
+/* Call static constructors */
+ bl __libc_init_array
+/* Call the application's entry point.*/
+ bl main
+ bx lr
+.size Reset_Handler, .-Reset_Handler
+
+/**
+ * @brief This is the code that gets called when the processor receives an
+ * unexpected interrupt. This simply enters an infinite loop, preserving
+ * the system state for examination by a debugger.
+ *
+ * @param None
+ * @retval : None
+*/
+ .section .text.Default_Handler,"ax",%progbits
+Default_Handler:
+Infinite_Loop:
+ b Infinite_Loop
+ .size Default_Handler, .-Default_Handler
+/******************************************************************************
+*
+* The minimal vector table for a Cortex M3. Note that the proper constructs
+* must be placed on this to ensure that it ends up at physical address
+* 0x0000.0000.
+*
+******************************************************************************/
+ .section .isr_vector,"a",%progbits
+ .type g_pfnVectors, %object
+ .size g_pfnVectors, .-g_pfnVectors
+
+
+g_pfnVectors:
+
+ .word _estack
+ .word Reset_Handler
+ .word NMI_Handler
+ .word HardFault_Handler
+ .word MemManage_Handler
+ .word BusFault_Handler
+ .word UsageFault_Handler
+ .word 0
+ .word 0
+ .word 0
+ .word 0
+ .word SVC_Handler
+ .word DebugMon_Handler
+ .word 0
+ .word PendSV_Handler
+ .word SysTick_Handler
+ .word WWDG_IRQHandler
+ .word PVD_IRQHandler
+ .word TAMPER_IRQHandler
+ .word RTC_IRQHandler
+ .word FLASH_IRQHandler
+ .word RCC_IRQHandler
+ .word EXTI0_IRQHandler
+ .word EXTI1_IRQHandler
+ .word EXTI2_IRQHandler
+ .word EXTI3_IRQHandler
+ .word EXTI4_IRQHandler
+ .word DMA1_Channel1_IRQHandler
+ .word DMA1_Channel2_IRQHandler
+ .word DMA1_Channel3_IRQHandler
+ .word DMA1_Channel4_IRQHandler
+ .word DMA1_Channel5_IRQHandler
+ .word DMA1_Channel6_IRQHandler
+ .word DMA1_Channel7_IRQHandler
+ .word ADC1_2_IRQHandler
+ .word USB_HP_CAN1_TX_IRQHandler
+ .word USB_LP_CAN1_RX0_IRQHandler
+ .word CAN1_RX1_IRQHandler
+ .word CAN1_SCE_IRQHandler
+ .word EXTI9_5_IRQHandler
+ .word TIM1_BRK_IRQHandler
+ .word TIM1_UP_IRQHandler
+ .word TIM1_TRG_COM_IRQHandler
+ .word TIM1_CC_IRQHandler
+ .word TIM2_IRQHandler
+ .word TIM3_IRQHandler
+ .word TIM4_IRQHandler
+ .word I2C1_EV_IRQHandler
+ .word I2C1_ER_IRQHandler
+ .word I2C2_EV_IRQHandler
+ .word I2C2_ER_IRQHandler
+ .word SPI1_IRQHandler
+ .word SPI2_IRQHandler
+ .word USART1_IRQHandler
+ .word USART2_IRQHandler
+ .word USART3_IRQHandler
+ .word EXTI15_10_IRQHandler
+ .word RTC_Alarm_IRQHandler
+ .word USBWakeUp_IRQHandler
+ .word 0
+ .word 0
+ .word 0
+ .word 0
+ .word 0
+ .word 0
+ .word 0
+ .word BootRAM /* @0x108. This is for boot in RAM mode for
+ STM32F10x Medium Density devices. */
+
+/*******************************************************************************
+*
+* Provide weak aliases for each Exception handler to the Default_Handler.
+* As they are weak aliases, any function with the same name will override
+* this definition.
+*
+*******************************************************************************/
+
+ .weak NMI_Handler
+ .thumb_set NMI_Handler,Default_Handler
+
+ .weak HardFault_Handler
+ .thumb_set HardFault_Handler,Default_Handler
+
+ .weak MemManage_Handler
+ .thumb_set MemManage_Handler,Default_Handler
+
+ .weak BusFault_Handler
+ .thumb_set BusFault_Handler,Default_Handler
+
+ .weak UsageFault_Handler
+ .thumb_set UsageFault_Handler,Default_Handler
+
+ .weak SVC_Handler
+ .thumb_set SVC_Handler,Default_Handler
+
+ .weak DebugMon_Handler
+ .thumb_set DebugMon_Handler,Default_Handler
+
+ .weak PendSV_Handler
+ .thumb_set PendSV_Handler,Default_Handler
+
+ .weak SysTick_Handler
+ .thumb_set SysTick_Handler,Default_Handler
+
+ .weak WWDG_IRQHandler
+ .thumb_set WWDG_IRQHandler,Default_Handler
+
+ .weak PVD_IRQHandler
+ .thumb_set PVD_IRQHandler,Default_Handler
+
+ .weak TAMPER_IRQHandler
+ .thumb_set TAMPER_IRQHandler,Default_Handler
+
+ .weak RTC_IRQHandler
+ .thumb_set RTC_IRQHandler,Default_Handler
+
+ .weak FLASH_IRQHandler
+ .thumb_set FLASH_IRQHandler,Default_Handler
+
+ .weak RCC_IRQHandler
+ .thumb_set RCC_IRQHandler,Default_Handler
+
+ .weak EXTI0_IRQHandler
+ .thumb_set EXTI0_IRQHandler,Default_Handler
+
+ .weak EXTI1_IRQHandler
+ .thumb_set EXTI1_IRQHandler,Default_Handler
+
+ .weak EXTI2_IRQHandler
+ .thumb_set EXTI2_IRQHandler,Default_Handler
+
+ .weak EXTI3_IRQHandler
+ .thumb_set EXTI3_IRQHandler,Default_Handler
+
+ .weak EXTI4_IRQHandler
+ .thumb_set EXTI4_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel1_IRQHandler
+ .thumb_set DMA1_Channel1_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel2_IRQHandler
+ .thumb_set DMA1_Channel2_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel3_IRQHandler
+ .thumb_set DMA1_Channel3_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel4_IRQHandler
+ .thumb_set DMA1_Channel4_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel5_IRQHandler
+ .thumb_set DMA1_Channel5_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel6_IRQHandler
+ .thumb_set DMA1_Channel6_IRQHandler,Default_Handler
+
+ .weak DMA1_Channel7_IRQHandler
+ .thumb_set DMA1_Channel7_IRQHandler,Default_Handler
+
+ .weak ADC1_2_IRQHandler
+ .thumb_set ADC1_2_IRQHandler,Default_Handler
+
+ .weak USB_HP_CAN1_TX_IRQHandler
+ .thumb_set USB_HP_CAN1_TX_IRQHandler,Default_Handler
+
+ .weak USB_LP_CAN1_RX0_IRQHandler
+ .thumb_set USB_LP_CAN1_RX0_IRQHandler,Default_Handler
+
+ .weak CAN1_RX1_IRQHandler
+ .thumb_set CAN1_RX1_IRQHandler,Default_Handler
+
+ .weak CAN1_SCE_IRQHandler
+ .thumb_set CAN1_SCE_IRQHandler,Default_Handler
+
+ .weak EXTI9_5_IRQHandler
+ .thumb_set EXTI9_5_IRQHandler,Default_Handler
+
+ .weak TIM1_BRK_IRQHandler
+ .thumb_set TIM1_BRK_IRQHandler,Default_Handler
+
+ .weak TIM1_UP_IRQHandler
+ .thumb_set TIM1_UP_IRQHandler,Default_Handler
+
+ .weak TIM1_TRG_COM_IRQHandler
+ .thumb_set TIM1_TRG_COM_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 USART3_IRQHandler
+ .thumb_set USART3_IRQHandler,Default_Handler
+
+ .weak EXTI15_10_IRQHandler
+ .thumb_set EXTI15_10_IRQHandler,Default_Handler
+
+ .weak RTC_Alarm_IRQHandler
+ .thumb_set RTC_Alarm_IRQHandler,Default_Handler
+
+ .weak USBWakeUp_IRQHandler
+ .thumb_set USBWakeUp_IRQHandler,Default_Handler
+
+
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Core/Src/main.cyclo b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/main.cyclo
new file mode 100644
index 00000000..0f74e115
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/main.cyclo
@@ -0,0 +1,4 @@
+../Core/Src/main.c:78:5:main 1
+../Core/Src/main.c:135:6:SystemClock_Config 4
+../Core/Src/main.c:182:13:MX_GPIO_Init 1
+../Core/Src/main.c:205:6:Error_Handler 1
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Core/Src/main.d b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/main.d
new file mode 100644
index 00000000..cb75d2fb
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/main.d
@@ -0,0 +1,70 @@
+Core/Src/main.o: ../Core/Src/main.c ../Core/Inc/main.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \
+ ../Core/Inc/stm32f1xx_hal_conf.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \
+ ../Drivers/CMSIS/Include/core_cm3.h \
+ ../Drivers/CMSIS/Include/cmsis_version.h \
+ ../Drivers/CMSIS/Include/cmsis_compiler.h \
+ ../Drivers/CMSIS/Include/cmsis_gcc.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h \
+ ../USB_DEVICE/App/usb_device.h \
+ ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h \
+ ../USB_DEVICE/Target/usbd_conf.h \
+ ../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc/usbd_hid.h \
+ ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h \
+ ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h \
+ ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h \
+ ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h \
+ ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h
+../Core/Inc/main.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h:
+../Core/Inc/stm32f1xx_hal_conf.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h:
+../Drivers/CMSIS/Include/core_cm3.h:
+../Drivers/CMSIS/Include/cmsis_version.h:
+../Drivers/CMSIS/Include/cmsis_compiler.h:
+../Drivers/CMSIS/Include/cmsis_gcc.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h:
+../USB_DEVICE/App/usb_device.h:
+../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h:
+../USB_DEVICE/Target/usbd_conf.h:
+../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc/usbd_hid.h:
+../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h:
+../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h:
+../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h:
+../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h:
+../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h:
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Core/Src/main.o b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/main.o
new file mode 100644
index 00000000..4d0efc24
Binary files /dev/null and b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/main.o differ
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Core/Src/main.su b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/main.su
new file mode 100644
index 00000000..11d1734b
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/main.su
@@ -0,0 +1,4 @@
+../Core/Src/main.c:78:5:main 8 static
+../Core/Src/main.c:135:6:SystemClock_Config 88 static
+../Core/Src/main.c:182:13:MX_GPIO_Init 16 static
+../Core/Src/main.c:205:6:Error_Handler 4 static,ignoring_inline_asm
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Core/Src/stm32f1xx_hal_msp.cyclo b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/stm32f1xx_hal_msp.cyclo
new file mode 100644
index 00000000..64fac364
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/stm32f1xx_hal_msp.cyclo
@@ -0,0 +1 @@
+../Core/Src/stm32f1xx_hal_msp.c:63:6:HAL_MspInit 1
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Core/Src/stm32f1xx_hal_msp.d b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/stm32f1xx_hal_msp.d
new file mode 100644
index 00000000..7f39db82
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/stm32f1xx_hal_msp.d
@@ -0,0 +1,52 @@
+Core/Src/stm32f1xx_hal_msp.o: ../Core/Src/stm32f1xx_hal_msp.c \
+ ../Core/Inc/main.h ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \
+ ../Core/Inc/stm32f1xx_hal_conf.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \
+ ../Drivers/CMSIS/Include/core_cm3.h \
+ ../Drivers/CMSIS/Include/cmsis_version.h \
+ ../Drivers/CMSIS/Include/cmsis_compiler.h \
+ ../Drivers/CMSIS/Include/cmsis_gcc.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h
+../Core/Inc/main.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h:
+../Core/Inc/stm32f1xx_hal_conf.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h:
+../Drivers/CMSIS/Include/core_cm3.h:
+../Drivers/CMSIS/Include/cmsis_version.h:
+../Drivers/CMSIS/Include/cmsis_compiler.h:
+../Drivers/CMSIS/Include/cmsis_gcc.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h:
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Core/Src/stm32f1xx_hal_msp.o b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/stm32f1xx_hal_msp.o
new file mode 100644
index 00000000..a61c5112
Binary files /dev/null and b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/stm32f1xx_hal_msp.o differ
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Core/Src/stm32f1xx_hal_msp.su b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/stm32f1xx_hal_msp.su
new file mode 100644
index 00000000..abb0befe
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/stm32f1xx_hal_msp.su
@@ -0,0 +1 @@
+../Core/Src/stm32f1xx_hal_msp.c:63:6:HAL_MspInit 24 static
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Core/Src/stm32f1xx_it.cyclo b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/stm32f1xx_it.cyclo
new file mode 100644
index 00000000..5b9553aa
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/stm32f1xx_it.cyclo
@@ -0,0 +1,10 @@
+../Core/Src/stm32f1xx_it.c:69:6:NMI_Handler 1
+../Core/Src/stm32f1xx_it.c:84:6:HardFault_Handler 1
+../Core/Src/stm32f1xx_it.c:99:6:MemManage_Handler 1
+../Core/Src/stm32f1xx_it.c:114:6:BusFault_Handler 1
+../Core/Src/stm32f1xx_it.c:129:6:UsageFault_Handler 1
+../Core/Src/stm32f1xx_it.c:144:6:SVC_Handler 1
+../Core/Src/stm32f1xx_it.c:157:6:DebugMon_Handler 1
+../Core/Src/stm32f1xx_it.c:170:6:PendSV_Handler 1
+../Core/Src/stm32f1xx_it.c:183:6:SysTick_Handler 1
+../Core/Src/stm32f1xx_it.c:204:6:USB_LP_CAN1_RX0_IRQHandler 1
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Core/Src/stm32f1xx_it.d b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/stm32f1xx_it.d
new file mode 100644
index 00000000..cb38063f
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/stm32f1xx_it.d
@@ -0,0 +1,54 @@
+Core/Src/stm32f1xx_it.o: ../Core/Src/stm32f1xx_it.c ../Core/Inc/main.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \
+ ../Core/Inc/stm32f1xx_hal_conf.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \
+ ../Drivers/CMSIS/Include/core_cm3.h \
+ ../Drivers/CMSIS/Include/cmsis_version.h \
+ ../Drivers/CMSIS/Include/cmsis_compiler.h \
+ ../Drivers/CMSIS/Include/cmsis_gcc.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h \
+ ../Core/Inc/stm32f1xx_it.h
+../Core/Inc/main.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h:
+../Core/Inc/stm32f1xx_hal_conf.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h:
+../Drivers/CMSIS/Include/core_cm3.h:
+../Drivers/CMSIS/Include/cmsis_version.h:
+../Drivers/CMSIS/Include/cmsis_compiler.h:
+../Drivers/CMSIS/Include/cmsis_gcc.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h:
+../Core/Inc/stm32f1xx_it.h:
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Core/Src/stm32f1xx_it.o b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/stm32f1xx_it.o
new file mode 100644
index 00000000..7c452831
Binary files /dev/null and b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/stm32f1xx_it.o differ
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Core/Src/stm32f1xx_it.su b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/stm32f1xx_it.su
new file mode 100644
index 00000000..e5ab7653
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/stm32f1xx_it.su
@@ -0,0 +1,10 @@
+../Core/Src/stm32f1xx_it.c:69:6:NMI_Handler 4 static
+../Core/Src/stm32f1xx_it.c:84:6:HardFault_Handler 4 static
+../Core/Src/stm32f1xx_it.c:99:6:MemManage_Handler 4 static
+../Core/Src/stm32f1xx_it.c:114:6:BusFault_Handler 4 static
+../Core/Src/stm32f1xx_it.c:129:6:UsageFault_Handler 4 static
+../Core/Src/stm32f1xx_it.c:144:6:SVC_Handler 4 static
+../Core/Src/stm32f1xx_it.c:157:6:DebugMon_Handler 4 static
+../Core/Src/stm32f1xx_it.c:170:6:PendSV_Handler 4 static
+../Core/Src/stm32f1xx_it.c:183:6:SysTick_Handler 8 static
+../Core/Src/stm32f1xx_it.c:204:6:USB_LP_CAN1_RX0_IRQHandler 8 static
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Core/Src/subdir.mk b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/subdir.mk
new file mode 100644
index 00000000..795acec0
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/subdir.mk
@@ -0,0 +1,42 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+# Toolchain: GNU Tools for STM32 (13.3.rel1)
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+C_SRCS += \
+../Core/Src/main.c \
+../Core/Src/stm32f1xx_hal_msp.c \
+../Core/Src/stm32f1xx_it.c \
+../Core/Src/syscalls.c \
+../Core/Src/sysmem.c \
+../Core/Src/system_stm32f1xx.c
+
+OBJS += \
+./Core/Src/main.o \
+./Core/Src/stm32f1xx_hal_msp.o \
+./Core/Src/stm32f1xx_it.o \
+./Core/Src/syscalls.o \
+./Core/Src/sysmem.o \
+./Core/Src/system_stm32f1xx.o
+
+C_DEPS += \
+./Core/Src/main.d \
+./Core/Src/stm32f1xx_hal_msp.d \
+./Core/Src/stm32f1xx_it.d \
+./Core/Src/syscalls.d \
+./Core/Src/sysmem.d \
+./Core/Src/system_stm32f1xx.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+Core/Src/%.o Core/Src/%.su Core/Src/%.cyclo: ../Core/Src/%.c Core/Src/subdir.mk
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+
+clean: clean-Core-2f-Src
+
+clean-Core-2f-Src:
+ -$(RM) ./Core/Src/main.cyclo ./Core/Src/main.d ./Core/Src/main.o ./Core/Src/main.su ./Core/Src/stm32f1xx_hal_msp.cyclo ./Core/Src/stm32f1xx_hal_msp.d ./Core/Src/stm32f1xx_hal_msp.o ./Core/Src/stm32f1xx_hal_msp.su ./Core/Src/stm32f1xx_it.cyclo ./Core/Src/stm32f1xx_it.d ./Core/Src/stm32f1xx_it.o ./Core/Src/stm32f1xx_it.su ./Core/Src/syscalls.cyclo ./Core/Src/syscalls.d ./Core/Src/syscalls.o ./Core/Src/syscalls.su ./Core/Src/sysmem.cyclo ./Core/Src/sysmem.d ./Core/Src/sysmem.o ./Core/Src/sysmem.su ./Core/Src/system_stm32f1xx.cyclo ./Core/Src/system_stm32f1xx.d ./Core/Src/system_stm32f1xx.o ./Core/Src/system_stm32f1xx.su
+
+.PHONY: clean-Core-2f-Src
+
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Core/Src/syscalls.cyclo b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/syscalls.cyclo
new file mode 100644
index 00000000..6cbfdd05
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/syscalls.cyclo
@@ -0,0 +1,18 @@
+../Core/Src/syscalls.c:44:6:initialise_monitor_handles 1
+../Core/Src/syscalls.c:48:5:_getpid 1
+../Core/Src/syscalls.c:53:5:_kill 1
+../Core/Src/syscalls.c:61:6:_exit 1
+../Core/Src/syscalls.c:67:27:_read 2
+../Core/Src/syscalls.c:80:27:_write 2
+../Core/Src/syscalls.c:92:5:_close 1
+../Core/Src/syscalls.c:99:5:_fstat 1
+../Core/Src/syscalls.c:106:5:_isatty 1
+../Core/Src/syscalls.c:112:5:_lseek 1
+../Core/Src/syscalls.c:120:5:_open 1
+../Core/Src/syscalls.c:128:5:_wait 1
+../Core/Src/syscalls.c:135:5:_unlink 1
+../Core/Src/syscalls.c:142:5:_times 1
+../Core/Src/syscalls.c:148:5:_stat 1
+../Core/Src/syscalls.c:155:5:_link 1
+../Core/Src/syscalls.c:163:5:_fork 1
+../Core/Src/syscalls.c:169:5:_execve 1
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Core/Src/syscalls.d b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/syscalls.d
new file mode 100644
index 00000000..8667c708
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/syscalls.d
@@ -0,0 +1 @@
+Core/Src/syscalls.o: ../Core/Src/syscalls.c
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Core/Src/syscalls.o b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/syscalls.o
new file mode 100644
index 00000000..7f99e010
Binary files /dev/null and b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/syscalls.o differ
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Core/Src/syscalls.su b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/syscalls.su
new file mode 100644
index 00000000..50b547ab
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/syscalls.su
@@ -0,0 +1,18 @@
+../Core/Src/syscalls.c:44:6:initialise_monitor_handles 4 static
+../Core/Src/syscalls.c:48:5:_getpid 4 static
+../Core/Src/syscalls.c:53:5:_kill 16 static
+../Core/Src/syscalls.c:61:6:_exit 16 static
+../Core/Src/syscalls.c:67:27:_read 32 static
+../Core/Src/syscalls.c:80:27:_write 32 static
+../Core/Src/syscalls.c:92:5:_close 16 static
+../Core/Src/syscalls.c:99:5:_fstat 16 static
+../Core/Src/syscalls.c:106:5:_isatty 16 static
+../Core/Src/syscalls.c:112:5:_lseek 24 static
+../Core/Src/syscalls.c:120:5:_open 12 static
+../Core/Src/syscalls.c:128:5:_wait 16 static
+../Core/Src/syscalls.c:135:5:_unlink 16 static
+../Core/Src/syscalls.c:142:5:_times 16 static
+../Core/Src/syscalls.c:148:5:_stat 16 static
+../Core/Src/syscalls.c:155:5:_link 16 static
+../Core/Src/syscalls.c:163:5:_fork 8 static
+../Core/Src/syscalls.c:169:5:_execve 24 static
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Core/Src/sysmem.cyclo b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/sysmem.cyclo
new file mode 100644
index 00000000..0090c10f
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/sysmem.cyclo
@@ -0,0 +1 @@
+../Core/Src/sysmem.c:53:7:_sbrk 3
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Core/Src/sysmem.d b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/sysmem.d
new file mode 100644
index 00000000..74fecf9b
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/sysmem.d
@@ -0,0 +1 @@
+Core/Src/sysmem.o: ../Core/Src/sysmem.c
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Core/Src/sysmem.o b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/sysmem.o
new file mode 100644
index 00000000..5468cb60
Binary files /dev/null and b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/sysmem.o differ
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Core/Src/sysmem.su b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/sysmem.su
new file mode 100644
index 00000000..12d5f177
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/sysmem.su
@@ -0,0 +1 @@
+../Core/Src/sysmem.c:53:7:_sbrk 32 static
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Core/Src/system_stm32f1xx.cyclo b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/system_stm32f1xx.cyclo
new file mode 100644
index 00000000..3a4c30c6
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/system_stm32f1xx.cyclo
@@ -0,0 +1,2 @@
+../Core/Src/system_stm32f1xx.c:175:6:SystemInit 1
+../Core/Src/system_stm32f1xx.c:224:6:SystemCoreClockUpdate 7
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Core/Src/system_stm32f1xx.d b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/system_stm32f1xx.d
new file mode 100644
index 00000000..02f40cf3
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/system_stm32f1xx.d
@@ -0,0 +1,51 @@
+Core/Src/system_stm32f1xx.o: ../Core/Src/system_stm32f1xx.c \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \
+ ../Drivers/CMSIS/Include/core_cm3.h \
+ ../Drivers/CMSIS/Include/cmsis_version.h \
+ ../Drivers/CMSIS/Include/cmsis_compiler.h \
+ ../Drivers/CMSIS/Include/cmsis_gcc.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \
+ ../Core/Inc/stm32f1xx_hal_conf.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h:
+../Drivers/CMSIS/Include/core_cm3.h:
+../Drivers/CMSIS/Include/cmsis_version.h:
+../Drivers/CMSIS/Include/cmsis_compiler.h:
+../Drivers/CMSIS/Include/cmsis_gcc.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h:
+../Core/Inc/stm32f1xx_hal_conf.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h:
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Core/Src/system_stm32f1xx.o b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/system_stm32f1xx.o
new file mode 100644
index 00000000..b2754886
Binary files /dev/null and b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/system_stm32f1xx.o differ
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Core/Src/system_stm32f1xx.su b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/system_stm32f1xx.su
new file mode 100644
index 00000000..04bd7598
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Core/Src/system_stm32f1xx.su
@@ -0,0 +1,2 @@
+../Core/Src/system_stm32f1xx.c:175:6:SystemInit 4 static
+../Core/Src/system_stm32f1xx.c:224:6:SystemCoreClockUpdate 24 static
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Core/Startup/startup_stm32f103c8tx.d b/firmware/components/HID/STM32_SKBD/Debug/Core/Startup/startup_stm32f103c8tx.d
new file mode 100644
index 00000000..8737f105
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Core/Startup/startup_stm32f103c8tx.d
@@ -0,0 +1,2 @@
+Core/Startup/startup_stm32f103c8tx.o: \
+ ../Core/Startup/startup_stm32f103c8tx.s
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Core/Startup/startup_stm32f103c8tx.o b/firmware/components/HID/STM32_SKBD/Debug/Core/Startup/startup_stm32f103c8tx.o
new file mode 100644
index 00000000..cd4416fd
Binary files /dev/null and b/firmware/components/HID/STM32_SKBD/Debug/Core/Startup/startup_stm32f103c8tx.o differ
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Core/Startup/subdir.mk b/firmware/components/HID/STM32_SKBD/Debug/Core/Startup/subdir.mk
new file mode 100644
index 00000000..abda64a0
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Core/Startup/subdir.mk
@@ -0,0 +1,27 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+# Toolchain: GNU Tools for STM32 (13.3.rel1)
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+S_SRCS += \
+../Core/Startup/startup_stm32f103c8tx.s
+
+OBJS += \
+./Core/Startup/startup_stm32f103c8tx.o
+
+S_DEPS += \
+./Core/Startup/startup_stm32f103c8tx.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+Core/Startup/%.o: ../Core/Startup/%.s Core/Startup/subdir.mk
+ arm-none-eabi-gcc -mcpu=cortex-m3 -g3 -DDEBUG -c -x assembler-with-cpp -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@" "$<"
+
+clean: clean-Core-2f-Startup
+
+clean-Core-2f-Startup:
+ -$(RM) ./Core/Startup/startup_stm32f103c8tx.d ./Core/Startup/startup_stm32f103c8tx.o
+
+.PHONY: clean-Core-2f-Startup
+
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.cyclo b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.cyclo
new file mode 100644
index 00000000..8ac57cf7
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.cyclo
@@ -0,0 +1,25 @@
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:142:19:HAL_Init 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:175:19:HAL_DeInit 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:200:13:HAL_MspInit 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:211:13:HAL_MspDeInit 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:234:26:HAL_InitTick 3
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:293:13:HAL_IncTick 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:304:17:HAL_GetTick 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:313:10:HAL_GetTickPrio 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:322:19:HAL_SetTickFreq 3
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:355:21:HAL_GetTickFreq 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:371:13:HAL_Delay 3
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:397:13:HAL_SuspendTick 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:413:13:HAL_ResumeTick 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:423:10:HAL_GetHalVersion 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:439:10:HAL_GetREVID 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:455:10:HAL_GetDEVID 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:464:10:HAL_GetUIDw0 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:473:10:HAL_GetUIDw1 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:482:10:HAL_GetUIDw2 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:491:6:HAL_DBGMCU_EnableDBGSleepMode 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:507:6:HAL_DBGMCU_DisableDBGSleepMode 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:537:6:HAL_DBGMCU_EnableDBGStopMode 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:553:6:HAL_DBGMCU_DisableDBGStopMode 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:569:6:HAL_DBGMCU_EnableDBGStandbyMode 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:585:6:HAL_DBGMCU_DisableDBGStandbyMode 1
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.d b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.d
new file mode 100644
index 00000000..f18c0b39
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.d
@@ -0,0 +1,52 @@
+Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o: \
+ ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \
+ ../Core/Inc/stm32f1xx_hal_conf.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \
+ ../Drivers/CMSIS/Include/core_cm3.h \
+ ../Drivers/CMSIS/Include/cmsis_version.h \
+ ../Drivers/CMSIS/Include/cmsis_compiler.h \
+ ../Drivers/CMSIS/Include/cmsis_gcc.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h:
+../Core/Inc/stm32f1xx_hal_conf.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h:
+../Drivers/CMSIS/Include/core_cm3.h:
+../Drivers/CMSIS/Include/cmsis_version.h:
+../Drivers/CMSIS/Include/cmsis_compiler.h:
+../Drivers/CMSIS/Include/cmsis_gcc.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h:
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o
new file mode 100644
index 00000000..40de88f3
Binary files /dev/null and b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o differ
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.su b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.su
new file mode 100644
index 00000000..e0e4d0f0
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.su
@@ -0,0 +1,25 @@
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:142:19:HAL_Init 8 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:175:19:HAL_DeInit 8 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:200:13:HAL_MspInit 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:211:13:HAL_MspDeInit 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:234:26:HAL_InitTick 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:293:13:HAL_IncTick 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:304:17:HAL_GetTick 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:313:10:HAL_GetTickPrio 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:322:19:HAL_SetTickFreq 24 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:355:21:HAL_GetTickFreq 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:371:13:HAL_Delay 24 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:397:13:HAL_SuspendTick 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:413:13:HAL_ResumeTick 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:423:10:HAL_GetHalVersion 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:439:10:HAL_GetREVID 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:455:10:HAL_GetDEVID 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:464:10:HAL_GetUIDw0 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:473:10:HAL_GetUIDw1 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:482:10:HAL_GetUIDw2 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:491:6:HAL_DBGMCU_EnableDBGSleepMode 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:507:6:HAL_DBGMCU_DisableDBGSleepMode 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:537:6:HAL_DBGMCU_EnableDBGStopMode 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:553:6:HAL_DBGMCU_DisableDBGStopMode 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:569:6:HAL_DBGMCU_EnableDBGStandbyMode 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c:585:6:HAL_DBGMCU_DisableDBGStandbyMode 4 static
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.cyclo b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.cyclo
new file mode 100644
index 00000000..5f7cf8bd
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.cyclo
@@ -0,0 +1,29 @@
+../Drivers/CMSIS/Include/core_cm3.h:1480:22:__NVIC_SetPriorityGrouping 1
+../Drivers/CMSIS/Include/core_cm3.h:1499:26:__NVIC_GetPriorityGrouping 1
+../Drivers/CMSIS/Include/core_cm3.h:1511:22:__NVIC_EnableIRQ 2
+../Drivers/CMSIS/Include/core_cm3.h:1547:22:__NVIC_DisableIRQ 2
+../Drivers/CMSIS/Include/core_cm3.h:1566:26:__NVIC_GetPendingIRQ 2
+../Drivers/CMSIS/Include/core_cm3.h:1585:22:__NVIC_SetPendingIRQ 2
+../Drivers/CMSIS/Include/core_cm3.h:1600:22:__NVIC_ClearPendingIRQ 2
+../Drivers/CMSIS/Include/core_cm3.h:1617:26:__NVIC_GetActive 2
+../Drivers/CMSIS/Include/core_cm3.h:1639:22:__NVIC_SetPriority 2
+../Drivers/CMSIS/Include/core_cm3.h:1661:26:__NVIC_GetPriority 2
+../Drivers/CMSIS/Include/core_cm3.h:1686:26:NVIC_EncodePriority 2
+../Drivers/CMSIS/Include/core_cm3.h:1713:22:NVIC_DecodePriority 2
+../Drivers/CMSIS/Include/core_cm3.h:1762:34:__NVIC_SystemReset 1
+../Drivers/CMSIS/Include/core_cm3.h:1834:26:SysTick_Config 2
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c:142:6:HAL_NVIC_SetPriorityGrouping 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c:164:6:HAL_NVIC_SetPriority 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c:186:6:HAL_NVIC_EnableIRQ 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c:202:6:HAL_NVIC_DisableIRQ 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c:215:6:HAL_NVIC_SystemReset 0
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c:228:10:HAL_SYSTICK_Config 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c:369:10:HAL_NVIC_GetPriorityGrouping 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c:396:6:HAL_NVIC_GetPriority 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c:411:6:HAL_NVIC_SetPendingIRQ 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c:429:10:HAL_NVIC_GetPendingIRQ 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c:445:6:HAL_NVIC_ClearPendingIRQ 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c:462:10:HAL_NVIC_GetActive 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c:479:6:HAL_SYSTICK_CLKSourceConfig 2
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c:497:6:HAL_SYSTICK_IRQHandler 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c:506:13:HAL_SYSTICK_Callback 1
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.d b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.d
new file mode 100644
index 00000000..5a9f1551
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.d
@@ -0,0 +1,52 @@
+Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o: \
+ ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \
+ ../Core/Inc/stm32f1xx_hal_conf.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \
+ ../Drivers/CMSIS/Include/core_cm3.h \
+ ../Drivers/CMSIS/Include/cmsis_version.h \
+ ../Drivers/CMSIS/Include/cmsis_compiler.h \
+ ../Drivers/CMSIS/Include/cmsis_gcc.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h:
+../Core/Inc/stm32f1xx_hal_conf.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h:
+../Drivers/CMSIS/Include/core_cm3.h:
+../Drivers/CMSIS/Include/cmsis_version.h:
+../Drivers/CMSIS/Include/cmsis_compiler.h:
+../Drivers/CMSIS/Include/cmsis_gcc.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h:
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o
new file mode 100644
index 00000000..7cb737a8
Binary files /dev/null and b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o differ
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.su b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.su
new file mode 100644
index 00000000..67c47d66
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.su
@@ -0,0 +1,29 @@
+../Drivers/CMSIS/Include/core_cm3.h:1480:22:__NVIC_SetPriorityGrouping 24 static
+../Drivers/CMSIS/Include/core_cm3.h:1499:26:__NVIC_GetPriorityGrouping 4 static
+../Drivers/CMSIS/Include/core_cm3.h:1511:22:__NVIC_EnableIRQ 16 static
+../Drivers/CMSIS/Include/core_cm3.h:1547:22:__NVIC_DisableIRQ 16 static,ignoring_inline_asm
+../Drivers/CMSIS/Include/core_cm3.h:1566:26:__NVIC_GetPendingIRQ 16 static
+../Drivers/CMSIS/Include/core_cm3.h:1585:22:__NVIC_SetPendingIRQ 16 static
+../Drivers/CMSIS/Include/core_cm3.h:1600:22:__NVIC_ClearPendingIRQ 16 static
+../Drivers/CMSIS/Include/core_cm3.h:1617:26:__NVIC_GetActive 16 static
+../Drivers/CMSIS/Include/core_cm3.h:1639:22:__NVIC_SetPriority 16 static
+../Drivers/CMSIS/Include/core_cm3.h:1661:26:__NVIC_GetPriority 16 static
+../Drivers/CMSIS/Include/core_cm3.h:1686:26:NVIC_EncodePriority 40 static
+../Drivers/CMSIS/Include/core_cm3.h:1713:22:NVIC_DecodePriority 40 static
+../Drivers/CMSIS/Include/core_cm3.h:1762:34:__NVIC_SystemReset 4 static,ignoring_inline_asm
+../Drivers/CMSIS/Include/core_cm3.h:1834:26:SysTick_Config 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c:142:6:HAL_NVIC_SetPriorityGrouping 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c:164:6:HAL_NVIC_SetPriority 32 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c:186:6:HAL_NVIC_EnableIRQ 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c:202:6:HAL_NVIC_DisableIRQ 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c:215:6:HAL_NVIC_SystemReset 8 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c:228:10:HAL_SYSTICK_Config 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c:369:10:HAL_NVIC_GetPriorityGrouping 8 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c:396:6:HAL_NVIC_GetPriority 24 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c:411:6:HAL_NVIC_SetPendingIRQ 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c:429:10:HAL_NVIC_GetPendingIRQ 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c:445:6:HAL_NVIC_ClearPendingIRQ 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c:462:10:HAL_NVIC_GetActive 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c:479:6:HAL_SYSTICK_CLKSourceConfig 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c:497:6:HAL_SYSTICK_IRQHandler 8 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c:506:13:HAL_SYSTICK_Callback 4 static
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.cyclo b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.cyclo
new file mode 100644
index 00000000..01b86779
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.cyclo
@@ -0,0 +1,13 @@
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c:142:19:HAL_DMA_Init 2
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c:219:19:HAL_DMA_DeInit 2
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c:318:19:HAL_DMA_Start 3
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c:361:19:HAL_DMA_Start_IT 4
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c:415:19:HAL_DMA_Abort 2
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c:456:19:HAL_DMA_Abort_IT 9
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c:501:19:HAL_DMA_PollForTransfer 40
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c:602:6:HAL_DMA_IRQHandler 24
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c:692:19:HAL_DMA_RegisterCallback 7
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c:743:19:HAL_DMA_UnRegisterCallback 8
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c:819:22:HAL_DMA_GetState 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c:831:10:HAL_DMA_GetError 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c:857:13:DMA_SetConfig 2
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.d b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.d
new file mode 100644
index 00000000..bdedc3b2
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.d
@@ -0,0 +1,52 @@
+Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o: \
+ ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \
+ ../Core/Inc/stm32f1xx_hal_conf.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \
+ ../Drivers/CMSIS/Include/core_cm3.h \
+ ../Drivers/CMSIS/Include/cmsis_version.h \
+ ../Drivers/CMSIS/Include/cmsis_compiler.h \
+ ../Drivers/CMSIS/Include/cmsis_gcc.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h:
+../Core/Inc/stm32f1xx_hal_conf.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h:
+../Drivers/CMSIS/Include/core_cm3.h:
+../Drivers/CMSIS/Include/cmsis_version.h:
+../Drivers/CMSIS/Include/cmsis_compiler.h:
+../Drivers/CMSIS/Include/cmsis_gcc.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h:
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o
new file mode 100644
index 00000000..14409cb6
Binary files /dev/null and b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o differ
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.su b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.su
new file mode 100644
index 00000000..dd631862
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.su
@@ -0,0 +1,13 @@
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c:142:19:HAL_DMA_Init 24 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c:219:19:HAL_DMA_DeInit 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c:318:19:HAL_DMA_Start 32 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c:361:19:HAL_DMA_Start_IT 32 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c:415:19:HAL_DMA_Abort 24 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c:456:19:HAL_DMA_Abort_IT 24 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c:501:19:HAL_DMA_PollForTransfer 32 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c:602:6:HAL_DMA_IRQHandler 24 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c:692:19:HAL_DMA_RegisterCallback 32 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c:743:19:HAL_DMA_UnRegisterCallback 24 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c:819:22:HAL_DMA_GetState 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c:831:10:HAL_DMA_GetError 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c:857:13:DMA_SetConfig 24 static
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.cyclo b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.cyclo
new file mode 100644
index 00000000..633b1816
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.cyclo
@@ -0,0 +1,9 @@
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c:142:19:HAL_EXTI_SetConfigLine 9
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c:237:19:HAL_EXTI_GetConfigLine 9
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c:316:19:HAL_EXTI_ClearConfigLine 4
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c:369:19:HAL_EXTI_RegisterCallback 2
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c:394:19:HAL_EXTI_GetHandle 2
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c:434:6:HAL_EXTI_IRQHandler 3
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c:466:10:HAL_EXTI_GetPending 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c:498:6:HAL_EXTI_ClearPending 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c:522:6:HAL_EXTI_GenerateSWI 1
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.d b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.d
new file mode 100644
index 00000000..27a73f21
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.d
@@ -0,0 +1,52 @@
+Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o: \
+ ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \
+ ../Core/Inc/stm32f1xx_hal_conf.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \
+ ../Drivers/CMSIS/Include/core_cm3.h \
+ ../Drivers/CMSIS/Include/cmsis_version.h \
+ ../Drivers/CMSIS/Include/cmsis_compiler.h \
+ ../Drivers/CMSIS/Include/cmsis_gcc.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h:
+../Core/Inc/stm32f1xx_hal_conf.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h:
+../Drivers/CMSIS/Include/core_cm3.h:
+../Drivers/CMSIS/Include/cmsis_version.h:
+../Drivers/CMSIS/Include/cmsis_compiler.h:
+../Drivers/CMSIS/Include/cmsis_gcc.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h:
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o
new file mode 100644
index 00000000..7cb7a5e8
Binary files /dev/null and b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o differ
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.su b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.su
new file mode 100644
index 00000000..f0368138
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.su
@@ -0,0 +1,9 @@
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c:142:19:HAL_EXTI_SetConfigLine 32 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c:237:19:HAL_EXTI_GetConfigLine 32 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c:316:19:HAL_EXTI_ClearConfigLine 32 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c:369:19:HAL_EXTI_RegisterCallback 32 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c:394:19:HAL_EXTI_GetHandle 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c:434:6:HAL_EXTI_IRQHandler 24 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c:466:10:HAL_EXTI_GetPending 32 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c:498:6:HAL_EXTI_ClearPending 24 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c:522:6:HAL_EXTI_GenerateSWI 24 static
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.cyclo b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.cyclo
new file mode 100644
index 00000000..6f8a0a90
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.cyclo
@@ -0,0 +1,14 @@
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c:166:19:HAL_FLASH_Program 7
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c:265:19:HAL_FLASH_Program_IT 3
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c:327:6:HAL_FLASH_IRQHandler 12
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c:599:13:HAL_FLASH_EndOfOperationCallback 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c:617:13:HAL_FLASH_OperationErrorCallback 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c:650:19:HAL_FLASH_Unlock 3
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c:688:19:HAL_FLASH_Lock 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c:705:19:HAL_FLASH_OB_Unlock 2
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c:725:19:HAL_FLASH_OB_Lock 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c:738:6:HAL_FLASH_OB_Launch 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c:767:10:HAL_FLASH_GetError 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c:790:13:FLASH_Program_HalfWord 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c:819:19:FLASH_WaitForLastOperation 9
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c:907:13:FLASH_SetErrorCode 5
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.d b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.d
new file mode 100644
index 00000000..abd07456
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.d
@@ -0,0 +1,52 @@
+Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o: \
+ ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \
+ ../Core/Inc/stm32f1xx_hal_conf.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \
+ ../Drivers/CMSIS/Include/core_cm3.h \
+ ../Drivers/CMSIS/Include/cmsis_version.h \
+ ../Drivers/CMSIS/Include/cmsis_compiler.h \
+ ../Drivers/CMSIS/Include/cmsis_gcc.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h:
+../Core/Inc/stm32f1xx_hal_conf.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h:
+../Drivers/CMSIS/Include/core_cm3.h:
+../Drivers/CMSIS/Include/cmsis_version.h:
+../Drivers/CMSIS/Include/cmsis_compiler.h:
+../Drivers/CMSIS/Include/cmsis_gcc.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h:
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o
new file mode 100644
index 00000000..0ed6cdf4
Binary files /dev/null and b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o differ
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.su b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.su
new file mode 100644
index 00000000..b0169788
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.su
@@ -0,0 +1,14 @@
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c:166:19:HAL_FLASH_Program 48 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c:265:19:HAL_FLASH_Program_IT 32 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c:327:6:HAL_FLASH_IRQHandler 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c:599:13:HAL_FLASH_EndOfOperationCallback 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c:617:13:HAL_FLASH_OperationErrorCallback 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c:650:19:HAL_FLASH_Unlock 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c:688:19:HAL_FLASH_Lock 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c:705:19:HAL_FLASH_OB_Unlock 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c:725:19:HAL_FLASH_OB_Lock 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c:738:6:HAL_FLASH_OB_Launch 8 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c:767:10:HAL_FLASH_GetError 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c:790:13:FLASH_Program_HalfWord 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c:819:19:FLASH_WaitForLastOperation 24 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c:907:13:FLASH_SetErrorCode 16 static
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.cyclo b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.cyclo
new file mode 100644
index 00000000..7f86e1ea
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.cyclo
@@ -0,0 +1,16 @@
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c:157:19:HAL_FLASHEx_Erase 7
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c:317:19:HAL_FLASHEx_Erase_IT 3
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c:392:19:HAL_FLASHEx_OBErase 3
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c:441:19:HAL_FLASHEx_OBProgram 11
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c:522:6:HAL_FLASHEx_OBGetConfig 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c:544:10:HAL_FLASHEx_OBGetUserData 2
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c:590:13:FLASH_MassErase 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c:639:26:FLASH_OB_EnableWRP 10
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c:762:26:FLASH_OB_DisableWRP 10
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c:881:26:FLASH_OB_RDP_LevelConfig 3
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c:932:26:FLASH_OB_UserConfig 2
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c:983:26:FLASH_OB_ProgramData 2
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c:1016:17:FLASH_OB_GetWRP 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c:1029:17:FLASH_OB_GetRDP 2
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c:1055:16:FLASH_OB_GetUser 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c:1084:6:FLASH_PageErase 1
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.d b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.d
new file mode 100644
index 00000000..baf7d8b8
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.d
@@ -0,0 +1,52 @@
+Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o: \
+ ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \
+ ../Core/Inc/stm32f1xx_hal_conf.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \
+ ../Drivers/CMSIS/Include/core_cm3.h \
+ ../Drivers/CMSIS/Include/cmsis_version.h \
+ ../Drivers/CMSIS/Include/cmsis_compiler.h \
+ ../Drivers/CMSIS/Include/cmsis_gcc.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h:
+../Core/Inc/stm32f1xx_hal_conf.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h:
+../Drivers/CMSIS/Include/core_cm3.h:
+../Drivers/CMSIS/Include/cmsis_version.h:
+../Drivers/CMSIS/Include/cmsis_compiler.h:
+../Drivers/CMSIS/Include/cmsis_gcc.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h:
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o
new file mode 100644
index 00000000..d9c6391c
Binary files /dev/null and b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o differ
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.su b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.su
new file mode 100644
index 00000000..267c3e4f
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.su
@@ -0,0 +1,16 @@
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c:157:19:HAL_FLASHEx_Erase 24 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c:317:19:HAL_FLASHEx_Erase_IT 24 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c:392:19:HAL_FLASHEx_OBErase 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c:441:19:HAL_FLASHEx_OBProgram 24 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c:522:6:HAL_FLASHEx_OBGetConfig 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c:544:10:HAL_FLASHEx_OBGetUserData 24 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c:590:13:FLASH_MassErase 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c:639:26:FLASH_OB_EnableWRP 32 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c:762:26:FLASH_OB_DisableWRP 32 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c:881:26:FLASH_OB_RDP_LevelConfig 24 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c:932:26:FLASH_OB_UserConfig 24 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c:983:26:FLASH_OB_ProgramData 24 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c:1016:17:FLASH_OB_GetWRP 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c:1029:17:FLASH_OB_GetRDP 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c:1055:16:FLASH_OB_GetUser 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c:1084:6:FLASH_PageErase 16 static
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.cyclo b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.cyclo
new file mode 100644
index 00000000..72a747b1
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.cyclo
@@ -0,0 +1,8 @@
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c:178:6:HAL_GPIO_Init 34
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c:351:6:HAL_GPIO_DeInit 10
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c:431:15:HAL_GPIO_ReadPin 2
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c:465:6:HAL_GPIO_WritePin 2
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c:487:6:HAL_GPIO_TogglePin 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c:511:19:HAL_GPIO_LockPin 2
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c:546:6:HAL_GPIO_EXTI_IRQHandler 2
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c:561:13:HAL_GPIO_EXTI_Callback 1
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.d b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.d
new file mode 100644
index 00000000..60e1e0f9
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.d
@@ -0,0 +1,52 @@
+Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o: \
+ ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \
+ ../Core/Inc/stm32f1xx_hal_conf.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \
+ ../Drivers/CMSIS/Include/core_cm3.h \
+ ../Drivers/CMSIS/Include/cmsis_version.h \
+ ../Drivers/CMSIS/Include/cmsis_compiler.h \
+ ../Drivers/CMSIS/Include/cmsis_gcc.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h:
+../Core/Inc/stm32f1xx_hal_conf.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h:
+../Drivers/CMSIS/Include/core_cm3.h:
+../Drivers/CMSIS/Include/cmsis_version.h:
+../Drivers/CMSIS/Include/cmsis_compiler.h:
+../Drivers/CMSIS/Include/cmsis_gcc.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h:
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o
new file mode 100644
index 00000000..c5801c98
Binary files /dev/null and b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o differ
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.su b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.su
new file mode 100644
index 00000000..9e46e34a
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.su
@@ -0,0 +1,8 @@
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c:178:6:HAL_GPIO_Init 48 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c:351:6:HAL_GPIO_DeInit 40 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c:431:15:HAL_GPIO_ReadPin 24 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c:465:6:HAL_GPIO_WritePin 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c:487:6:HAL_GPIO_TogglePin 24 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c:511:19:HAL_GPIO_LockPin 24 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c:546:6:HAL_GPIO_EXTI_IRQHandler 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c:561:13:HAL_GPIO_EXTI_Callback 16 static
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.cyclo b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.cyclo
new file mode 100644
index 00000000..8b9bf695
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.cyclo
@@ -0,0 +1,3 @@
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c:81:6:HAL_GPIOEx_ConfigEventout 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c:95:6:HAL_GPIOEx_EnableEventout 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c:104:6:HAL_GPIOEx_DisableEventout 1
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.d b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.d
new file mode 100644
index 00000000..b8375252
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.d
@@ -0,0 +1,52 @@
+Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o: \
+ ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \
+ ../Core/Inc/stm32f1xx_hal_conf.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \
+ ../Drivers/CMSIS/Include/core_cm3.h \
+ ../Drivers/CMSIS/Include/cmsis_version.h \
+ ../Drivers/CMSIS/Include/cmsis_compiler.h \
+ ../Drivers/CMSIS/Include/cmsis_gcc.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h:
+../Core/Inc/stm32f1xx_hal_conf.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h:
+../Drivers/CMSIS/Include/core_cm3.h:
+../Drivers/CMSIS/Include/cmsis_version.h:
+../Drivers/CMSIS/Include/cmsis_compiler.h:
+../Drivers/CMSIS/Include/cmsis_gcc.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h:
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o
new file mode 100644
index 00000000..9a0c81d0
Binary files /dev/null and b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o differ
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.su b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.su
new file mode 100644
index 00000000..d484009c
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.su
@@ -0,0 +1,3 @@
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c:81:6:HAL_GPIOEx_ConfigEventout 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c:95:6:HAL_GPIOEx_EnableEventout 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c:104:6:HAL_GPIOEx_DisableEventout 4 static
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.cyclo b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.cyclo
new file mode 100644
index 00000000..5d1b9e54
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.cyclo
@@ -0,0 +1,37 @@
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:131:19:HAL_PCD_Init 8
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:243:19:HAL_PCD_DeInit 3
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:282:13:HAL_PCD_MspInit 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:297:13:HAL_PCD_MspDeInit 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:855:19:HAL_PCD_Start 2
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:875:19:HAL_PCD_Stop 2
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1321:6:HAL_PCD_IRQHandler 12
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1456:6:HAL_PCD_WKUP_IRQHandler 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1469:13:HAL_PCD_DataOutStageCallback 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1486:13:HAL_PCD_DataInStageCallback 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1501:13:HAL_PCD_SetupStageCallback 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1516:13:HAL_PCD_SOFCallback 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1531:13:HAL_PCD_ResetCallback 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1546:13:HAL_PCD_SuspendCallback 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1561:13:HAL_PCD_ResumeCallback 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1577:13:HAL_PCD_ISOOUTIncompleteCallback 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1594:13:HAL_PCD_ISOINIncompleteCallback 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1610:13:HAL_PCD_ConnectCallback 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1625:13:HAL_PCD_DisconnectCallback 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1659:19:HAL_PCD_DevConnect 2
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1678:19:HAL_PCD_DevDisconnect 2
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1698:19:HAL_PCD_SetAddress 2
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1715:19:HAL_PCD_EP_Open 4
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1763:19:HAL_PCD_EP_Close 3
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1794:19:HAL_PCD_EP_Receive 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1818:10:HAL_PCD_EP_GetRxCount 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1830:19:HAL_PCD_EP_Transmit 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1858:19:HAL_PCD_EP_SetStall 5
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1901:19:HAL_PCD_EP_ClrStall 4
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1937:19:HAL_PCD_EP_Abort 2
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1963:19:HAL_PCD_EP_Flush 3
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1986:19:HAL_PCD_ActivateRemoteWakeup 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1996:19:HAL_PCD_DeActivateRemoteWakeup 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:2025:18:HAL_PCD_GetState 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:2185:26:PCD_EP_ISR_Handler 36
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:2464:17:HAL_PCD_EP_DB_Receive 10
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:2545:26:HAL_PCD_EP_DB_Transmit 36
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.d b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.d
new file mode 100644
index 00000000..d8f5ad48
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.d
@@ -0,0 +1,52 @@
+Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o: \
+ ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \
+ ../Core/Inc/stm32f1xx_hal_conf.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \
+ ../Drivers/CMSIS/Include/core_cm3.h \
+ ../Drivers/CMSIS/Include/cmsis_version.h \
+ ../Drivers/CMSIS/Include/cmsis_compiler.h \
+ ../Drivers/CMSIS/Include/cmsis_gcc.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h:
+../Core/Inc/stm32f1xx_hal_conf.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h:
+../Drivers/CMSIS/Include/core_cm3.h:
+../Drivers/CMSIS/Include/cmsis_version.h:
+../Drivers/CMSIS/Include/cmsis_compiler.h:
+../Drivers/CMSIS/Include/cmsis_gcc.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h:
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o
new file mode 100644
index 00000000..e54c6f48
Binary files /dev/null and b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o differ
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.su b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.su
new file mode 100644
index 00000000..97b0f8a8
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.su
@@ -0,0 +1,37 @@
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:131:19:HAL_PCD_Init 24 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:243:19:HAL_PCD_DeInit 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:282:13:HAL_PCD_MspInit 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:297:13:HAL_PCD_MspDeInit 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:855:19:HAL_PCD_Start 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:875:19:HAL_PCD_Stop 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1321:6:HAL_PCD_IRQHandler 40 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1456:6:HAL_PCD_WKUP_IRQHandler 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1469:13:HAL_PCD_DataOutStageCallback 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1486:13:HAL_PCD_DataInStageCallback 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1501:13:HAL_PCD_SetupStageCallback 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1516:13:HAL_PCD_SOFCallback 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1531:13:HAL_PCD_ResetCallback 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1546:13:HAL_PCD_SuspendCallback 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1561:13:HAL_PCD_ResumeCallback 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1577:13:HAL_PCD_ISOOUTIncompleteCallback 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1594:13:HAL_PCD_ISOINIncompleteCallback 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1610:13:HAL_PCD_ConnectCallback 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1625:13:HAL_PCD_DisconnectCallback 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1659:19:HAL_PCD_DevConnect 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1678:19:HAL_PCD_DevDisconnect 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1698:19:HAL_PCD_SetAddress 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1715:19:HAL_PCD_EP_Open 24 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1763:19:HAL_PCD_EP_Close 24 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1794:19:HAL_PCD_EP_Receive 32 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1818:10:HAL_PCD_EP_GetRxCount 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1830:19:HAL_PCD_EP_Transmit 32 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1858:19:HAL_PCD_EP_SetStall 24 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1901:19:HAL_PCD_EP_ClrStall 24 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1937:19:HAL_PCD_EP_Abort 24 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1963:19:HAL_PCD_EP_Flush 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1986:19:HAL_PCD_ActivateRemoteWakeup 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:1996:19:HAL_PCD_DeActivateRemoteWakeup 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:2025:18:HAL_PCD_GetState 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:2185:26:PCD_EP_ISR_Handler 96 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:2464:17:HAL_PCD_EP_DB_Receive 40 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c:2545:26:HAL_PCD_EP_DB_Transmit 152 static
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.cyclo b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.cyclo
new file mode 100644
index 00000000..f57b389e
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.cyclo
@@ -0,0 +1,4 @@
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.c:137:20:HAL_PCDEx_PMAConfig 3
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.c:182:13:HAL_PCDEx_SetConnectionState 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.c:199:13:HAL_PCDEx_LPM_Callback 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.c:216:13:HAL_PCDEx_BCD_Callback 1
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.d b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.d
new file mode 100644
index 00000000..d39615ba
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.d
@@ -0,0 +1,52 @@
+Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o: \
+ ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.c \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \
+ ../Core/Inc/stm32f1xx_hal_conf.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \
+ ../Drivers/CMSIS/Include/core_cm3.h \
+ ../Drivers/CMSIS/Include/cmsis_version.h \
+ ../Drivers/CMSIS/Include/cmsis_compiler.h \
+ ../Drivers/CMSIS/Include/cmsis_gcc.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h:
+../Core/Inc/stm32f1xx_hal_conf.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h:
+../Drivers/CMSIS/Include/core_cm3.h:
+../Drivers/CMSIS/Include/cmsis_version.h:
+../Drivers/CMSIS/Include/cmsis_compiler.h:
+../Drivers/CMSIS/Include/cmsis_gcc.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h:
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o
new file mode 100644
index 00000000..4b984fa1
Binary files /dev/null and b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o differ
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.su b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.su
new file mode 100644
index 00000000..23c69e4c
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.su
@@ -0,0 +1,4 @@
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.c:137:20:HAL_PCDEx_PMAConfig 32 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.c:182:13:HAL_PCDEx_SetConnectionState 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.c:199:13:HAL_PCDEx_LPM_Callback 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.c:216:13:HAL_PCDEx_BCD_Callback 16 static
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.cyclo b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.cyclo
new file mode 100644
index 00000000..eb782db3
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.cyclo
@@ -0,0 +1,18 @@
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c:116:13:PWR_OverloadWfe 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c:155:6:HAL_PWR_DeInit 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c:168:6:HAL_PWR_EnableBkUpAccess 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c:181:6:HAL_PWR_DisableBkUpAccess 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c:315:6:HAL_PWR_ConfigPVD 5
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c:358:6:HAL_PWR_EnablePVD 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c:368:6:HAL_PWR_DisablePVD 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c:381:6:HAL_PWR_EnableWakeUpPin 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c:396:6:HAL_PWR_DisableWakeUpPin 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c:416:6:HAL_PWR_EnterSLEEPMode 2
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c:462:6:HAL_PWR_EnterSTOPMode 2
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c:502:6:HAL_PWR_EnterSTANDBYMode 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c:527:6:HAL_PWR_EnableSleepOnExit 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c:540:6:HAL_PWR_DisableSleepOnExit 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c:553:6:HAL_PWR_EnableSEVOnPend 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c:566:6:HAL_PWR_DisableSEVOnPend 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c:579:6:HAL_PWR_PVD_IRQHandler 2
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c:596:13:HAL_PWR_PVDCallback 1
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.d b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.d
new file mode 100644
index 00000000..ea19c3a8
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.d
@@ -0,0 +1,52 @@
+Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o: \
+ ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \
+ ../Core/Inc/stm32f1xx_hal_conf.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \
+ ../Drivers/CMSIS/Include/core_cm3.h \
+ ../Drivers/CMSIS/Include/cmsis_version.h \
+ ../Drivers/CMSIS/Include/cmsis_compiler.h \
+ ../Drivers/CMSIS/Include/cmsis_gcc.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h:
+../Core/Inc/stm32f1xx_hal_conf.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h:
+../Drivers/CMSIS/Include/core_cm3.h:
+../Drivers/CMSIS/Include/cmsis_version.h:
+../Drivers/CMSIS/Include/cmsis_compiler.h:
+../Drivers/CMSIS/Include/cmsis_gcc.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h:
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o
new file mode 100644
index 00000000..087ad653
Binary files /dev/null and b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o differ
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.su b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.su
new file mode 100644
index 00000000..be6db7da
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.su
@@ -0,0 +1,18 @@
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c:116:13:PWR_OverloadWfe 4 static,ignoring_inline_asm
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c:155:6:HAL_PWR_DeInit 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c:168:6:HAL_PWR_EnableBkUpAccess 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c:181:6:HAL_PWR_DisableBkUpAccess 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c:315:6:HAL_PWR_ConfigPVD 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c:358:6:HAL_PWR_EnablePVD 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c:368:6:HAL_PWR_DisablePVD 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c:381:6:HAL_PWR_EnableWakeUpPin 24 static,ignoring_inline_asm
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c:396:6:HAL_PWR_DisableWakeUpPin 24 static,ignoring_inline_asm
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c:416:6:HAL_PWR_EnterSLEEPMode 16 static,ignoring_inline_asm
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c:462:6:HAL_PWR_EnterSTOPMode 16 static,ignoring_inline_asm
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c:502:6:HAL_PWR_EnterSTANDBYMode 4 static,ignoring_inline_asm
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c:527:6:HAL_PWR_EnableSleepOnExit 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c:540:6:HAL_PWR_DisableSleepOnExit 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c:553:6:HAL_PWR_EnableSEVOnPend 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c:566:6:HAL_PWR_DisableSEVOnPend 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c:579:6:HAL_PWR_PVD_IRQHandler 8 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c:596:13:HAL_PWR_PVDCallback 4 static
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.cyclo b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.cyclo
new file mode 100644
index 00000000..25ec6fec
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.cyclo
@@ -0,0 +1,15 @@
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c:200:19:HAL_RCC_DeInit 10
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c:345:19:HAL_RCC_OscConfig 60
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c:811:19:HAL_RCC_ClockConfig 19
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c:1000:6:HAL_RCC_MCOConfig 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c:1037:6:HAL_RCC_EnableCSS 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c:1046:6:HAL_RCC_DisableCSS 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c:1080:10:HAL_RCC_GetSysClockFreq 4
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c:1174:10:HAL_RCC_GetHCLKFreq 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c:1185:10:HAL_RCC_GetPCLK1Freq 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c:1197:10:HAL_RCC_GetPCLK2Freq 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c:1210:6:HAL_RCC_GetOscConfig 8
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c:1310:6:HAL_RCC_GetClockConfig 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c:1345:6:HAL_RCC_NMI_IRQHandler 2
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c:1363:13:RCC_Delay 2
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c:1377:13:HAL_RCC_CSSCallback 1
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.d b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.d
new file mode 100644
index 00000000..cc75c11d
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.d
@@ -0,0 +1,52 @@
+Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o: \
+ ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \
+ ../Core/Inc/stm32f1xx_hal_conf.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \
+ ../Drivers/CMSIS/Include/core_cm3.h \
+ ../Drivers/CMSIS/Include/cmsis_version.h \
+ ../Drivers/CMSIS/Include/cmsis_compiler.h \
+ ../Drivers/CMSIS/Include/cmsis_gcc.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h:
+../Core/Inc/stm32f1xx_hal_conf.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h:
+../Drivers/CMSIS/Include/core_cm3.h:
+../Drivers/CMSIS/Include/cmsis_version.h:
+../Drivers/CMSIS/Include/cmsis_compiler.h:
+../Drivers/CMSIS/Include/cmsis_gcc.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h:
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o
new file mode 100644
index 00000000..f2870287
Binary files /dev/null and b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o differ
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.su b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.su
new file mode 100644
index 00000000..26a3a08e
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.su
@@ -0,0 +1,15 @@
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c:200:19:HAL_RCC_DeInit 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c:345:19:HAL_RCC_OscConfig 32 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c:811:19:HAL_RCC_ClockConfig 24 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c:1000:6:HAL_RCC_MCOConfig 48 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c:1037:6:HAL_RCC_EnableCSS 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c:1046:6:HAL_RCC_DisableCSS 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c:1080:10:HAL_RCC_GetSysClockFreq 32 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c:1174:10:HAL_RCC_GetHCLKFreq 4 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c:1185:10:HAL_RCC_GetPCLK1Freq 8 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c:1197:10:HAL_RCC_GetPCLK2Freq 8 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c:1210:6:HAL_RCC_GetOscConfig 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c:1310:6:HAL_RCC_GetClockConfig 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c:1345:6:HAL_RCC_NMI_IRQHandler 8 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c:1363:13:RCC_Delay 24 static,ignoring_inline_asm
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c:1377:13:HAL_RCC_CSSCallback 4 static
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.cyclo b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.cyclo
new file mode 100644
index 00000000..0bc92ec7
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.cyclo
@@ -0,0 +1,3 @@
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c:98:19:HAL_RCCEx_PeriphCLKConfig 14
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c:292:6:HAL_RCCEx_GetPeriphCLKConfig 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c:385:10:HAL_RCCEx_GetPeriphCLKFreq 15
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.d b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.d
new file mode 100644
index 00000000..24d53931
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.d
@@ -0,0 +1,52 @@
+Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o: \
+ ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \
+ ../Core/Inc/stm32f1xx_hal_conf.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \
+ ../Drivers/CMSIS/Include/core_cm3.h \
+ ../Drivers/CMSIS/Include/cmsis_version.h \
+ ../Drivers/CMSIS/Include/cmsis_compiler.h \
+ ../Drivers/CMSIS/Include/cmsis_gcc.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h:
+../Core/Inc/stm32f1xx_hal_conf.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h:
+../Drivers/CMSIS/Include/core_cm3.h:
+../Drivers/CMSIS/Include/cmsis_version.h:
+../Drivers/CMSIS/Include/cmsis_compiler.h:
+../Drivers/CMSIS/Include/cmsis_gcc.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h:
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o
new file mode 100644
index 00000000..47dd9e42
Binary files /dev/null and b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o differ
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.su b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.su
new file mode 100644
index 00000000..2037c3ff
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.su
@@ -0,0 +1,3 @@
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c:98:19:HAL_RCCEx_PeriphCLKConfig 32 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c:292:6:HAL_RCCEx_GetPeriphCLKConfig 24 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c:385:10:HAL_RCCEx_GetPeriphCLKFreq 40 static
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.cyclo b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.cyclo
new file mode 100644
index 00000000..0c9d0a07
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.cyclo
@@ -0,0 +1,28 @@
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:1931:19:USB_CoreInit 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:1951:19:USB_EnableGlobalInt 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:1976:19:USB_DisableGlobalInt 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2000:19:USB_SetCurrentMode 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2021:19:USB_DevInit 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2050:19:USB_FlushTxFifo 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2069:19:USB_FlushRxFifo 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2090:19:USB_ActivateEndpoint 22
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2223:19:USB_DeactivateEndpoint 10
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2282:19:USB_EPStartXfer 84
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2502:19:USB_EPSetStall 2
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2522:19:USB_EPClearStall 6
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2554:19:USB_EPStopXfer 6
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2599:19:USB_StopDevice 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2620:20:USB_SetDevAddress 2
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2636:20:USB_DevConnect 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2654:20:USB_DevDisconnect 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2672:10:USB_ReadInterrupts 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2685:10:USB_ReadDevAllOutEpInterrupt 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2701:10:USB_ReadDevAllInEpInterrupt 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2719:10:USB_ReadDevOutEPInterrupt 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2738:10:USB_ReadDevInEPInterrupt 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2756:7:USB_ClearInterrupts 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2773:19:USB_EP0_OutStart 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2790:19:USB_ActivateRemoteWakeup 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2802:19:USB_DeActivateRemoteWakeup 1
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2817:6:USB_WritePMA 2
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2852:6:USB_ReadPMA 3
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.d b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.d
new file mode 100644
index 00000000..ba59e559
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.d
@@ -0,0 +1,52 @@
+Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o: \
+ ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \
+ ../Core/Inc/stm32f1xx_hal_conf.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \
+ ../Drivers/CMSIS/Include/core_cm3.h \
+ ../Drivers/CMSIS/Include/cmsis_version.h \
+ ../Drivers/CMSIS/Include/cmsis_compiler.h \
+ ../Drivers/CMSIS/Include/cmsis_gcc.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h:
+../Core/Inc/stm32f1xx_hal_conf.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h:
+../Drivers/CMSIS/Include/core_cm3.h:
+../Drivers/CMSIS/Include/cmsis_version.h:
+../Drivers/CMSIS/Include/cmsis_compiler.h:
+../Drivers/CMSIS/Include/cmsis_gcc.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h:
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o
new file mode 100644
index 00000000..083b8e94
Binary files /dev/null and b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o differ
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.su b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.su
new file mode 100644
index 00000000..7198222f
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.su
@@ -0,0 +1,28 @@
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:1931:19:USB_CoreInit 24 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:1951:19:USB_EnableGlobalInt 24 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:1976:19:USB_DisableGlobalInt 24 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2000:19:USB_SetCurrentMode 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2021:19:USB_DevInit 24 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2050:19:USB_FlushTxFifo 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2069:19:USB_FlushRxFifo 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2090:19:USB_ActivateEndpoint 120 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2223:19:USB_DeactivateEndpoint 56 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2282:19:USB_EPStartXfer 272 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2502:19:USB_EPSetStall 24 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2522:19:USB_EPClearStall 32 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2554:19:USB_EPStopXfer 24 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2599:19:USB_StopDevice 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2620:20:USB_SetDevAddress 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2636:20:USB_DevConnect 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2654:20:USB_DevDisconnect 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2672:10:USB_ReadInterrupts 24 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2685:10:USB_ReadDevAllOutEpInterrupt 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2701:10:USB_ReadDevAllInEpInterrupt 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2719:10:USB_ReadDevOutEPInterrupt 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2738:10:USB_ReadDevInEPInterrupt 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2756:7:USB_ClearInterrupts 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2773:19:USB_EP0_OutStart 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2790:19:USB_ActivateRemoteWakeup 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2802:19:USB_DeActivateRemoteWakeup 16 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2817:6:USB_WritePMA 48 static
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c:2852:6:USB_ReadPMA 48 static
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/subdir.mk b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/subdir.mk
new file mode 100644
index 00000000..d9b9c0d7
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Drivers/STM32F1xx_HAL_Driver/Src/subdir.mk
@@ -0,0 +1,66 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+# Toolchain: GNU Tools for STM32 (13.3.rel1)
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+C_SRCS += \
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c \
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c \
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c \
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c \
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c \
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c \
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c \
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c \
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.c \
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.c \
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c \
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c \
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c \
+../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.c
+
+OBJS += \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o
+
+C_DEPS += \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.d \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.d \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.d \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.d \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.d \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.d \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.d \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.d \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.d \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.d \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.d \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.d \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.d \
+./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+Drivers/STM32F1xx_HAL_Driver/Src/%.o Drivers/STM32F1xx_HAL_Driver/Src/%.su Drivers/STM32F1xx_HAL_Driver/Src/%.cyclo: ../Drivers/STM32F1xx_HAL_Driver/Src/%.c Drivers/STM32F1xx_HAL_Driver/Src/subdir.mk
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+
+clean: clean-Drivers-2f-STM32F1xx_HAL_Driver-2f-Src
+
+clean-Drivers-2f-STM32F1xx_HAL_Driver-2f-Src:
+ -$(RM) ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.cyclo ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.su ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.cyclo ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.su ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.cyclo ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.su ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.cyclo ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.o ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.su ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.cyclo ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.su ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.cyclo ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.su ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.cyclo ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.su ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.cyclo ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.su ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.cyclo ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.o ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd.su ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.cyclo ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.o ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pcd_ex.su ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.cyclo ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.su ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.cyclo ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.su ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.cyclo ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.su ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.cyclo ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.d ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.o ./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usb.su
+
+.PHONY: clean-Drivers-2f-STM32F1xx_HAL_Driver-2f-Src
+
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/subdir.mk b/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/subdir.mk
new file mode 100644
index 00000000..3c351618
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/subdir.mk
@@ -0,0 +1,27 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+# Toolchain: GNU Tools for STM32 (13.3.rel1)
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+C_SRCS += \
+../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c
+
+OBJS += \
+./Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.o
+
+C_DEPS += \
+./Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/%.o Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/%.su Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/%.cyclo: ../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/%.c Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/subdir.mk
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+
+clean: clean-Middlewares-2f-ST-2f-STM32_USB_Device_Library-2f-Class-2f-HID-2f-Src
+
+clean-Middlewares-2f-ST-2f-STM32_USB_Device_Library-2f-Class-2f-HID-2f-Src:
+ -$(RM) ./Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.cyclo ./Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.d ./Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.o ./Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.su
+
+.PHONY: clean-Middlewares-2f-ST-2f-STM32_USB_Device_Library-2f-Class-2f-HID-2f-Src
+
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.cyclo b/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.cyclo
new file mode 100644
index 00000000..3d43a84a
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.cyclo
@@ -0,0 +1,10 @@
+../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:369:17:USBD_HID_Init 2
+../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:394:17:USBD_HID_DeInit 2
+../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:418:17:USBD_HID_Setup 16
+../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:536:9:USBD_HID_SendReport 3
+../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:562:10:USBD_HID_GetPollingInterval 2
+../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:591:18:USBD_HID_GetFSCfgDesc 1
+../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:604:18:USBD_HID_GetHSCfgDesc 1
+../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:617:18:USBD_HID_GetOtherSpeedCfgDesc 1
+../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:630:17:USBD_HID_DataIn 1
+../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:647:18:USBD_HID_GetDeviceQualifierDesc 1
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.d b/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.d
new file mode 100644
index 00000000..45a9d65b
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.d
@@ -0,0 +1,69 @@
+Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.o: \
+ ../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c \
+ ../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc/usbd_hid.h \
+ ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h \
+ ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h \
+ ../USB_DEVICE/Target/usbd_conf.h ../Core/Inc/main.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \
+ ../Core/Inc/stm32f1xx_hal_conf.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \
+ ../Drivers/CMSIS/Include/core_cm3.h \
+ ../Drivers/CMSIS/Include/cmsis_version.h \
+ ../Drivers/CMSIS/Include/cmsis_compiler.h \
+ ../Drivers/CMSIS/Include/cmsis_gcc.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h \
+ ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h \
+ ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h \
+ ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h \
+ ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h
+../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc/usbd_hid.h:
+../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h:
+../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h:
+../USB_DEVICE/Target/usbd_conf.h:
+../Core/Inc/main.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h:
+../Core/Inc/stm32f1xx_hal_conf.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h:
+../Drivers/CMSIS/Include/core_cm3.h:
+../Drivers/CMSIS/Include/cmsis_version.h:
+../Drivers/CMSIS/Include/cmsis_compiler.h:
+../Drivers/CMSIS/Include/cmsis_gcc.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h:
+../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h:
+../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h:
+../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h:
+../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h:
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.o b/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.o
new file mode 100644
index 00000000..a133224e
Binary files /dev/null and b/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.o differ
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.su b/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.su
new file mode 100644
index 00000000..84743dae
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.su
@@ -0,0 +1,10 @@
+../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:369:17:USBD_HID_Init 16 static
+../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:394:17:USBD_HID_DeInit 16 static
+../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:418:17:USBD_HID_Setup 40 static
+../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:536:9:USBD_HID_SendReport 32 static
+../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:562:10:USBD_HID_GetPollingInterval 24 static
+../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:591:18:USBD_HID_GetFSCfgDesc 16 static
+../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:604:18:USBD_HID_GetHSCfgDesc 16 static
+../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:617:18:USBD_HID_GetOtherSpeedCfgDesc 16 static
+../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:630:17:USBD_HID_DataIn 16 static
+../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:647:18:USBD_HID_GetDeviceQualifierDesc 16 static
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/subdir.mk b/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/subdir.mk
new file mode 100644
index 00000000..1f04680d
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/subdir.mk
@@ -0,0 +1,33 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+# Toolchain: GNU Tools for STM32 (13.3.rel1)
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables
+C_SRCS += \
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c \
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c \
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c
+
+OBJS += \
+./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o \
+./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o \
+./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
+
+C_DEPS += \
+./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.d \
+./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.d \
+./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.d
+
+
+# Each subdirectory must supply rules for building sources it contributes
+Middlewares/ST/STM32_USB_Device_Library/Core/Src/%.o Middlewares/ST/STM32_USB_Device_Library/Core/Src/%.su Middlewares/ST/STM32_USB_Device_Library/Core/Src/%.cyclo: ../Middlewares/ST/STM32_USB_Device_Library/Core/Src/%.c Middlewares/ST/STM32_USB_Device_Library/Core/Src/subdir.mk
+ arm-none-eabi-gcc "$<" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I../USB_DEVICE/App -I../USB_DEVICE/Target -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
+
+clean: clean-Middlewares-2f-ST-2f-STM32_USB_Device_Library-2f-Core-2f-Src
+
+clean-Middlewares-2f-ST-2f-STM32_USB_Device_Library-2f-Core-2f-Src:
+ -$(RM) ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.cyclo ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.su ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.cyclo ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.su ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.cyclo ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.d ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o ./Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.su
+
+.PHONY: clean-Middlewares-2f-ST-2f-STM32_USB_Device_Library-2f-Core-2f-Src
+
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.cyclo b/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.cyclo
new file mode 100644
index 00000000..0596c5bb
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.cyclo
@@ -0,0 +1,20 @@
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:89:20:USBD_Init 4
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:128:20:USBD_DeInit 1
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:152:21:USBD_RegisterClass 2
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:178:21:USBD_Start 1
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:192:21:USBD_Stop 1
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:209:21:USBD_RunTestMode 1
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:225:20:USBD_SetClassConfig 3
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:248:20:USBD_ClrClassConfig 1
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:263:20:USBD_LL_SetupStage 5
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:300:20:USBD_LL_DataOutStage 10
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:361:20:USBD_LL_DataInStage 14
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:442:20:USBD_LL_Reset 2
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:476:20:USBD_LL_SetSpeed 1
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:491:20:USBD_LL_Suspend 1
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:506:20:USBD_LL_Resume 2
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:523:20:USBD_LL_SOF 3
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:542:20:USBD_LL_IsoINIncomplete 1
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:558:20:USBD_LL_IsoOUTIncomplete 1
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:574:20:USBD_LL_DevConnected 1
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:588:20:USBD_LL_DevDisconnected 1
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.d b/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.d
new file mode 100644
index 00000000..75f6dc2f
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.d
@@ -0,0 +1,65 @@
+Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o: \
+ ../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c \
+ ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h \
+ ../USB_DEVICE/Target/usbd_conf.h ../Core/Inc/main.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \
+ ../Core/Inc/stm32f1xx_hal_conf.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \
+ ../Drivers/CMSIS/Include/core_cm3.h \
+ ../Drivers/CMSIS/Include/cmsis_version.h \
+ ../Drivers/CMSIS/Include/cmsis_compiler.h \
+ ../Drivers/CMSIS/Include/cmsis_gcc.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h \
+ ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h \
+ ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h \
+ ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h \
+ ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h
+../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h:
+../USB_DEVICE/Target/usbd_conf.h:
+../Core/Inc/main.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h:
+../Core/Inc/stm32f1xx_hal_conf.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h:
+../Drivers/CMSIS/Include/core_cm3.h:
+../Drivers/CMSIS/Include/cmsis_version.h:
+../Drivers/CMSIS/Include/cmsis_compiler.h:
+../Drivers/CMSIS/Include/cmsis_gcc.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h:
+../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h:
+../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h:
+../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h:
+../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h:
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o b/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o
new file mode 100644
index 00000000..0017de4d
Binary files /dev/null and b/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.o differ
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.su b/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.su
new file mode 100644
index 00000000..08e1adf1
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.su
@@ -0,0 +1,20 @@
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:89:20:USBD_Init 24 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:128:20:USBD_DeInit 16 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:152:21:USBD_RegisterClass 24 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:178:21:USBD_Start 16 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:192:21:USBD_Stop 16 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:209:21:USBD_RunTestMode 16 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:225:20:USBD_SetClassConfig 24 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:248:20:USBD_ClrClassConfig 16 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:263:20:USBD_LL_SetupStage 16 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:300:20:USBD_LL_DataOutStage 32 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:361:20:USBD_LL_DataInStage 32 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:442:20:USBD_LL_Reset 16 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:476:20:USBD_LL_SetSpeed 16 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:491:20:USBD_LL_Suspend 16 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:506:20:USBD_LL_Resume 16 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:523:20:USBD_LL_SOF 16 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:542:20:USBD_LL_IsoINIncomplete 16 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:558:20:USBD_LL_IsoOUTIncomplete 16 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:574:20:USBD_LL_DevConnected 16 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c:588:20:USBD_LL_DevDisconnected 16 static
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.cyclo b/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.cyclo
new file mode 100644
index 00000000..49d4197a
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.cyclo
@@ -0,0 +1,14 @@
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c:114:21:USBD_StdDevReq 12
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c:178:21:USBD_StdItfReq 9
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c:230:21:USBD_StdEPReq 36
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c:405:13:USBD_GetDescriptor 25
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c:595:13:USBD_SetAddress 6
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c:637:13:USBD_SetConfig 9
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c:712:13:USBD_GetConfig 5
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c:746:13:USBD_GetStatus 4
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c:787:13:USBD_SetFeature 2
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c:805:13:USBD_ClrFeature 3
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c:834:6:USBD_ParseSetupRequest 1
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c:852:6:USBD_CtlError 1
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c:868:6:USBD_GetString 3
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c:892:16:USBD_GetLen 2
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.d b/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.d
new file mode 100644
index 00000000..3eb79d24
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.d
@@ -0,0 +1,67 @@
+Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o: \
+ ../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c \
+ ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h \
+ ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h \
+ ../USB_DEVICE/Target/usbd_conf.h ../Core/Inc/main.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \
+ ../Core/Inc/stm32f1xx_hal_conf.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \
+ ../Drivers/CMSIS/Include/core_cm3.h \
+ ../Drivers/CMSIS/Include/cmsis_version.h \
+ ../Drivers/CMSIS/Include/cmsis_compiler.h \
+ ../Drivers/CMSIS/Include/cmsis_gcc.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h \
+ ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h \
+ ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h \
+ ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h \
+ ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h
+../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h:
+../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h:
+../USB_DEVICE/Target/usbd_conf.h:
+../Core/Inc/main.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h:
+../Core/Inc/stm32f1xx_hal_conf.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h:
+../Drivers/CMSIS/Include/core_cm3.h:
+../Drivers/CMSIS/Include/cmsis_version.h:
+../Drivers/CMSIS/Include/cmsis_compiler.h:
+../Drivers/CMSIS/Include/cmsis_gcc.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h:
+../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h:
+../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h:
+../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h:
+../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h:
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o b/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o
new file mode 100644
index 00000000..883fc62a
Binary files /dev/null and b/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.o differ
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.su b/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.su
new file mode 100644
index 00000000..08fb2f78
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.su
@@ -0,0 +1,14 @@
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c:114:21:USBD_StdDevReq 24 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c:178:21:USBD_StdItfReq 24 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c:230:21:USBD_StdEPReq 24 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c:405:13:USBD_GetDescriptor 24 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c:595:13:USBD_SetAddress 24 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c:637:13:USBD_SetConfig 16 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c:712:13:USBD_GetConfig 16 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c:746:13:USBD_GetStatus 16 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c:787:13:USBD_SetFeature 16 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c:805:13:USBD_ClrFeature 16 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c:834:6:USBD_ParseSetupRequest 16 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c:852:6:USBD_CtlError 16 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c:868:6:USBD_GetString 32 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c:892:16:USBD_GetLen 24 static
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.cyclo b/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.cyclo
new file mode 100644
index 00000000..46e4e13f
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.cyclo
@@ -0,0 +1,7 @@
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c:87:20:USBD_CtlSendData 1
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c:109:20:USBD_CtlContinueSendData 1
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c:126:20:USBD_CtlPrepareRx 1
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c:148:20:USBD_CtlContinueRx 1
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c:162:20:USBD_CtlSendStatus 1
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c:179:20:USBD_CtlReceiveStatus 1
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c:197:10:USBD_GetRxCount 1
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.d b/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.d
new file mode 100644
index 00000000..5f1ecf57
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.d
@@ -0,0 +1,65 @@
+Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o: \
+ ../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c \
+ ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h \
+ ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h \
+ ../USB_DEVICE/Target/usbd_conf.h ../Core/Inc/main.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h \
+ ../Core/Inc/stm32f1xx_hal_conf.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h \
+ ../Drivers/CMSIS/Include/core_cm3.h \
+ ../Drivers/CMSIS/Include/cmsis_version.h \
+ ../Drivers/CMSIS/Include/cmsis_compiler.h \
+ ../Drivers/CMSIS/Include/cmsis_gcc.h \
+ ../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h \
+ ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h \
+ ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h \
+ ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h \
+ ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h
+../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h:
+../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h:
+../USB_DEVICE/Target/usbd_conf.h:
+../Core/Inc/main.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h:
+../Core/Inc/stm32f1xx_hal_conf.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h:
+../Drivers/CMSIS/Include/core_cm3.h:
+../Drivers/CMSIS/Include/cmsis_version.h:
+../Drivers/CMSIS/Include/cmsis_compiler.h:
+../Drivers/CMSIS/Include/cmsis_gcc.h:
+../Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usb.h:
+../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pcd_ex.h:
+../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h:
+../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h:
+../Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h:
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o b/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o
new file mode 100644
index 00000000..d21967dc
Binary files /dev/null and b/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.o differ
diff --git a/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.su b/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.su
new file mode 100644
index 00000000..7290ee64
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.su
@@ -0,0 +1,7 @@
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c:87:20:USBD_CtlSendData 24 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c:109:20:USBD_CtlContinueSendData 24 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c:126:20:USBD_CtlPrepareRx 24 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c:148:20:USBD_CtlContinueRx 24 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c:162:20:USBD_CtlSendStatus 16 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c:179:20:USBD_CtlReceiveStatus 16 static
+../Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c:197:10:USBD_GetRxCount 16 static
diff --git a/firmware/components/HID/STM32_SKBD/Debug/STM32_SKBD.elf b/firmware/components/HID/STM32_SKBD/Debug/STM32_SKBD.elf
new file mode 100644
index 00000000..5f9cbebc
Binary files /dev/null and b/firmware/components/HID/STM32_SKBD/Debug/STM32_SKBD.elf differ
diff --git a/firmware/components/HID/STM32_SKBD/Debug/STM32_SKBD.list b/firmware/components/HID/STM32_SKBD/Debug/STM32_SKBD.list
new file mode 100644
index 00000000..bb0f616d
--- /dev/null
+++ b/firmware/components/HID/STM32_SKBD/Debug/STM32_SKBD.list
@@ -0,0 +1,16608 @@
+
+STM32_SKBD.elf: file format elf32-littlearm
+
+Sections:
+Idx Name Size VMA LMA File off Algn
+ 0 .isr_vector 0000010c 08000000 08000000 00001000 2**0
+ CONTENTS, ALLOC, LOAD, READONLY, DATA
+ 1 .text 00006d30 0800010c 0800010c 0000110c 2**2
+ CONTENTS, ALLOC, LOAD, READONLY, CODE
+ 2 .rodata 0000006c 08006e3c 08006e3c 00007e3c 2**2
+ CONTENTS, ALLOC, LOAD, READONLY, DATA
+ 3 .ARM.extab 00000000 08006ea8 08006ea8 00008158 2**0
+ CONTENTS, READONLY
+ 4 .ARM 00000000 08006ea8 08006ea8 00008158 2**0
+ CONTENTS, READONLY
+ 5 .preinit_array 00000000 08006ea8 08006ea8 00008158 2**0
+ CONTENTS, ALLOC, LOAD, DATA
+ 6 .init_array 00000004 08006ea8 08006ea8 00007ea8 2**2
+ CONTENTS, ALLOC, LOAD, READONLY, DATA
+ 7 .fini_array 00000004 08006eac 08006eac 00007eac 2**2
+ CONTENTS, ALLOC, LOAD, READONLY, DATA
+ 8 .data 00000158 20000000 08006eb0 00008000 2**2
+ CONTENTS, ALLOC, LOAD, DATA
+ 9 .bss 000007dc 20000158 08007008 00008158 2**2
+ ALLOC
+ 10 ._user_heap_stack 00000604 20000934 08007008 00008934 2**0
+ ALLOC
+ 11 .ARM.attributes 00000029 00000000 00000000 00008158 2**0
+ CONTENTS, READONLY
+ 12 .debug_info 0000aaa2 00000000 00000000 00008181 2**0
+ CONTENTS, READONLY, DEBUGGING, OCTETS
+ 13 .debug_abbrev 00002529 00000000 00000000 00012c23 2**0
+ CONTENTS, READONLY, DEBUGGING, OCTETS
+ 14 .debug_aranges 000009b0 00000000 00000000 00015150 2**3
+ CONTENTS, READONLY, DEBUGGING, OCTETS
+ 15 .debug_rnglists 0000070d 00000000 00000000 00015b00 2**0
+ CONTENTS, READONLY, DEBUGGING, OCTETS
+ 16 .debug_macro 00018b13 00000000 00000000 0001620d 2**0
+ CONTENTS, READONLY, DEBUGGING, OCTETS
+ 17 .debug_line 0000cd22 00000000 00000000 0002ed20 2**0
+ CONTENTS, READONLY, DEBUGGING, OCTETS
+ 18 .debug_str 000841b9 00000000 00000000 0003ba42 2**0
+ CONTENTS, READONLY, DEBUGGING, OCTETS
+ 19 .comment 00000043 00000000 00000000 000bfbfb 2**0
+ CONTENTS, READONLY
+ 20 .debug_frame 00002518 00000000 00000000 000bfc40 2**2
+ CONTENTS, READONLY, DEBUGGING, OCTETS
+ 21 .debug_line_str 0000005d 00000000 00000000 000c2158 2**0
+ CONTENTS, READONLY, DEBUGGING, OCTETS
+
+Disassembly of section .text:
+
+0800010c <__do_global_dtors_aux>:
+ 800010c: b510 push {r4, lr}
+ 800010e: 4c05 ldr r4, [pc, #20] @ (8000124 <__do_global_dtors_aux+0x18>)
+ 8000110: 7823 ldrb r3, [r4, #0]
+ 8000112: b933 cbnz r3, 8000122 <__do_global_dtors_aux+0x16>
+ 8000114: 4b04 ldr r3, [pc, #16] @ (8000128 <__do_global_dtors_aux+0x1c>)
+ 8000116: b113 cbz r3, 800011e <__do_global_dtors_aux+0x12>
+ 8000118: 4804 ldr r0, [pc, #16] @ (800012c <__do_global_dtors_aux+0x20>)
+ 800011a: f3af 8000 nop.w
+ 800011e: 2301 movs r3, #1
+ 8000120: 7023 strb r3, [r4, #0]
+ 8000122: bd10 pop {r4, pc}
+ 8000124: 20000158 .word 0x20000158
+ 8000128: 00000000 .word 0x00000000
+ 800012c: 08006e24 .word 0x08006e24
+
+08000130 :
+ 8000130: b508 push {r3, lr}
+ 8000132: 4b03 ldr r3, [pc, #12] @ (8000140 )
+ 8000134: b11b cbz r3, 800013e
+ 8000136: 4903 ldr r1, [pc, #12] @ (8000144 )
+ 8000138: 4803 ldr r0, [pc, #12] @ (8000148 )
+ 800013a: f3af 8000 nop.w
+ 800013e: bd08 pop {r3, pc}
+ 8000140: 00000000 .word 0x00000000
+ 8000144: 2000015c .word 0x2000015c
+ 8000148: 08006e24 .word 0x08006e24
+
+0800014c :
+/**
+ * @brief The application entry point.
+ * @retval int
+ */
+int main(void)
+{
+ 800014c: b580 push {r7, lr}
+ 800014e: af00 add r7, sp, #0
+ /* USER CODE END 1 */
+
+ /* MCU Configuration--------------------------------------------------------*/
+
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
+ 8000150: f000 f94c bl 80003ec
+ /* USER CODE BEGIN Init */
+
+ /* USER CODE END Init */
+
+ /* Configure the system clock */
+ SystemClock_Config();
+ 8000154: f000 f834 bl 80001c0
+ /* USER CODE BEGIN SysInit */
+
+ /* USER CODE END SysInit */
+
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ 8000158: f000 f88c bl 8000274
+ MX_USB_DEVICE_Init();
+ 800015c: f006 fa7e bl 800665c
+ while (1)
+ {
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ HIDkeyBoard.MODIFIER = 0x02; // Print Char in Capital
+ 8000160: 4b15 ldr r3, [pc, #84] @ (80001b8 )
+ 8000162: 2202 movs r2, #2
+ 8000164: 701a strb r2, [r3, #0]
+ HIDkeyBoard.KEYCODE1 = 0x04; // Print 'A'
+ 8000166: 4b14 ldr r3, [pc, #80] @ (80001b8 )
+ 8000168: 2204 movs r2, #4
+ 800016a: 709a strb r2, [r3, #2]
+ HIDkeyBoard.KEYCODE2 = 0x05; // Print 'B'
+ 800016c: 4b12 ldr r3, [pc, #72] @ (80001b8 )
+ 800016e: 2205 movs r2, #5
+ 8000170: 70da strb r2, [r3, #3]
+ HIDkeyBoard.KEYCODE3 = 0x06; // Print 'C'
+ 8000172: 4b11 ldr r3, [pc, #68] @ (80001b8 )
+ 8000174: 2206 movs r2, #6
+ 8000176: 711a strb r2, [r3, #4]
+ USBD_HID_SendReport(&hUsbDeviceFS,&HIDkeyBoard,sizeof(HIDkeyBoard));
+ 8000178: 2208 movs r2, #8
+ 800017a: 490f ldr r1, [pc, #60] @ (80001b8 )
+ 800017c: 480f ldr r0, [pc, #60] @ (80001bc )
+ 800017e: f005 f981 bl 8005484
+ HAL_Delay(50);
+ 8000182: 2032 movs r0, #50 @ 0x32
+ 8000184: f000 f994 bl 80004b0
+ HIDkeyBoard.MODIFIER = 0x00; // Release Shift
+ 8000188: 4b0b ldr r3, [pc, #44] @ (80001b8 )
+ 800018a: 2200 movs r2, #0
+ 800018c: 701a strb r2, [r3, #0]
+ HIDkeyBoard.KEYCODE1 = 0x00; // Release Key
+ 800018e: 4b0a ldr r3, [pc, #40] @ (80001b8 )
+ 8000190: 2200 movs r2, #0
+ 8000192: 709a strb r2, [r3, #2]
+ HIDkeyBoard.KEYCODE2 = 0x00; // Release Key
+ 8000194: 4b08 ldr r3, [pc, #32] @ (80001b8 )
+ 8000196: 2200 movs r2, #0
+ 8000198: 70da strb r2, [r3, #3]
+ HIDkeyBoard.KEYCODE3 = 0x00; // Release Key
+ 800019a: 4b07 ldr r3, [pc, #28] @ (80001b8 )
+ 800019c: 2200 movs r2, #0
+ 800019e: 711a strb r2, [r3, #4]
+ USBD_HID_SendReport(&hUsbDeviceFS,&HIDkeyBoard,sizeof(HIDkeyBoard));
+ 80001a0: 2208 movs r2, #8
+ 80001a2: 4905 ldr r1, [pc, #20] @ (80001b8 )
+ 80001a4: 4805 ldr r0, [pc, #20] @ (80001bc )
+ 80001a6: f005 f96d bl 8005484
+ HAL_Delay(1000);
+ 80001aa: f44f 707a mov.w r0, #1000 @ 0x3e8
+ 80001ae: f000 f97f bl 80004b0
+ HIDkeyBoard.MODIFIER = 0x02; // Print Char in Capital
+ 80001b2: bf00 nop
+ 80001b4: e7d4 b.n 8000160
+ 80001b6: bf00 nop
+ 80001b8: 20000174 .word 0x20000174
+ 80001bc: 20000184 .word 0x20000184
+
+080001c0 :
+/**
+ * @brief System Clock Configuration
+ * @retval None
+ */
+void SystemClock_Config(void)
+{
+ 80001c0: b580 push {r7, lr}
+ 80001c2: b094 sub sp, #80 @ 0x50
+ 80001c4: af00 add r7, sp, #0
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ 80001c6: f107 0328 add.w r3, r7, #40 @ 0x28
+ 80001ca: 2228 movs r2, #40 @ 0x28
+ 80001cc: 2100 movs r1, #0
+ 80001ce: 4618 mov r0, r3
+ 80001d0: f006 fdfc bl 8006dcc
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+ 80001d4: f107 0314 add.w r3, r7, #20
+ 80001d8: 2200 movs r2, #0
+ 80001da: 601a str r2, [r3, #0]
+ 80001dc: 605a str r2, [r3, #4]
+ 80001de: 609a str r2, [r3, #8]
+ 80001e0: 60da str r2, [r3, #12]
+ 80001e2: 611a str r2, [r3, #16]
+ RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
+ 80001e4: 1d3b adds r3, r7, #4
+ 80001e6: 2200 movs r2, #0
+ 80001e8: 601a str r2, [r3, #0]
+ 80001ea: 605a str r2, [r3, #4]
+ 80001ec: 609a str r2, [r3, #8]
+ 80001ee: 60da str r2, [r3, #12]
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
+ 80001f0: 2301 movs r3, #1
+ 80001f2: 62bb str r3, [r7, #40] @ 0x28
+ RCC_OscInitStruct.HSEState = RCC_HSE_ON;
+ 80001f4: f44f 3380 mov.w r3, #65536 @ 0x10000
+ 80001f8: 62fb str r3, [r7, #44] @ 0x2c
+ RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
+ 80001fa: 2300 movs r3, #0
+ 80001fc: 633b str r3, [r7, #48] @ 0x30
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ 80001fe: 2301 movs r3, #1
+ 8000200: 63bb str r3, [r7, #56] @ 0x38
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ 8000202: 2302 movs r3, #2
+ 8000204: 647b str r3, [r7, #68] @ 0x44
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ 8000206: f44f 3380 mov.w r3, #65536 @ 0x10000
+ 800020a: 64bb str r3, [r7, #72] @ 0x48
+ RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
+ 800020c: f44f 13e0 mov.w r3, #1835008 @ 0x1c0000
+ 8000210: 64fb str r3, [r7, #76] @ 0x4c
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ 8000212: f107 0328 add.w r3, r7, #40 @ 0x28
+ 8000216: 4618 mov r0, r3
+ 8000218: f001 ffc4 bl 80021a4
+ 800021c: 4603 mov r3, r0
+ 800021e: 2b00 cmp r3, #0
+ 8000220: d001 beq.n 8000226
+ {
+ Error_Handler();
+ 8000222: f000 f849 bl 80002b8
+ }
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ 8000226: 230f movs r3, #15
+ 8000228: 617b str r3, [r7, #20]
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
+ 800022a: 2302 movs r3, #2
+ 800022c: 61bb str r3, [r7, #24]
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ 800022e: 2300 movs r3, #0
+ 8000230: 61fb str r3, [r7, #28]
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
+ 8000232: f44f 6380 mov.w r3, #1024 @ 0x400
+ 8000236: 623b str r3, [r7, #32]
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+ 8000238: 2300 movs r3, #0
+ 800023a: 627b str r3, [r7, #36] @ 0x24
+
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
+ 800023c: f107 0314 add.w r3, r7, #20
+ 8000240: 2102 movs r1, #2
+ 8000242: 4618 mov r0, r3
+ 8000244: f002 fa30 bl 80026a8
+ 8000248: 4603 mov r3, r0
+ 800024a: 2b00 cmp r3, #0
+ 800024c: d001 beq.n 8000252
+ {
+ Error_Handler();
+ 800024e: f000 f833 bl 80002b8
+ }
+ PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB;
+ 8000252: 2310 movs r3, #16
+ 8000254: 607b str r3, [r7, #4]
+ PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5;
+ 8000256: 2300 movs r3, #0
+ 8000258: 613b str r3, [r7, #16]
+ if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
+ 800025a: 1d3b adds r3, r7, #4
+ 800025c: 4618 mov r0, r3
+ 800025e: f002 fb7f bl 8002960
+ 8000262: 4603 mov r3, r0
+ 8000264: 2b00 cmp r3, #0
+ 8000266: d001 beq.n 800026c
+ {
+ Error_Handler();
+ 8000268: f000 f826 bl 80002b8
+ }
+}
+ 800026c: bf00 nop
+ 800026e: 3750 adds r7, #80 @ 0x50
+ 8000270: 46bd mov sp, r7
+ 8000272: bd80 pop {r7, pc}
+
+08000274 :
+ * @brief GPIO Initialization Function
+ * @param None
+ * @retval None
+ */
+static void MX_GPIO_Init(void)
+{
+ 8000274: b480 push {r7}
+ 8000276: b083 sub sp, #12
+ 8000278: af00 add r7, sp, #0
+ /* USER CODE BEGIN MX_GPIO_Init_1 */
+
+ /* USER CODE END MX_GPIO_Init_1 */
+
+ /* GPIO Ports Clock Enable */
+ __HAL_RCC_GPIOD_CLK_ENABLE();
+ 800027a: 4b0e ldr r3, [pc, #56] @ (80002b4 )
+ 800027c: 699b ldr r3, [r3, #24]
+ 800027e: 4a0d ldr r2, [pc, #52] @ (80002b4 )
+ 8000280: f043 0320 orr.w r3, r3, #32
+ 8000284: 6193 str r3, [r2, #24]
+ 8000286: 4b0b ldr r3, [pc, #44] @ (80002b4 )
+ 8000288: 699b ldr r3, [r3, #24]
+ 800028a: f003 0320 and.w r3, r3, #32
+ 800028e: 607b str r3, [r7, #4]
+ 8000290: 687b ldr r3, [r7, #4]
+ __HAL_RCC_GPIOA_CLK_ENABLE();
+ 8000292: 4b08 ldr r3, [pc, #32] @ (80002b4 )
+ 8000294: 699b ldr r3, [r3, #24]
+ 8000296: 4a07 ldr r2, [pc, #28] @ (80002b4 )
+ 8000298: f043 0304 orr.w r3, r3, #4
+ 800029c: 6193 str r3, [r2, #24]
+ 800029e: 4b05 ldr r3, [pc, #20] @ (80002b4 )
+ 80002a0: 699b ldr r3, [r3, #24]
+ 80002a2: f003 0304 and.w r3, r3, #4
+ 80002a6: 603b str r3, [r7, #0]
+ 80002a8: 683b ldr r3, [r7, #0]
+
+ /* USER CODE BEGIN MX_GPIO_Init_2 */
+
+ /* USER CODE END MX_GPIO_Init_2 */
+}
+ 80002aa: bf00 nop
+ 80002ac: 370c adds r7, #12
+ 80002ae: 46bd mov sp, r7
+ 80002b0: bc80 pop {r7}
+ 80002b2: 4770 bx lr
+ 80002b4: 40021000 .word 0x40021000
+
+080002b8 :
+/**
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
+void Error_Handler(void)
+{
+ 80002b8: b480 push {r7}
+ 80002ba: af00 add r7, sp, #0
+ \details Disables IRQ interrupts by setting the I-bit in the CPSR.
+ Can only be executed in Privileged modes.
+ */
+__STATIC_FORCEINLINE void __disable_irq(void)
+{
+ __ASM volatile ("cpsid i" : : : "memory");
+ 80002bc: b672 cpsid i
+}
+ 80002be: bf00 nop
+ /* USER CODE BEGIN Error_Handler_Debug */
+ /* User can add his own implementation to report the HAL error return state */
+ __disable_irq();
+ while (1)
+ 80002c0: bf00 nop
+ 80002c2: e7fd b.n 80002c0
+
+080002c4 :
+/* USER CODE END 0 */
+/**
+ * Initializes the Global MSP.
+ */
+void HAL_MspInit(void)
+{
+ 80002c4: b480 push {r7}
+ 80002c6: b085 sub sp, #20
+ 80002c8: af00 add r7, sp, #0
+
+ /* USER CODE BEGIN MspInit 0 */
+
+ /* USER CODE END MspInit 0 */
+
+ __HAL_RCC_AFIO_CLK_ENABLE();
+ 80002ca: 4b15 ldr r3, [pc, #84] @ (8000320 )
+ 80002cc: 699b ldr r3, [r3, #24]
+ 80002ce: 4a14 ldr r2, [pc, #80] @ (8000320 )
+ 80002d0: f043 0301 orr.w r3, r3, #1
+ 80002d4: 6193 str r3, [r2, #24]
+ 80002d6: 4b12 ldr r3, [pc, #72] @ (8000320 )
+ 80002d8: 699b ldr r3, [r3, #24]
+ 80002da: f003 0301 and.w r3, r3, #1
+ 80002de: 60bb str r3, [r7, #8]
+ 80002e0: 68bb ldr r3, [r7, #8]
+ __HAL_RCC_PWR_CLK_ENABLE();
+ 80002e2: 4b0f ldr r3, [pc, #60] @ (8000320 )
+ 80002e4: 69db ldr r3, [r3, #28]
+ 80002e6: 4a0e ldr r2, [pc, #56] @ (8000320 )
+ 80002e8: f043 5380 orr.w r3, r3, #268435456 @ 0x10000000
+ 80002ec: 61d3 str r3, [r2, #28]
+ 80002ee: 4b0c ldr r3, [pc, #48] @ (8000320 )
+ 80002f0: 69db ldr r3, [r3, #28]
+ 80002f2: f003 5380 and.w r3, r3, #268435456 @ 0x10000000
+ 80002f6: 607b str r3, [r7, #4]
+ 80002f8: 687b ldr r3, [r7, #4]
+
+ /* System interrupt init*/
+
+ /** NOJTAG: JTAG-DP Disabled and SW-DP Enabled
+ */
+ __HAL_AFIO_REMAP_SWJ_NOJTAG();
+ 80002fa: 4b0a ldr r3, [pc, #40] @ (8000324 )
+ 80002fc: 685b ldr r3, [r3, #4]
+ 80002fe: 60fb str r3, [r7, #12]
+ 8000300: 68fb ldr r3, [r7, #12]
+ 8000302: f023 63e0 bic.w r3, r3, #117440512 @ 0x7000000
+ 8000306: 60fb str r3, [r7, #12]
+ 8000308: 68fb ldr r3, [r7, #12]
+ 800030a: f043 7300 orr.w r3, r3, #33554432 @ 0x2000000
+ 800030e: 60fb str r3, [r7, #12]
+ 8000310: 4a04 ldr r2, [pc, #16] @ (8000324 )
+ 8000312: 68fb ldr r3, [r7, #12]
+ 8000314: 6053 str r3, [r2, #4]
+
+ /* USER CODE BEGIN MspInit 1 */
+
+ /* USER CODE END MspInit 1 */
+}
+ 8000316: bf00 nop
+ 8000318: 3714 adds r7, #20
+ 800031a: 46bd mov sp, r7
+ 800031c: bc80 pop {r7}
+ 800031e: 4770 bx lr
+ 8000320: 40021000 .word 0x40021000
+ 8000324: 40010000 .word 0x40010000
+
+08000328 :
+/******************************************************************************/
+/**
+ * @brief This function handles Non maskable interrupt.
+ */
+void NMI_Handler(void)
+{
+ 8000328: b480 push {r7}
+ 800032a: af00 add r7, sp, #0
+ /* USER CODE BEGIN NonMaskableInt_IRQn 0 */
+
+ /* USER CODE END NonMaskableInt_IRQn 0 */
+ /* USER CODE BEGIN NonMaskableInt_IRQn 1 */
+ while (1)
+ 800032c: bf00 nop
+ 800032e: e7fd b.n 800032c
+
+08000330 :
+
+/**
+ * @brief This function handles Hard fault interrupt.
+ */
+void HardFault_Handler(void)
+{
+ 8000330: b480 push {r7}
+ 8000332: af00 add r7, sp, #0
+ /* USER CODE BEGIN HardFault_IRQn 0 */
+
+ /* USER CODE END HardFault_IRQn 0 */
+ while (1)
+ 8000334: bf00 nop
+ 8000336: e7fd b.n 8000334
+
+08000338 :
+
+/**
+ * @brief This function handles Memory management fault.
+ */
+void MemManage_Handler(void)
+{
+ 8000338: b480 push {r7}
+ 800033a: af00 add r7, sp, #0
+ /* USER CODE BEGIN MemoryManagement_IRQn 0 */
+
+ /* USER CODE END MemoryManagement_IRQn 0 */
+ while (1)
+ 800033c: bf00 nop
+ 800033e: e7fd b.n 800033c
+
+08000340 :
+
+/**
+ * @brief This function handles Prefetch fault, memory access fault.
+ */
+void BusFault_Handler(void)
+{
+ 8000340: b480 push {r7}
+ 8000342: af00 add r7, sp, #0
+ /* USER CODE BEGIN BusFault_IRQn 0 */
+
+ /* USER CODE END BusFault_IRQn 0 */
+ while (1)
+ 8000344: bf00 nop
+ 8000346: e7fd b.n 8000344
+
+08000348 :
+
+/**
+ * @brief This function handles Undefined instruction or illegal state.
+ */
+void UsageFault_Handler(void)
+{
+ 8000348: b480 push {r7}
+ 800034a: af00 add r7, sp, #0
+ /* USER CODE BEGIN UsageFault_IRQn 0 */
+
+ /* USER CODE END UsageFault_IRQn 0 */
+ while (1)
+ 800034c: bf00 nop
+ 800034e: e7fd b.n 800034c
+
+08000350 :
+
+/**
+ * @brief This function handles System service call via SWI instruction.
+ */
+void SVC_Handler(void)
+{
+ 8000350: b480 push {r7}
+ 8000352: af00 add r7, sp, #0
+
+ /* USER CODE END SVCall_IRQn 0 */
+ /* USER CODE BEGIN SVCall_IRQn 1 */
+
+ /* USER CODE END SVCall_IRQn 1 */
+}
+ 8000354: bf00 nop
+ 8000356: 46bd mov sp, r7
+ 8000358: bc80 pop {r7}
+ 800035a: 4770 bx lr
+
+0800035c :
+
+/**
+ * @brief This function handles Debug monitor.
+ */
+void DebugMon_Handler(void)
+{
+ 800035c: b480 push {r7}
+ 800035e: af00 add r7, sp, #0
+
+ /* USER CODE END DebugMonitor_IRQn 0 */
+ /* USER CODE BEGIN DebugMonitor_IRQn 1 */
+
+ /* USER CODE END DebugMonitor_IRQn 1 */
+}
+ 8000360: bf00 nop
+ 8000362: 46bd mov sp, r7
+ 8000364: bc80 pop {r7}
+ 8000366: 4770 bx lr
+
+08000368 :
+
+/**
+ * @brief This function handles Pendable request for system service.
+ */
+void PendSV_Handler(void)
+{
+ 8000368: b480 push {r7}
+ 800036a: af00 add r7, sp, #0
+
+ /* USER CODE END PendSV_IRQn 0 */
+ /* USER CODE BEGIN PendSV_IRQn 1 */
+
+ /* USER CODE END PendSV_IRQn 1 */
+}
+ 800036c: bf00 nop
+ 800036e: 46bd mov sp, r7
+ 8000370: bc80 pop {r7}
+ 8000372: 4770 bx lr
+
+08000374 :
+
+/**
+ * @brief This function handles System tick timer.
+ */
+void SysTick_Handler(void)
+{
+ 8000374: b580 push {r7, lr}
+ 8000376: af00 add r7, sp, #0
+ /* USER CODE BEGIN SysTick_IRQn 0 */
+
+ /* USER CODE END SysTick_IRQn 0 */
+ HAL_IncTick();
+ 8000378: f000 f87e bl 8000478
+ /* USER CODE BEGIN SysTick_IRQn 1 */
+
+ /* USER CODE END SysTick_IRQn 1 */
+}
+ 800037c: bf00 nop
+ 800037e: bd80 pop {r7, pc}
+
+08000380 :
+
+/**
+ * @brief This function handles USB low priority or CAN RX0 interrupts.
+ */
+void USB_LP_CAN1_RX0_IRQHandler(void)
+{
+ 8000380: b580 push {r7, lr}
+ 8000382: af00 add r7, sp, #0
+ /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 0 */
+
+ /* USER CODE END USB_LP_CAN1_RX0_IRQn 0 */
+ HAL_PCD_IRQHandler(&hpcd_USB_FS);
+ 8000384: 4802 ldr r0, [pc, #8] @ (8000390 )
+ 8000386: f000 fae0 bl 800094a
+ /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 1 */
+
+ /* USER CODE END USB_LP_CAN1_RX0_IRQn 1 */
+}
+ 800038a: bf00 nop
+ 800038c: bd80 pop {r7, pc}
+ 800038e: bf00 nop
+ 8000390: 20000648 .word 0x20000648
+
+08000394 :
+ * @note This function should be used only after reset.
+ * @param None
+ * @retval None
+ */
+void SystemInit (void)
+{
+ 8000394: b480 push {r7}
+ 8000396: af00 add r7, sp, #0
+
+ /* Configure the Vector Table location -------------------------------------*/
+#if defined(USER_VECT_TAB_ADDRESS)
+ SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */
+#endif /* USER_VECT_TAB_ADDRESS */
+}
+ 8000398: bf00 nop
+ 800039a: 46bd mov sp, r7
+ 800039c: bc80 pop {r7}
+ 800039e: 4770 bx lr
+
+080003a0 :
+ .weak Reset_Handler
+ .type Reset_Handler, %function
+Reset_Handler:
+
+/* Call the clock system initialization function.*/
+ bl SystemInit
+ 80003a0: f7ff fff8 bl 8000394
+
+/* Copy the data segment initializers from flash to SRAM */
+ ldr r0, =_sdata
+ 80003a4: 480b ldr r0, [pc, #44] @ (80003d4 )
+ ldr r1, =_edata
+ 80003a6: 490c ldr r1, [pc, #48] @ (80003d8 )
+ ldr r2, =_sidata
+ 80003a8: 4a0c ldr r2, [pc, #48] @ (80003dc )
+ movs r3, #0
+ 80003aa: 2300 movs r3, #0
+ b LoopCopyDataInit
+ 80003ac: e002 b.n 80003b4
+
+080003ae :
+
+CopyDataInit:
+ ldr r4, [r2, r3]
+ 80003ae: 58d4 ldr r4, [r2, r3]
+ str r4, [r0, r3]
+ 80003b0: 50c4 str r4, [r0, r3]
+ adds r3, r3, #4
+ 80003b2: 3304 adds r3, #4
+
+080003b4 :
+
+LoopCopyDataInit:
+ adds r4, r0, r3
+ 80003b4: 18c4 adds r4, r0, r3
+ cmp r4, r1
+ 80003b6: 428c cmp r4, r1
+ bcc CopyDataInit
+ 80003b8: d3f9 bcc.n 80003ae
+
+/* Zero fill the bss segment. */
+ ldr r2, =_sbss
+ 80003ba: 4a09 ldr r2, [pc, #36] @ (80003e0 )
+ ldr r4, =_ebss
+ 80003bc: 4c09 ldr r4, [pc, #36] @ (80003e4 )
+ movs r3, #0
+ 80003be: 2300 movs r3, #0
+ b LoopFillZerobss
+ 80003c0: e001 b.n 80003c6
+
+080003c2 :
+
+FillZerobss:
+ str r3, [r2]
+ 80003c2: 6013 str r3, [r2, #0]
+ adds r2, r2, #4
+ 80003c4: 3204 adds r2, #4
+
+080003c6 :
+
+LoopFillZerobss:
+ cmp r2, r4
+ 80003c6: 42a2 cmp r2, r4
+ bcc FillZerobss
+ 80003c8: d3fb bcc.n 80003c2
+
+/* Call static constructors */
+ bl __libc_init_array
+ 80003ca: f006 fd07 bl 8006ddc <__libc_init_array>
+/* Call the application's entry point.*/
+ bl main
+ 80003ce: f7ff febd bl 800014c
+ bx lr
+ 80003d2: 4770 bx lr
+ ldr r0, =_sdata
+ 80003d4: 20000000 .word 0x20000000
+ ldr r1, =_edata
+ 80003d8: 20000158 .word 0x20000158
+ ldr r2, =_sidata
+ 80003dc: 08006eb0 .word 0x08006eb0
+ ldr r2, =_sbss
+ 80003e0: 20000158 .word 0x20000158
+ ldr r4, =_ebss
+ 80003e4: 20000934 .word 0x20000934
+
+080003e8 :
+ * @retval : None
+*/
+ .section .text.Default_Handler,"ax",%progbits
+Default_Handler:
+Infinite_Loop:
+ b Infinite_Loop
+ 80003e8: e7fe b.n 80003e8
+ ...
+
+080003ec :
+ * need to ensure that the SysTick time base is always set to 1 millisecond
+ * to have correct HAL operation.
+ * @retval HAL status
+ */
+HAL_StatusTypeDef HAL_Init(void)
+{
+ 80003ec: b580 push {r7, lr}
+ 80003ee: af00 add r7, sp, #0
+ defined(STM32F102x6) || defined(STM32F102xB) || \
+ defined(STM32F103x6) || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG) || \
+ defined(STM32F105xC) || defined(STM32F107xC)
+
+ /* Prefetch buffer is not available on value line devices */
+ __HAL_FLASH_PREFETCH_BUFFER_ENABLE();
+ 80003f0: 4b08 ldr r3, [pc, #32] @ (8000414 )
+ 80003f2: 681b ldr r3, [r3, #0]
+ 80003f4: 4a07 ldr r2, [pc, #28] @ (8000414 )
+ 80003f6: f043 0310 orr.w r3, r3, #16
+ 80003fa: 6013 str r3, [r2, #0]
+#endif
+#endif /* PREFETCH_ENABLE */
+
+ /* Set Interrupt Group Priority */
+ HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);
+ 80003fc: 2003 movs r0, #3
+ 80003fe: f000 f947 bl 8000690
+
+ /* Use systick as time base source and configure 1ms tick (default clock after Reset is HSI) */
+ HAL_InitTick(TICK_INT_PRIORITY);
+ 8000402: 200f movs r0, #15
+ 8000404: f000 f808 bl 8000418
+
+ /* Init the low level hardware */
+ HAL_MspInit();
+ 8000408: f7ff ff5c bl 80002c4
+
+ /* Return function status */
+ return HAL_OK;
+ 800040c: 2300 movs r3, #0
+}
+ 800040e: 4618 mov r0, r3
+ 8000410: bd80 pop {r7, pc}
+ 8000412: bf00 nop
+ 8000414: 40022000 .word 0x40022000
+
+08000418 :
+ * implementation in user file.
+ * @param TickPriority Tick interrupt priority.
+ * @retval HAL status
+ */
+__weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority)
+{
+ 8000418: b580 push {r7, lr}
+ 800041a: b082 sub sp, #8
+ 800041c: af00 add r7, sp, #0
+ 800041e: 6078 str r0, [r7, #4]
+ /* Configure the SysTick to have interrupt in 1ms time basis*/
+ if (HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq)) > 0U)
+ 8000420: 4b12 ldr r3, [pc, #72] @ (800046c )
+ 8000422: 681a ldr r2, [r3, #0]
+ 8000424: 4b12 ldr r3, [pc, #72] @ (8000470 )
+ 8000426: 781b ldrb r3, [r3, #0]
+ 8000428: 4619 mov r1, r3
+ 800042a: f44f 737a mov.w r3, #1000 @ 0x3e8
+ 800042e: fbb3 f3f1 udiv r3, r3, r1
+ 8000432: fbb2 f3f3 udiv r3, r2, r3
+ 8000436: 4618 mov r0, r3
+ 8000438: f000 f95f bl 80006fa
+ 800043c: 4603 mov r3, r0
+ 800043e: 2b00 cmp r3, #0
+ 8000440: d001 beq.n 8000446
+ {
+ return HAL_ERROR;
+ 8000442: 2301 movs r3, #1
+ 8000444: e00e b.n 8000464
+ }
+
+ /* Configure the SysTick IRQ priority */
+ if (TickPriority < (1UL << __NVIC_PRIO_BITS))
+ 8000446: 687b ldr r3, [r7, #4]
+ 8000448: 2b0f cmp r3, #15
+ 800044a: d80a bhi.n 8000462
+ {
+ HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U);
+ 800044c: 2200 movs r2, #0
+ 800044e: 6879 ldr r1, [r7, #4]
+ 8000450: f04f 30ff mov.w r0, #4294967295
+ 8000454: f000 f927 bl 80006a6
+ uwTickPrio = TickPriority;
+ 8000458: 4a06 ldr r2, [pc, #24] @ (8000474 )
+ 800045a: 687b ldr r3, [r7, #4]
+ 800045c: 6013 str r3, [r2, #0]
+ {
+ return HAL_ERROR;
+ }
+
+ /* Return function status */
+ return HAL_OK;
+ 800045e: 2300 movs r3, #0
+ 8000460: e000 b.n 8000464
+ return HAL_ERROR;
+ 8000462: 2301 movs r3, #1
+}
+ 8000464: 4618 mov r0, r3
+ 8000466: 3708 adds r7, #8
+ 8000468: 46bd mov sp, r7
+ 800046a: bd80 pop {r7, pc}
+ 800046c: 20000000 .word 0x20000000
+ 8000470: 20000008 .word 0x20000008
+ 8000474: 20000004 .word 0x20000004
+
+08000478 :
+ * @note This function is declared as __weak to be overwritten in case of other
+ * implementations in user file.
+ * @retval None
+ */
+__weak void HAL_IncTick(void)
+{
+ 8000478: b480 push {r7}
+ 800047a: af00 add r7, sp, #0
+ uwTick += uwTickFreq;
+ 800047c: 4b05 ldr r3, [pc, #20] @ (8000494 )
+ 800047e: 781b ldrb r3, [r3, #0]
+ 8000480: 461a mov r2, r3
+ 8000482: 4b05 ldr r3, [pc, #20] @ (8000498 )
+ 8000484: 681b ldr r3, [r3, #0]
+ 8000486: 4413 add r3, r2
+ 8000488: 4a03 ldr r2, [pc, #12] @ (8000498 )
+ 800048a: 6013 str r3, [r2, #0]
+}
+ 800048c: bf00 nop
+ 800048e: 46bd mov sp, r7
+ 8000490: bc80 pop {r7}
+ 8000492: 4770 bx lr
+ 8000494: 20000008 .word 0x20000008
+ 8000498: 2000017c .word 0x2000017c
+
+0800049c :
+ * @note This function is declared as __weak to be overwritten in case of other
+ * implementations in user file.
+ * @retval tick value
+ */
+__weak uint32_t HAL_GetTick(void)
+{
+ 800049c: b480 push {r7}
+ 800049e: af00 add r7, sp, #0
+ return uwTick;
+ 80004a0: 4b02 ldr r3, [pc, #8] @ (80004ac )
+ 80004a2: 681b ldr r3, [r3, #0]
+}
+ 80004a4: 4618 mov r0, r3
+ 80004a6: 46bd mov sp, r7
+ 80004a8: bc80 pop {r7}
+ 80004aa: 4770 bx lr
+ 80004ac: 2000017c .word 0x2000017c
+
+080004b0 :
+ * implementations in user file.
+ * @param Delay specifies the delay time length, in milliseconds.
+ * @retval None
+ */
+__weak void HAL_Delay(uint32_t Delay)
+{
+ 80004b0: b580 push {r7, lr}
+ 80004b2: b084 sub sp, #16
+ 80004b4: af00 add r7, sp, #0
+ 80004b6: 6078 str r0, [r7, #4]
+ uint32_t tickstart = HAL_GetTick();
+ 80004b8: f7ff fff0 bl 800049c
+ 80004bc: 60b8 str r0, [r7, #8]
+ uint32_t wait = Delay;
+ 80004be: 687b ldr r3, [r7, #4]
+ 80004c0: 60fb str r3, [r7, #12]
+
+ /* Add a freq to guarantee minimum wait */
+ if (wait < HAL_MAX_DELAY)
+ 80004c2: 68fb ldr r3, [r7, #12]
+ 80004c4: f1b3 3fff cmp.w r3, #4294967295
+ 80004c8: d005 beq.n 80004d6
+ {
+ wait += (uint32_t)(uwTickFreq);
+ 80004ca: 4b0a ldr r3, [pc, #40] @ (80004f4 )
+ 80004cc: 781b ldrb r3, [r3, #0]
+ 80004ce: 461a mov r2, r3
+ 80004d0: 68fb ldr r3, [r7, #12]
+ 80004d2: 4413 add r3, r2
+ 80004d4: 60fb str r3, [r7, #12]
+ }
+
+ while ((HAL_GetTick() - tickstart) < wait)
+ 80004d6: bf00 nop
+ 80004d8: f7ff ffe0 bl 800049c
+ 80004dc: 4602 mov r2, r0
+ 80004de: 68bb ldr r3, [r7, #8]
+ 80004e0: 1ad3 subs r3, r2, r3
+ 80004e2: 68fa ldr r2, [r7, #12]
+ 80004e4: 429a cmp r2, r3
+ 80004e6: d8f7 bhi.n 80004d8
+ {
+ }
+}
+ 80004e8: bf00 nop
+ 80004ea: bf00 nop
+ 80004ec: 3710 adds r7, #16
+ 80004ee: 46bd mov sp, r7
+ 80004f0: bd80 pop {r7, pc}
+ 80004f2: bf00 nop
+ 80004f4: 20000008 .word 0x20000008
+
+080004f8 <__NVIC_SetPriorityGrouping>:
+ In case of a conflict between priority grouping and available
+ priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.
+ \param [in] PriorityGroup Priority grouping field.
+ */
+__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup)
+{
+ 80004f8: b480 push {r7}
+ 80004fa: b085 sub sp, #20
+ 80004fc: af00 add r7, sp, #0
+ 80004fe: 6078 str r0, [r7, #4]
+ uint32_t reg_value;
+ uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */
+ 8000500: 687b ldr r3, [r7, #4]
+ 8000502: f003 0307 and.w r3, r3, #7
+ 8000506: 60fb str r3, [r7, #12]
+
+ reg_value = SCB->AIRCR; /* read old register configuration */
+ 8000508: 4b0c ldr r3, [pc, #48] @ (800053c <__NVIC_SetPriorityGrouping+0x44>)
+ 800050a: 68db ldr r3, [r3, #12]
+ 800050c: 60bb str r3, [r7, #8]
+ reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */
+ 800050e: 68ba ldr r2, [r7, #8]
+ 8000510: f64f 03ff movw r3, #63743 @ 0xf8ff
+ 8000514: 4013 ands r3, r2
+ 8000516: 60bb str r3, [r7, #8]
+ reg_value = (reg_value |
+ ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
+ (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */
+ 8000518: 68fb ldr r3, [r7, #12]
+ 800051a: 021a lsls r2, r3, #8
+ ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) |
+ 800051c: 68bb ldr r3, [r7, #8]
+ 800051e: 4313 orrs r3, r2
+ reg_value = (reg_value |
+ 8000520: f043 63bf orr.w r3, r3, #100139008 @ 0x5f80000
+ 8000524: f443 3300 orr.w r3, r3, #131072 @ 0x20000
+ 8000528: 60bb str r3, [r7, #8]
+ SCB->AIRCR = reg_value;
+ 800052a: 4a04 ldr r2, [pc, #16] @ (800053c <__NVIC_SetPriorityGrouping+0x44>)
+ 800052c: 68bb ldr r3, [r7, #8]
+ 800052e: 60d3 str r3, [r2, #12]
+}
+ 8000530: bf00 nop
+ 8000532: 3714 adds r7, #20
+ 8000534: 46bd mov sp, r7
+ 8000536: bc80 pop {r7}
+ 8000538: 4770 bx lr
+ 800053a: bf00 nop
+ 800053c: e000ed00 .word 0xe000ed00
+
+08000540 <__NVIC_GetPriorityGrouping>:
+ \brief Get Priority Grouping
+ \details Reads the priority grouping field from the NVIC Interrupt Controller.
+ \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).
+ */
+__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void)
+{
+ 8000540: b480 push {r7}
+ 8000542: af00 add r7, sp, #0
+ return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos));
+ 8000544: 4b04 ldr r3, [pc, #16] @ (8000558 <__NVIC_GetPriorityGrouping+0x18>)
+ 8000546: 68db ldr r3, [r3, #12]
+ 8000548: 0a1b lsrs r3, r3, #8
+ 800054a: f003 0307 and.w r3, r3, #7
+}
+ 800054e: 4618 mov r0, r3
+ 8000550: 46bd mov sp, r7
+ 8000552: bc80 pop {r7}
+ 8000554: 4770 bx lr
+ 8000556: bf00 nop
+ 8000558: e000ed00 .word 0xe000ed00
+
+0800055c <__NVIC_EnableIRQ>:
+ \details Enables a device specific interrupt in the NVIC interrupt controller.
+ \param [in] IRQn Device specific interrupt number.
+ \note IRQn must not be negative.
+ */
+__STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)
+{
+ 800055c: b480 push {r7}
+ 800055e: b083 sub sp, #12
+ 8000560: af00 add r7, sp, #0
+ 8000562: 4603 mov r3, r0
+ 8000564: 71fb strb r3, [r7, #7]
+ if ((int32_t)(IRQn) >= 0)
+ 8000566: f997 3007 ldrsb.w r3, [r7, #7]
+ 800056a: 2b00 cmp r3, #0
+ 800056c: db0b blt.n 8000586 <__NVIC_EnableIRQ+0x2a>
+ {
+ NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
+ 800056e: 79fb ldrb r3, [r7, #7]
+ 8000570: f003 021f and.w r2, r3, #31
+ 8000574: 4906 ldr r1, [pc, #24] @ (8000590 <__NVIC_EnableIRQ+0x34>)
+ 8000576: f997 3007 ldrsb.w r3, [r7, #7]
+ 800057a: 095b lsrs r3, r3, #5
+ 800057c: 2001 movs r0, #1
+ 800057e: fa00 f202 lsl.w r2, r0, r2
+ 8000582: f841 2023 str.w r2, [r1, r3, lsl #2]
+ }
+}
+ 8000586: bf00 nop
+ 8000588: 370c adds r7, #12
+ 800058a: 46bd mov sp, r7
+ 800058c: bc80 pop {r7}
+ 800058e: 4770 bx lr
+ 8000590: e000e100 .word 0xe000e100
+
+08000594 <__NVIC_SetPriority>:
+ \param [in] IRQn Interrupt number.
+ \param [in] priority Priority to set.
+ \note The priority cannot be set for every processor exception.
+ */
+__STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
+{
+ 8000594: b480 push {r7}
+ 8000596: b083 sub sp, #12
+ 8000598: af00 add r7, sp, #0
+ 800059a: 4603 mov r3, r0
+ 800059c: 6039 str r1, [r7, #0]
+ 800059e: 71fb strb r3, [r7, #7]
+ if ((int32_t)(IRQn) >= 0)
+ 80005a0: f997 3007 ldrsb.w r3, [r7, #7]
+ 80005a4: 2b00 cmp r3, #0
+ 80005a6: db0a blt.n 80005be <__NVIC_SetPriority+0x2a>
+ {
+ NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
+ 80005a8: 683b ldr r3, [r7, #0]
+ 80005aa: b2da uxtb r2, r3
+ 80005ac: 490c ldr r1, [pc, #48] @ (80005e0 <__NVIC_SetPriority+0x4c>)
+ 80005ae: f997 3007 ldrsb.w r3, [r7, #7]
+ 80005b2: 0112 lsls r2, r2, #4
+ 80005b4: b2d2 uxtb r2, r2
+ 80005b6: 440b add r3, r1
+ 80005b8: f883 2300 strb.w r2, [r3, #768] @ 0x300
+ }
+ else
+ {
+ SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
+ }
+}
+ 80005bc: e00a b.n 80005d4 <__NVIC_SetPriority+0x40>
+ SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
+ 80005be: 683b ldr r3, [r7, #0]
+ 80005c0: b2da uxtb r2, r3
+ 80005c2: 4908 ldr r1, [pc, #32] @ (80005e4 <__NVIC_SetPriority+0x50>)
+ 80005c4: 79fb ldrb r3, [r7, #7]
+ 80005c6: f003 030f and.w r3, r3, #15
+ 80005ca: 3b04 subs r3, #4
+ 80005cc: 0112 lsls r2, r2, #4
+ 80005ce: b2d2 uxtb r2, r2
+ 80005d0: 440b add r3, r1
+ 80005d2: 761a strb r2, [r3, #24]
+}
+ 80005d4: bf00 nop
+ 80005d6: 370c adds r7, #12
+ 80005d8: 46bd mov sp, r7
+ 80005da: bc80 pop {r7}
+ 80005dc: 4770 bx lr
+ 80005de: bf00 nop
+ 80005e0: e000e100 .word 0xe000e100
+ 80005e4: e000ed00 .word 0xe000ed00
+
+080005e8 :
+ \param [in] PreemptPriority Preemptive priority value (starting from 0).
+ \param [in] SubPriority Subpriority value (starting from 0).
+ \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority().
+ */
+__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)
+{
+ 80005e8: b480 push {r7}
+ 80005ea: b089 sub sp, #36 @ 0x24
+ 80005ec: af00 add r7, sp, #0
+ 80005ee: 60f8 str r0, [r7, #12]
+ 80005f0: 60b9 str r1, [r7, #8]
+ 80005f2: 607a str r2, [r7, #4]
+ uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */
+ 80005f4: 68fb ldr r3, [r7, #12]
+ 80005f6: f003 0307 and.w r3, r3, #7
+ 80005fa: 61fb str r3, [r7, #28]
+ uint32_t PreemptPriorityBits;
+ uint32_t SubPriorityBits;
+
+ PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);
+ 80005fc: 69fb ldr r3, [r7, #28]
+ 80005fe: f1c3 0307 rsb r3, r3, #7
+ 8000602: 2b04 cmp r3, #4
+ 8000604: bf28 it cs
+ 8000606: 2304 movcs r3, #4
+ 8000608: 61bb str r3, [r7, #24]
+ SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS));
+ 800060a: 69fb ldr r3, [r7, #28]
+ 800060c: 3304 adds r3, #4
+ 800060e: 2b06 cmp r3, #6
+ 8000610: d902 bls.n 8000618
+ 8000612: 69fb ldr r3, [r7, #28]
+ 8000614: 3b03 subs r3, #3
+ 8000616: e000 b.n 800061a
+ 8000618: 2300 movs r3, #0
+ 800061a: 617b str r3, [r7, #20]
+
+ return (
+ ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |
+ 800061c: f04f 32ff mov.w r2, #4294967295
+ 8000620: 69bb ldr r3, [r7, #24]
+ 8000622: fa02 f303 lsl.w r3, r2, r3
+ 8000626: 43da mvns r2, r3
+ 8000628: 68bb ldr r3, [r7, #8]
+ 800062a: 401a ands r2, r3
+ 800062c: 697b ldr r3, [r7, #20]
+ 800062e: 409a lsls r2, r3
+ ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL)))
+ 8000630: f04f 31ff mov.w r1, #4294967295
+ 8000634: 697b ldr r3, [r7, #20]
+ 8000636: fa01 f303 lsl.w r3, r1, r3
+ 800063a: 43d9 mvns r1, r3
+ 800063c: 687b ldr r3, [r7, #4]
+ 800063e: 400b ands r3, r1
+ ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |
+ 8000640: 4313 orrs r3, r2
+ );
+}
+ 8000642: 4618 mov r0, r3
+ 8000644: 3724 adds r7, #36 @ 0x24
+ 8000646: 46bd mov sp, r7
+ 8000648: bc80 pop {r7}
+ 800064a: 4770 bx lr
+
+0800064c :
+ \note When the variable __Vendor_SysTickConfig is set to 1, then the
+ function SysTick_Config is not included. In this case, the file device.h
+ must contain a vendor-specific implementation of this function.
+ */
+__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
+{
+ 800064c: b580 push {r7, lr}
+ 800064e: b082 sub sp, #8
+ 8000650: af00 add r7, sp, #0
+ 8000652: 6078 str r0, [r7, #4]
+ if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)
+ 8000654: 687b ldr r3, [r7, #4]
+ 8000656: 3b01 subs r3, #1
+ 8000658: f1b3 7f80 cmp.w r3, #16777216 @ 0x1000000
+ 800065c: d301 bcc.n 8000662
+ {
+ return (1UL); /* Reload value impossible */
+ 800065e: 2301 movs r3, #1
+ 8000660: e00f b.n 8000682
+ }
+
+ SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */
+ 8000662: 4a0a ldr r2, [pc, #40] @ (800068c )
+ 8000664: 687b ldr r3, [r7, #4]
+ 8000666: 3b01 subs r3, #1
+ 8000668: 6053 str r3, [r2, #4]
+ NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */
+ 800066a: 210f movs r1, #15
+ 800066c: f04f 30ff mov.w r0, #4294967295
+ 8000670: f7ff ff90 bl 8000594 <__NVIC_SetPriority>
+ SysTick->VAL = 0UL; /* Load the SysTick Counter Value */
+ 8000674: 4b05 ldr r3, [pc, #20] @ (800068c )
+ 8000676: 2200 movs r2, #0
+ 8000678: 609a str r2, [r3, #8]
+ SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |
+ 800067a: 4b04 ldr r3, [pc, #16] @ (800068c )
+ 800067c: 2207 movs r2, #7
+ 800067e: 601a str r2, [r3, #0]
+ SysTick_CTRL_TICKINT_Msk |
+ SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */
+ return (0UL); /* Function successful */
+ 8000680: 2300 movs r3, #0
+}
+ 8000682: 4618 mov r0, r3
+ 8000684: 3708 adds r7, #8
+ 8000686: 46bd mov sp, r7
+ 8000688: bd80 pop {r7, pc}
+ 800068a: bf00 nop
+ 800068c: e000e010 .word 0xe000e010
+
+08000690 :
+ * @note When the NVIC_PriorityGroup_0 is selected, IRQ preemption is no more possible.
+ * The pending IRQ priority will be managed only by the subpriority.
+ * @retval None
+ */
+void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup)
+{
+ 8000690: b580 push {r7, lr}
+ 8000692: b082 sub sp, #8
+ 8000694: af00 add r7, sp, #0
+ 8000696: 6078 str r0, [r7, #4]
+ /* Check the parameters */
+ assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup));
+
+ /* Set the PRIGROUP[10:8] bits according to the PriorityGroup parameter value */
+ NVIC_SetPriorityGrouping(PriorityGroup);
+ 8000698: 6878 ldr r0, [r7, #4]
+ 800069a: f7ff ff2d bl 80004f8 <__NVIC_SetPriorityGrouping>
+}
+ 800069e: bf00 nop
+ 80006a0: 3708 adds r7, #8
+ 80006a2: 46bd mov sp, r7
+ 80006a4: bd80 pop {r7, pc}
+
+080006a6 :
+ * This parameter can be a value between 0 and 15
+ * A lower priority value indicates a higher priority.
+ * @retval None
+ */
+void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)
+{
+ 80006a6: b580 push {r7, lr}
+ 80006a8: b086 sub sp, #24
+ 80006aa: af00 add r7, sp, #0
+ 80006ac: 4603 mov r3, r0
+ 80006ae: 60b9 str r1, [r7, #8]
+ 80006b0: 607a str r2, [r7, #4]
+ 80006b2: 73fb strb r3, [r7, #15]
+ uint32_t prioritygroup = 0x00U;
+ 80006b4: 2300 movs r3, #0
+ 80006b6: 617b str r3, [r7, #20]
+
+ /* Check the parameters */
+ assert_param(IS_NVIC_SUB_PRIORITY(SubPriority));
+ assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority));
+
+ prioritygroup = NVIC_GetPriorityGrouping();
+ 80006b8: f7ff ff42 bl 8000540 <__NVIC_GetPriorityGrouping>
+ 80006bc: 6178 str r0, [r7, #20]
+
+ NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority));
+ 80006be: 687a ldr r2, [r7, #4]
+ 80006c0: 68b9 ldr r1, [r7, #8]
+ 80006c2: 6978 ldr r0, [r7, #20]
+ 80006c4: f7ff ff90 bl 80005e8
+ 80006c8: 4602 mov r2, r0
+ 80006ca: f997 300f ldrsb.w r3, [r7, #15]
+ 80006ce: 4611 mov r1, r2
+ 80006d0: 4618 mov r0, r3
+ 80006d2: f7ff ff5f bl 8000594 <__NVIC_SetPriority>
+}
+ 80006d6: bf00 nop
+ 80006d8: 3718 adds r7, #24
+ 80006da: 46bd mov sp, r7
+ 80006dc: bd80 pop {r7, pc}
+
+080006de :
+ * This parameter can be an enumerator of IRQn_Type enumeration
+ * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32f10xxx.h))
+ * @retval None
+ */
+void HAL_NVIC_EnableIRQ(IRQn_Type IRQn)
+{
+ 80006de: b580 push {r7, lr}
+ 80006e0: b082 sub sp, #8
+ 80006e2: af00 add r7, sp, #0
+ 80006e4: 4603 mov r3, r0
+ 80006e6: 71fb strb r3, [r7, #7]
+ /* Check the parameters */
+ assert_param(IS_NVIC_DEVICE_IRQ(IRQn));
+
+ /* Enable interrupt */
+ NVIC_EnableIRQ(IRQn);
+ 80006e8: f997 3007 ldrsb.w r3, [r7, #7]
+ 80006ec: 4618 mov r0, r3
+ 80006ee: f7ff ff35 bl 800055c <__NVIC_EnableIRQ>
+}
+ 80006f2: bf00 nop
+ 80006f4: 3708 adds r7, #8
+ 80006f6: 46bd mov sp, r7
+ 80006f8: bd80 pop {r7, pc}
+
+080006fa :
+ * @param TicksNumb: Specifies the ticks Number of ticks between two interrupts.
+ * @retval status: - 0 Function succeeded.
+ * - 1 Function failed.
+ */
+uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb)
+{
+ 80006fa: b580 push {r7, lr}
+ 80006fc: b082 sub sp, #8
+ 80006fe: af00 add r7, sp, #0
+ 8000700: 6078 str r0, [r7, #4]
+ return SysTick_Config(TicksNumb);
+ 8000702: 6878 ldr r0, [r7, #4]
+ 8000704: f7ff ffa2 bl 800064c
+ 8000708: 4603 mov r3, r0
+}
+ 800070a: 4618 mov r0, r3
+ 800070c: 3708 adds r7, #8
+ 800070e: 46bd mov sp, r7
+ 8000710: bd80 pop {r7, pc}
+
+08000712 :
+ * parameters in the PCD_InitTypeDef and initialize the associated handle.
+ * @param hpcd PCD handle
+ * @retval HAL status
+ */
+HAL_StatusTypeDef HAL_PCD_Init(PCD_HandleTypeDef *hpcd)
+{
+ 8000712: b580 push {r7, lr}
+ 8000714: b084 sub sp, #16
+ 8000716: af00 add r7, sp, #0
+ 8000718: 6078 str r0, [r7, #4]
+ uint8_t i;
+
+ /* Check the PCD handle allocation */
+ if (hpcd == NULL)
+ 800071a: 687b ldr r3, [r7, #4]
+ 800071c: 2b00 cmp r3, #0
+ 800071e: d101 bne.n 8000724
+ {
+ return HAL_ERROR;
+ 8000720: 2301 movs r3, #1
+ 8000722: e0e8 b.n 80008f6
+ }
+
+ /* Check the parameters */
+ assert_param(IS_PCD_ALL_INSTANCE(hpcd->Instance));
+
+ if (hpcd->State == HAL_PCD_STATE_RESET)
+ 8000724: 687b ldr r3, [r7, #4]
+ 8000726: f893 3291 ldrb.w r3, [r3, #657] @ 0x291
+ 800072a: b2db uxtb r3, r3
+ 800072c: 2b00 cmp r3, #0
+ 800072e: d106 bne.n 800073e
+ {
+ /* Allocate lock resource and initialize it */
+ hpcd->Lock = HAL_UNLOCKED;
+ 8000730: 687b ldr r3, [r7, #4]
+ 8000732: 2200 movs r2, #0
+ 8000734: f883 2290 strb.w r2, [r3, #656] @ 0x290
+
+ /* Init the low level hardware */
+ hpcd->MspInitCallback(hpcd);
+#else
+ /* Init the low level hardware : GPIO, CLOCK, NVIC... */
+ HAL_PCD_MspInit(hpcd);
+ 8000738: 6878 ldr r0, [r7, #4]
+ 800073a: f006 f8c3 bl 80068c4
+#endif /* (USE_HAL_PCD_REGISTER_CALLBACKS) */
+ }
+
+ hpcd->State = HAL_PCD_STATE_BUSY;
+ 800073e: 687b ldr r3, [r7, #4]
+ 8000740: 2203 movs r2, #3
+ 8000742: f883 2291 strb.w r2, [r3, #657] @ 0x291
+
+ /* Disable DMA mode for FS instance */
+ hpcd->Init.dma_enable = 0U;
+ 8000746: 687b ldr r3, [r7, #4]
+ 8000748: 2200 movs r2, #0
+ 800074a: 715a strb r2, [r3, #5]
+
+ /* Disable the Interrupts */
+ __HAL_PCD_DISABLE(hpcd);
+ 800074c: 687b ldr r3, [r7, #4]
+ 800074e: 681b ldr r3, [r3, #0]
+ 8000750: 4618 mov r0, r3
+ 8000752: f002 f9de bl 8002b12
+
+ /*Init the Core (common init.) */
+ if (USB_CoreInit(hpcd->Instance, hpcd->Init) != HAL_OK)
+ 8000756: 687b ldr r3, [r7, #4]
+ 8000758: 6818 ldr r0, [r3, #0]
+ 800075a: 687b ldr r3, [r7, #4]
+ 800075c: 3304 adds r3, #4
+ 800075e: cb0e ldmia r3, {r1, r2, r3}
+ 8000760: f002 f9b4 bl 8002acc
+ 8000764: 4603 mov r3, r0
+ 8000766: 2b00 cmp r3, #0
+ 8000768: d005 beq.n 8000776
+ {
+ hpcd->State = HAL_PCD_STATE_ERROR;
+ 800076a: 687b ldr r3, [r7, #4]
+ 800076c: 2202 movs r2, #2
+ 800076e: f883 2291 strb.w r2, [r3, #657] @ 0x291
+ return HAL_ERROR;
+ 8000772: 2301 movs r3, #1
+ 8000774: e0bf b.n 80008f6
+ }
+
+ /* Force Device Mode */
+ if (USB_SetCurrentMode(hpcd->Instance, USB_DEVICE_MODE) != HAL_OK)
+ 8000776: 687b ldr r3, [r7, #4]
+ 8000778: 681b ldr r3, [r3, #0]
+ 800077a: 2100 movs r1, #0
+ 800077c: 4618 mov r0, r3
+ 800077e: f002 f9e2 bl 8002b46
+ 8000782: 4603 mov r3, r0
+ 8000784: 2b00 cmp r3, #0
+ 8000786: d005 beq.n 8000794
+ {
+ hpcd->State = HAL_PCD_STATE_ERROR;
+ 8000788: 687b ldr r3, [r7, #4]
+ 800078a: 2202 movs r2, #2
+ 800078c: f883 2291 strb.w r2, [r3, #657] @ 0x291
+ return HAL_ERROR;
+ 8000790: 2301 movs r3, #1
+ 8000792: e0b0 b.n 80008f6
+ }
+
+ /* Init endpoints structures */
+ for (i = 0U; i < hpcd->Init.dev_endpoints; i++)
+ 8000794: 2300 movs r3, #0
+ 8000796: 73fb strb r3, [r7, #15]
+ 8000798: e03e b.n 8000818
+ {
+ /* Init ep structure */
+ hpcd->IN_ep[i].is_in = 1U;
+ 800079a: 7bfa ldrb r2, [r7, #15]
+ 800079c: 6879 ldr r1, [r7, #4]
+ 800079e: 4613 mov r3, r2
+ 80007a0: 009b lsls r3, r3, #2
+ 80007a2: 4413 add r3, r2
+ 80007a4: 00db lsls r3, r3, #3
+ 80007a6: 440b add r3, r1
+ 80007a8: 3311 adds r3, #17
+ 80007aa: 2201 movs r2, #1
+ 80007ac: 701a strb r2, [r3, #0]
+ hpcd->IN_ep[i].num = i;
+ 80007ae: 7bfa ldrb r2, [r7, #15]
+ 80007b0: 6879 ldr r1, [r7, #4]
+ 80007b2: 4613 mov r3, r2
+ 80007b4: 009b lsls r3, r3, #2
+ 80007b6: 4413 add r3, r2
+ 80007b8: 00db lsls r3, r3, #3
+ 80007ba: 440b add r3, r1
+ 80007bc: 3310 adds r3, #16
+ 80007be: 7bfa ldrb r2, [r7, #15]
+ 80007c0: 701a strb r2, [r3, #0]
+#if defined (USB_OTG_FS)
+ hpcd->IN_ep[i].tx_fifo_num = i;
+#endif /* defined (USB_OTG_FS) */
+ /* Control until ep is activated */
+ hpcd->IN_ep[i].type = EP_TYPE_CTRL;
+ 80007c2: 7bfa ldrb r2, [r7, #15]
+ 80007c4: 6879 ldr r1, [r7, #4]
+ 80007c6: 4613 mov r3, r2
+ 80007c8: 009b lsls r3, r3, #2
+ 80007ca: 4413 add r3, r2
+ 80007cc: 00db lsls r3, r3, #3
+ 80007ce: 440b add r3, r1
+ 80007d0: 3313 adds r3, #19
+ 80007d2: 2200 movs r2, #0
+ 80007d4: 701a strb r2, [r3, #0]
+ hpcd->IN_ep[i].maxpacket = 0U;
+ 80007d6: 7bfa ldrb r2, [r7, #15]
+ 80007d8: 6879 ldr r1, [r7, #4]
+ 80007da: 4613 mov r3, r2
+ 80007dc: 009b lsls r3, r3, #2
+ 80007de: 4413 add r3, r2
+ 80007e0: 00db lsls r3, r3, #3
+ 80007e2: 440b add r3, r1
+ 80007e4: 3320 adds r3, #32
+ 80007e6: 2200 movs r2, #0
+ 80007e8: 601a str r2, [r3, #0]
+ hpcd->IN_ep[i].xfer_buff = 0U;
+ 80007ea: 7bfa ldrb r2, [r7, #15]
+ 80007ec: 6879 ldr r1, [r7, #4]
+ 80007ee: 4613 mov r3, r2
+ 80007f0: 009b lsls r3, r3, #2
+ 80007f2: 4413 add r3, r2
+ 80007f4: 00db lsls r3, r3, #3
+ 80007f6: 440b add r3, r1
+ 80007f8: 3324 adds r3, #36 @ 0x24
+ 80007fa: 2200 movs r2, #0
+ 80007fc: 601a str r2, [r3, #0]
+ hpcd->IN_ep[i].xfer_len = 0U;
+ 80007fe: 7bfb ldrb r3, [r7, #15]
+ 8000800: 6879 ldr r1, [r7, #4]
+ 8000802: 1c5a adds r2, r3, #1
+ 8000804: 4613 mov r3, r2
+ 8000806: 009b lsls r3, r3, #2
+ 8000808: 4413 add r3, r2
+ 800080a: 00db lsls r3, r3, #3
+ 800080c: 440b add r3, r1
+ 800080e: 2200 movs r2, #0
+ 8000810: 601a str r2, [r3, #0]
+ for (i = 0U; i < hpcd->Init.dev_endpoints; i++)
+ 8000812: 7bfb ldrb r3, [r7, #15]
+ 8000814: 3301 adds r3, #1
+ 8000816: 73fb strb r3, [r7, #15]
+ 8000818: 687b ldr r3, [r7, #4]
+ 800081a: 791b ldrb r3, [r3, #4]
+ 800081c: 7bfa ldrb r2, [r7, #15]
+ 800081e: 429a cmp r2, r3
+ 8000820: d3bb bcc.n 800079a
+ }
+
+ for (i = 0U; i < hpcd->Init.dev_endpoints; i++)
+ 8000822: 2300 movs r3, #0
+ 8000824: 73fb strb r3, [r7, #15]
+ 8000826: e044 b.n 80008b2
+ {
+ hpcd->OUT_ep[i].is_in = 0U;
+ 8000828: 7bfa ldrb r2, [r7, #15]
+ 800082a: 6879 ldr r1, [r7, #4]
+ 800082c: 4613 mov r3, r2
+ 800082e: 009b lsls r3, r3, #2
+ 8000830: 4413 add r3, r2
+ 8000832: 00db lsls r3, r3, #3
+ 8000834: 440b add r3, r1
+ 8000836: f203 1351 addw r3, r3, #337 @ 0x151
+ 800083a: 2200 movs r2, #0
+ 800083c: 701a strb r2, [r3, #0]
+ hpcd->OUT_ep[i].num = i;
+ 800083e: 7bfa ldrb r2, [r7, #15]
+ 8000840: 6879 ldr r1, [r7, #4]
+ 8000842: 4613 mov r3, r2
+ 8000844: 009b lsls r3, r3, #2
+ 8000846: 4413 add r3, r2
+ 8000848: 00db lsls r3, r3, #3
+ 800084a: 440b add r3, r1
+ 800084c: f503 73a8 add.w r3, r3, #336 @ 0x150
+ 8000850: 7bfa ldrb r2, [r7, #15]
+ 8000852: 701a strb r2, [r3, #0]
+ /* Control until ep is activated */
+ hpcd->OUT_ep[i].type = EP_TYPE_CTRL;
+ 8000854: 7bfa ldrb r2, [r7, #15]
+ 8000856: 6879 ldr r1, [r7, #4]
+ 8000858: 4613 mov r3, r2
+ 800085a: 009b lsls r3, r3, #2
+ 800085c: 4413 add r3, r2
+ 800085e: 00db lsls r3, r3, #3
+ 8000860: 440b add r3, r1
+ 8000862: f203 1353 addw r3, r3, #339 @ 0x153
+ 8000866: 2200 movs r2, #0
+ 8000868: 701a strb r2, [r3, #0]
+ hpcd->OUT_ep[i].maxpacket = 0U;
+ 800086a: 7bfa ldrb r2, [r7, #15]
+ 800086c: 6879 ldr r1, [r7, #4]
+ 800086e: 4613 mov r3, r2
+ 8000870: 009b lsls r3, r3, #2
+ 8000872: 4413 add r3, r2
+ 8000874: 00db lsls r3, r3, #3
+ 8000876: 440b add r3, r1
+ 8000878: f503 73b0 add.w r3, r3, #352 @ 0x160
+ 800087c: 2200 movs r2, #0
+ 800087e: 601a str r2, [r3, #0]
+ hpcd->OUT_ep[i].xfer_buff = 0U;
+ 8000880: 7bfa ldrb r2, [r7, #15]
+ 8000882: 6879 ldr r1, [r7, #4]
+ 8000884: 4613 mov r3, r2
+ 8000886: 009b lsls r3, r3, #2
+ 8000888: 4413 add r3, r2
+ 800088a: 00db lsls r3, r3, #3
+ 800088c: 440b add r3, r1
+ 800088e: f503 73b2 add.w r3, r3, #356 @ 0x164
+ 8000892: 2200 movs r2, #0
+ 8000894: 601a str r2, [r3, #0]
+ hpcd->OUT_ep[i].xfer_len = 0U;
+ 8000896: 7bfa ldrb r2, [r7, #15]
+ 8000898: 6879 ldr r1, [r7, #4]
+ 800089a: 4613 mov r3, r2
+ 800089c: 009b lsls r3, r3, #2
+ 800089e: 4413 add r3, r2
+ 80008a0: 00db lsls r3, r3, #3
+ 80008a2: 440b add r3, r1
+ 80008a4: f503 73b4 add.w r3, r3, #360 @ 0x168
+ 80008a8: 2200 movs r2, #0
+ 80008aa: 601a str r2, [r3, #0]
+ for (i = 0U; i < hpcd->Init.dev_endpoints; i++)
+ 80008ac: 7bfb ldrb r3, [r7, #15]
+ 80008ae: 3301 adds r3, #1
+ 80008b0: 73fb strb r3, [r7, #15]
+ 80008b2: 687b ldr r3, [r7, #4]
+ 80008b4: 791b ldrb r3, [r3, #4]
+ 80008b6: 7bfa ldrb r2, [r7, #15]
+ 80008b8: 429a cmp r2, r3
+ 80008ba: d3b5 bcc.n 8000828
+ }
+
+ /* Init Device */
+ if (USB_DevInit(hpcd->Instance, hpcd->Init) != HAL_OK)
+ 80008bc: 687b ldr r3, [r7, #4]
+ 80008be: 6818 ldr r0, [r3, #0]
+ 80008c0: 687b ldr r3, [r7, #4]
+ 80008c2: 3304 adds r3, #4
+ 80008c4: cb0e ldmia r3, {r1, r2, r3}
+ 80008c6: f002 f94a bl 8002b5e
+ 80008ca: 4603 mov r3, r0
+ 80008cc: 2b00 cmp r3, #0
+ 80008ce: d005 beq.n 80008dc
+ {
+ hpcd->State = HAL_PCD_STATE_ERROR;
+ 80008d0: 687b ldr r3, [r7, #4]
+ 80008d2: 2202 movs r2, #2
+ 80008d4: f883 2291 strb.w r2, [r3, #657] @ 0x291
+ return HAL_ERROR;
+ 80008d8: 2301 movs r3, #1
+ 80008da: e00c b.n 80008f6
+ }
+
+ hpcd->USB_Address = 0U;
+ 80008dc: 687b ldr r3, [r7, #4]
+ 80008de: 2200 movs r2, #0
+ 80008e0: 735a strb r2, [r3, #13]
+ hpcd->State = HAL_PCD_STATE_READY;
+ 80008e2: 687b ldr r3, [r7, #4]
+ 80008e4: 2201 movs r2, #1
+ 80008e6: f883 2291 strb.w r2, [r3, #657] @ 0x291
+ (void)USB_DevDisconnect(hpcd->Instance);
+ 80008ea: 687b ldr r3, [r7, #4]
+ 80008ec: 681b ldr r3, [r3, #0]
+ 80008ee: 4618 mov r0, r3
+ 80008f0: f004 fbc9 bl 8005086
+
+ return HAL_OK;
+ 80008f4: 2300 movs r3, #0
+}
+ 80008f6: 4618 mov r0, r3
+ 80008f8: 3710 adds r7, #16
+ 80008fa: 46bd mov sp, r7
+ 80008fc: bd80 pop {r7, pc}
+
+080008fe :
+ * @brief Start the USB device
+ * @param hpcd PCD handle
+ * @retval HAL status
+ */
+HAL_StatusTypeDef HAL_PCD_Start(PCD_HandleTypeDef *hpcd)
+{
+ 80008fe: b580 push {r7, lr}
+ 8000900: b082 sub sp, #8
+ 8000902: af00 add r7, sp, #0
+ 8000904: 6078 str r0, [r7, #4]
+ __HAL_LOCK(hpcd);
+ 8000906: 687b ldr r3, [r7, #4]
+ 8000908: f893 3290 ldrb.w r3, [r3, #656] @ 0x290
+ 800090c: 2b01 cmp r3, #1
+ 800090e: d101 bne.n 8000914
+ 8000910: 2302 movs r3, #2
+ 8000912: e016 b.n 8000942
+ 8000914: 687b ldr r3, [r7, #4]
+ 8000916: 2201 movs r2, #1
+ 8000918: f883 2290 strb.w r2, [r3, #656] @ 0x290
+ __HAL_PCD_ENABLE(hpcd);
+ 800091c: 687b ldr r3, [r7, #4]
+ 800091e: 681b ldr r3, [r3, #0]
+ 8000920: 4618 mov r0, r3
+ 8000922: f002 f8e0 bl 8002ae6
+
+#if defined (USB)
+ HAL_PCDEx_SetConnectionState(hpcd, 1U);
+ 8000926: 2101 movs r1, #1
+ 8000928: 6878 ldr r0, [r7, #4]
+ 800092a: f006 fa18 bl 8006d5e
+#endif /* defined (USB) */
+
+ (void)USB_DevConnect(hpcd->Instance);
+ 800092e: 687b ldr r3, [r7, #4]
+ 8000930: 681b ldr r3, [r3, #0]
+ 8000932: 4618 mov r0, r3
+ 8000934: f004 fb9d bl 8005072
+ __HAL_UNLOCK(hpcd);
+ 8000938: 687b ldr r3, [r7, #4]
+ 800093a: 2200 movs r2, #0
+ 800093c: f883 2290 strb.w r2, [r3, #656] @ 0x290
+
+ return HAL_OK;
+ 8000940: 2300 movs r3, #0
+}
+ 8000942: 4618 mov r0, r3
+ 8000944: 3708 adds r7, #8
+ 8000946: 46bd mov sp, r7
+ 8000948: bd80 pop {r7, pc}
+
+0800094a :
+ * @brief This function handles PCD interrupt request.
+ * @param hpcd PCD handle
+ * @retval HAL status
+ */
+void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd)
+{
+ 800094a: b580 push {r7, lr}
+ 800094c: b088 sub sp, #32
+ 800094e: af00 add r7, sp, #0
+ 8000950: 6078 str r0, [r7, #4]
+ uint32_t wIstr = USB_ReadInterrupts(hpcd->Instance);
+ 8000952: 687b ldr r3, [r7, #4]
+ 8000954: 681b ldr r3, [r3, #0]
+ 8000956: 4618 mov r0, r3
+ 8000958: f004 fb9f bl 800509a
+ 800095c: 61b8 str r0, [r7, #24]
+ uint16_t store_ep[8];
+ uint8_t i;
+
+ if ((wIstr & USB_ISTR_CTR) == USB_ISTR_CTR)
+ 800095e: 69bb ldr r3, [r7, #24]
+ 8000960: f403 4300 and.w r3, r3, #32768 @ 0x8000
+ 8000964: 2b00 cmp r3, #0
+ 8000966: d003 beq.n 8000970
+ {
+ /* servicing of the endpoint correct transfer interrupt */
+ /* clear of the CTR flag into the sub */
+ (void)PCD_EP_ISR_Handler(hpcd);
+ 8000968: 6878 ldr r0, [r7, #4]
+ 800096a: f000 fb03 bl 8000f74
+
+ return;
+ 800096e: e119 b.n 8000ba4
+ }
+
+ if ((wIstr & USB_ISTR_RESET) == USB_ISTR_RESET)
+ 8000970: 69bb ldr r3, [r7, #24]
+ 8000972: f403 6380 and.w r3, r3, #1024 @ 0x400
+ 8000976: 2b00 cmp r3, #0
+ 8000978: d013 beq.n 80009a2
+ {
+ __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_RESET);
+ 800097a: 687b ldr r3, [r7, #4]
+ 800097c: 681b ldr r3, [r3, #0]
+ 800097e: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44
+ 8000982: b29a uxth r2, r3
+ 8000984: 687b ldr r3, [r7, #4]
+ 8000986: 681b ldr r3, [r3, #0]
+ 8000988: f422 6280 bic.w r2, r2, #1024 @ 0x400
+ 800098c: b292 uxth r2, r2
+ 800098e: f8a3 2044 strh.w r2, [r3, #68] @ 0x44
+
+#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
+ hpcd->ResetCallback(hpcd);
+#else
+ HAL_PCD_ResetCallback(hpcd);
+ 8000992: 6878 ldr r0, [r7, #4]
+ 8000994: f006 f811 bl 80069ba
+#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
+
+ (void)HAL_PCD_SetAddress(hpcd, 0U);
+ 8000998: 2100 movs r1, #0
+ 800099a: 6878 ldr r0, [r7, #4]
+ 800099c: f000 f905 bl 8000baa
+
+ return;
+ 80009a0: e100 b.n 8000ba4
+ }
+
+ if ((wIstr & USB_ISTR_PMAOVR) == USB_ISTR_PMAOVR)
+ 80009a2: 69bb ldr r3, [r7, #24]
+ 80009a4: f403 4380 and.w r3, r3, #16384 @ 0x4000
+ 80009a8: 2b00 cmp r3, #0
+ 80009aa: d00c beq.n 80009c6
+ {
+ __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_PMAOVR);
+ 80009ac: 687b ldr r3, [r7, #4]
+ 80009ae: 681b ldr r3, [r3, #0]
+ 80009b0: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44
+ 80009b4: b29a uxth r2, r3
+ 80009b6: 687b ldr r3, [r7, #4]
+ 80009b8: 681b ldr r3, [r3, #0]
+ 80009ba: f422 4280 bic.w r2, r2, #16384 @ 0x4000
+ 80009be: b292 uxth r2, r2
+ 80009c0: f8a3 2044 strh.w r2, [r3, #68] @ 0x44
+
+ return;
+ 80009c4: e0ee b.n 8000ba4
+ }
+
+ if ((wIstr & USB_ISTR_ERR) == USB_ISTR_ERR)
+ 80009c6: 69bb ldr r3, [r7, #24]
+ 80009c8: f403 5300 and.w r3, r3, #8192 @ 0x2000
+ 80009cc: 2b00 cmp r3, #0
+ 80009ce: d00c beq.n 80009ea
+ {
+ __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_ERR);
+ 80009d0: 687b ldr r3, [r7, #4]
+ 80009d2: 681b ldr r3, [r3, #0]
+ 80009d4: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44
+ 80009d8: b29a uxth r2, r3
+ 80009da: 687b ldr r3, [r7, #4]
+ 80009dc: 681b ldr r3, [r3, #0]
+ 80009de: f422 5200 bic.w r2, r2, #8192 @ 0x2000
+ 80009e2: b292 uxth r2, r2
+ 80009e4: f8a3 2044 strh.w r2, [r3, #68] @ 0x44
+
+ return;
+ 80009e8: e0dc b.n 8000ba4
+ }
+
+ if ((wIstr & USB_ISTR_WKUP) == USB_ISTR_WKUP)
+ 80009ea: 69bb ldr r3, [r7, #24]
+ 80009ec: f403 5380 and.w r3, r3, #4096 @ 0x1000
+ 80009f0: 2b00 cmp r3, #0
+ 80009f2: d027 beq.n 8000a44
+ {
+ hpcd->Instance->CNTR &= (uint16_t) ~(USB_CNTR_LP_MODE);
+ 80009f4: 687b ldr r3, [r7, #4]
+ 80009f6: 681b ldr r3, [r3, #0]
+ 80009f8: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40
+ 80009fc: b29a uxth r2, r3
+ 80009fe: 687b ldr r3, [r7, #4]
+ 8000a00: 681b ldr r3, [r3, #0]
+ 8000a02: f022 0204 bic.w r2, r2, #4
+ 8000a06: b292 uxth r2, r2
+ 8000a08: f8a3 2040 strh.w r2, [r3, #64] @ 0x40
+ hpcd->Instance->CNTR &= (uint16_t) ~(USB_CNTR_FSUSP);
+ 8000a0c: 687b ldr r3, [r7, #4]
+ 8000a0e: 681b ldr r3, [r3, #0]
+ 8000a10: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40
+ 8000a14: b29a uxth r2, r3
+ 8000a16: 687b ldr r3, [r7, #4]
+ 8000a18: 681b ldr r3, [r3, #0]
+ 8000a1a: f022 0208 bic.w r2, r2, #8
+ 8000a1e: b292 uxth r2, r2
+ 8000a20: f8a3 2040 strh.w r2, [r3, #64] @ 0x40
+
+#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
+ hpcd->ResumeCallback(hpcd);
+#else
+ HAL_PCD_ResumeCallback(hpcd);
+ 8000a24: 6878 ldr r0, [r7, #4]
+ 8000a26: f006 f801 bl 8006a2c
+#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
+
+ __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_WKUP);
+ 8000a2a: 687b ldr r3, [r7, #4]
+ 8000a2c: 681b ldr r3, [r3, #0]
+ 8000a2e: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44
+ 8000a32: b29a uxth r2, r3
+ 8000a34: 687b ldr r3, [r7, #4]
+ 8000a36: 681b ldr r3, [r3, #0]
+ 8000a38: f422 5280 bic.w r2, r2, #4096 @ 0x1000
+ 8000a3c: b292 uxth r2, r2
+ 8000a3e: f8a3 2044 strh.w r2, [r3, #68] @ 0x44
+
+ return;
+ 8000a42: e0af b.n 8000ba4
+ }
+
+ if ((wIstr & USB_ISTR_SUSP) == USB_ISTR_SUSP)
+ 8000a44: 69bb ldr r3, [r7, #24]
+ 8000a46: f403 6300 and.w r3, r3, #2048 @ 0x800
+ 8000a4a: 2b00 cmp r3, #0
+ 8000a4c: f000 8083 beq.w 8000b56
+ {
+ /* WA: To Clear Wakeup flag if raised with suspend signal */
+
+ /* Store Endpoint registers */
+ for (i = 0U; i < 8U; i++)
+ 8000a50: 2300 movs r3, #0
+ 8000a52: 77fb strb r3, [r7, #31]
+ 8000a54: e010 b.n 8000a78
+ {
+ store_ep[i] = PCD_GET_ENDPOINT(hpcd->Instance, i);
+ 8000a56: 687b ldr r3, [r7, #4]
+ 8000a58: 681b ldr r3, [r3, #0]
+ 8000a5a: 461a mov r2, r3
+ 8000a5c: 7ffb ldrb r3, [r7, #31]
+ 8000a5e: 009b lsls r3, r3, #2
+ 8000a60: 441a add r2, r3
+ 8000a62: 7ffb ldrb r3, [r7, #31]
+ 8000a64: 8812 ldrh r2, [r2, #0]
+ 8000a66: b292 uxth r2, r2
+ 8000a68: 005b lsls r3, r3, #1
+ 8000a6a: 3320 adds r3, #32
+ 8000a6c: 443b add r3, r7
+ 8000a6e: f823 2c18 strh.w r2, [r3, #-24]
+ for (i = 0U; i < 8U; i++)
+ 8000a72: 7ffb ldrb r3, [r7, #31]
+ 8000a74: 3301 adds r3, #1
+ 8000a76: 77fb strb r3, [r7, #31]
+ 8000a78: 7ffb ldrb r3, [r7, #31]
+ 8000a7a: 2b07 cmp r3, #7
+ 8000a7c: d9eb bls.n 8000a56
+ }
+
+ /* FORCE RESET */
+ hpcd->Instance->CNTR |= (uint16_t)(USB_CNTR_FRES);
+ 8000a7e: 687b ldr r3, [r7, #4]
+ 8000a80: 681b ldr r3, [r3, #0]
+ 8000a82: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40
+ 8000a86: b29a uxth r2, r3
+ 8000a88: 687b ldr r3, [r7, #4]
+ 8000a8a: 681b ldr r3, [r3, #0]
+ 8000a8c: f042 0201 orr.w r2, r2, #1
+ 8000a90: b292 uxth r2, r2
+ 8000a92: f8a3 2040 strh.w r2, [r3, #64] @ 0x40
+
+ /* CLEAR RESET */
+ hpcd->Instance->CNTR &= (uint16_t)(~USB_CNTR_FRES);
+ 8000a96: 687b ldr r3, [r7, #4]
+ 8000a98: 681b ldr r3, [r3, #0]
+ 8000a9a: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40
+ 8000a9e: b29a uxth r2, r3
+ 8000aa0: 687b ldr r3, [r7, #4]
+ 8000aa2: 681b ldr r3, [r3, #0]
+ 8000aa4: f022 0201 bic.w r2, r2, #1
+ 8000aa8: b292 uxth r2, r2
+ 8000aaa: f8a3 2040 strh.w r2, [r3, #64] @ 0x40
+
+ /* wait for reset flag in ISTR */
+ while ((hpcd->Instance->ISTR & USB_ISTR_RESET) == 0U)
+ 8000aae: bf00 nop
+ 8000ab0: 687b ldr r3, [r7, #4]
+ 8000ab2: 681b ldr r3, [r3, #0]
+ 8000ab4: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44
+ 8000ab8: b29b uxth r3, r3
+ 8000aba: f403 6380 and.w r3, r3, #1024 @ 0x400
+ 8000abe: 2b00 cmp r3, #0
+ 8000ac0: d0f6 beq.n 8000ab0
+ {
+ }
+
+ /* Clear Reset Flag */
+ __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_RESET);
+ 8000ac2: 687b ldr r3, [r7, #4]
+ 8000ac4: 681b ldr r3, [r3, #0]
+ 8000ac6: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44
+ 8000aca: b29a uxth r2, r3
+ 8000acc: 687b ldr r3, [r7, #4]
+ 8000ace: 681b ldr r3, [r3, #0]
+ 8000ad0: f422 6280 bic.w r2, r2, #1024 @ 0x400
+ 8000ad4: b292 uxth r2, r2
+ 8000ad6: f8a3 2044 strh.w r2, [r3, #68] @ 0x44
+
+ /* Restore Registre */
+ for (i = 0U; i < 8U; i++)
+ 8000ada: 2300 movs r3, #0
+ 8000adc: 77fb strb r3, [r7, #31]
+ 8000ade: e00f b.n 8000b00
+ {
+ PCD_SET_ENDPOINT(hpcd->Instance, i, store_ep[i]);
+ 8000ae0: 7ffb ldrb r3, [r7, #31]
+ 8000ae2: 687a ldr r2, [r7, #4]
+ 8000ae4: 6812 ldr r2, [r2, #0]
+ 8000ae6: 4611 mov r1, r2
+ 8000ae8: 7ffa ldrb r2, [r7, #31]
+ 8000aea: 0092 lsls r2, r2, #2
+ 8000aec: 440a add r2, r1
+ 8000aee: 005b lsls r3, r3, #1
+ 8000af0: 3320 adds r3, #32
+ 8000af2: 443b add r3, r7
+ 8000af4: f833 3c18 ldrh.w r3, [r3, #-24]
+ 8000af8: 8013 strh r3, [r2, #0]
+ for (i = 0U; i < 8U; i++)
+ 8000afa: 7ffb ldrb r3, [r7, #31]
+ 8000afc: 3301 adds r3, #1
+ 8000afe: 77fb strb r3, [r7, #31]
+ 8000b00: 7ffb ldrb r3, [r7, #31]
+ 8000b02: 2b07 cmp r3, #7
+ 8000b04: d9ec bls.n 8000ae0
+ }
+
+ /* Force low-power mode in the macrocell */
+ hpcd->Instance->CNTR |= (uint16_t)USB_CNTR_FSUSP;
+ 8000b06: 687b ldr r3, [r7, #4]
+ 8000b08: 681b ldr r3, [r3, #0]
+ 8000b0a: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40
+ 8000b0e: b29a uxth r2, r3
+ 8000b10: 687b ldr r3, [r7, #4]
+ 8000b12: 681b ldr r3, [r3, #0]
+ 8000b14: f042 0208 orr.w r2, r2, #8
+ 8000b18: b292 uxth r2, r2
+ 8000b1a: f8a3 2040 strh.w r2, [r3, #64] @ 0x40
+
+ /* clear of the ISTR bit must be done after setting of CNTR_FSUSP */
+ __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_SUSP);
+ 8000b1e: 687b ldr r3, [r7, #4]
+ 8000b20: 681b ldr r3, [r3, #0]
+ 8000b22: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44
+ 8000b26: b29a uxth r2, r3
+ 8000b28: 687b ldr r3, [r7, #4]
+ 8000b2a: 681b ldr r3, [r3, #0]
+ 8000b2c: f422 6200 bic.w r2, r2, #2048 @ 0x800
+ 8000b30: b292 uxth r2, r2
+ 8000b32: f8a3 2044 strh.w r2, [r3, #68] @ 0x44
+
+ hpcd->Instance->CNTR |= (uint16_t)USB_CNTR_LP_MODE;
+ 8000b36: 687b ldr r3, [r7, #4]
+ 8000b38: 681b ldr r3, [r3, #0]
+ 8000b3a: f8b3 3040 ldrh.w r3, [r3, #64] @ 0x40
+ 8000b3e: b29a uxth r2, r3
+ 8000b40: 687b ldr r3, [r7, #4]
+ 8000b42: 681b ldr r3, [r3, #0]
+ 8000b44: f042 0204 orr.w r2, r2, #4
+ 8000b48: b292 uxth r2, r2
+ 8000b4a: f8a3 2040 strh.w r2, [r3, #64] @ 0x40
+
+#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
+ hpcd->SuspendCallback(hpcd);
+#else
+ HAL_PCD_SuspendCallback(hpcd);
+ 8000b4e: 6878 ldr r0, [r7, #4]
+ 8000b50: f005 ff52 bl 80069f8
+#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
+
+ return;
+ 8000b54: e026 b.n 8000ba4
+ }
+
+ if ((wIstr & USB_ISTR_SOF) == USB_ISTR_SOF)
+ 8000b56: 69bb ldr r3, [r7, #24]
+ 8000b58: f403 7300 and.w r3, r3, #512 @ 0x200
+ 8000b5c: 2b00 cmp r3, #0
+ 8000b5e: d00f beq.n 8000b80
+ {
+ __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_SOF);
+ 8000b60: 687b ldr r3, [r7, #4]
+ 8000b62: 681b ldr r3, [r3, #0]
+ 8000b64: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44
+ 8000b68: b29a uxth r2, r3
+ 8000b6a: 687b ldr r3, [r7, #4]
+ 8000b6c: 681b ldr r3, [r3, #0]
+ 8000b6e: f422 7200 bic.w r2, r2, #512 @ 0x200
+ 8000b72: b292 uxth r2, r2
+ 8000b74: f8a3 2044 strh.w r2, [r3, #68] @ 0x44
+
+#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
+ hpcd->SOFCallback(hpcd);
+#else
+ HAL_PCD_SOFCallback(hpcd);
+ 8000b78: 6878 ldr r0, [r7, #4]
+ 8000b7a: f005 ff10 bl 800699e
+#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
+
+ return;
+ 8000b7e: e011 b.n 8000ba4
+ }
+
+ if ((wIstr & USB_ISTR_ESOF) == USB_ISTR_ESOF)
+ 8000b80: 69bb ldr r3, [r7, #24]
+ 8000b82: f403 7380 and.w r3, r3, #256 @ 0x100
+ 8000b86: 2b00 cmp r3, #0
+ 8000b88: d00c beq.n 8000ba4
+ {
+ /* clear ESOF flag in ISTR */
+ __HAL_PCD_CLEAR_FLAG(hpcd, USB_ISTR_ESOF);
+ 8000b8a: 687b ldr r3, [r7, #4]
+ 8000b8c: 681b ldr r3, [r3, #0]
+ 8000b8e: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44
+ 8000b92: b29a uxth r2, r3
+ 8000b94: 687b ldr r3, [r7, #4]
+ 8000b96: 681b ldr r3, [r3, #0]
+ 8000b98: f422 7280 bic.w r2, r2, #256 @ 0x100
+ 8000b9c: b292 uxth r2, r2
+ 8000b9e: f8a3 2044 strh.w r2, [r3, #68] @ 0x44
+
+ return;
+ 8000ba2: bf00 nop
+ }
+}
+ 8000ba4: 3720 adds r7, #32
+ 8000ba6: 46bd mov sp, r7
+ 8000ba8: bd80 pop {r7, pc}
+
+08000baa :
+ * @param hpcd PCD handle
+ * @param address new device address
+ * @retval HAL status
+ */
+HAL_StatusTypeDef HAL_PCD_SetAddress(PCD_HandleTypeDef *hpcd, uint8_t address)
+{
+ 8000baa: b580 push {r7, lr}
+ 8000bac: b082 sub sp, #8
+ 8000bae: af00 add r7, sp, #0
+ 8000bb0: 6078 str r0, [r7, #4]
+ 8000bb2: 460b mov r3, r1
+ 8000bb4: 70fb strb r3, [r7, #3]
+ __HAL_LOCK(hpcd);
+ 8000bb6: 687b ldr r3, [r7, #4]
+ 8000bb8: f893 3290 ldrb.w r3, [r3, #656] @ 0x290
+ 8000bbc: 2b01 cmp r3, #1
+ 8000bbe: d101 bne.n 8000bc4
+ 8000bc0: 2302 movs r3, #2
+ 8000bc2: e012 b.n 8000bea
+ 8000bc4: 687b ldr r3, [r7, #4]
+ 8000bc6: 2201 movs r2, #1
+ 8000bc8: f883 2290 strb.w r2, [r3, #656] @ 0x290
+ hpcd->USB_Address = address;
+ 8000bcc: 687b ldr r3, [r7, #4]
+ 8000bce: 78fa ldrb r2, [r7, #3]
+ 8000bd0: 735a strb r2, [r3, #13]
+ (void)USB_SetDevAddress(hpcd->Instance, address);
+ 8000bd2: 687b ldr r3, [r7, #4]
+ 8000bd4: 681b ldr r3, [r3, #0]
+ 8000bd6: 78fa ldrb r2, [r7, #3]
+ 8000bd8: 4611 mov r1, r2
+ 8000bda: 4618 mov r0, r3
+ 8000bdc: f004 fa36 bl 800504c
+ __HAL_UNLOCK(hpcd);
+ 8000be0: 687b ldr r3, [r7, #4]
+ 8000be2: 2200 movs r2, #0
+ 8000be4: f883 2290 strb.w r2, [r3, #656] @ 0x290
+
+ return HAL_OK;
+ 8000be8: 2300 movs r3, #0
+}
+ 8000bea: 4618 mov r0, r3
+ 8000bec: 3708 adds r7, #8
+ 8000bee: 46bd mov sp, r7
+ 8000bf0: bd80 pop {r7, pc}
+
+08000bf2 :
+ * @param ep_type endpoint type
+ * @retval HAL status
+ */
+HAL_StatusTypeDef HAL_PCD_EP_Open(PCD_HandleTypeDef *hpcd, uint8_t ep_addr,
+ uint16_t ep_mps, uint8_t ep_type)
+{
+ 8000bf2: b580 push {r7, lr}
+ 8000bf4: b084 sub sp, #16
+ 8000bf6: af00 add r7, sp, #0
+ 8000bf8: 6078 str r0, [r7, #4]
+ 8000bfa: 4608 mov r0, r1
+ 8000bfc: 4611 mov r1, r2
+ 8000bfe: 461a mov r2, r3
+ 8000c00: 4603 mov r3, r0
+ 8000c02: 70fb strb r3, [r7, #3]
+ 8000c04: 460b mov r3, r1
+ 8000c06: 803b strh r3, [r7, #0]
+ 8000c08: 4613 mov r3, r2
+ 8000c0a: 70bb strb r3, [r7, #2]
+ HAL_StatusTypeDef ret = HAL_OK;
+ 8000c0c: 2300 movs r3, #0
+ 8000c0e: 72fb strb r3, [r7, #11]
+ PCD_EPTypeDef *ep;
+
+ if ((ep_addr & 0x80U) == 0x80U)
+ 8000c10: f997 3003 ldrsb.w r3, [r7, #3]
+ 8000c14: 2b00 cmp r3, #0
+ 8000c16: da0e bge.n 8000c36
+ {
+ ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK];
+ 8000c18: 78fb ldrb r3, [r7, #3]
+ 8000c1a: f003 0207 and.w r2, r3, #7
+ 8000c1e: 4613 mov r3, r2
+ 8000c20: 009b lsls r3, r3, #2
+ 8000c22: 4413 add r3, r2
+ 8000c24: 00db lsls r3, r3, #3
+ 8000c26: 3310 adds r3, #16
+ 8000c28: 687a ldr r2, [r7, #4]
+ 8000c2a: 4413 add r3, r2
+ 8000c2c: 60fb str r3, [r7, #12]
+ ep->is_in = 1U;
+ 8000c2e: 68fb ldr r3, [r7, #12]
+ 8000c30: 2201 movs r2, #1
+ 8000c32: 705a strb r2, [r3, #1]
+ 8000c34: e00e b.n 8000c54
+ }
+ else
+ {
+ ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK];
+ 8000c36: 78fb ldrb r3, [r7, #3]
+ 8000c38: f003 0207 and.w r2, r3, #7
+ 8000c3c: 4613 mov r3, r2
+ 8000c3e: 009b lsls r3, r3, #2
+ 8000c40: 4413 add r3, r2
+ 8000c42: 00db lsls r3, r3, #3
+ 8000c44: f503 73a8 add.w r3, r3, #336 @ 0x150
+ 8000c48: 687a ldr r2, [r7, #4]
+ 8000c4a: 4413 add r3, r2
+ 8000c4c: 60fb str r3, [r7, #12]
+ ep->is_in = 0U;
+ 8000c4e: 68fb ldr r3, [r7, #12]
+ 8000c50: 2200 movs r2, #0
+ 8000c52: 705a strb r2, [r3, #1]
+ }
+
+ ep->num = ep_addr & EP_ADDR_MSK;
+ 8000c54: 78fb ldrb r3, [r7, #3]
+ 8000c56: f003 0307 and.w r3, r3, #7
+ 8000c5a: b2da uxtb r2, r3
+ 8000c5c: 68fb ldr r3, [r7, #12]
+ 8000c5e: 701a strb r2, [r3, #0]
+ ep->maxpacket = ep_mps;
+ 8000c60: 883a ldrh r2, [r7, #0]
+ 8000c62: 68fb ldr r3, [r7, #12]
+ 8000c64: 611a str r2, [r3, #16]
+ ep->type = ep_type;
+ 8000c66: 68fb ldr r3, [r7, #12]
+ 8000c68: 78ba ldrb r2, [r7, #2]
+ 8000c6a: 70da strb r2, [r3, #3]
+ ep->tx_fifo_num = ep->num;
+ }
+#endif /* defined (USB_OTG_FS) */
+
+ /* Set initial data PID. */
+ if (ep_type == EP_TYPE_BULK)
+ 8000c6c: 78bb ldrb r3, [r7, #2]
+ 8000c6e: 2b02 cmp r3, #2
+ 8000c70: d102 bne.n 8000c78
+ {
+ ep->data_pid_start = 0U;
+ 8000c72: 68fb ldr r3, [r7, #12]
+ 8000c74: 2200 movs r2, #0
+ 8000c76: 711a strb r2, [r3, #4]
+ }
+
+ __HAL_LOCK(hpcd);
+ 8000c78: 687b ldr r3, [r7, #4]
+ 8000c7a: f893 3290 ldrb.w r3, [r3, #656] @ 0x290
+ 8000c7e: 2b01 cmp r3, #1
+ 8000c80: d101 bne.n 8000c86
+ 8000c82: 2302 movs r3, #2
+ 8000c84: e00e b.n 8000ca4
+ 8000c86: 687b ldr r3, [r7, #4]
+ 8000c88: 2201 movs r2, #1
+ 8000c8a: f883 2290 strb.w r2, [r3, #656] @ 0x290
+ (void)USB_ActivateEndpoint(hpcd->Instance, ep);
+ 8000c8e: 687b ldr r3, [r7, #4]
+ 8000c90: 681b ldr r3, [r3, #0]
+ 8000c92: 68f9 ldr r1, [r7, #12]
+ 8000c94: 4618 mov r0, r3
+ 8000c96: f001 ff7f bl 8002b98
+ __HAL_UNLOCK(hpcd);
+ 8000c9a: 687b ldr r3, [r7, #4]
+ 8000c9c: 2200 movs r2, #0
+ 8000c9e: f883 2290 strb.w r2, [r3, #656] @ 0x290
+
+ return ret;
+ 8000ca2: 7afb ldrb r3, [r7, #11]
+}
+ 8000ca4: 4618 mov r0, r3
+ 8000ca6: 3710 adds r7, #16
+ 8000ca8: 46bd mov sp, r7
+ 8000caa: bd80 pop {r7, pc}
+
+08000cac :
+ * @param hpcd PCD handle
+ * @param ep_addr endpoint address
+ * @retval HAL status
+ */
+HAL_StatusTypeDef HAL_PCD_EP_Close(PCD_HandleTypeDef *hpcd, uint8_t ep_addr)
+{
+ 8000cac: b580 push {r7, lr}
+ 8000cae: b084 sub sp, #16
+ 8000cb0: af00 add r7, sp, #0
+ 8000cb2: 6078 str r0, [r7, #4]
+ 8000cb4: 460b mov r3, r1
+ 8000cb6: 70fb strb r3, [r7, #3]
+ PCD_EPTypeDef *ep;
+
+ if ((ep_addr & 0x80U) == 0x80U)
+ 8000cb8: f997 3003 ldrsb.w r3, [r7, #3]
+ 8000cbc: 2b00 cmp r3, #0
+ 8000cbe: da0e bge.n 8000cde
+ {
+ ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK];
+ 8000cc0: 78fb ldrb r3, [r7, #3]
+ 8000cc2: f003 0207 and.w r2, r3, #7
+ 8000cc6: 4613 mov r3, r2
+ 8000cc8: 009b lsls r3, r3, #2
+ 8000cca: 4413 add r3, r2
+ 8000ccc: 00db lsls r3, r3, #3
+ 8000cce: 3310 adds r3, #16
+ 8000cd0: 687a ldr r2, [r7, #4]
+ 8000cd2: 4413 add r3, r2
+ 8000cd4: 60fb str r3, [r7, #12]
+ ep->is_in = 1U;
+ 8000cd6: 68fb ldr r3, [r7, #12]
+ 8000cd8: 2201 movs r2, #1
+ 8000cda: 705a strb r2, [r3, #1]
+ 8000cdc: e00e b.n 8000cfc
+ }
+ else
+ {
+ ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK];
+ 8000cde: 78fb ldrb r3, [r7, #3]
+ 8000ce0: f003 0207 and.w r2, r3, #7
+ 8000ce4: 4613 mov r3, r2
+ 8000ce6: 009b lsls r3, r3, #2
+ 8000ce8: 4413 add r3, r2
+ 8000cea: 00db lsls r3, r3, #3
+ 8000cec: f503 73a8 add.w r3, r3, #336 @ 0x150
+ 8000cf0: 687a ldr r2, [r7, #4]
+ 8000cf2: 4413 add r3, r2
+ 8000cf4: 60fb str r3, [r7, #12]
+ ep->is_in = 0U;
+ 8000cf6: 68fb ldr r3, [r7, #12]
+ 8000cf8: 2200 movs r2, #0
+ 8000cfa: 705a strb r2, [r3, #1]
+ }
+ ep->num = ep_addr & EP_ADDR_MSK;
+ 8000cfc: 78fb ldrb r3, [r7, #3]
+ 8000cfe: f003 0307 and.w r3, r3, #7
+ 8000d02: b2da uxtb r2, r3
+ 8000d04: 68fb ldr r3, [r7, #12]
+ 8000d06: 701a strb r2, [r3, #0]
+
+ __HAL_LOCK(hpcd);
+ 8000d08: 687b ldr r3, [r7, #4]
+ 8000d0a: f893 3290 ldrb.w r3, [r3, #656] @ 0x290
+ 8000d0e: 2b01 cmp r3, #1
+ 8000d10: d101 bne.n 8000d16
+ 8000d12: 2302 movs r3, #2
+ 8000d14: e00e b.n 8000d34
+ 8000d16: 687b ldr r3, [r7, #4]
+ 8000d18: 2201 movs r2, #1
+ 8000d1a: f883 2290 strb.w r2, [r3, #656] @ 0x290
+ (void)USB_DeactivateEndpoint(hpcd->Instance, ep);
+ 8000d1e: 687b ldr r3, [r7, #4]
+ 8000d20: 681b ldr r3, [r3, #0]
+ 8000d22: 68f9 ldr r1, [r7, #12]
+ 8000d24: 4618 mov r0, r3
+ 8000d26: f002 faf7 bl 8003318
+ __HAL_UNLOCK(hpcd);
+ 8000d2a: 687b ldr r3, [r7, #4]
+ 8000d2c: 2200 movs r2, #0
+ 8000d2e: f883 2290 strb.w r2, [r3, #656] @ 0x290
+ return HAL_OK;
+ 8000d32: 2300 movs r3, #0
+}
+ 8000d34: 4618 mov r0, r3
+ 8000d36: 3710 adds r7, #16
+ 8000d38: 46bd mov sp, r7
+ 8000d3a: bd80 pop {r7, pc}
+
+08000d3c :
+ * @param pBuf pointer to the reception buffer
+ * @param len amount of data to be received
+ * @retval HAL status
+ */
+HAL_StatusTypeDef HAL_PCD_EP_Receive(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint32_t len)
+{
+ 8000d3c: b580 push {r7, lr}
+ 8000d3e: b086 sub sp, #24
+ 8000d40: af00 add r7, sp, #0
+ 8000d42: 60f8 str r0, [r7, #12]
+ 8000d44: 607a str r2, [r7, #4]
+ 8000d46: 603b str r3, [r7, #0]
+ 8000d48: 460b mov r3, r1
+ 8000d4a: 72fb strb r3, [r7, #11]
+ PCD_EPTypeDef *ep;
+
+ ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK];
+ 8000d4c: 7afb ldrb r3, [r7, #11]
+ 8000d4e: f003 0207 and.w r2, r3, #7
+ 8000d52: 4613 mov r3, r2
+ 8000d54: 009b lsls r3, r3, #2
+ 8000d56: 4413 add r3, r2
+ 8000d58: 00db lsls r3, r3, #3
+ 8000d5a: f503 73a8 add.w r3, r3, #336 @ 0x150
+ 8000d5e: 68fa ldr r2, [r7, #12]
+ 8000d60: 4413 add r3, r2
+ 8000d62: 617b str r3, [r7, #20]
+
+ /*setup and start the Xfer */
+ ep->xfer_buff = pBuf;
+ 8000d64: 697b ldr r3, [r7, #20]
+ 8000d66: 687a ldr r2, [r7, #4]
+ 8000d68: 615a str r2, [r3, #20]
+ ep->xfer_len = len;
+ 8000d6a: 697b ldr r3, [r7, #20]
+ 8000d6c: 683a ldr r2, [r7, #0]
+ 8000d6e: 619a str r2, [r3, #24]
+ ep->xfer_count = 0U;
+ 8000d70: 697b ldr r3, [r7, #20]
+ 8000d72: 2200 movs r2, #0
+ 8000d74: 61da str r2, [r3, #28]
+ ep->is_in = 0U;
+ 8000d76: 697b ldr r3, [r7, #20]
+ 8000d78: 2200 movs r2, #0
+ 8000d7a: 705a strb r2, [r3, #1]
+ ep->num = ep_addr & EP_ADDR_MSK;
+ 8000d7c: 7afb ldrb r3, [r7, #11]
+ 8000d7e: f003 0307 and.w r3, r3, #7
+ 8000d82: b2da uxtb r2, r3
+ 8000d84: 697b ldr r3, [r7, #20]
+ 8000d86: 701a strb r2, [r3, #0]
+
+ (void)USB_EPStartXfer(hpcd->Instance, ep);
+ 8000d88: 68fb ldr r3, [r7, #12]
+ 8000d8a: 681b ldr r3, [r3, #0]
+ 8000d8c: 6979 ldr r1, [r7, #20]
+ 8000d8e: 4618 mov r0, r3
+ 8000d90: f002 fcae bl 80036f0
+
+ return HAL_OK;
+ 8000d94: 2300 movs r3, #0
+}
+ 8000d96: 4618 mov r0, r3
+ 8000d98: 3718 adds r7, #24
+ 8000d9a: 46bd mov sp, r7
+ 8000d9c: bd80 pop {r7, pc}
+
+08000d9e :
+ * @param pBuf pointer to the transmission buffer
+ * @param len amount of data to be sent
+ * @retval HAL status
+ */
+HAL_StatusTypeDef HAL_PCD_EP_Transmit(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint32_t len)
+{
+ 8000d9e: b580 push {r7, lr}
+ 8000da0: b086 sub sp, #24
+ 8000da2: af00 add r7, sp, #0
+ 8000da4: 60f8 str r0, [r7, #12]
+ 8000da6: 607a str r2, [r7, #4]
+ 8000da8: 603b str r3, [r7, #0]
+ 8000daa: 460b mov r3, r1
+ 8000dac: 72fb strb r3, [r7, #11]
+ PCD_EPTypeDef *ep;
+
+ ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK];
+ 8000dae: 7afb ldrb r3, [r7, #11]
+ 8000db0: f003 0207 and.w r2, r3, #7
+ 8000db4: 4613 mov r3, r2
+ 8000db6: 009b lsls r3, r3, #2
+ 8000db8: 4413 add r3, r2
+ 8000dba: 00db lsls r3, r3, #3
+ 8000dbc: 3310 adds r3, #16
+ 8000dbe: 68fa ldr r2, [r7, #12]
+ 8000dc0: 4413 add r3, r2
+ 8000dc2: 617b str r3, [r7, #20]
+
+ /*setup and start the Xfer */
+ ep->xfer_buff = pBuf;
+ 8000dc4: 697b ldr r3, [r7, #20]
+ 8000dc6: 687a ldr r2, [r7, #4]
+ 8000dc8: 615a str r2, [r3, #20]
+ ep->xfer_len = len;
+ 8000dca: 697b ldr r3, [r7, #20]
+ 8000dcc: 683a ldr r2, [r7, #0]
+ 8000dce: 619a str r2, [r3, #24]
+#if defined (USB)
+ ep->xfer_fill_db = 1U;
+ 8000dd0: 697b ldr r3, [r7, #20]
+ 8000dd2: 2201 movs r2, #1
+ 8000dd4: f883 2024 strb.w r2, [r3, #36] @ 0x24
+ ep->xfer_len_db = len;
+ 8000dd8: 697b ldr r3, [r7, #20]
+ 8000dda: 683a ldr r2, [r7, #0]
+ 8000ddc: 621a str r2, [r3, #32]
+#endif /* defined (USB) */
+ ep->xfer_count = 0U;
+ 8000dde: 697b ldr r3, [r7, #20]
+ 8000de0: 2200 movs r2, #0
+ 8000de2: 61da str r2, [r3, #28]
+ ep->is_in = 1U;
+ 8000de4: 697b ldr r3, [r7, #20]
+ 8000de6: 2201 movs r2, #1
+ 8000de8: 705a strb r2, [r3, #1]
+ ep->num = ep_addr & EP_ADDR_MSK;
+ 8000dea: 7afb ldrb r3, [r7, #11]
+ 8000dec: f003 0307 and.w r3, r3, #7
+ 8000df0: b2da uxtb r2, r3
+ 8000df2: 697b ldr r3, [r7, #20]
+ 8000df4: 701a strb r2, [r3, #0]
+
+ (void)USB_EPStartXfer(hpcd->Instance, ep);
+ 8000df6: 68fb ldr r3, [r7, #12]
+ 8000df8: 681b ldr r3, [r3, #0]
+ 8000dfa: 6979 ldr r1, [r7, #20]
+ 8000dfc: 4618 mov r0, r3
+ 8000dfe: f002 fc77 bl 80036f0
+
+ return HAL_OK;
+ 8000e02: 2300 movs r3, #0
+}
+ 8000e04: 4618 mov r0, r3
+ 8000e06: 3718 adds r7, #24
+ 8000e08: 46bd mov sp, r7
+ 8000e0a: bd80 pop {r7, pc}
+
+08000e0c :
+ * @param hpcd PCD handle
+ * @param ep_addr endpoint address
+ * @retval HAL status
+ */
+HAL_StatusTypeDef HAL_PCD_EP_SetStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr)
+{
+ 8000e0c: b580 push {r7, lr}
+ 8000e0e: b084 sub sp, #16
+ 8000e10: af00 add r7, sp, #0
+ 8000e12: 6078 str r0, [r7, #4]
+ 8000e14: 460b mov r3, r1
+ 8000e16: 70fb strb r3, [r7, #3]
+ PCD_EPTypeDef *ep;
+
+ if (((uint32_t)ep_addr & EP_ADDR_MSK) > hpcd->Init.dev_endpoints)
+ 8000e18: 78fb ldrb r3, [r7, #3]
+ 8000e1a: f003 0307 and.w r3, r3, #7
+ 8000e1e: 687a ldr r2, [r7, #4]
+ 8000e20: 7912 ldrb r2, [r2, #4]
+ 8000e22: 4293 cmp r3, r2
+ 8000e24: d901 bls.n 8000e2a
+ {
+ return HAL_ERROR;
+ 8000e26: 2301 movs r3, #1
+ 8000e28: e04c b.n 8000ec4
+ }
+
+ if ((0x80U & ep_addr) == 0x80U)
+ 8000e2a: f997 3003 ldrsb.w r3, [r7, #3]
+ 8000e2e: 2b00 cmp r3, #0
+ 8000e30: da0e bge.n 8000e50
+ {
+ ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK];
+ 8000e32: 78fb ldrb r3, [r7, #3]
+ 8000e34: f003 0207 and.w r2, r3, #7
+ 8000e38: 4613 mov r3, r2
+ 8000e3a: 009b lsls r3, r3, #2
+ 8000e3c: 4413 add r3, r2
+ 8000e3e: 00db lsls r3, r3, #3
+ 8000e40: 3310 adds r3, #16
+ 8000e42: 687a ldr r2, [r7, #4]
+ 8000e44: 4413 add r3, r2
+ 8000e46: 60fb str r3, [r7, #12]
+ ep->is_in = 1U;
+ 8000e48: 68fb ldr r3, [r7, #12]
+ 8000e4a: 2201 movs r2, #1
+ 8000e4c: 705a strb r2, [r3, #1]
+ 8000e4e: e00c b.n 8000e6a
+ }
+ else
+ {
+ ep = &hpcd->OUT_ep[ep_addr];
+ 8000e50: 78fa ldrb r2, [r7, #3]
+ 8000e52: 4613 mov r3, r2
+ 8000e54: 009b lsls r3, r3, #2
+ 8000e56: 4413 add r3, r2
+ 8000e58: 00db lsls r3, r3, #3
+ 8000e5a: f503 73a8 add.w r3, r3, #336 @ 0x150
+ 8000e5e: 687a ldr r2, [r7, #4]
+ 8000e60: 4413 add r3, r2
+ 8000e62: 60fb str r3, [r7, #12]
+ ep->is_in = 0U;
+ 8000e64: 68fb ldr r3, [r7, #12]
+ 8000e66: 2200 movs r2, #0
+ 8000e68: 705a strb r2, [r3, #1]
+ }
+
+ ep->is_stall = 1U;
+ 8000e6a: 68fb ldr r3, [r7, #12]
+ 8000e6c: 2201 movs r2, #1
+ 8000e6e: 709a strb r2, [r3, #2]
+ ep->num = ep_addr & EP_ADDR_MSK;
+ 8000e70: 78fb ldrb r3, [r7, #3]
+ 8000e72: f003 0307 and.w r3, r3, #7
+ 8000e76: b2da uxtb r2, r3
+ 8000e78: 68fb ldr r3, [r7, #12]
+ 8000e7a: 701a strb r2, [r3, #0]
+
+ __HAL_LOCK(hpcd);
+ 8000e7c: 687b ldr r3, [r7, #4]
+ 8000e7e: f893 3290 ldrb.w r3, [r3, #656] @ 0x290
+ 8000e82: 2b01 cmp r3, #1
+ 8000e84: d101 bne.n 8000e8a
+ 8000e86: 2302 movs r3, #2
+ 8000e88: e01c b.n 8000ec4
+ 8000e8a: 687b ldr r3, [r7, #4]
+ 8000e8c: 2201 movs r2, #1
+ 8000e8e: f883 2290 strb.w r2, [r3, #656] @ 0x290
+
+ (void)USB_EPSetStall(hpcd->Instance, ep);
+ 8000e92: 687b ldr r3, [r7, #4]
+ 8000e94: 681b ldr r3, [r3, #0]
+ 8000e96: 68f9 ldr r1, [r7, #12]
+ 8000e98: 4618 mov r0, r3
+ 8000e9a: f003 ffda bl 8004e52
+
+ if ((ep_addr & EP_ADDR_MSK) == 0U)
+ 8000e9e: 78fb ldrb r3, [r7, #3]
+ 8000ea0: f003 0307 and.w r3, r3, #7
+ 8000ea4: 2b00 cmp r3, #0
+ 8000ea6: d108 bne.n 8000eba
+ {
+ (void)USB_EP0_OutStart(hpcd->Instance, (uint8_t *)hpcd->Setup);
+ 8000ea8: 687b ldr r3, [r7, #4]
+ 8000eaa: 681a ldr r2, [r3, #0]
+ 8000eac: 687b ldr r3, [r7, #4]
+ 8000eae: f503 7326 add.w r3, r3, #664 @ 0x298
+ 8000eb2: 4619 mov r1, r3
+ 8000eb4: 4610 mov r0, r2
+ 8000eb6: f004 f8ff bl 80050b8
+ }
+
+ __HAL_UNLOCK(hpcd);
+ 8000eba: 687b ldr r3, [r7, #4]
+ 8000ebc: 2200 movs r2, #0
+ 8000ebe: f883 2290 strb.w r2, [r3, #656] @ 0x290
+
+ return HAL_OK;
+ 8000ec2: 2300 movs r3, #0
+}
+ 8000ec4: 4618 mov r0, r3
+ 8000ec6: 3710 adds r7, #16
+ 8000ec8: 46bd mov sp, r7
+ 8000eca: bd80 pop {r7, pc}
+
+08000ecc :
+ * @param hpcd PCD handle
+ * @param ep_addr endpoint address
+ * @retval HAL status
+ */
+HAL_StatusTypeDef HAL_PCD_EP_ClrStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr)
+{
+ 8000ecc: b580 push {r7, lr}
+ 8000ece: b084 sub sp, #16
+ 8000ed0: af00 add r7, sp, #0
+ 8000ed2: 6078 str r0, [r7, #4]
+ 8000ed4: 460b mov r3, r1
+ 8000ed6: 70fb strb r3, [r7, #3]
+ PCD_EPTypeDef *ep;
+
+ if (((uint32_t)ep_addr & 0x0FU) > hpcd->Init.dev_endpoints)
+ 8000ed8: 78fb ldrb r3, [r7, #3]
+ 8000eda: f003 030f and.w r3, r3, #15
+ 8000ede: 687a ldr r2, [r7, #4]
+ 8000ee0: 7912 ldrb r2, [r2, #4]
+ 8000ee2: 4293 cmp r3, r2
+ 8000ee4: d901 bls.n 8000eea
+ {
+ return HAL_ERROR;
+ 8000ee6: 2301 movs r3, #1
+ 8000ee8: e040 b.n 8000f6c
+ }
+
+ if ((0x80U & ep_addr) == 0x80U)
+ 8000eea: f997 3003 ldrsb.w r3, [r7, #3]
+ 8000eee: 2b00 cmp r3, #0
+ 8000ef0: da0e bge.n 8000f10
+ {
+ ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK];
+ 8000ef2: 78fb ldrb r3, [r7, #3]
+ 8000ef4: f003 0207 and.w r2, r3, #7
+ 8000ef8: 4613 mov r3, r2
+ 8000efa: 009b lsls r3, r3, #2
+ 8000efc: 4413 add r3, r2
+ 8000efe: 00db lsls r3, r3, #3
+ 8000f00: 3310 adds r3, #16
+ 8000f02: 687a ldr r2, [r7, #4]
+ 8000f04: 4413 add r3, r2
+ 8000f06: 60fb str r3, [r7, #12]
+ ep->is_in = 1U;
+ 8000f08: 68fb ldr r3, [r7, #12]
+ 8000f0a: 2201 movs r2, #1
+ 8000f0c: 705a strb r2, [r3, #1]
+ 8000f0e: e00e b.n 8000f2e
+ }
+ else
+ {
+ ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK];
+ 8000f10: 78fb ldrb r3, [r7, #3]
+ 8000f12: f003 0207 and.w r2, r3, #7
+ 8000f16: 4613 mov r3, r2
+ 8000f18: 009b lsls r3, r3, #2
+ 8000f1a: 4413 add r3, r2
+ 8000f1c: 00db lsls r3, r3, #3
+ 8000f1e: f503 73a8 add.w r3, r3, #336 @ 0x150
+ 8000f22: 687a ldr r2, [r7, #4]
+ 8000f24: 4413 add r3, r2
+ 8000f26: 60fb str r3, [r7, #12]
+ ep->is_in = 0U;
+ 8000f28: 68fb ldr r3, [r7, #12]
+ 8000f2a: 2200 movs r2, #0
+ 8000f2c: 705a strb r2, [r3, #1]
+ }
+
+ ep->is_stall = 0U;
+ 8000f2e: 68fb ldr r3, [r7, #12]
+ 8000f30: 2200 movs r2, #0
+ 8000f32: 709a strb r2, [r3, #2]
+ ep->num = ep_addr & EP_ADDR_MSK;
+ 8000f34: 78fb ldrb r3, [r7, #3]
+ 8000f36: f003 0307 and.w r3, r3, #7
+ 8000f3a: b2da uxtb r2, r3
+ 8000f3c: 68fb ldr r3, [r7, #12]
+ 8000f3e: 701a strb r2, [r3, #0]
+
+ __HAL_LOCK(hpcd);
+ 8000f40: 687b ldr r3, [r7, #4]
+ 8000f42: f893 3290 ldrb.w r3, [r3, #656] @ 0x290
+ 8000f46: 2b01 cmp r3, #1
+ 8000f48: d101 bne.n 8000f4e
+ 8000f4a: 2302 movs r3, #2
+ 8000f4c: e00e b.n 8000f6c
+ 8000f4e: 687b ldr r3, [r7, #4]
+ 8000f50: 2201 movs r2, #1
+ 8000f52: f883 2290 strb.w r2, [r3, #656] @ 0x290
+ (void)USB_EPClearStall(hpcd->Instance, ep);
+ 8000f56: 687b ldr r3, [r7, #4]
+ 8000f58: 681b ldr r3, [r3, #0]
+ 8000f5a: 68f9 ldr r1, [r7, #12]
+ 8000f5c: 4618 mov r0, r3
+ 8000f5e: f003 ffc8 bl 8004ef2
+ __HAL_UNLOCK(hpcd);
+ 8000f62: 687b ldr r3, [r7, #4]
+ 8000f64: 2200 movs r2, #0
+ 8000f66: f883 2290 strb.w r2, [r3, #656] @ 0x290
+
+ return HAL_OK;
+ 8000f6a: 2300 movs r3, #0
+}
+ 8000f6c: 4618 mov r0, r3
+ 8000f6e: 3710 adds r7, #16
+ 8000f70: 46bd mov sp, r7
+ 8000f72: bd80 pop {r7, pc}
+
+08000f74 :
+ * @brief This function handles PCD Endpoint interrupt request.
+ * @param hpcd PCD handle
+ * @retval HAL status
+ */
+static HAL_StatusTypeDef PCD_EP_ISR_Handler(PCD_HandleTypeDef *hpcd)
+{
+ 8000f74: b580 push {r7, lr}
+ 8000f76: b096 sub sp, #88 @ 0x58
+ 8000f78: af00 add r7, sp, #0
+ 8000f7a: 6078 str r0, [r7, #4]
+#if (USE_USB_DOUBLE_BUFFER != 1U)
+ count = 0U;
+#endif /* USE_USB_DOUBLE_BUFFER */
+
+ /* stay in loop while pending interrupts */
+ while ((hpcd->Instance->ISTR & USB_ISTR_CTR) != 0U)
+ 8000f7c: e3bb b.n 80016f6
+ {
+ wIstr = hpcd->Instance->ISTR;
+ 8000f7e: 687b ldr r3, [r7, #4]
+ 8000f80: 681b ldr r3, [r3, #0]
+ 8000f82: f8b3 3044 ldrh.w r3, [r3, #68] @ 0x44
+ 8000f86: f8a7 304e strh.w r3, [r7, #78] @ 0x4e
+
+ /* extract highest priority endpoint number */
+ epindex = (uint8_t)(wIstr & USB_ISTR_EP_ID);
+ 8000f8a: f8b7 304e ldrh.w r3, [r7, #78] @ 0x4e
+ 8000f8e: b2db uxtb r3, r3
+ 8000f90: f003 030f and.w r3, r3, #15
+ 8000f94: f887 304d strb.w r3, [r7, #77] @ 0x4d
+
+ if (epindex == 0U)
+ 8000f98: f897 304d ldrb.w r3, [r7, #77] @ 0x4d
+ 8000f9c: 2b00 cmp r3, #0
+ 8000f9e: f040 8175 bne.w 800128c
+ {
+ /* Decode and service control endpoint interrupt */
+
+ /* DIR bit = origin of the interrupt */
+ if ((wIstr & USB_ISTR_DIR) == 0U)
+ 8000fa2: f8b7 304e ldrh.w r3, [r7, #78] @ 0x4e
+ 8000fa6: f003 0310 and.w r3, r3, #16
+ 8000faa: 2b00 cmp r3, #0
+ 8000fac: d14e bne.n 800104c
+ {
+ /* DIR = 0 */
+
+ /* DIR = 0 => IN int */
+ /* DIR = 0 implies that (EP_CTR_TX = 1) always */
+ PCD_CLEAR_TX_EP_CTR(hpcd->Instance, PCD_ENDP0);
+ 8000fae: 687b ldr r3, [r7, #4]
+ 8000fb0: 681b ldr r3, [r3, #0]
+ 8000fb2: 881b ldrh r3, [r3, #0]
+ 8000fb4: b29b uxth r3, r3
+ 8000fb6: f423 43e1 bic.w r3, r3, #28800 @ 0x7080
+ 8000fba: f023 0370 bic.w r3, r3, #112 @ 0x70
+ 8000fbe: 81fb strh r3, [r7, #14]
+ 8000fc0: 687b ldr r3, [r7, #4]
+ 8000fc2: 681a ldr r2, [r3, #0]
+ 8000fc4: 89fb ldrh r3, [r7, #14]
+ 8000fc6: ea6f 4343 mvn.w r3, r3, lsl #17
+ 8000fca: ea6f 4353 mvn.w r3, r3, lsr #17
+ 8000fce: b29b uxth r3, r3
+ 8000fd0: 8013 strh r3, [r2, #0]
+ ep = &hpcd->IN_ep[0];
+ 8000fd2: 687b ldr r3, [r7, #4]
+ 8000fd4: 3310 adds r3, #16
+ 8000fd6: 657b str r3, [r7, #84] @ 0x54
+
+ ep->xfer_count = PCD_GET_EP_TX_CNT(hpcd->Instance, ep->num);
+ 8000fd8: 687b ldr r3, [r7, #4]
+ 8000fda: 681b ldr r3, [r3, #0]
+ 8000fdc: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50
+ 8000fe0: b29b uxth r3, r3
+ 8000fe2: 461a mov r2, r3
+ 8000fe4: 6d7b ldr r3, [r7, #84] @ 0x54
+ 8000fe6: 781b ldrb r3, [r3, #0]
+ 8000fe8: 00db lsls r3, r3, #3
+ 8000fea: 4413 add r3, r2
+ 8000fec: 3302 adds r3, #2
+ 8000fee: 005b lsls r3, r3, #1
+ 8000ff0: 687a ldr r2, [r7, #4]
+ 8000ff2: 6812 ldr r2, [r2, #0]
+ 8000ff4: 4413 add r3, r2
+ 8000ff6: f503 6380 add.w r3, r3, #1024 @ 0x400
+ 8000ffa: 881b ldrh r3, [r3, #0]
+ 8000ffc: f3c3 0209 ubfx r2, r3, #0, #10
+ 8001000: 6d7b ldr r3, [r7, #84] @ 0x54
+ 8001002: 61da str r2, [r3, #28]
+ ep->xfer_buff += ep->xfer_count;
+ 8001004: 6d7b ldr r3, [r7, #84] @ 0x54
+ 8001006: 695a ldr r2, [r3, #20]
+ 8001008: 6d7b ldr r3, [r7, #84] @ 0x54
+ 800100a: 69db ldr r3, [r3, #28]
+ 800100c: 441a add r2, r3
+ 800100e: 6d7b ldr r3, [r7, #84] @ 0x54
+ 8001010: 615a str r2, [r3, #20]
+
+ /* TX COMPLETE */
+#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
+ hpcd->DataInStageCallback(hpcd, 0U);
+#else
+ HAL_PCD_DataInStageCallback(hpcd, 0U);
+ 8001012: 2100 movs r1, #0
+ 8001014: 6878 ldr r0, [r7, #4]
+ 8001016: f005 fca8 bl 800696a
+#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
+
+ if ((hpcd->USB_Address > 0U) && (ep->xfer_len == 0U))
+ 800101a: 687b ldr r3, [r7, #4]
+ 800101c: 7b5b ldrb r3, [r3, #13]
+ 800101e: b2db uxtb r3, r3
+ 8001020: 2b00 cmp r3, #0
+ 8001022: f000 8368 beq.w 80016f6
+ 8001026: 6d7b ldr r3, [r7, #84] @ 0x54
+ 8001028: 699b ldr r3, [r3, #24]
+ 800102a: 2b00 cmp r3, #0
+ 800102c: f040 8363 bne.w 80016f6
+ {
+ hpcd->Instance->DADDR = ((uint16_t)hpcd->USB_Address | USB_DADDR_EF);
+ 8001030: 687b ldr r3, [r7, #4]
+ 8001032: 7b5b ldrb r3, [r3, #13]
+ 8001034: b2db uxtb r3, r3
+ 8001036: f063 037f orn r3, r3, #127 @ 0x7f
+ 800103a: b2da uxtb r2, r3
+ 800103c: 687b ldr r3, [r7, #4]
+ 800103e: 681b ldr r3, [r3, #0]
+ 8001040: f8a3 204c strh.w r2, [r3, #76] @ 0x4c
+ hpcd->USB_Address = 0U;
+ 8001044: 687b ldr r3, [r7, #4]
+ 8001046: 2200 movs r2, #0
+ 8001048: 735a strb r2, [r3, #13]
+ 800104a: e354 b.n 80016f6
+ {
+ /* DIR = 1 */
+
+ /* DIR = 1 & CTR_RX => SETUP or OUT int */
+ /* DIR = 1 & (CTR_TX | CTR_RX) => 2 int pending */
+ ep = &hpcd->OUT_ep[0];
+ 800104c: 687b ldr r3, [r7, #4]
+ 800104e: f503 73a8 add.w r3, r3, #336 @ 0x150
+ 8001052: 657b str r3, [r7, #84] @ 0x54
+ wEPVal = PCD_GET_ENDPOINT(hpcd->Instance, PCD_ENDP0);
+ 8001054: 687b ldr r3, [r7, #4]
+ 8001056: 681b ldr r3, [r3, #0]
+ 8001058: 881b ldrh r3, [r3, #0]
+ 800105a: f8a7 304a strh.w r3, [r7, #74] @ 0x4a
+
+ if ((wEPVal & USB_EP_SETUP) != 0U)
+ 800105e: f8b7 304a ldrh.w r3, [r7, #74] @ 0x4a
+ 8001062: f403 6300 and.w r3, r3, #2048 @ 0x800
+ 8001066: 2b00 cmp r3, #0
+ 8001068: d034 beq.n 80010d4
+ {
+ /* Get SETUP Packet */
+ ep->xfer_count = PCD_GET_EP_RX_CNT(hpcd->Instance, ep->num);
+ 800106a: 687b ldr r3, [r7, #4]
+ 800106c: 681b ldr r3, [r3, #0]
+ 800106e: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50
+ 8001072: b29b uxth r3, r3
+ 8001074: 461a mov r2, r3
+ 8001076: 6d7b ldr r3, [r7, #84] @ 0x54
+ 8001078: 781b ldrb r3, [r3, #0]
+ 800107a: 00db lsls r3, r3, #3
+ 800107c: 4413 add r3, r2
+ 800107e: 3306 adds r3, #6
+ 8001080: 005b lsls r3, r3, #1
+ 8001082: 687a ldr r2, [r7, #4]
+ 8001084: 6812 ldr r2, [r2, #0]
+ 8001086: 4413 add r3, r2
+ 8001088: f503 6380 add.w r3, r3, #1024 @ 0x400
+ 800108c: 881b ldrh r3, [r3, #0]
+ 800108e: f3c3 0209 ubfx r2, r3, #0, #10
+ 8001092: 6d7b ldr r3, [r7, #84] @ 0x54
+ 8001094: 61da str r2, [r3, #28]
+
+ USB_ReadPMA(hpcd->Instance, (uint8_t *)hpcd->Setup,
+ 8001096: 687b ldr r3, [r7, #4]
+ 8001098: 6818 ldr r0, [r3, #0]
+ 800109a: 687b ldr r3, [r7, #4]
+ 800109c: f503 7126 add.w r1, r3, #664 @ 0x298
+ 80010a0: 6d7b ldr r3, [r7, #84] @ 0x54
+ 80010a2: 88da ldrh r2, [r3, #6]
+ ep->pmaadress, (uint16_t)ep->xfer_count);
+ 80010a4: 6d7b ldr r3, [r7, #84] @ 0x54
+ 80010a6: 69db ldr r3, [r3, #28]
+ USB_ReadPMA(hpcd->Instance, (uint8_t *)hpcd->Setup,
+ 80010a8: b29b uxth r3, r3
+ 80010aa: f004 f856 bl 800515a
+
+ /* SETUP bit kept frozen while CTR_RX = 1 */
+ PCD_CLEAR_RX_EP_CTR(hpcd->Instance, PCD_ENDP0);
+ 80010ae: 687b ldr r3, [r7, #4]
+ 80010b0: 681b ldr r3, [r3, #0]
+ 80010b2: 881b ldrh r3, [r3, #0]
+ 80010b4: b29a uxth r2, r3
+ 80010b6: f640 738f movw r3, #3983 @ 0xf8f
+ 80010ba: 4013 ands r3, r2
+ 80010bc: 823b strh r3, [r7, #16]
+ 80010be: 687b ldr r3, [r7, #4]
+ 80010c0: 681b ldr r3, [r3, #0]
+ 80010c2: 8a3a ldrh r2, [r7, #16]
+ 80010c4: f042 0280 orr.w r2, r2, #128 @ 0x80
+ 80010c8: b292 uxth r2, r2
+ 80010ca: 801a strh r2, [r3, #0]
+
+ /* Process SETUP Packet*/
+#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
+ hpcd->SetupStageCallback(hpcd);
+#else
+ HAL_PCD_SetupStageCallback(hpcd);
+ 80010cc: 6878 ldr r0, [r7, #4]
+ 80010ce: f005 fc1f bl 8006910
+ 80010d2: e310 b.n 80016f6
+#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
+ }
+ else if ((wEPVal & USB_EP_CTR_RX) != 0U)
+ 80010d4: f9b7 304a ldrsh.w r3, [r7, #74] @ 0x4a
+ 80010d8: 2b00 cmp r3, #0
+ 80010da: f280 830c bge.w 80016f6
+ {
+ PCD_CLEAR_RX_EP_CTR(hpcd->Instance, PCD_ENDP0);
+ 80010de: 687b ldr r3, [r7, #4]
+ 80010e0: 681b ldr r3, [r3, #0]
+ 80010e2: 881b ldrh r3, [r3, #0]
+ 80010e4: b29a uxth r2, r3
+ 80010e6: f640 738f movw r3, #3983 @ 0xf8f
+ 80010ea: 4013 ands r3, r2
+ 80010ec: 83fb strh r3, [r7, #30]
+ 80010ee: 687b ldr r3, [r7, #4]
+ 80010f0: 681b ldr r3, [r3, #0]
+ 80010f2: 8bfa ldrh r2, [r7, #30]
+ 80010f4: f042 0280 orr.w r2, r2, #128 @ 0x80
+ 80010f8: b292 uxth r2, r2
+ 80010fa: 801a strh r2, [r3, #0]
+
+ /* Get Control Data OUT Packet */
+ ep->xfer_count = PCD_GET_EP_RX_CNT(hpcd->Instance, ep->num);
+ 80010fc: 687b ldr r3, [r7, #4]
+ 80010fe: 681b ldr r3, [r3, #0]
+ 8001100: f8b3 3050 ldrh.w r3, [r3, #80] @ 0x50
+ 8001104: b29b uxth r3, r3
+ 8001106: 461a mov r2, r3
+ 8001108: 6d7b ldr r3, [r7, #84] @ 0x54
+ 800110a: 781b ldrb r3, [r3, #0]
+ 800110c: 00db lsls r3, r3, #3
+ 800110e: 4413 add r3, r2
+ 8001110: 3306 adds r3, #6
+ 8001112: 005b lsls r3, r3, #1
+ 8001114: 687a ldr r2, [r7, #4]
+ 8001116: 6812 ldr r2, [r2, #0]
+ 8001118: 4413 add r3, r2
+ 800111a: f503 6380 add.w r3, r3, #1024 @ 0x400
+ 800111e: 881b ldrh r3, [r3, #0]
+ 8001120: f3c3 0209 ubfx r2, r3, #0, #10
+ 8001124: 6d7b ldr r3, [r7, #84] @ 0x54
+ 8001126: 61da str r2, [r3, #28]
+
+ if ((ep->xfer_count != 0U) && (ep->xfer_buff != 0U))
+ 8001128: 6d7b ldr r3, [r7, #84] @ 0x54
+ 800112a: 69db ldr r3, [r3, #28]
+ 800112c: 2b00 cmp r3, #0
+ 800112e: d019 beq.n 8001164
+ 8001130: 6d7b ldr r3, [r7, #84] @ 0x54
+ 8001132: 695b ldr r3, [r3, #20]
+ 8001134: 2b00 cmp r3, #0
+ 8001136: d015 beq.n 8001164
+ {
+ USB_ReadPMA(hpcd->Instance, ep->xfer_buff,
+ 8001138: 687b ldr r3, [r7, #4]
+ 800113a: 6818 ldr r0, [r3, #0]
+ 800113c: 6d7b ldr r3, [r7, #84] @ 0x54
+ 800113e: 6959 ldr r1, [r3, #20]
+ 8001140: 6d7b ldr r3, [r7, #84] @ 0x54
+ 8001142: 88da ldrh r2, [r3, #6]
+ ep->pmaadress, (uint16_t)ep->xfer_count);
+ 8001144: 6d7b ldr r3, [r7, #84] @ 0x54
+ 8001146: 69db ldr r3, [r3, #28]
+ USB_ReadPMA(hpcd->Instance, ep->xfer_buff,
+ 8001148: b29b uxth r3, r3
+ 800114a: f004 f806 bl 800515a