Преглед на файлове

Добавлюя модуль и модуль i2c.

TelenkovDmitry преди 4 седмици
родител
ревизия
5d70bd2122
променени са 28 файла, в които са добавени 2602 реда и са изтрити 1092 реда
  1. 1 1
      cube_example/usb_hid_example/EWARM/settings/Project.wsdt
  2. 2 2
      cube_example/usb_hid_example/EWARM/settings/usb_hid_example.usb_hid_example.cspy.bat
  3. 2 2
      cube_example/usb_hid_example/EWARM/settings/usb_hid_example.usb_hid_example.cspy.ps1
  4. 1 1
      cube_example/usb_hid_example/EWARM/settings/usb_hid_example.usb_hid_example.general.xcl
  5. 573 573
      cube_example/usb_hid_example/EWARM/usb_hid_example.dep
  6. 96 18
      cube_example/usb_hid_example/usb_hid_example.ioc
  7. 592 0
      desk/libs/thirdparty/oled_ssd1327/GFX_SSD1327.c
  8. 125 0
      desk/libs/thirdparty/oled_ssd1327/GFX_SSD1327.h
  9. 346 0
      desk/libs/thirdparty/oled_ssd1327/OLED_SSD1327.c
  10. 145 0
      desk/libs/thirdparty/oled_ssd1327/OLED_SSD1327.h
  11. 55 0
      desk/libs/thirdparty/oled_ssd1327/i2c.c
  12. 58 0
      desk/libs/thirdparty/oled_ssd1327/i2c.h
  13. 3 0
      desk/user/main.cpp
  14. 1 1
      desk/user/stm32g4xx_hal_conf.h
  15. BIN
      doc/photo_2025-04-09_14-36-47.jpg
  16. BIN
      doc/Датчик оборотов робота.jpg
  17. BIN
      project/ewarm/desk/Debug/Exe/desk.out
  18. 84 85
      project/ewarm/desk/Debug/List/desk.map
  19. 473 389
      project/ewarm/desk/desk.dep
  20. 13 0
      project/ewarm/desk/desk.ewp
  21. 12 0
      project/ewarm/desk/desk.ewt
  22. 2 2
      project/ewarm/desk/settings/desk.Debug.cspy.bat
  23. 2 2
      project/ewarm/desk/settings/desk.Debug.cspy.ps1
  24. 1 1
      project/ewarm/desk/settings/desk.Debug.general.xcl
  25. 10 10
      project/ewarm/robot/robot.dep
  26. 2 2
      project/ewarm/robot/settings/robot.Debug.cspy.bat
  27. 2 2
      project/ewarm/robot/settings/robot.Debug.cspy.ps1
  28. 1 1
      project/ewarm/robot/settings/robot.Debug.general.xcl

Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
cube_example/usb_hid_example/EWARM/settings/Project.wsdt


+ 2 - 2
cube_example/usb_hid_example/EWARM/settings/usb_hid_example.usb_hid_example.cspy.bat

@@ -25,7 +25,7 @@ if not "%~1" == "" goto debugFile
 
 @echo on 
 
-"C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.3\common\bin\cspybat" -f "C:\projects\FlyElectronics\tuber\cube_example\usb_hid_example\EWARM\settings\usb_hid_example.usb_hid_example.general.xcl" --backend -f "C:\projects\FlyElectronics\tuber\cube_example\usb_hid_example\EWARM\settings\usb_hid_example.usb_hid_example.driver.xcl" 
+"C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.3\common\bin\cspybat" -f "D:\FlyElectronics\tuber\cube_example\usb_hid_example\EWARM\settings\usb_hid_example.usb_hid_example.general.xcl" --backend -f "D:\FlyElectronics\tuber\cube_example\usb_hid_example\EWARM\settings\usb_hid_example.usb_hid_example.driver.xcl" 
 
 @echo off 
 goto end 
@@ -34,7 +34,7 @@ goto end
 
 @echo on 
 
-"C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.3\common\bin\cspybat" -f "C:\projects\FlyElectronics\tuber\cube_example\usb_hid_example\EWARM\settings\usb_hid_example.usb_hid_example.general.xcl" "--debug_file=%~1" --backend -f "C:\projects\FlyElectronics\tuber\cube_example\usb_hid_example\EWARM\settings\usb_hid_example.usb_hid_example.driver.xcl" 
+"C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.3\common\bin\cspybat" -f "D:\FlyElectronics\tuber\cube_example\usb_hid_example\EWARM\settings\usb_hid_example.usb_hid_example.general.xcl" "--debug_file=%~1" --backend -f "D:\FlyElectronics\tuber\cube_example\usb_hid_example\EWARM\settings\usb_hid_example.usb_hid_example.driver.xcl" 
 
 @echo off 
 :end

+ 2 - 2
cube_example/usb_hid_example/EWARM/settings/usb_hid_example.usb_hid_example.cspy.ps1

@@ -23,9 +23,9 @@
 
 if ($debugfile -eq "")
 {
-& "C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.3\common\bin\cspybat" -f "C:\projects\FlyElectronics\tuber\cube_example\usb_hid_example\EWARM\settings\usb_hid_example.usb_hid_example.general.xcl" --backend -f "C:\projects\FlyElectronics\tuber\cube_example\usb_hid_example\EWARM\settings\usb_hid_example.usb_hid_example.driver.xcl" 
+& "C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.3\common\bin\cspybat" -f "D:\FlyElectronics\tuber\cube_example\usb_hid_example\EWARM\settings\usb_hid_example.usb_hid_example.general.xcl" --backend -f "D:\FlyElectronics\tuber\cube_example\usb_hid_example\EWARM\settings\usb_hid_example.usb_hid_example.driver.xcl" 
 }
 else
 {
-& "C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.3\common\bin\cspybat" -f "C:\projects\FlyElectronics\tuber\cube_example\usb_hid_example\EWARM\settings\usb_hid_example.usb_hid_example.general.xcl" --debug_file=$debugfile --backend -f "C:\projects\FlyElectronics\tuber\cube_example\usb_hid_example\EWARM\settings\usb_hid_example.usb_hid_example.driver.xcl" 
+& "C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.3\common\bin\cspybat" -f "D:\FlyElectronics\tuber\cube_example\usb_hid_example\EWARM\settings\usb_hid_example.usb_hid_example.general.xcl" --debug_file=$debugfile --backend -f "D:\FlyElectronics\tuber\cube_example\usb_hid_example\EWARM\settings\usb_hid_example.usb_hid_example.driver.xcl" 
 }

+ 1 - 1
cube_example/usb_hid_example/EWARM/settings/usb_hid_example.usb_hid_example.general.xcl

@@ -2,7 +2,7 @@
 
 "C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.3\arm\bin\armstlink2.dll" 
 
-"C:\projects\FlyElectronics\tuber\cube_example\usb_hid_example\EWARM\usb_hid_example\Exe\usb_hid_example.out" 
+"D:\FlyElectronics\tuber\cube_example\usb_hid_example\EWARM\usb_hid_example\Exe\usb_hid_example.out" 
 
 --plugin="C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.3\arm\bin\armbat.dll" 
 

+ 573 - 573
cube_example/usb_hid_example/EWARM/usb_hid_example.dep

@@ -5,1358 +5,1358 @@
     <configuration>
         <name>usb_hid_example</name>
         <outputs>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal.o</file>
-            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_rcc_ex.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stream_buffer.xcl</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_core.__cstat.et</file>
-            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_custom_hid_if.o</file>
-            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_pcd.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\port.o</file>
-            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_gpio.h</file>
-            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\portable\IAR\ARM_CM4F\portmacro.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_flash_ex.o</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\queue.xcl</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\heap_4.o</file>
-            <file>$PROJ_DIR$\..\Core\Inc\stm32g4xx_it.h</file>
-            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\include\portable.h</file>
-            <file>$PROJ_DIR$\..\Drivers\CMSIS\Device\ST\STM32G4xx\Include\stm32g431xx.h</file>
-            <file>$TOOLKIT_DIR$\inc\c\iccarm_builtin.h</file>
-            <file>$PROJ_DIR$\..\Drivers\CMSIS\Include\cmsis_version.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_dma.o</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal.xcl</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\event_groups.__cstat.et</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_ll_usb.xcl</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\app_freertos.__cstat.et</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\heap_4.__cstat.et</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_cortex.__cstat.et</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\startup_stm32g431xx.o</file>
-            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_exti.h</file>
-            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_gpio_ex.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\app_freertos.xcl</file>
-            <file>$PROJ_DIR$\..\Core\Inc\main.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_ctlreq.o</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\portasm.o</file>
-            <file>$PROJ_DIR$\..\Drivers\CMSIS\Device\ST\STM32G4xx\Include\system_stm32g4xx.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_flash.__cstat.et</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_exti.o</file>
-            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\include\event_groups.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\usb_device.xcl</file>
-            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\include\task.h</file>
-            <file>$TOOLKIT_DIR$\inc\c\iar_intrinsics_common.h</file>
-            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_dma.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_ll_usb.__cstat.et</file>
-            <file>$PROJ_DIR$\..\Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_ioreq.h</file>
-            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\include\queue.h</file>
-            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_pwr_ex.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\port.xcl</file>
-            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\include\deprecated_definitions.h</file>
-            <file>$TOOLKIT_DIR$\inc\c\DLib_Product_stdlib.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_pcd.xcl</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_rcc_ex.o</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_rcc.o</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\system_stm32g4xx.xcl</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\app_freertos.o</file>
-            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\include\stream_buffer.h</file>
-            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\include\mpu_wrappers.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\croutine.o</file>
-            <file>$TOOLKIT_DIR$\lib\dl7M_tlf.a</file>
-            <file>$PROJ_DIR$\..\Drivers\CMSIS\Device\ST\STM32G4xx\Include\stm32g4xx.h</file>
-            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_rtc.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_msp.xcl</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_rtc.__cstat.et</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_custom_hid_if.__cstat.et</file>
-            <file>$PROJ_DIR$\..\Drivers\CMSIS\Include\mpu_armv7.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\event_groups.xcl</file>
-            <file>$PROJ_DIR$\usb_hid_example\Exe\usb_hid_example.out</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_hid.o</file>
-            <file>$PROJ_DIR$\..\Middlewares\ST\STM32_USB_Device_Library\Class\HID\Src\usbd_hid.c</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_customhid.o</file>
-            <file>$TOOLKIT_DIR$\inc\c\stddef.h</file>
-            <file>$PROJ_DIR$\..\Middlewares\ST\STM32_USB_Device_Library\Class\CustomHID\Inc\usbd_customhid.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_rcc_ex.xcl</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\heap_4.xcl</file>
-            <file>$PROJ_DIR$\..\Middlewares\ST\STM32_USB_Device_Library\Class\HID\Inc\usbd_hid.h</file>
-            <file>$PROJ_DIR$\..\USB_Device\App\usb_device.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_dma.xcl</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_msp.__cstat.et</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\main.xcl</file>
-            <file>$PROJ_DIR$\..\Drivers\CMSIS\Include\cmsis_iccarm.h</file>
-            <file>$PROJ_DIR$\..\Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_def.h</file>
-            <file>$TOOLKIT_DIR$\inc\c\stdint.h</file>
-            <file>$TOOLKIT_DIR$\inc\c\stdio.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_core.xcl</file>
-            <file>$TOOLKIT_DIR$\lib\shb_l.a</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\port.__cstat.et</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_flash_ex.__cstat.et</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_customhid.xcl</file>
-            <file>$PROJ_DIR$\..\USB_Device\App\usbd_custom_hid_if.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_custom_hid_if.xcl</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_ioreq.xcl</file>
-            <file>$TOOLKIT_DIR$\lib\m7M_tls.a</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_hid.xcl</file>
+            <file>$PROJ_DIR$\startup_stm32g431xx.s</file>
+            <file>$PROJ_DIR$\..\Core\Src\stm32g4xx_hal_msp.c</file>
+            <file>$PROJ_DIR$\..\Core\Src\stm32g4xx_it.c</file>
+            <file>$PROJ_DIR$\..\modules\custom_hid_test.c</file>
+            <file>$PROJ_DIR$\..\Core\Src\app_freertos.c</file>
+            <file>$PROJ_DIR$\..\Core\Src\main.c</file>
             <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_pcd.c</file>
-            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_dma.c</file>
-            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_pcd_ex.c</file>
-            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_flash_ramfunc.c</file>
             <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_pwr.c</file>
-            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_gpio.c</file>
-            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_pwr_ex.c</file>
+            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_cortex.c</file>
+            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\croutine.c</file>
+            <file>$PROJ_DIR$\..\Core\Src\system_stm32g4xx.c</file>
+            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_exti.c</file>
+            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_pcd_ex.c</file>
             <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_rcc.c</file>
-            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_rcc_ex.c</file>
             <file>$PROJ_DIR$\..\USB_Device\App\usbd_custom_hid_if.c</file>
-            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_rtc.c</file>
-            <file>$PROJ_DIR$\..\modules\custom_hid_test.c</file>
-            <file>$PROJ_DIR$\..\USB_Device\App\usbd_desc.c</file>
-            <file>$PROJ_DIR$\..\Core\Src\stm32g4xx_hal_msp.c</file>
-            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_cortex.c</file>
-            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_dma_ex.c</file>
-            <file>$PROJ_DIR$\startup_stm32g431xx.s</file>
+            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_rcc_ex.c</file>
             <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal.c</file>
-            <file>$PROJ_DIR$\..\USB_Device\App\usb_device.c</file>
-            <file>$PROJ_DIR$\..\Core\Src\main.c</file>
+            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_dma.c</file>
+            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_flash_ramfunc.c</file>
+            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_pwr_ex.c</file>
+            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_rtc.c</file>
+            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_ll_usb.c</file>
+            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\event_groups.c</file>
             <file>$PROJ_DIR$\..\USB_Device\Target\usbd_conf.c</file>
-            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_exti.c</file>
-            <file>$PROJ_DIR$\..\Core\Src\stm32g4xx_it.c</file>
-            <file>$PROJ_DIR$\..\Core\Src\app_freertos.c</file>
-            <file>$PROJ_DIR$\..\Core\Src\system_stm32g4xx.c</file>
+            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_dma_ex.c</file>
             <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_flash.c</file>
+            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_rtc_ex.c</file>
+            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.c</file>
+            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang\heap_4.c</file>
+            <file>$PROJ_DIR$\..\USB_Device\App\usbd_desc.c</file>
+            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\list.c</file>
+            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\portable\IAR\ARM_CM4F\port.c</file>
+            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\portable\IAR\ARM_CM4F\portasm.s</file>
+            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\queue.c</file>
+            <file>$PROJ_DIR$\..\USB_Device\App\usb_device.c</file>
             <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_flash_ex.c</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_pwr.__cstat.et</file>
-            <file>$PROJ_DIR$\usb_hid_example\List\usb_hid_example.map</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_flash.o</file>
+            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_gpio.c</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_rtc_ex.o</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_customhid.__cstat.et</file>
             <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_conf.o</file>
-            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_tim.c</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal.__cstat.et</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_conf.__cstat.et</file>
-            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\freertos_mpool.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_desc.__cstat.et</file>
-            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_pcd_ex.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_it.o</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stream_buffer.__cstat.et</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_hid.xcl</file>
             <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_flash_ramfunc.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\timers.o</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_ioreq.o</file>
+            <file>$PROJ_DIR$\usb_hid_example\List\usb_hid_example.map</file>
             <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_msp.o</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_rtc_ex.o</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_tim_ex.o</file>
             <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_tim.o</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_exti.__cstat.et</file>
             <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\include\semphr.h</file>
             <file>$PROJ_DIR$\usb_hid_example\Obj\main.__cstat.et</file>
-            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_desc.__cstat.et</file>
+            <file>$TOOLKIT_DIR$\lib\m7M_tls.a</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_exti.__cstat.et</file>
             <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h</file>
-            <file>$PROJ_DIR$\..\modules\custom_hid_test.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_it.o</file>
             <file>$PROJ_DIR$\..\Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_ctlreq.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_customhid.__cstat.et</file>
             <file>$PROJ_DIR$\stm32g431xx_flash.icf</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_pwr.__cstat.et</file>
             <file>$TOOLKIT_DIR$\inc\c\DLib_Defaults.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stream_buffer.__cstat.et</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_ctlreq.__cstat.et</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_core.o</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_rtc_ex.xcl</file>
-            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.c</file>
-            <file>$PROJ_DIR$\..\Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_core.c</file>
-            <file>$TOOLKIT_DIR$\inc\c\ycheck.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_pwr.o</file>
-            <file>$PROJ_DIR$\..\Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_core.h</file>
-            <file>$PROJ_DIR$\..\Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ctlreq.c</file>
-            <file>$PROJ_DIR$\..\Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ioreq.c</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_ll_usb.o</file>
-            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\portable\IAR\ARM_CM4F\port.c</file>
-            <file>$TOOLKIT_DIR$\inc\c\stdlib.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\cmsis_os2.__cstat.et</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_ctlreq.xcl</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_rtc.o</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\list.xcl</file>
-            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\freertos_os2.h</file>
-            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\queue.c</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_rcc.xcl</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\list.__cstat.et</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_flash_ramfunc.xcl</file>
-            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\portable\IAR\ARM_CM4F\portasm.s</file>
-            <file>$PROJ_DIR$\..\Middlewares\ST\STM32_USB_Device_Library\Class\CustomHID\Src\usbd_customhid.c</file>
-            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\list.c</file>
-            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_rtc_ex.c</file>
-            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_ll_usb.c</file>
-            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\event_groups.c</file>
-            <file>$PROJ_DIR$\..\Drivers\CMSIS\Include\cmsis_compiler.h</file>
-            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang\heap_4.c</file>
-            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\stream_buffer.c</file>
-            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\croutine.c</file>
-            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\timers.c</file>
-            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\tasks.c</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\cmsis_os2.o</file>
-            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_dma_ex.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_rtc_ex.__cstat.et</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stream_buffer.o</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_pwr_ex.__cstat.et</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\custom_hid_test.xcl</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_cortex.o</file>
-            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\include\list.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_pcd.__cstat.et</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_exti.xcl</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_gpio.xcl</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\list.o</file>
-            <file>$PROJ_DIR$\..\Core\Inc\FreeRTOSConfig.h</file>
-            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_flash.h</file>
-            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_def.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_tim_ex.o</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_ioreq.xcl</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_conf.__cstat.et</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal.__cstat.et</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_flash.o</file>
+            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\freertos_mpool.h</file>
+            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_pcd_ex.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\timers.o</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_ioreq.o</file>
+            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal.h</file>
+            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_tim.c</file>
+            <file>$PROJ_DIR$\..\modules\custom_hid_test.h</file>
+            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_rtc.h</file>
+            <file>$PROJ_DIR$\..\USB_Device\App\usbd_custom_hid_if.h</file>
+            <file>$PROJ_DIR$\..\Drivers\CMSIS\Device\ST\STM32G4xx\Include\stm32g4xx.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_customhid.xcl</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_custom_hid_if.xcl</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\main.xcl</file>
+            <file>$PROJ_DIR$\..\Drivers\CMSIS\Include\mpu_armv7.h</file>
+            <file>$PROJ_DIR$\..\USB_Device\App\usb_device.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\event_groups.xcl</file>
+            <file>$PROJ_DIR$\usb_hid_example\Exe\usb_hid_example.out</file>
+            <file>$TOOLKIT_DIR$\inc\c\stddef.h</file>
+            <file>$PROJ_DIR$\..\Middlewares\ST\STM32_USB_Device_Library\Class\CustomHID\Inc\usbd_customhid.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_rtc.__cstat.et</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_hid.o</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\heap_4.xcl</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_dma.xcl</file>
+            <file>$PROJ_DIR$\..\Drivers\CMSIS\Include\cmsis_iccarm.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_custom_hid_if.__cstat.et</file>
+            <file>$PROJ_DIR$\..\Middlewares\ST\STM32_USB_Device_Library\Class\HID\Src\usbd_hid.c</file>
+            <file>$PROJ_DIR$\..\Middlewares\ST\STM32_USB_Device_Library\Class\HID\Inc\usbd_hid.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_customhid.o</file>
+            <file>$PROJ_DIR$\..\Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_def.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_rcc_ex.xcl</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_core.xcl</file>
+            <file>$TOOLKIT_DIR$\lib\shb_l.a</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_msp.__cstat.et</file>
+            <file>$TOOLKIT_DIR$\inc\c\stdio.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\port.__cstat.et</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_flash_ex.__cstat.et</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_msp.xcl</file>
+            <file>$TOOLKIT_DIR$\inc\c\stdint.h</file>
+            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_cortex.h</file>
+            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\include\timers.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_flash_ramfunc.__cstat.et</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\usb_device.o</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_desc.o</file>
+            <file>$PROJ_DIR$\..\USB_Device\App\usbd_desc.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_pcd_ex.__cstat.et</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\queue.__cstat.et</file>
             <file>$PROJ_DIR$\..\USB_Device\Target\usbd_conf.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_it.xcl</file>
             <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_rcc.__cstat.et</file>
             <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_rcc.h</file>
             <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_pwr_ex.o</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_pcd_ex.o</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\custom_hid_test.o</file>
-            <file>$TOOLKIT_DIR$\inc\c\DLib_Product_string.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\timers.xcl</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_tim_ex.xcl</file>
+            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_def.h</file>
             <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_pcd_ex.xcl</file>
-            <file>$PROJ_DIR$\..\USB_Device\App\usbd_desc.h</file>
             <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_cortex.xcl</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_pcd_ex.__cstat.et</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_conf.xcl</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_desc.xcl</file>
             <file>$PROJ_DIR$\usb_hid_example\Obj\croutine.xcl</file>
+            <file>$TOOLKIT_DIR$\inc\c\DLib_Product_string.h</file>
             <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_dma_ex.xcl</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_pcd_ex.o</file>
+            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_flash_ex.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\custom_hid_test.o</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_conf.xcl</file>
             <file>$PROJ_DIR$\usb_hid_example\Obj\tasks.xcl</file>
             <file>$PROJ_DIR$\usb_hid_example\Obj\tasks.o</file>
-            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_flash_ex.h</file>
             <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\include\FreeRTOS.h</file>
             <file>$PROJ_DIR$\usb_hid_example\Obj\cmsis_os2.xcl</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_desc.xcl</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_it.xcl</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\timers.xcl</file>
             <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_dma_ex.__cstat.et</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\queue.__cstat.et</file>
             <file>$PROJ_DIR$\usb_hid_example\Obj\timers.__cstat.et</file>
-            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_cortex.h</file>
-            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\include\timers.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_flash_ramfunc.__cstat.et</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\usb_device.o</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_desc.o</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_gpio.o</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_ioreq.__cstat.et</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_tim_ex.xcl</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\cmsis_os2.o</file>
+            <file>$TOOLKIT_DIR$\inc\c\ycheck.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_ll_usb.o</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_pcd.__cstat.et</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_ctlreq.__cstat.et</file>
+            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\include\list.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_exti.xcl</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_gpio.xcl</file>
+            <file>$TOOLKIT_DIR$\inc\c\stdlib.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_flash_ramfunc.xcl</file>
+            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_dma_ex.h</file>
+            <file>$PROJ_DIR$\..\Core\Inc\FreeRTOSConfig.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_ctlreq.xcl</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\list.xcl</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_rtc_ex.xcl</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_core.o</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_rcc.xcl</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\custom_hid_test.xcl</file>
+            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\freertos_os2.h</file>
+            <file>$PROJ_DIR$\..\Drivers\CMSIS\Include\cmsis_compiler.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stream_buffer.o</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\list.o</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\cmsis_os2.__cstat.et</file>
+            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_flash.h</file>
+            <file>$PROJ_DIR$\..\Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_core.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_pwr.o</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_rtc_ex.__cstat.et</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_pwr_ex.__cstat.et</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\list.__cstat.et</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_rtc.o</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_cortex.o</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\event_groups.o</file>
             <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_dma_ex.o</file>
-            <file>$TOOLKIT_DIR$\inc\c\string.h</file>
             <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_flash_ramfunc.o</file>
-            <file>$TOOLKIT_DIR$\inc\c\intrinsics.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\system_stm32g4xx.o</file>
-            <file>$TOOLKIT_DIR$\inc\c\yvals.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_tim_ex.__cstat.et</file>
             <file>$PROJ_DIR$\..\Drivers\CMSIS\Include\core_cm4.h</file>
-            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\include\projdefs.h</file>
-            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_pwr.h</file>
-            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h</file>
-            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_tim_ex.c</file>
-            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_rtc_ex.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_pwr.xcl</file>
-            <file>$TOOLKIT_DIR$\inc\c\DLib_Config_Full.h</file>
-            <file>$TOOLKIT_DIR$\inc\c\DLib_Product.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_gpio.__cstat.et</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_tim.__cstat.et</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_it.__cstat.et</file>
-            <file>$PROJ_DIR$\..\Core\Inc\stm32g4xx_hal_conf.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\croutine.__cstat.et</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\event_groups.o</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\usb_device.__cstat.et</file>
             <file>$PROJ_DIR$\usb_hid_example\Obj\queue.o</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_gpio.o</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\croutine.__cstat.et</file>
             <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_rcc_ex.__cstat.et</file>
             <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_pcd.o</file>
+            <file>$TOOLKIT_DIR$\inc\c\DLib_Config_Full.h</file>
+            <file>$TOOLKIT_DIR$\inc\c\string.h</file>
             <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_hid.__cstat.et</file>
             <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_pwr_ex.xcl</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_tim_ex.__cstat.et</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_gpio.__cstat.et</file>
+            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_tim_ex.c</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\usb_device.__cstat.et</file>
+            <file>$TOOLKIT_DIR$\inc\c\yvals.h</file>
             <file>$PROJ_DIR$\usb_hid_example\Exe\usb_hid_example.hex</file>
+            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_pwr.h</file>
+            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_it.__cstat.et</file>
             <file>$TOOLKIT_DIR$\inc\c\ysizet.h</file>
+            <file>$TOOLKIT_DIR$\inc\c\intrinsics.h</file>
+            <file>$TOOLKIT_DIR$\inc\c\DLib_Product.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_ioreq.__cstat.et</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_tim.__cstat.et</file>
+            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\include\projdefs.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_pwr.xcl</file>
+            <file>$PROJ_DIR$\..\Core\Inc\stm32g4xx_hal_conf.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\system_stm32g4xx.o</file>
+            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_rtc_ex.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\system_stm32g4xx.__cstat.et</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_tim.xcl</file>
             <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\include\stack_macros.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_dma.__cstat.et</file>
-            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\include\croutine.h</file>
             <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_flash_ex.xcl</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_rtc.xcl</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\main.o</file>
-            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_ll_usb.h</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_tim.xcl</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\system_stm32g4xx.__cstat.et</file>
-            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_flash.xcl</file>
             <file>$TOOLKIT_DIR$\lib\rt7M_tl.a</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_dma.__cstat.et</file>
             <file>$PROJ_DIR$\usb_hid_example\Obj\tasks.__cstat.et</file>
+            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_ll_usb.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_flash.xcl</file>
             <file>$PROJ_DIR$\usb_hid_example\Obj\usb_hid_example.pbd</file>
+            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\include\croutine.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_rtc.xcl</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\main.o</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_ctlreq.o</file>
+            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\include\mpu_wrappers.h</file>
+            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\include\queue.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\croutine.o</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\portasm.o</file>
+            <file>$PROJ_DIR$\..\Drivers\CMSIS\Device\ST\STM32G4xx\Include\system_stm32g4xx.h</file>
+            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\include\task.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_rcc_ex.o</file>
+            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_dma.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\usb_device.xcl</file>
+            <file>$TOOLKIT_DIR$\lib\dl7M_tlf.a</file>
+            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\include\event_groups.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_cortex.__cstat.et</file>
+            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_exti.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_ll_usb.__cstat.et</file>
+            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_pwr_ex.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\port.xcl</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\app_freertos.xcl</file>
+            <file>$PROJ_DIR$\..\Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_ioreq.h</file>
+            <file>$TOOLKIT_DIR$\inc\c\DLib_Product_stdlib.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_pcd.xcl</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_rcc.o</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\system_stm32g4xx.xcl</file>
+            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\include\deprecated_definitions.h</file>
+            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\include\stream_buffer.h</file>
+            <file>$PROJ_DIR$\..\Core\Inc\main.h</file>
+            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_gpio_ex.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_flash.__cstat.et</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_exti.o</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\app_freertos.o</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\startup_stm32g431xx.o</file>
+            <file>$TOOLKIT_DIR$\inc\c\iar_intrinsics_common.h</file>
+            <file>$PROJ_DIR$\..\Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ioreq.c</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal.o</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\port.o</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\queue.xcl</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_custom_hid_if.o</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_dma.o</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_ll_usb.xcl</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\app_freertos.__cstat.et</file>
+            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\tasks.c</file>
+            <file>$PROJ_DIR$\..\Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_core.c</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stream_buffer.xcl</file>
+            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os.h</file>
+            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_gpio.h</file>
+            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\stream_buffer.c</file>
+            <file>$PROJ_DIR$\..\Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ctlreq.c</file>
+            <file>$PROJ_DIR$\..\Core\Inc\stm32g4xx_it.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\usbd_core.__cstat.et</file>
+            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\include\portable.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\heap_4.o</file>
+            <file>$TOOLKIT_DIR$\inc\c\iccarm_builtin.h</file>
+            <file>$PROJ_DIR$\..\Drivers\CMSIS\Include\cmsis_version.h</file>
+            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\portable\IAR\ARM_CM4F\portmacro.h</file>
+            <file>$PROJ_DIR$\..\Drivers\CMSIS\Device\ST\STM32G4xx\Include\stm32g431xx.h</file>
+            <file>$PROJ_DIR$\..\Middlewares\ST\STM32_USB_Device_Library\Class\CustomHID\Src\usbd_customhid.c</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal_flash_ex.o</file>
+            <file>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\timers.c</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\event_groups.__cstat.et</file>
+            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_pcd.h</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\stm32g4xx_hal.xcl</file>
+            <file>$PROJ_DIR$\usb_hid_example\Obj\heap_4.__cstat.et</file>
+            <file>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Inc\stm32g4xx_hal_rcc_ex.h</file>
         </outputs>
         <file>
-            <name>$PROJ_DIR$\usb_hid_example\Exe\usb_hid_example.out</name>
+            <name>[ROOT_NODE]</name>
             <outputs>
                 <tool>
                     <name>ILINK</name>
-                    <file> 118</file>
-                </tool>
-                <tool>
-                    <name>OBJCOPY</name>
-                    <file> 256</file>
+                    <file> 43 78</file>
                 </tool>
             </outputs>
-            <inputs>
+        </file>
+        <file>
+            <name>$PROJ_DIR$\startup_stm32g431xx.s</name>
+            <outputs>
                 <tool>
-                    <name>ILINK</name>
-                    <file> 143 51 180 54 201 249 12 191 263 7 31 251 25 0 186 18 228 34 119 10 230 226 131 253 200 152 199 49 48 161 132 127 156 183 232 214 129 224 120 147 30 5 66 225 130 81 268 88 55</file>
+                    <name>AARM</name>
+                    <file> 238</file>
                 </tool>
-            </inputs>
+            </outputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Middlewares\ST\STM32_USB_Device_Library\Class\HID\Src\usbd_hid.c</name>
+            <name>$PROJ_DIR$\..\Core\Src\stm32g4xx_hal_msp.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 64</file>
+                    <file> 44</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 254</file>
+                    <name>BICOMP</name>
+                    <file> 98</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 89</file>
+                    <name>__cstat</name>
+                    <file> 94</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 71 41 77 195 79 151 233 144 242 243 257 158 46 229 202 56 15 235 78 17 174 76 16 61 32 138 247 198 194 238 67 1 8 27 39 181 221 26 193 215 128 6 264 126 237 43 57 240 153 141</file>
+                    <file> 233 66 192 110 112 71 262 166 99 133 180 56 172 187 260 151 85 259 75 213 183 79 185 270 252 234 216 142 100 221 155 119 42 267 202 63 182 223 69 194</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_pcd.c</name>
+            <name>$PROJ_DIR$\..\Core\Src\stm32g4xx_it.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 253</file>
+                    <file> 52</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 188</file>
+                    <name>BICOMP</name>
+                    <file> 127</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 47</file>
+                    <name>__cstat</name>
+                    <file> 184</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 138 247 198 194 56 15 235 78 151 233 144 242 243 17 174 76 16 61 32 238 67 257 1 8 27 39 181 221 26 193 215 128 6 264 126 237 43 57 240</file>
+                    <file> 233 66 192 110 112 71 262 166 99 133 180 56 172 187 260 151 85 259 75 213 183 79 185 270 252 234 216 142 100 221 155 119 42 267 202 63 182 223 69 194 255 124 143 190 257 231 261 186 239 209 214 137</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_dma.c</name>
+            <name>$PROJ_DIR$\..\modules\custom_hid_test.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 18</file>
-                </tool>
-                <tool>
-                    <name>__cstat</name>
-                    <file> 259</file>
+                    <file> 120</file>
                 </tool>
                 <tool>
                     <name>BICOMP</name>
-                    <file> 73</file>
+                    <file> 149</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 138 247 198 194 56 15 235 78 151 233 144 242 243 17 174 76 16 61 32 238 67 257 1 8 27 39 181 221 26 193 215 128 6 264 126 237 43 57 240</file>
+                    <file> 68 66 192 110 112 71 262 166 99 133 180 56 172 187 260 151 85 259 75 213 183 79 185 270 252 234 216 142 100 221 155 119 42 267 202 63 182 223 69 194 251 124 143 190 257 231 261 186 239 209 214 137 51 76 90 108 95 140 227 173 116 80 226 156 53</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_pcd_ex.c</name>
+            <name>$PROJ_DIR$\..\Core\Src\app_freertos.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 200</file>
+                    <file> 237</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 208</file>
+                    <name>BICOMP</name>
+                    <file> 225</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 205</file>
+                    <name>__cstat</name>
+                    <file> 247</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 138 247 198 194 56 15 235 78 151 233 144 242 243 17 174 76 16 61 32 238 67 257 1 8 27 39 181 221 26 193 215 128 6 264 126 237 43 57 240</file>
+                    <file> 124 79 133 180 56 172 187 185 99 143 190 257 231 261 186 259 239 209 214 137 233 66 192 110 112 71 262 166 260 151 85 75 213 183 270 252 234 216 142 100 221 155 119 42 267 202 63 182 223 69 194</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_flash_ramfunc.c</name>
+            <name>$PROJ_DIR$\..\Core\Src\main.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 230</file>
+                    <file> 207</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 223</file>
+                    <name>BICOMP</name>
+                    <file> 74</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 167</file>
+                    <name>__cstat</name>
+                    <file> 47</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 138 247 198 194 56 15 235 78 151 233 144 242 243 17 174 76 16 61 32 238 67 257 1 8 27 39 181 221 26 193 215 128 6 264 126 237 43 57 240</file>
+                    <file> 233 66 192 110 112 71 262 166 99 133 180 56 172 187 260 151 85 259 75 213 183 79 185 270 252 234 216 142 100 221 155 119 42 267 202 63 182 223 69 194 251 124 143 190 257 231 261 186 239 209 214 137 51 76 90 108 95 140 227 173 116 68</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_pwr.c</name>
+            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_pcd.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 152</file>
+                    <file> 171</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 117</file>
+                    <name>BICOMP</name>
+                    <file> 228</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 241</file>
+                    <name>__cstat</name>
+                    <file> 135</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 138 247 198 194 56 15 235 78 151 233 144 242 243 17 174 76 16 61 32 238 67 257 1 8 27 39 181 221 26 193 215 128 6 264 126 237 43 57 240</file>
+                    <file> 66 192 110 112 71 262 166 99 133 180 56 172 187 260 151 85 259 75 213 183 79 185 270 252 234 216 142 100 221 155 119 42 267 202 63 182 223 69 194</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_gpio.c</name>
+            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_pwr.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 226</file>
+                    <file> 157</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 244</file>
+                    <name>BICOMP</name>
+                    <file> 191</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 190</file>
+                    <name>__cstat</name>
+                    <file> 55</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 138 247 198 194 56 15 235 78 151 233 144 242 243 17 174 76 16 61 32 238 67 257 1 8 27 39 181 221 26 193 215 128 6 264 126 237 43 57 240</file>
+                    <file> 66 192 110 112 71 262 166 99 133 180 56 172 187 260 151 85 259 75 213 183 79 185 270 252 234 216 142 100 221 155 119 42 267 202 63 182 223 69 194</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_pwr_ex.c</name>
+            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_cortex.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 199</file>
+                    <file> 162</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 184</file>
+                    <name>BICOMP</name>
+                    <file> 114</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 255</file>
+                    <name>__cstat</name>
+                    <file> 220</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 138 247 198 194 56 15 235 78 151 233 144 242 243 17 174 76 16 61 32 238 67 257 1 8 27 39 181 221 26 193 215 128 6 264 126 237 43 57 240</file>
+                    <file> 66 192 110 112 71 262 166 99 133 180 56 172 187 260 151 85 259 75 213 183 79 185 270 252 234 216 142 100 221 155 119 42 267 202 63 182 223 69 194</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_rcc.c</name>
+            <name>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\croutine.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 49</file>
+                    <file> 211</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 197</file>
+                    <name>BICOMP</name>
+                    <file> 115</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 165</file>
+                    <name>__cstat</name>
+                    <file> 169</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 138 247 198 194 56 15 235 78 151 233 144 242 243 17 174 76 16 61 32 238 67 257 1 8 27 39 181 221 26 193 215 128 6 264 126 237 43 57 240</file>
+                    <file> 124 79 133 180 56 172 187 185 99 143 190 257 231 261 186 259 239 209 214 137 205</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_rcc_ex.c</name>
+            <name>$PROJ_DIR$\..\Core\Src\system_stm32g4xx.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 48</file>
+                    <file> 193</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 252</file>
+                    <name>BICOMP</name>
+                    <file> 230</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 69</file>
+                    <name>__cstat</name>
+                    <file> 195</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 138 247 198 194 56 15 235 78 151 233 144 242 243 17 174 76 16 61 32 238 67 257 1 8 27 39 181 221 26 193 215 128 6 264 126 237 43 57 240</file>
+                    <file> 71 262 166 99 133 180 56 172 187 260 151 85 259 75 213 66 192 110 112 183 79 185 270 252 234 216 142 100 221 155 119 42 267 202 63 182 223 69 194</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\USB_Device\App\usbd_custom_hid_if.c</name>
+            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_exti.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 5</file>
+                    <file> 236</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 60</file>
+                    <name>BICOMP</name>
+                    <file> 138</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 86</file>
+                    <name>__cstat</name>
+                    <file> 50</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 85 68 41 77 195 79 151 233 144 242 243 257 158 46 229 202 56 15 235 78 17 174 76 16 61 32 138 247 198 194 238 67 1 8 27 39 181 221 26 193 215 128 6 264 126 237 43 57 240 153 141 140</file>
+                    <file> 66 192 110 112 71 262 166 99 133 180 56 172 187 260 151 85 259 75 213 183 79 185 270 252 234 216 142 100 221 155 119 42 267 202 63 182 223 69 194</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_rtc.c</name>
+            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_pcd_ex.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 161</file>
+                    <file> 118</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 59</file>
+                    <name>BICOMP</name>
+                    <file> 113</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 262</file>
+                    <name>__cstat</name>
+                    <file> 106</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 138 247 198 194 56 15 235 78 151 233 144 242 243 17 174 76 16 61 32 238 67 257 1 8 27 39 181 221 26 193 215 128 6 264 126 237 43 57 240</file>
+                    <file> 66 192 110 112 71 262 166 99 133 180 56 172 187 260 151 85 259 75 213 183 79 185 270 252 234 216 142 100 221 155 119 42 267 202 63 182 223 69 194</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\modules\custom_hid_test.c</name>
+            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_rcc.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 201</file>
+                    <file> 229</file>
                 </tool>
                 <tool>
                     <name>BICOMP</name>
-                    <file> 185</file>
+                    <file> 148</file>
+                </tool>
+                <tool>
+                    <name>__cstat</name>
+                    <file> 109</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 140 138 247 198 194 56 15 235 78 151 233 144 242 243 17 174 76 16 61 32 238 67 257 1 8 27 39 181 221 26 193 215 128 6 264 126 237 43 57 240 4 216 192 236 14 45 9 231 38 53 37 187 139 72 77 195 79 158 46 229 202 68 41 153 141</file>
+                    <file> 66 192 110 112 71 262 166 99 133 180 56 172 187 260 151 85 259 75 213 183 79 185 270 252 234 216 142 100 221 155 119 42 267 202 63 182 223 69 194</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\USB_Device\App\usbd_desc.c</name>
+            <name>$PROJ_DIR$\..\USB_Device\App\usbd_custom_hid_if.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 225</file>
+                    <file> 244</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 125</file>
+                    <name>BICOMP</name>
+                    <file> 73</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 210</file>
+                    <name>__cstat</name>
+                    <file> 86</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 153 195 79 151 233 144 242 243 257 158 46 229 202 56 15 235 78 17 174 76 16 61 32 138 247 198 194 238 67 1 8 27 39 181 221 26 193 215 128 6 264 126 237 43 57 240 77 41 141 206</file>
+                    <file> 70 80 226 90 108 95 133 180 56 172 187 185 140 227 173 116 71 262 166 99 260 151 85 259 75 213 66 192 110 112 183 79 270 252 234 216 142 100 221 155 119 42 267 202 63 182 223 69 194 156 53 68</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Core\Src\stm32g4xx_hal_msp.c</name>
+            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_rcc_ex.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 131</file>
+                    <file> 215</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 74</file>
+                    <name>BICOMP</name>
+                    <file> 91</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 58</file>
+                    <name>__cstat</name>
+                    <file> 170</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 29 138 247 198 194 56 15 235 78 151 233 144 242 243 17 174 76 16 61 32 238 67 257 1 8 27 39 181 221 26 193 215 128 6 264 126 237 43 57 240</file>
+                    <file> 66 192 110 112 71 262 166 99 133 180 56 172 187 260 151 85 259 75 213 183 79 185 270 252 234 216 142 100 221 155 119 42 267 202 63 182 223 69 194</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_cortex.c</name>
+            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 186</file>
+                    <file> 241</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 24</file>
+                    <name>BICOMP</name>
+                    <file> 268</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 207</file>
+                    <name>__cstat</name>
+                    <file> 60</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 138 247 198 194 56 15 235 78 151 233 144 242 243 17 174 76 16 61 32 238 67 257 1 8 27 39 181 221 26 193 215 128 6 264 126 237 43 57 240</file>
+                    <file> 66 192 110 112 71 262 166 99 133 180 56 172 187 260 151 85 259 75 213 183 79 185 270 252 234 216 142 100 221 155 119 42 267 202 63 182 223 69 194</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_dma_ex.c</name>
+            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_dma.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 228</file>
+                    <file> 245</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 218</file>
+                    <name>BICOMP</name>
+                    <file> 84</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 212</file>
+                    <name>__cstat</name>
+                    <file> 200</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 138 247 198 194 56 15 235 78 151 233 144 242 243 17 174 76 16 61 32 238 67 257 1 8 27 39 181 221 26 193 215 128 6 264 126 237 43 57 240</file>
+                    <file> 66 192 110 112 71 262 166 99 133 180 56 172 187 260 151 85 259 75 213 183 79 185 270 252 234 216 142 100 221 155 119 42 267 202 63 182 223 69 194</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\startup_stm32g431xx.s</name>
+            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_flash_ramfunc.c</name>
             <outputs>
                 <tool>
-                    <name>AARM</name>
-                    <file> 25</file>
+                    <name>ICCARM</name>
+                    <file> 165</file>
+                </tool>
+                <tool>
+                    <name>BICOMP</name>
+                    <file> 141</file>
+                </tool>
+                <tool>
+                    <name>__cstat</name>
+                    <file> 102</file>
                 </tool>
             </outputs>
+            <inputs>
+                <tool>
+                    <name>ICCARM</name>
+                    <file> 66 192 110 112 71 262 166 99 133 180 56 172 187 260 151 85 259 75 213 183 79 185 270 252 234 216 142 100 221 155 119 42 267 202 63 182 223 69 194</file>
+                </tool>
+            </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal.c</name>
+            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_pwr_ex.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 0</file>
+                    <file> 111</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 122</file>
+                    <name>BICOMP</name>
+                    <file> 175</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 19</file>
+                    <name>__cstat</name>
+                    <file> 159</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 138 247 198 194 56 15 235 78 151 233 144 242 243 17 174 76 16 61 32 238 67 257 1 8 27 39 181 221 26 193 215 128 6 264 126 237 43 57 240</file>
+                    <file> 66 192 110 112 71 262 166 99 133 180 56 172 187 260 151 85 259 75 213 183 79 185 270 252 234 216 142 100 221 155 119 42 267 202 63 182 223 69 194</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\USB_Device\App\usb_device.c</name>
+            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_rtc.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 224</file>
+                    <file> 161</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 250</file>
+                    <name>BICOMP</name>
+                    <file> 206</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 36</file>
+                    <name>__cstat</name>
+                    <file> 81</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 72 56 15 235 78 151 233 144 242 243 17 174 76 16 61 32 138 247 198 194 238 67 257 1 8 27 39 181 221 26 193 215 128 6 264 126 237 43 57 240 77 195 79 158 46 229 202 153 41 141 206 68 85</file>
+                    <file> 66 192 110 112 71 262 166 99 133 180 56 172 187 260 151 85 259 75 213 183 79 185 270 252 234 216 142 100 221 155 119 42 267 202 63 182 223 69 194</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Core\Src\main.c</name>
+            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_ll_usb.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 263</file>
+                    <file> 134</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 137</file>
+                    <name>BICOMP</name>
+                    <file> 246</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 75</file>
+                    <name>__cstat</name>
+                    <file> 222</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 29 138 247 198 194 56 15 235 78 151 233 144 242 243 17 174 76 16 61 32 238 67 257 1 8 27 39 181 221 26 193 215 128 6 264 126 237 43 57 240 4 216 192 236 14 45 9 231 38 53 37 187 139 72 77 195 79 158 46 229 202 140</file>
+                    <file> 66 192 110 112 71 262 166 99 133 180 56 172 187 260 151 85 259 75 213 183 79 185 270 252 234 216 142 100 221 155 119 42 267 202 63 182 223 69 194</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\USB_Device\Target\usbd_conf.c</name>
+            <name>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\event_groups.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 120</file>
+                    <file> 163</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 123</file>
+                    <name>BICOMP</name>
+                    <file> 77</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 209</file>
+                    <name>__cstat</name>
+                    <file> 266</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 56 15 235 78 151 233 144 242 243 17 174 76 16 61 32 138 247 198 194 238 67 257 1 8 27 39 181 221 26 193 215 128 6 264 126 237 43 57 240 77 195 79 158 46 229 202 153 41 141 68</file>
+                    <file> 140 133 180 56 172 187 185 227 124 79 99 143 190 257 231 261 186 259 239 209 214 137 101 219</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_exti.c</name>
+            <name>$PROJ_DIR$\..\USB_Device\Target\usbd_conf.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 34</file>
+                    <file> 39</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 135</file>
+                    <name>BICOMP</name>
+                    <file> 121</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 189</file>
+                    <name>__cstat</name>
+                    <file> 59</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 138 247 198 194 56 15 235 78 151 233 144 242 243 17 174 76 16 61 32 238 67 257 1 8 27 39 181 221 26 193 215 128 6 264 126 237 43 57 240</file>
+                    <file> 71 262 166 99 133 180 56 172 187 260 151 85 259 75 213 66 192 110 112 183 79 185 270 252 234 216 142 100 221 155 119 42 267 202 63 182 223 69 194 90 108 95 140 227 173 116 156 226 53 80</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Core\Src\stm32g4xx_it.c</name>
+            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_dma_ex.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 127</file>
+                    <file> 164</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 246</file>
+                    <name>BICOMP</name>
+                    <file> 117</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 196</file>
+                    <name>__cstat</name>
+                    <file> 129</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 29 138 247 198 194 56 15 235 78 151 233 144 242 243 17 174 76 16 61 32 238 67 257 1 8 27 39 181 221 26 193 215 128 6 264 126 237 43 57 240 13 216 192 236 14 45 9 231 38 53 37 187</file>
+                    <file> 66 192 110 112 71 262 166 99 133 180 56 172 187 260 151 85 259 75 213 183 79 185 270 252 234 216 142 100 221 155 119 42 267 202 63 182 223 69 194</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Core\Src\app_freertos.c</name>
+            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_flash.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 51</file>
+                    <file> 61</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 22</file>
+                    <name>BICOMP</name>
+                    <file> 203</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 28</file>
+                    <name>__cstat</name>
+                    <file> 235</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 216 67 151 233 144 242 243 257 78 192 236 14 45 9 231 16 38 53 37 187 29 138 247 198 194 56 15 235 17 174 76 61 32 238 1 8 27 39 181 221 26 193 215 128 6 264 126 237 43 57 240</file>
+                    <file> 66 192 110 112 71 262 166 99 133 180 56 172 187 260 151 85 259 75 213 183 79 185 270 252 234 216 142 100 221 155 119 42 267 202 63 182 223 69 194</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Core\Src\system_stm32g4xx.c</name>
+            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_rtc_ex.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 232</file>
+                    <file> 37</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 266</file>
+                    <name>BICOMP</name>
+                    <file> 146</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 50</file>
+                    <name>__cstat</name>
+                    <file> 158</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 56 15 235 78 151 233 144 242 243 17 174 76 16 61 32 138 247 198 194 238 67 257 1 8 27 39 181 221 26 193 215 128 6 264 126 237 43 57 240</file>
+                    <file> 66 192 110 112 71 262 166 99 133 180 56 172 187 260 151 85 259 75 213 183 79 185 270 252 234 216 142 100 221 155 119 42 267 202 63 182 223 69 194</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_flash.c</name>
+            <name>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 119</file>
+                    <file> 132</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 33</file>
+                    <name>BICOMP</name>
+                    <file> 125</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 267</file>
+                    <name>__cstat</name>
+                    <file> 154</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 138 247 198 194 56 15 235 78 151 233 144 242 243 17 174 76 16 61 32 238 67 257 1 8 27 39 181 221 26 193 215 128 6 264 126 237 43 57 240</file>
+                    <file> 173 133 180 56 172 187 185 116 51 99 79 151 85 259 124 143 190 257 231 261 186 239 209 214 137 219 101 46 210 62 150 71 262 166 260 75 213 66 192 110 112 183 270 252 234 216 142 100 221 155 119 42 267 202 63 182 223 69 194</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_flash_ex.c</name>
+            <name>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang\heap_4.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 10</file>
+                    <file> 258</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
+                    <name>BICOMP</name>
                     <file> 83</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 261</file>
+                    <name>__cstat</name>
+                    <file> 269</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 138 247 198 194 56 15 235 78 151 233 144 242 243 17 174 76 16 61 32 238 67 257 1 8 27 39 181 221 26 193 215 128 6 264 126 237 43 57 240</file>
+                    <file> 140 133 180 56 172 187 185 227 124 79 99 143 190 257 231 261 186 259 239 209 214 137</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_tim.c</name>
+            <name>$PROJ_DIR$\..\USB_Device\App\usbd_desc.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 134</file>
+                    <file> 104</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 245</file>
+                    <name>BICOMP</name>
+                    <file> 126</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 265</file>
+                    <name>__cstat</name>
+                    <file> 48</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 138 247 198 194 56 15 235 78 151 233 144 242 243 17 174 76 16 61 32 238 67 257 1 8 27 39 181 221 26 193 215 128 6 264 126 237 43 57 240</file>
+                    <file> 156 108 95 133 180 56 172 187 185 140 227 173 116 71 262 166 99 260 151 85 259 75 213 66 192 110 112 183 79 270 252 234 216 142 100 221 155 119 42 267 202 63 182 223 69 194 90 226 53 105</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>[ROOT_NODE]</name>
-            <outputs>
-                <tool>
-                    <name>ILINK</name>
-                    <file> 118 63</file>
-                </tool>
-            </outputs>
-        </file>
-        <file>
-            <name>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.c</name>
+            <name>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\list.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 180</file>
+                    <file> 153</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 159</file>
+                    <name>BICOMP</name>
+                    <file> 145</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 217</file>
+                    <name>__cstat</name>
+                    <file> 160</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 229 151 233 144 242 243 257 202 139 78 67 174 76 16 216 192 236 14 45 9 231 38 53 37 187 35 222 136 42 124 163 56 15 235 17 61 32 138 247 198 194 238 1 8 27 39 181 221 26 193 215 128 6 264 126 237 43 57 240</file>
+                    <file> 140 133 180 56 172 187 185 227 124 79 99 143 190 257 231 261 186 259 239 209 137</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_core.c</name>
+            <name>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\portable\IAR\ARM_CM4F\port.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 147</file>
+                    <file> 242</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 3</file>
+                    <name>BICOMP</name>
+                    <file> 224</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 80</file>
+                    <name>__cstat</name>
+                    <file> 96</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 153 195 79 151 233 144 242 243 257 158 46 229 202 56 15 235 78 17 174 76 16 61 32 138 247 198 194 238 67 1 8 27 39 181 221 26 193 215 128 6 264 126 237 43 57 240 77 41 141</file>
+                    <file> 186 259 180 56 172 187 239 124 79 133 185 99 143 190 257 231 261 209 214 137</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ctlreq.c</name>
+            <name>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\portable\IAR\ARM_CM4F\portasm.s</name>
             <outputs>
                 <tool>
-                    <name>ICCARM</name>
-                    <file> 30</file>
-                </tool>
-                <tool>
-                    <name>__cstat</name>
-                    <file> 146</file>
-                </tool>
-                <tool>
-                    <name>BICOMP</name>
-                    <file> 160</file>
+                    <name>AARM</name>
+                    <file> 212</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
-                    <name>ICCARM</name>
-                    <file> 141 77 195 79 151 233 144 242 243 257 158 46 229 202 56 15 235 78 17 174 76 16 61 32 138 247 198 194 238 67 1 8 27 39 181 221 26 193 215 128 6 264 126 237 43 57 240 41 153</file>
+                    <name>AARM</name>
+                    <file> 143</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ioreq.c</name>
+            <name>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\queue.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 130</file>
+                    <file> 167</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 227</file>
+                    <name>BICOMP</name>
+                    <file> 243</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 87</file>
+                    <name>__cstat</name>
+                    <file> 107</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 41 77 195 79 151 233 144 242 243 257 158 46 229 202 56 15 235 78 17 174 76 16 61 32 138 247 198 194 238 67 1 8 27 39 181 221 26 193 215 128 6 264 126 237 43 57 240 153 141</file>
+                    <file> 140 133 180 56 172 187 185 227 173 116 124 79 99 143 190 257 231 261 186 259 239 209 214 137 210</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\portable\IAR\ARM_CM4F\port.c</name>
+            <name>$PROJ_DIR$\..\USB_Device\App\usb_device.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 7</file>
+                    <file> 103</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 82</file>
+                    <name>BICOMP</name>
+                    <file> 217</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 44</file>
+                    <name>__cstat</name>
+                    <file> 179</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 231 16 233 144 242 243 38 216 67 151 257 78 192 236 14 45 9 53 37 187</file>
+                    <file> 76 71 262 166 99 133 180 56 172 187 260 151 85 259 75 213 66 192 110 112 183 79 185 270 252 234 216 142 100 221 155 119 42 267 202 63 182 223 69 194 90 108 95 140 227 173 116 156 226 53 105 80 70</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\queue.c</name>
+            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_flash_ex.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 251</file>
+                    <file> 264</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 219</file>
+                    <name>BICOMP</name>
+                    <file> 198</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 11</file>
+                    <name>__cstat</name>
+                    <file> 97</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 158 151 233 144 242 243 257 46 229 202 216 67 78 192 236 14 45 9 231 16 38 53 37 187 42</file>
+                    <file> 66 192 110 112 71 262 166 99 133 180 56 172 187 260 151 85 259 75 213 183 79 185 270 252 234 216 142 100 221 155 119 42 267 202 63 182 223 69 194</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\portable\IAR\ARM_CM4F\portasm.s</name>
+            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_gpio.c</name>
             <outputs>
                 <tool>
-                    <name>AARM</name>
-                    <file> 31</file>
+                    <name>ICCARM</name>
+                    <file> 168</file>
+                </tool>
+                <tool>
+                    <name>BICOMP</name>
+                    <file> 139</file>
+                </tool>
+                <tool>
+                    <name>__cstat</name>
+                    <file> 177</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
-                    <name>AARM</name>
-                    <file> 192</file>
+                    <name>ICCARM</name>
+                    <file> 66 192 110 112 71 262 166 99 133 180 56 172 187 260 151 85 259 75 213 183 79 185 270 252 234 216 142 100 221 155 119 42 267 202 63 182 223 69 194</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Middlewares\ST\STM32_USB_Device_Library\Class\CustomHID\Src\usbd_customhid.c</name>
+            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_tim.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 66</file>
+                    <file> 45</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 142</file>
+                    <name>BICOMP</name>
+                    <file> 196</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 84</file>
+                    <name>__cstat</name>
+                    <file> 189</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 68 41 77 195 79 151 233 144 242 243 257 158 46 229 202 56 15 235 78 17 174 76 16 61 32 138 247 198 194 238 67 1 8 27 39 181 221 26 193 215 128 6 264 126 237 43 57 240 153 141</file>
+                    <file> 66 192 110 112 71 262 166 99 133 180 56 172 187 260 151 85 259 75 213 183 79 185 270 252 234 216 142 100 221 155 119 42 267 202 63 182 223 69 194</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\list.c</name>
+            <name>$PROJ_DIR$\usb_hid_example\Exe\usb_hid_example.out</name>
             <outputs>
                 <tool>
-                    <name>ICCARM</name>
-                    <file> 191</file>
-                </tool>
-                <tool>
-                    <name>__cstat</name>
-                    <file> 166</file>
+                    <name>OBJCOPY</name>
+                    <file> 181</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 162</file>
+                    <name>ILINK</name>
+                    <file> 43</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
-                    <name>ICCARM</name>
-                    <file> 158 151 233 144 242 243 257 46 216 67 78 192 236 14 45 9 231 16 38 53 187</file>
+                    <name>ILINK</name>
+                    <file> 54 237 132 211 120 163 258 153 207 242 212 167 238 241 162 245 164 236 61 264 165 168 44 171 118 157 111 229 215 161 37 52 134 152 193 123 64 103 39 147 208 244 89 104 65 93 199 49 218</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_rtc_ex.c</name>
+            <name>$PROJ_DIR$\..\Middlewares\ST\STM32_USB_Device_Library\Class\HID\Src\usbd_hid.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 132</file>
+                    <file> 82</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 182</file>
+                    <name>BICOMP</name>
+                    <file> 41</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 148</file>
+                    <name>__cstat</name>
+                    <file> 174</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 138 247 198 194 56 15 235 78 151 233 144 242 243 17 174 76 16 61 32 238 67 257 1 8 27 39 181 221 26 193 215 128 6 264 126 237 43 57 240</file>
+                    <file> 88 226 90 108 95 133 180 56 172 187 185 140 227 173 116 71 262 166 99 260 151 85 259 75 213 66 192 110 112 183 79 270 252 234 216 142 100 221 155 119 42 267 202 63 182 223 69 194 156 53</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_ll_usb.c</name>
+            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_tim_ex.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 156</file>
+                    <file> 57</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 40</file>
+                    <name>BICOMP</name>
+                    <file> 131</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 21</file>
+                    <name>__cstat</name>
+                    <file> 176</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 138 247 198 194 56 15 235 78 151 233 144 242 243 17 174 76 16 61 32 238 67 257 1 8 27 39 181 221 26 193 215 128 6 264 126 237 43 57 240</file>
+                    <file> 66 192 110 112 71 262 166 99 133 180 56 172 187 260 151 85 259 75 213 183 79 185 270 252 234 216 142 100 221 155 119 42 267 202 63 182 223 69 194</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\event_groups.c</name>
+            <name>$PROJ_DIR$\..\Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ioreq.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 249</file>
+                    <file> 65</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 20</file>
+                    <name>BICOMP</name>
+                    <file> 58</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 62</file>
+                    <name>__cstat</name>
+                    <file> 188</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 158 151 233 144 242 243 257 46 216 67 78 192 236 14 45 9 231 16 38 53 37 187 222 35</file>
+                    <file> 226 90 108 95 133 180 56 172 187 185 140 227 173 116 71 262 166 99 260 151 85 259 75 213 66 192 110 112 183 79 270 252 234 216 142 100 221 155 119 42 267 202 63 182 223 69 194 156 53</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang\heap_4.c</name>
+            <name>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\tasks.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 12</file>
+                    <file> 123</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 23</file>
+                    <name>BICOMP</name>
+                    <file> 122</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 70</file>
+                    <name>__cstat</name>
+                    <file> 201</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 158 151 233 144 242 243 257 46 216 67 78 192 236 14 45 9 231 16 38 53 37 187</file>
+                    <file> 140 133 180 56 172 187 185 227 173 116 124 79 99 143 190 257 231 261 186 259 239 209 214 137 101 197</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\stream_buffer.c</name>
+            <name>$PROJ_DIR$\..\Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_core.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 183</file>
+                    <file> 147</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 145</file>
+                    <name>BICOMP</name>
+                    <file> 92</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 2</file>
+                    <name>__cstat</name>
+                    <file> 256</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 78 151 233 144 242 243 229 257 202 216 67 192 236 14 45 9 231 16 38 53 37 187 52</file>
+                    <file> 156 108 95 133 180 56 172 187 185 140 227 173 116 71 262 166 99 260 151 85 259 75 213 66 192 110 112 183 79 270 252 234 216 142 100 221 155 119 42 267 202 63 182 223 69 194 90 226 53</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\croutine.c</name>
+            <name>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\stream_buffer.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 54</file>
+                    <file> 152</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 248</file>
+                    <name>BICOMP</name>
+                    <file> 250</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 211</file>
+                    <name>__cstat</name>
+                    <file> 40</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 216 67 151 233 144 242 243 257 78 192 236 14 45 9 231 16 38 53 37 187 260</file>
+                    <file> 99 133 180 56 172 187 173 185 116 124 79 143 190 257 231 261 186 259 239 209 214 137 232</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\timers.c</name>
+            <name>$PROJ_DIR$\..\Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ctlreq.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 129</file>
+                    <file> 208</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 220</file>
+                    <name>BICOMP</name>
+                    <file> 144</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 203</file>
+                    <name>__cstat</name>
+                    <file> 136</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 158 151 233 144 242 243 257 46 216 67 78 192 236 14 45 9 231 16 38 53 37 187 42 222</file>
+                    <file> 53 90 108 95 133 180 56 172 187 185 140 227 173 116 71 262 166 99 260 151 85 259 75 213 66 192 110 112 183 79 270 252 234 216 142 100 221 155 119 42 267 202 63 182 223 69 194 226 156</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\tasks.c</name>
+            <name>$PROJ_DIR$\..\Middlewares\ST\STM32_USB_Device_Library\Class\CustomHID\Src\usbd_customhid.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 214</file>
+                    <file> 89</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 269</file>
+                    <name>BICOMP</name>
+                    <file> 72</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 213</file>
+                    <name>__cstat</name>
+                    <file> 38</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 158 151 233 144 242 243 257 46 229 202 216 67 78 192 236 14 45 9 231 16 38 53 37 187 222 258</file>
+                    <file> 80 226 90 108 95 133 180 56 172 187 185 140 227 173 116 71 262 166 99 260 151 85 259 75 213 66 192 110 112 183 79 270 252 234 216 142 100 221 155 119 42 267 202 63 182 223 69 194 156 53</file>
                 </tool>
             </inputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\..\Drivers\STM32G4xx_HAL_Driver\Src\stm32g4xx_hal_tim_ex.c</name>
+            <name>$PROJ_DIR$\..\Middlewares\Third_Party\FreeRTOS\Source\timers.c</name>
             <outputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 133</file>
+                    <file> 64</file>
                 </tool>
                 <tool>
-                    <name>__cstat</name>
-                    <file> 234</file>
+                    <name>BICOMP</name>
+                    <file> 128</file>
                 </tool>
                 <tool>
-                    <name>BICOMP</name>
-                    <file> 204</file>
+                    <name>__cstat</name>
+                    <file> 130</file>
                 </tool>
             </outputs>
             <inputs>
                 <tool>
                     <name>ICCARM</name>
-                    <file> 138 247 198 194 56 15 235 78 151 233 144 242 243 17 174 76 16 61 32 238 67 257 1 8 27 39 181 221 26 193 215 128 6 264 126 237 43 57 240</file>
+                    <file> 140 133 180 56 172 187 185 227 124 79 99 143 190 257 231 261 186 259 239 209 214 137 210 101</file>
                 </tool>
             </inputs>
         </file>

+ 96 - 18
cube_example/usb_hid_example/usb_hid_example.ioc

@@ -6,38 +6,60 @@ FREERTOS.IPParameters=Tasks01
 FREERTOS.Tasks01=defaultTask,24,128,StartDefaultTask,Default,NULL,Dynamic,NULL,NULL
 File.Version=6
 GPIO.groupedBy=
+I2C2.IPParameters=Timing
+I2C2.Timing=0x40B285C2
 KeepUserPlacement=false
 Mcu.CPN=STM32G431C8U6
 Mcu.Family=STM32G4
 Mcu.IP0=FREERTOS
-Mcu.IP1=NVIC
-Mcu.IP2=RCC
-Mcu.IP3=RTC
-Mcu.IP4=SYS
-Mcu.IP5=USB
-Mcu.IP6=USB_DEVICE
-Mcu.IPNb=7
+Mcu.IP1=I2C2
+Mcu.IP10=USB_DEVICE
+Mcu.IP2=NVIC
+Mcu.IP3=RCC
+Mcu.IP4=RTC
+Mcu.IP5=SYS
+Mcu.IP6=TIM2
+Mcu.IP7=USART2
+Mcu.IP8=USART3
+Mcu.IP9=USB
+Mcu.IPNb=11
 Mcu.Name=STM32G431C(6-8-B)Ux
 Mcu.Package=UFQFPN48
 Mcu.Pin0=PC13
 Mcu.Pin1=PC14-OSC32_IN
-Mcu.Pin10=VP_SYS_VS_Systick
-Mcu.Pin11=VP_SYS_VS_DBSignals
-Mcu.Pin12=VP_USB_DEVICE_VS_USB_DEVICE_CUSTOM_HID_FS
+Mcu.Pin10=PA5
+Mcu.Pin11=PA6
+Mcu.Pin12=PA7
+Mcu.Pin13=PC4
+Mcu.Pin14=PB0
+Mcu.Pin15=PB1
+Mcu.Pin16=PB2
+Mcu.Pin17=PB10
+Mcu.Pin18=PB11
+Mcu.Pin19=PC6
 Mcu.Pin2=PC15-OSC32_OUT
+Mcu.Pin20=PA8
+Mcu.Pin21=PA11
+Mcu.Pin22=PA12
+Mcu.Pin23=PB3
+Mcu.Pin24=VP_FREERTOS_VS_CMSIS_V2
+Mcu.Pin25=VP_RTC_VS_RTC_Activate
+Mcu.Pin26=VP_SYS_VS_Systick
+Mcu.Pin27=VP_SYS_VS_DBSignals
+Mcu.Pin28=VP_USB_DEVICE_VS_USB_DEVICE_CUSTOM_HID_FS
 Mcu.Pin3=PF0-OSC_IN
 Mcu.Pin4=PF1-OSC_OUT
-Mcu.Pin5=PC6
-Mcu.Pin6=PA11
-Mcu.Pin7=PA12
-Mcu.Pin8=VP_FREERTOS_VS_CMSIS_V2
-Mcu.Pin9=VP_RTC_VS_RTC_Activate
-Mcu.PinsNb=13
+Mcu.Pin5=PA0
+Mcu.Pin6=PA1
+Mcu.Pin7=PA2
+Mcu.Pin8=PA3
+Mcu.Pin9=PA4
+Mcu.PinsNb=29
 Mcu.ThirdPartyNb=0
 Mcu.UserConstants=
 Mcu.UserName=STM32G431C8Ux
-MxCube.Version=6.13.0
-MxDb.Version=DB.6.0.130
+MxCube.Version=6.14.1
+MxDb.Version=DB.6.0.141
 NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false
 NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false
 NVIC.ForceEnableDMAVector=true
@@ -53,16 +75,62 @@ NVIC.SavedSystickIrqHandlerGenerated=true
 NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:true\:false\:true\:false
 NVIC.USB_LP_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true
 NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false
+PA0.Signal=S_TIM2_CH1
+PA1.Mode=Hardware Flow Control (RS485)
+PA1.Signal=USART2_DE
 PA11.Mode=Device
 PA11.Signal=USB_DM
 PA12.Mode=Device
 PA12.Signal=USB_DP
+PA2.Mode=Asynchronous
+PA2.Signal=USART2_TX
+PA3.Mode=Asynchronous
+PA3.Signal=USART2_RX
+PA4.GPIOParameters=GPIO_Label
+PA4.GPIO_Label=Encoder button
+PA4.Locked=true
+PA4.Signal=GPIO_Input
+PA5.GPIOParameters=GPIO_Label
+PA5.GPIO_Label=Reset screen
+PA5.Locked=true
+PA5.Signal=GPIO_Output
+PA6.GPIOParameters=GPIO_Label
+PA6.GPIO_Label=DC screen
+PA6.Locked=true
+PA6.Signal=GPIO_Output
+PA7.GPIOParameters=GPIO_Label
+PA7.GPIO_Label=CS screen
+PA7.Locked=true
+PA7.Signal=GPIO_Output
+PA8.Mode=I2C
+PA8.Signal=I2C2_SDA
+PB0.GPIOParameters=GPIO_Label
+PB0.GPIO_Label=DC Screen
+PB0.Locked=true
+PB0.Signal=GPIO_Output
+PB1.GPIOParameters=GPIO_Label
+PB1.GPIO_Label=Reset Screen
+PB1.Locked=true
+PB1.Signal=GPIO_Output
+PB10.Mode=Asynchronous
+PB10.Signal=USART3_TX
+PB11.Mode=Asynchronous
+PB11.Signal=USART3_RX
+PB2.GPIOParameters=GPIO_Label
+PB2.GPIO_Label=Beeper
+PB2.Locked=true
+PB2.Signal=GPIO_Output
+PB3.Signal=S_TIM2_CH2
 PC13.Locked=true
 PC13.Signal=GPIO_Input
 PC14-OSC32_IN.Mode=LSE-External-Oscillator
 PC14-OSC32_IN.Signal=RCC_OSC32_IN
 PC15-OSC32_OUT.Mode=LSE-External-Oscillator
 PC15-OSC32_OUT.Signal=RCC_OSC32_OUT
+PC4.Mode=I2C
+PC4.Signal=I2C2_SCL
+PC6.GPIOParameters=GPIO_Label
+PC6.GPIO_Label=Board Blue LED
 PC6.Locked=true
 PC6.Signal=GPIO_Output
 PF0-OSC_IN.Mode=HSE-External-Oscillator
@@ -72,6 +140,7 @@ PF1-OSC_OUT.Signal=RCC_OSC_OUT
 PinOutPanel.RotationAngle=0
 ProjectManager.AskForMigrate=true
 ProjectManager.BackupPrevious=false
+ProjectManager.CompilerLinker=GCC
 ProjectManager.CompilerOptimize=6
 ProjectManager.ComputerToolchain=false
 ProjectManager.CoupleFile=false
@@ -148,6 +217,15 @@ RCC.USART3Freq_Value=170000000
 RCC.USBFreq_Value=48000000
 RCC.VCOInputFreq_Value=4000000
 RCC.VCOOutputFreq_Value=340000000
+SH.S_TIM2_CH1.0=TIM2_CH1,Encoder_Interface
+SH.S_TIM2_CH1.ConfNb=1
+SH.S_TIM2_CH2.0=TIM2_CH2,Encoder_Interface
+SH.S_TIM2_CH2.ConfNb=1
+USART2.IPParameters=VirtualMode-Asynchronous,VirtualMode-Hardware Flow Control (RS485)
+USART2.VirtualMode-Asynchronous=VM_ASYNC
+USART2.VirtualMode-Hardware\ Flow\ Control\ (RS485)=VM_ASYNC
+USART3.IPParameters=VirtualMode-Asynchronous
+USART3.VirtualMode-Asynchronous=VM_ASYNC
 USB_DEVICE.CLASS_NAME_FS=CUSTOM_HID
 USB_DEVICE.IPParameters=VirtualMode,VirtualModeFS,CLASS_NAME_FS,USBD_CUSTOM_HID_REPORT_DESC_SIZE,USBD_CUSTOMHID_OUTREPORT_BUF_SIZE
 USB_DEVICE.USBD_CUSTOMHID_OUTREPORT_BUF_SIZE=64

+ 592 - 0
desk/libs/thirdparty/oled_ssd1327/GFX_SSD1327.c

@@ -0,0 +1,592 @@
+/*
+ * GFX_SSD1327.h
+ *
+ *  The MIT License.
+ *  Created on: 5.08.2020
+ *      Author: Mateusz Salamon
+ *      www.msalamon.pl
+ *      mateusz@msalamon.pl
+ */
+#include "main.h"
+#include "GFX_SSD1327.h"
+
+#include "OLED_SSD1327.h"
+
+#if USING_LINES == 1
+#include <stdlib.h> // for abs() function
+#endif
+#if USING_IMAGE_ROTATE == 1
+#include <math.h>
+#endif
+
+#define _swap_int(a, b) { int t = a; a = b; b = t; }
+
+#if  USING_STRINGS == 1
+const uint8_t* font;
+uint8_t size = 1;
+
+void GFX_SetFont(const uint8_t* font_t)
+{
+	font = font_t;
+}
+
+void GFX_SetFontSize(uint8_t size_t)
+{
+	if(size_t != 0)
+		size = size_t;
+}
+
+uint8_t GFX_GetFontHeight(void)
+{
+	return font[0];
+}
+
+uint8_t GFX_GetFontWidth(void)
+{
+	return font[1];
+}
+
+uint8_t GFX_GetFontSize(void)
+{
+	return size;
+}
+
+void GFX_DrawChar(int x, int y, char chr, uint8_t color, uint8_t background)
+{
+	if(chr > 0x7E) return; // chr > '~'
+
+	for(uint8_t i=0; i<font[1]; i++ )
+	{
+        uint8_t line = (uint8_t)font[(chr-0x20) * font[1] + i + 2];
+
+        for(int8_t j=0; j<font[0]; j++, line >>= 1)
+        {
+            if(line & 1)
+            {
+            	if(size == 1)
+            		GFX_DrawPixel(x+i, y+j, color);
+            	else
+            		GFX_DrawFillRectangle(x+i*size, y+j*size, size, size, color);
+            }
+            else if(background == 0)
+            {
+            	if(size == 1)
+					GFX_DrawPixel(x+i, y+j, background);
+				else
+					GFX_DrawFillRectangle(x+i*size, y+j*size, size, size, background);
+            }
+        }
+    }
+}
+
+void GFX_DrawString(int x, int y, char* str, uint8_t color, uint8_t background)
+{
+	int x_tmp = x;
+	char znak;
+	znak = *str;
+	while(*str++)
+	{
+		GFX_DrawChar(x_tmp, y, znak, color, background);
+		x_tmp += ((uint8_t)font[1] * size) + 1;
+		if(background == 0)
+		{
+			for(uint8_t i=0; i<(font[0]*size); i++)
+			{
+				GFX_DrawPixel(x_tmp-1, y+i, PIXEL_BLACK);
+			}
+		}
+		znak = *str;
+	}
+}
+#endif
+#if USING_LINES == 1
+void GFX_WriteLine(int x_start, int y_start, int x_end, int y_end, uint8_t color)
+{
+	int16_t steep = abs(y_end - y_start) > abs(x_end - x_start);
+
+	    if (steep) {
+	        _swap_int(x_start, y_start);
+	        _swap_int(x_end, y_end);
+	    }
+
+	    if (x_start > x_end) {
+	        _swap_int(x_start, x_end);
+	        _swap_int(y_start, y_end);
+	    }
+
+	    int16_t dx, dy;
+	    dx = x_end - x_start;
+	    dy = abs(y_end - y_start);
+
+	    int16_t err = dx / 2;
+	    int16_t ystep;
+
+	    if (y_start < y_end) {
+	        ystep = 1;
+	    } else {
+	        ystep = -1;
+	    }
+
+	    for (; x_start<=x_end; x_start++) {
+	        if (steep) {
+	        	GFX_DrawPixel(y_start, x_start, color);
+	        } else {
+	        	GFX_DrawPixel(x_start, y_start, color);
+	        }
+	        err -= dy;
+	        if (err < 0) {
+	            y_start += ystep;
+	            err += dx;
+	        }
+	    }
+}
+
+void GFX_DrawFastVLine(int x_start, int y_start, int h, uint8_t color)
+{
+	GFX_WriteLine(x_start, y_start, x_start, y_start+h-1, color);
+}
+
+void GFX_DrawFastHLine(int x_start, int y_start, int w, uint8_t color)
+{
+	GFX_WriteLine(x_start, y_start, x_start+w-1, y_start, color);
+}
+
+void GFX_DrawLine(int x_start, int y_start, int x_end, int y_end, uint8_t color)
+{
+	if(x_start == x_end){
+	        if(y_start > y_end) _swap_int(y_start, y_end);
+	        GFX_DrawFastVLine(x_start, y_start, y_end - y_start + 1, color);
+	    } else if(y_start == y_end){
+	        if(x_start > x_end) _swap_int(x_start, x_end);
+	        GFX_DrawFastHLine(x_start, y_start, x_end - x_start + 1, color);
+	    } else {
+
+	    	GFX_WriteLine(x_start, y_start, x_end, y_end, color);
+	    }
+}
+#endif
+#if USING_RECTANGLE == 1
+void GFX_DrawRectangle(int x, int y, uint16_t w, uint16_t h, uint8_t color)
+{
+
+    GFX_DrawFastHLine(x, y, w, color);
+    GFX_DrawFastHLine(x, y+h-1, w, color);
+    GFX_DrawFastVLine(x, y, h, color);
+    GFX_DrawFastVLine(x+w-1, y, h, color);
+
+}
+#endif
+#if USING_FILL_RECTANGLE == 1
+void GFX_DrawFillRectangle(int x, int y, uint16_t w, uint16_t h, uint8_t color)
+{
+    for (int i=x; i<x+w; i++) {
+    	GFX_DrawFastVLine(i, y, h, color);
+    }
+
+}
+#endif
+#if USING_CIRCLE == 1
+void GFX_DrawCircle(int x0, int y0, uint16_t r, uint8_t color)
+{
+    int16_t f = 1 - r;
+    int16_t ddF_x = 1;
+    int16_t ddF_y = -2 * r;
+    int16_t x = 0;
+    int16_t y = r;
+
+    GFX_DrawPixel(x0  , y0+r, color);
+    GFX_DrawPixel(x0  , y0-r, color);
+    GFX_DrawPixel(x0+r, y0  , color);
+    GFX_DrawPixel(x0-r, y0  , color);
+
+    while (x<y) {
+        if (f >= 0) {
+            y--;
+            ddF_y += 2;
+            f += ddF_y;
+        }
+        x++;
+        ddF_x += 2;
+        f += ddF_x;
+
+        GFX_DrawPixel(x0 + x, y0 + y, color);
+        GFX_DrawPixel(x0 - x, y0 + y, color);
+        GFX_DrawPixel(x0 + x, y0 - y, color);
+        GFX_DrawPixel(x0 - x, y0 - y, color);
+        GFX_DrawPixel(x0 + y, y0 + x, color);
+        GFX_DrawPixel(x0 - y, y0 + x, color);
+        GFX_DrawPixel(x0 + y, y0 - x, color);
+        GFX_DrawPixel(x0 - y, y0 - x, color);
+    }
+
+}
+#endif
+#ifdef CIRCLE_HELPER
+void GFX_DrawCircleHelper( int x0, int y0, uint16_t r, uint8_t cornername, uint8_t color)
+{
+    int16_t f     = 1 - r;
+    int16_t ddF_x = 1;
+    int16_t ddF_y = -2 * r;
+    int16_t x     = 0;
+    int16_t y     = r;
+
+    while (x<y) {
+        if (f >= 0) {
+            y--;
+            ddF_y += 2;
+            f     += ddF_y;
+        }
+        x++;
+        ddF_x += 2;
+        f     += ddF_x;
+        if (cornername & 0x4) {
+            GFX_DrawPixel(x0 + x, y0 + y, color);
+            GFX_DrawPixel(x0 + y, y0 + x, color);
+        }
+        if (cornername & 0x2) {
+            GFX_DrawPixel(x0 + x, y0 - y, color);
+            GFX_DrawPixel(x0 + y, y0 - x, color);
+        }
+        if (cornername & 0x8) {
+            GFX_DrawPixel(x0 - y, y0 + x, color);
+            GFX_DrawPixel(x0 - x, y0 + y, color);
+        }
+        if (cornername & 0x1) {
+            GFX_DrawPixel(x0 - y, y0 - x, color);
+            GFX_DrawPixel(x0 - x, y0 - y, color);
+        }
+    }
+}
+#endif
+#ifdef FILL_CIRCLE_HELPER
+void GFX_DrawFillCircleHelper(int x0, int y0, uint16_t r, uint8_t cornername, int16_t delta, uint8_t color)
+{
+
+    int16_t f     = 1 - r;
+    int16_t ddF_x = 1;
+    int16_t ddF_y = -2 * r;
+    int16_t x     = 0;
+    int16_t y     = r;
+
+    while (x<y) {
+        if (f >= 0) {
+            y--;
+            ddF_y += 2;
+            f     += ddF_y;
+        }
+        x++;
+        ddF_x += 2;
+        f     += ddF_x;
+
+        if (cornername & 0x1) {
+            GFX_DrawFastVLine(x0+x, y0-y, 2*y+1+delta, color);
+            GFX_DrawFastVLine(x0+y, y0-x, 2*x+1+delta, color);
+        }
+        if (cornername & 0x2) {
+            GFX_DrawFastVLine(x0-x, y0-y, 2*y+1+delta, color);
+            GFX_DrawFastVLine(x0-y, y0-x, 2*x+1+delta, color);
+        }
+    }
+}
+#endif
+#if USING_FILL_CIRCLE == 1
+void GFX_DrawFillCircle(int x0, int y0, uint16_t r, uint8_t color)
+{
+
+	GFX_DrawFastVLine(x0, y0-r, 2*r+1, color);
+    GFX_DrawFillCircleHelper(x0, y0, r, 3, 0, color);
+}
+#endif
+#if USING_ROUND_RECTANGLE == 1
+void GFX_DrawRoundRectangle(int x, int y, uint16_t w, uint16_t h, uint16_t r, uint8_t color)
+{
+	GFX_DrawFastHLine(x+r  , y    , w-2*r, color); // Top
+    GFX_DrawFastHLine(x+r  , y+h-1, w-2*r, color); // Bottom
+    GFX_DrawFastVLine(x    , y+r  , h-2*r, color); // Left
+    GFX_DrawFastVLine(x+w-1, y+r  , h-2*r, color); // Right
+    // draw four corners
+    GFX_DrawCircleHelper(x+r    , y+r    , r, 1, color);
+    GFX_DrawCircleHelper(x+w-r-1, y+r    , r, 2, color);
+    GFX_DrawCircleHelper(x+w-r-1, y+h-r-1, r, 4, color);
+    GFX_DrawCircleHelper(x+r    , y+h-r-1, r, 8, color);
+}
+#endif
+#if USING_FILL_ROUND_RECTANGLE == 1
+void GFX_DrawFillRoundRectangle(int x, int y, uint16_t w, uint16_t h, uint16_t r, uint8_t color)
+{
+    // smarter version
+
+	GFX_DrawFillRectangle(x+r, y, w-2*r, h, color);
+
+    // draw four corners
+	GFX_DrawFillCircleHelper(x+w-r-1, y+r, r, 1, h-2*r-1, color);
+	GFX_DrawFillCircleHelper(x+r    , y+r, r, 2, h-2*r-1, color);
+}
+#endif
+#if USING_TRIANGLE == 1
+void GFX_DrawTriangle(int x0, int y0, int x1, int y1, int x2, int y2, uint8_t color)
+{
+	GFX_DrawLine(x0, y0, x1, y1, color);
+    GFX_DrawLine(x1, y1, x2, y2, color);
+    GFX_DrawLine(x2, y2, x0, y0, color);
+}
+#endif
+#if USING_FILL_TRIANGLE == 1
+void GFX_DrawFillTriangle(int x0, int y0, int x1, int y1, int x2, int y2, uint8_t color)
+{
+
+    int16_t a, b, y, last;
+
+    // Sort coordinates by Y order (y2 >= y1 >= y0)
+    if (y0 > y1) {
+    	_swap_int(y0, y1); _swap_int(x0, x1);
+    }
+    if (y1 > y2) {
+    	_swap_int(y2, y1); _swap_int(x2, x1);
+    }
+    if (y0 > y1) {
+    	_swap_int(y0, y1); _swap_int(x0, x1);
+    }
+
+    if(y0 == y2) { // Handle awkward all-on-same-line case as its own thing
+        a = b = x0;
+        if(x1 < a)      a = x1;
+        else if(x1 > b) b = x1;
+        if(x2 < a)      a = x2;
+        else if(x2 > b) b = x2;
+        GFX_DrawFastHLine(a, y0, b-a+1, color);
+        return;
+    }
+
+    int16_t
+    dx01 = x1 - x0,
+    dy01 = y1 - y0,
+    dx02 = x2 - x0,
+    dy02 = y2 - y0,
+    dx12 = x2 - x1,
+    dy12 = y2 - y1;
+    int32_t
+    sa   = 0,
+    sb   = 0;
+
+    // For upper part of triangle, find scanline crossings for segments
+    // 0-1 and 0-2.  If y1=y2 (flat-bottomed triangle), the scanline y1
+    // is included here (and second loop will be skipped, avoiding a /0
+    // error there), otherwise scanline y1 is skipped here and handled
+    // in the second loop...which also avoids a /0 error here if y0=y1
+    // (flat-topped triangle).
+    if(y1 == y2) last = y1;   // Include y1 scanline
+    else         last = y1-1; // Skip it
+
+    for(y=y0; y<=last; y++) {
+        a   = x0 + sa / dy01;
+        b   = x0 + sb / dy02;
+        sa += dx01;
+        sb += dx02;
+        /* longhand:
+        a = x0 + (x1 - x0) * (y - y0) / (y1 - y0);
+        b = x0 + (x2 - x0) * (y - y0) / (y2 - y0);
+        */
+        if(a > b) _swap_int(a,b);
+        GFX_DrawFastHLine(a, y, b-a+1, color);
+    }
+
+    // For lower part of triangle, find scanline crossings for segments
+    // 0-2 and 1-2.  This loop is skipped if y1=y2.
+    sa = dx12 * (y - y1);
+    sb = dx02 * (y - y0);
+    for(; y<=y2; y++) {
+        a   = x1 + sa / dy12;
+        b   = x0 + sb / dy02;
+        sa += dx12;
+        sb += dx02;
+        /* longhand:
+        a = x1 + (x2 - x1) * (y - y1) / (y2 - y1);
+        b = x0 + (x2 - x0) * (y - y0) / (y2 - y0);
+        */
+        if(a > b) _swap_int(a,b);
+        GFX_DrawFastHLine(a, y, b-a+1, color);
+    }
+}
+#endif
+#if USING_IMAGE == 1
+#if AVR_USING == 1
+void GFX_Image_P(int x, int y, uint8_t *img, uint8_t w, uint8_t h, uint8_t color)
+{
+	uint8_t i, j, byteWidth = (w+7)/8;
+
+	for(j = 0; j < h; j++)
+	{
+		for(i = 0; i < w; i++)
+		{
+			if(pgm_read_byte(img + j *byteWidth + i /8) & (128 >> (i&7)) )
+				GFX_DrawPixel(x+i, y+j, color);
+		}
+	}
+}
+#endif
+#if STM32_USING ==1
+void GFX_Image(int x, int y, const uint8_t *img, uint8_t w, uint8_t h)
+{
+	uint8_t i, j;
+	uint8_t SelectedCell;
+
+	for(j = 0; j < h; j++)
+	{
+		for(i = 0; i < w; i++)
+		{
+			SelectedCell = img[i/2 + j*(w/2)];
+
+			 if(i % 2)
+			 {
+				 SelectedCell &= 0x0F;
+			 }
+			 else
+			 {
+				 SelectedCell >>= 4;
+			 }
+
+			GFX_DrawPixel(x+i, y+j, SelectedCell);
+		}
+	}
+}
+#if USING_IMAGE_ROTATE == 1
+
+const double sinus_LUT[] =
+{// 0* to 90* = 91 valuse
+		0.0000,
+		0.0175,
+		0.0349,
+		0.0523,
+		0.0698,
+		0.0872,
+		0.1045,
+		0.1219,
+		0.1392,
+		0.1564,
+		0.1736,
+		0.1908,
+		0.2079,
+		0.2250,
+		0.2419,
+		0.2588,
+		0.2756,
+		0.2924,
+		0.3090,
+		0.3256,
+		0.3420,
+		0.3584,
+		0.3746,
+		0.3907,
+		0.4067,
+		0.4226,
+		0.4384,
+		0.4540,
+		0.4695,
+		0.4848,
+		0.5000,
+		0.5150,
+		0.5299,
+		0.5446,
+		0.5592,
+		0.5736,
+		0.5878,
+		0.6018,
+		0.6157,
+		0.6293,
+		0.6428,
+		0.6561,
+		0.6691,
+		0.6820,
+		0.6947,
+		0.7071,
+		0.7193,
+		0.7314,
+		0.7431,
+		0.7547,
+		0.7660,
+		0.7771,
+		0.7880,
+		0.7986,
+		0.8090,
+		0.8192,
+		0.8290,
+		0.8387,
+		0.8480,
+		0.8572,
+		0.8660,
+		0.8746,
+		0.8829,
+		0.8910,
+		0.8988,
+		0.9063,
+		0.9135,
+		0.9205,
+		0.9272,
+		0.9336,
+		0.9397,
+		0.9455,
+		0.9511,
+		0.9563,
+		0.9613,
+		0.9659,
+		0.9703,
+		0.9744,
+		0.9781,
+		0.9816,
+		0.9848,
+		0.9877,
+		0.9903,
+		0.9925,
+		0.9945,
+		0.9962,
+		0.9976,
+		0.9986,
+		0.9994,
+		0.9998,
+		1.0000,
+};
+
+double sinus(uint16_t angle)
+{
+	angle %= 360;
+	if((angle >= 0) && (angle < 90)) return sinus_LUT[angle];
+	if((angle >= 90) && (angle < 180)) return sinus_LUT[180 - angle];
+	if((angle >= 180) && (angle < 270)) return -(sinus_LUT[angle - 180]);
+	if((angle >= 270) && (angle < 360)) return -(sinus_LUT[180 - (angle - 180)]);
+	return 0; // will be never here
+}
+
+void GFX_ImageRotate(int x, int y, const uint8_t *img, uint8_t w, uint8_t h, uint8_t color, uint16_t angle)
+{
+	angle %= 360;
+
+	uint8_t wHalf = w/2;
+	uint8_t hHalf = h/2;
+
+	uint8_t i, j, byteWidth = (w+7)/8;
+
+	double sinma = sinus(angle);
+	double cosma = sinus(angle + 90);
+
+	for(j = 0; j < h; j++)
+	{
+		for(i = 0; i < w; i++)
+		{
+			if(img[j *byteWidth + i /8] & (128 >> (i&7)) )
+			{
+				int xt = i - wHalf;
+				int yt = j - hHalf;
+
+				int xs = (xt*cosma - yt*sinma) + wHalf;
+				int ys = (xt*sinma + yt*cosma) + hHalf;
+
+				GFX_DrawPixel(xs+x, ys+y, color);
+			}
+		}
+	}
+}
+#endif
+#endif
+#endif
+

+ 125 - 0
desk/libs/thirdparty/oled_ssd1327/GFX_SSD1327.h

@@ -0,0 +1,125 @@
+/*
+ * GFX_SSD1327.h
+ *
+ *  The MIT License.
+ *  Created on: 5.08.2020
+ *      Author: Mateusz Salamon
+ *      www.msalamon.pl
+ *      mateusz@msalamon.pl
+ */
+
+#ifndef GFX_SSD1327_H_
+#define GFX_SSD1327_H_
+
+/***************************************************************
+ *
+ * 		SETTINGS
+ *
+ * 		Please set what functionality you want to use.
+ * 		Some functions need other functionalities. It should works automatically.
+ *
+ * 		1 - will be compiled
+ * 		0 - won't be compiled
+ *
+ * */
+#define AVR_USING 0
+#define STM32_USING 1
+
+#define GFX_DrawPixel(x,y,color) SSD1327_DrawPixel(x,y,color)
+#define WIDTH SSD1327_LCDWIDTH
+#define HEIGHT SSD1327_LCDHEIGHT
+#define PIXEL_BLACK	BLACK
+#define PIXEL_WHITE	WHITE
+#define PIXEL_INVERSE	INVERSE
+
+#define USING_STRINGS 1 // 0 - do not compile, 1 - compile
+
+#define USING_IMAGE 1
+#if USING_IMAGE == 1
+#define USING_IMAGE_ROTATE 0
+#endif
+
+// Trygonometric graphic functions
+#define USING_RECTANGLE 1
+#define USING_CIRCLE 1
+#define USING_FILL_CIRCLE 1
+#define USING_ROUND_RECTANGLE 1
+#define USING_FILL_ROUND_RECTANGLE 1
+#define USING_TRIANGLE 1
+#define USING_FILL_TRIANGLE 1
+#if ((USING_FILL_ROUND_RECTANGLE == 0) && (USING_STRINGS == 0))
+#define USING_FILL_RECTANGLE 0
+#endif
+#if (USING_RECTANGLE == 0) && (USING_FILL_RECTANGLE == 0) && (USING_FILL_CIRCLE == 0) && (USING_ROUND_RECTANGLE == 0) && (USING_TRIANGLE == 0) && (USING_FILL_TRIANGLE == 0)
+#define USING_LINES 0
+#endif
+
+/****************************************************************/
+
+#if (USING_FILL_ROUND_RECTANGLE == 1 || USING_STRINGS == 1)
+#define USING_FILL_RECTANGLE 1
+#endif
+#if (USING_RECTANGLE == 1) || (USING_FILL_RECTANGLE == 1) || (USING_FILL_CIRCLE == 1) || (USING_ROUND_RECTANGLE == 1) || (USING_TRIANGLE == 1) || (USING_FILL_TRIANGLE == 1)
+#define USING_LINES 1
+#endif
+#if USING_ROUND_RECTANGLE == 1
+#define CIRCLE_HELPER
+#endif
+#if (USING_FILL_CIRCLE == 1) || (USING_FILL_ROUND_RECTANGLE == 1)
+#define FILL_CIRCLE_HELPER
+#endif
+
+#if USING_STRINGS == 1
+/*
+ *
+ */
+void GFX_SetFont(const uint8_t* font_t);
+void GFX_SetFontSize(uint8_t size_t);
+uint8_t GFX_GetFontHeight(void);
+uint8_t GFX_GetFontWidth(void);
+uint8_t  GFX_GetFontSize(void);
+void GFX_DrawChar(int x, int y, char chr, uint8_t color, uint8_t background);
+void GFX_DrawString(int x, int y, char* str, uint8_t color, uint8_t background);
+#endif
+
+#if USING_LINES == 1
+void GFX_DrawLine(int x_start, int y_start, int x_end, int y_end, uint8_t color);
+#endif
+
+#if USING_RECTANGLE == 1
+void GFX_DrawRectangle(int x, int y, uint16_t w, uint16_t h, uint8_t color);
+#endif
+#if USING_FILL_RECTANGLE ==1
+void GFX_DrawFillRectangle(int x, int y, uint16_t w, uint16_t h, uint8_t color);
+#endif
+#if USING_CIRCLE == 1
+void GFX_DrawCircle(int x0, int y0, uint16_t r, uint8_t color);
+#endif
+#if USING_FILL_CIRCLE == 1
+void GFX_DrawFillCircle(int x0, int y0, uint16_t r, uint8_t color);
+#endif
+#if USING_ROUND_RECTANGLE == 1
+void GFX_DrawRoundRectangle(int x, int y, uint16_t w, uint16_t h, uint16_t r, uint8_t color);
+#endif
+#if USING_FILL_ROUND_RECTANGLE == 1
+void GFX_DrawFillRoundRectangle(int x, int y, uint16_t w, uint16_t h, uint16_t r, uint8_t color);
+#endif
+#if USING_TRIANGLE == 1
+void GFX_DrawTriangle(int x0, int y0, int x1, int y1, int x2, int y2, uint8_t color);
+#endif
+#if USING_FILL_TRIANGLE == 1
+void GFX_DrawFillTriangle(int x0, int y0, int x1, int y1, int x2, int y2, uint8_t color);
+#endif
+#if USING_IMAGE == 1
+#if AVR_USING ==1
+void GFX_Image_P(int x, int y, uint8_t *img, uint8_t w, uint8_t h, uint8_t color);
+#endif
+#if STM32_USING ==1
+void GFX_Image(int x, int y, const uint8_t *img, uint8_t w, uint8_t h);
+#if USING_IMAGE_ROTATE == 1
+void GFX_ImageRotate(int x, int y, const uint8_t *img, uint8_t w, uint8_t h, uint8_t color, uint16_t angle);
+#endif
+#endif
+#endif
+
+#endif /* GFX_SSD1327_H_ */

+ 346 - 0
desk/libs/thirdparty/oled_ssd1327/OLED_SSD1327.c

@@ -0,0 +1,346 @@
+/*
+ * OLED_SSD1327.c
+ *
+ *  The MIT License.
+ *  Created on: 16.07.2020
+ *      Author: Mateusz Salamon
+ *      www.msalamon.pl
+ *      mateusz@msalamon.pl
+ */
+
+#include "main.h"
+
+#include "OLED_SSD1327.h"
+
+#include "string.h"
+
+#ifdef SSD1327_I2C_CONTROL
+I2C_HandleTypeDef *ssd1337_i2c;
+#endif
+#ifdef SSD1327_SPI_CONTROL
+SPI_HandleTypeDef *ssd1337_spi;
+#endif
+#define SSD1327_BUFFERSIZE	(SSD1327_LCDHEIGHT * SSD1327_LCDWIDTH / 2)
+static uint8_t buffer[SSD1327_BUFFERSIZE];
+
+void SSD1327_Command(uint8_t com)
+{
+#ifdef SSD1327_I2C_CONTROL
+	// I2C
+	HAL_I2C_Mem_Write(ssd1337_i2c, SSD1327_I2C_ADDRESS, 0x00, 1, &com, sizeof(com), 100);
+#endif
+#ifdef SSD1327_SPI_CONTROL
+	//SPI
+	HAL_GPIO_WritePin(SSD1327_DC_GPIO_Port, SSD1327_DC_Pin, GPIO_PIN_RESET);
+#ifndef SPI_CS_HARDWARE_CONTROL
+	HAL_GPIO_WritePin(SSD1327_CS_GPIO_Port, SSD1327_CS_Pin, GPIO_PIN_RESET);
+#endif
+	HAL_SPI_Transmit(ssd1337_spi, &com, 1, 10);
+#ifndef SPI_CS_HARDWARE_CONTROL
+	HAL_GPIO_WritePin(SSD1327_CS_GPIO_Port, SSD1327_CS_Pin, GPIO_PIN_SET);
+#endif
+#endif
+}
+
+void SSD1327_Data(uint8_t dat)
+{
+#ifdef SSD1327_I2C_CONTROL
+	// I2C
+	HAL_I2C_Mem_Write(ssd1337_i2c, SSD1327_I2C_ADDRESS, 0x40, 1, &dat, sizeof(dat), 100);
+#endif
+#ifdef SSD1327_SPI_CONTROL
+	// SPI
+	HAL_GPIO_WritePin(SSD1327_DC_GPIO_Port, SSD1327_DC_Pin, GPIO_PIN_SET);
+#ifndef SPI_CS_HARDWARE_CONTROL
+	HAL_GPIO_WritePin(SSD1327_CS_GPIO_Port, SSD1327_CS_Pin, GPIO_PIN_RESET);
+#endif
+	HAL_SPI_Transmit(ssd1337_spi, &dat, 1, 10);
+#ifndef SPI_CS_HARDWARE_CONTROL
+	HAL_GPIO_WritePin(SSD1327_CS_GPIO_Port, SSD1327_CS_Pin, GPIO_PIN_SET);
+#endif
+#endif
+}
+
+#if defined(SSD1327_SPI_CONTROL) || defined(SSD1327_RESET_USE)
+void SSD1327_Reset(void)
+{
+	HAL_GPIO_WritePin(SSD1327_RESET_GPIO_Port, SSD1327_RESET_Pin, GPIO_PIN_RESET);
+	HAL_Delay(5);
+	HAL_GPIO_WritePin(SSD1327_RESET_GPIO_Port, SSD1327_RESET_Pin, GPIO_PIN_SET);
+}
+#endif
+
+//
+// Configuration functions
+//
+void SSD1327_InvertColors(uint8_t Invert)
+{
+	SSD1327_Command(Invert ? SSD1327_INVERTDISPLAY : SSD1327_NORMALDISPLAY);
+}
+
+void SSD1327_RotateDisplay(uint8_t Rotate)
+{
+	if(Rotate > 1) Rotate = 1;
+
+	SSD1327_Command(0xA0 | (0x01 & Rotate));  // Set Segment Re-Map Default
+							// 0xA0 (0x00) => column Address 0 mapped to 127
+                			// 0xA1 (0x01) => Column Address 127 mapped to 0
+
+	SSD1327_Command(0xC0 | (0x08 & (Rotate<<3)));  // Set COM Output Scan Direction
+							// 0xC0	(0x00) => normal mode (RESET) Scan from COM0 to COM[N-1];Where N is the Multiplex ratio.
+							// 0xC8	(0xC8) => remapped mode. Scan from COM[N-1] to COM0;;Where N is the Multiplex ratio.
+}
+
+void SSD1327_DisplayON(uint8_t On)
+{
+	SSD1327_Command(On ? SSD1327_DISPLAYON : SSD1327_DISPLAYOFF);
+}
+
+void SSD1327_SetContrast(uint8_t Contrast)
+{
+	SSD1327_Command(SSD1327_SETCONTRASTCURRENT);	// Set Contrast Control
+	SSD1327_Command(Contrast);
+}
+
+#if GRAPHIC_ACCELERATION_COMMANDS == 1
+//
+// Graphic Acceleration Command
+//
+void SSD1327_StartScrollRight(uint8_t StartPage, uint8_t EndPage, uint8_t Speed)
+{
+	SSD1327_Command(SSD1327_RIGHT_HORIZONTAL_SCROLL);
+	SSD1327_Command(0x00);
+	SSD1327_Command(StartPage);
+	SSD1327_Command(Speed);
+	SSD1327_Command(EndPage);
+	SSD1327_Command(SSD1327_ACTIVATE_SCROLL);
+}
+
+void SSD1327_StartScrollLeft(uint8_t StartPage, uint8_t EndPage, uint8_t Speed)
+{
+	SSD1327_Command(SSD1327_LEFT_HORIZONTAL_SCROLL);
+	SSD1327_Command(0x00);
+	SSD1327_Command(StartPage);
+	SSD1327_Command(Speed);
+	SSD1327_Command(EndPage);
+	SSD1327_Command(SSD1327_ACTIVATE_SCROLL);
+}
+
+void SSD1327_StopScroll(void)
+{
+	SSD1327_Command(SSD1327_DEACTIVATE_SCROLL);
+}
+#endif
+
+//
+// Initialization
+//
+void SSD1327_Init(void)
+{
+	SSD1327_Command(SSD1327_DISPLAYOFF);  // Display Off
+
+	SSD1327_Command(SSD1327_SETMULTIPLEX);
+	SSD1327_Command(0x5F);
+
+	SSD1327_Command(SSD1327_SETDISPLAYSTARTLINE);
+	SSD1327_Command(0x00);
+
+	SSD1327_Command(SSD1327_SETDISPLAYOFFSET);
+	SSD1327_Command(0x20);
+
+	SSD1327_Command(SSD1327_SEGREMAP);
+	SSD1327_Command(0x51);
+
+	SSD1327_SetContrast(0x7F);
+
+	SSD1327_Command(SSD1327_SETPHASELENGTH);
+	SSD1327_Command(0x22);
+
+	SSD1327_Command(SSD1327_SETFRONTCLOCKDIVIDER_OSCILLATORFREQUENCY);
+	SSD1327_Command(0x50);
+
+	SSD1327_Command(SSD1327_SELECTDEFAULTLINEARGRAYSCALETABLE);
+
+	SSD1327_Command(SSD1327_SETPRECHARGEVOLTAGE);
+	SSD1327_Command(0x10);
+
+	SSD1327_Command(SSD1327_SETSETVCOMVOLTAGE);
+	SSD1327_Command(0x05);
+
+	SSD1327_Command(SSD1327_SETSECONDPRECHARGEPERTIOD);
+	SSD1327_Command(0x0a);
+
+	SSD1327_Command(SSD1327_FUNCTIONSELECTIONB);
+	SSD1327_Command(0x62);
+
+	SSD1327_Command(SSD1327_SETCOLUMNADDRESS);
+	SSD1327_Command(0x00);
+	SSD1327_Command(0x3F);
+
+	SSD1327_Command(SSD1327_SETROWADDRESS);
+	SSD1327_Command(0x00);
+	SSD1327_Command(0x5F);
+
+	SSD1327_Command(SSD1327_NORMALDISPLAY);  // Set Normal Display
+
+	SSD1327_Command(SSD1327_DISPLAYALLON_RESUME);  // Entire Display ON
+
+#if GRAPHIC_ACCELERATION_COMMANDS == 1
+	SSD1327_StopScroll();
+#endif
+
+	SSD1327_DisplayON(1);
+}
+
+#ifdef SSD1327_I2C_CONTROL
+void SSD1327_I2cInit(I2C_HandleTypeDef *i2c)
+{
+	ssd1337_i2c = i2c;
+
+	SSD1327_Init();
+}
+#endif
+
+#ifdef SSD1327_SPI_CONTROL
+void SSD1327_SpiInit(SPI_HandleTypeDef *spi)
+{
+	ssd1337_spi = spi;
+
+#if defined(SSD1327_RESET_USE)
+	SSD1327_Reset();
+#endif
+	SSD1327_Init();
+}
+#endif
+
+//
+// Draw pixel in the buffer
+//
+void SSD1327_DrawPixel(int16_t x, int16_t y, uint8_t Color)
+{
+	 if ((x < 0) || (x >= SSD1327_LCDWIDTH) || (y < 0) || (y >= SSD1327_LCDHEIGHT))
+		 return;
+
+	 uint8_t SelectedCell = buffer[x/2 + y*(SSD1327_LCDWIDTH/2)];
+
+	 if(x % 2)
+	 {
+		 SelectedCell &= ~(0x0F);
+		 SelectedCell |= (0x0F & Color);
+	 }
+	 else
+	 {
+		 SelectedCell &= ~(0xF0);
+		 SelectedCell |= (0xF0 & (Color<<4));
+	 }
+
+	 buffer[x/2 + y*(SSD1327_LCDWIDTH/2)] = SelectedCell;
+}
+
+//
+// Clear the buffer
+//
+void SSD1327_Clear(uint8_t Color)
+{
+	if(Color > WHITE) Color = WHITE;
+
+	memset(buffer, (Color << 4 | Color), SSD1327_BUFFERSIZE);
+}
+
+//
+// Send buffer to OLDE GCRAM
+//
+void SSD1327_Display(void)
+{
+	SSD1327_Command(SSD1327_SETCOLUMNADDRESS);
+	SSD1327_Command(0x00);
+	SSD1327_Command(0x3F);
+
+	SSD1327_Command(SSD1327_SETROWADDRESS);
+	SSD1327_Command(0x00);
+	SSD1327_Command(0x5F);
+
+#ifdef SSD1327_I2C_CONTROL
+#ifdef SSD1327_I2C_DMA_ENABLE
+	if(ssd1337_i2c->hdmatx->State == HAL_DMA_STATE_READY)
+	{
+		HAL_I2C_Mem_Write_DMA(ssd1337_i2c, SSD1327_I2C_ADDRESS, 0x40, 1, (uint8_t*)&buffer, SSD1327_BUFFERSIZE);
+	}
+#else
+	HAL_I2C_Mem_Write(ssd1337_i2c, SSD1327_I2C_ADDRESS, 0x40, 1, (uint8_t*)&buffer, SSD1327_BUFFERSIZE, 1000);
+#endif
+#endif
+#ifdef SSD1327_SPI_CONTROL
+#ifdef SSD1327_SPI_DMA_ENABLE
+	HAL_GPIO_WritePin(SSD1327_DC_GPIO_Port, SSD1327_DC_Pin, GPIO_PIN_SET);
+#ifndef SPI_CS_HARDWARE_CONTROL
+	HAL_GPIO_WritePin(SSD1327_CS_GPIO_Port, SSD1327_CS_Pin, GPIO_PIN_RESET);
+#endif
+	if(ssd1337_spi->hdmatx->State == HAL_DMA_STATE_READY)
+	{
+		HAL_SPI_Transmit_DMA(ssd1337_spi, (uint8_t*)&buffer, SSD1327_BUFFERSIZE);
+	}
+#else
+	HAL_GPIO_WritePin(SSD1327_DC_GPIO_Port, SSD1327_DC_Pin, GPIO_PIN_SET);
+#ifndef SPI_CS_HARDWARE_CONTROL
+	HAL_GPIO_WritePin(SSD1327_CS_GPIO_Port, SSD1327_CS_Pin, GPIO_PIN_RESET);
+#endif
+	HAL_SPI_Transmit(ssd1337_spi, (uint8_t*)&buffer, SSD1327_BUFFERSIZE, 100);
+#ifndef SPI_CS_HARDWARE_CONTROL
+	HAL_GPIO_WritePin(SSD1327_CS_GPIO_Port, SSD1327_CS_Pin, GPIO_PIN_SET);
+#endif
+#endif
+#endif
+}
+
+//
+// Display Bitmap directly on screen
+//
+void SSD1327_Bitmap(uint8_t *bitmap)
+{
+	SSD1327_Command(0x22);
+	SSD1327_Command(0x00);
+	SSD1327_Command(0x07);
+#ifdef SSD1327_I2C_CONTROL
+#ifdef SSD1327_I2C_DMA_ENABLE
+	if(ssd1337_i2c->hdmatx->State == HAL_DMA_STATE_READY)
+	{
+		HAL_I2C_Mem_Write_DMA(ssd1337_i2c, SSD1327_I2C_ADDRESS, 0x40, 1, bitmap, (SSD1327_LCDHEIGHT * SSD1327_LCDWIDTH / 8));
+	}
+#else
+	HAL_I2C_Mem_Write(ssd1337_i2c, SSD1327_I2C_ADDRESS, 0x40, 1, bitmap, (SSD1327_LCDHEIGHT * SSD1327_LCDWIDTH / 8), 100);
+#endif
+#endif
+#ifdef SSD1327_SPI_CONTROL
+#ifdef SSD1327_SPI_DMA_ENABLE
+	HAL_GPIO_WritePin(SSD1327_DC_GPIO_Port, SSD1327_DC_Pin, GPIO_PIN_SET);
+#ifndef SPI_CS_HARDWARE_CONTROL
+	HAL_GPIO_WritePin(SSD1327_CS_GPIO_Port, SSD1327_CS_Pin, GPIO_PIN_RESET);
+#endif
+	if(ssd1337_spi->hdmatx->State == HAL_DMA_STATE_READY)
+	{
+		HAL_SPI_Transmit_DMA(ssd1337_spi, bitmap, (SSD1327_LCDHEIGHT * SSD1327_LCDWIDTH / 8));
+	}
+#else
+	HAL_GPIO_WritePin(SSD1327_DC_GPIO_Port, SSD1327_DC_Pin, GPIO_PIN_SET);
+#ifndef SPI_CS_HARDWARE_CONTROL
+	HAL_GPIO_WritePin(SSD1327_CS_GPIO_Port, SSD1327_CS_Pin, GPIO_PIN_RESET);
+#endif
+	HAL_SPI_Transmit(ssd1337_spi, bitmap, (SSD1327_LCDHEIGHT * SSD1327_LCDWIDTH / 8), 100);
+#ifndef SPI_CS_HARDWARE_CONTROL
+	HAL_GPIO_WritePin(SSD1327_CS_GPIO_Port, SSD1327_CS_Pin, GPIO_PIN_SET);
+#endif
+#endif
+#endif
+}
+
+#if defined(SSD1327_SPI_CONTROL) && !defined(SSD1327_SPI_DMA_ENABLE) && !defined(SPI_CS_HARDWARE_CONTROL)
+void SSD1327_DmaEndCallback(SPI_HandleTypeDef *hspi)
+{
+	if(hspi == ssd1337_spi)
+	{
+		HAL_GPIO_WritePin(SSD1327_CS_GPIO_Port, SSD1327_CS_Pin, GPIO_PIN_SET);
+	}
+}
+#endif
+

+ 145 - 0
desk/libs/thirdparty/oled_ssd1327/OLED_SSD1327.h

@@ -0,0 +1,145 @@
+/*
+ * OLED_SSD1327.h
+ *
+ *  The MIT License.
+ *  Created on: 16.07.2020
+ *      Author: Mateusz Salamon
+ *      www.msalamon.pl
+ *      mateusz@msalamon.pl
+ */
+
+#ifndef OLED_SSD1327_H_
+#define OLED_SSD1327_H_
+
+/*
+ *
+ *    SETTINGS
+ *
+ *    Please set only one interface. It won't work with both one time.
+ *
+ */
+//#define SSD1327_SPI_CONTROL
+#define SSD1327_I2C_CONTROL
+
+#ifdef SSD1327_I2C_CONTROL
+//#define SSD1327_I2C_DMA_ENABLE
+#define SSD1327_I2C_ADDRESS   0x78
+#endif
+#ifdef SSD1327_SPI_CONTROL
+#define SSD1327_RESET_USE
+#define SSD1327_SPI_DMA_ENABLE
+#define SPI_CS_HARDWARE_CONTROL
+#endif
+
+//
+// Resolution
+//
+#define SSD1327_LCDWIDTH                  128
+#define SSD1327_LCDHEIGHT                 96
+
+/*
+ * 		Please set what functionality you want to use.
+ * 		Some functions need other functionalities. It should works automatically.
+ *
+ * 		1 - will be compiled
+ * 		0 - won't be compiled
+ */
+#define GRAPHIC_ACCELERATION_COMMANDS 0
+
+/****************************************************************/
+
+//
+// Commands
+//
+#define SSD1327_SETCOLUMNADDRESS	0x15
+#define SSD1327_SETROWADDRESS		0x75
+#define SSD1327_SETCONTRASTCURRENT 	0x81
+#define SSD1327_NOP					0x84
+#define SSD1327_SEGREMAP			0xA0
+#define SSD1327_SETDISPLAYSTARTLINE	0xA1
+#define SSD1327_SETDISPLAYOFFSET	0xA2
+#define SSD1327_DISPLAYALLON_RESUME 0xA4
+#define SSD1327_DISPLAYALLON 		0xA5
+#define SSD1327_NORMALDISPLAY 		0xA6
+#define SSD1327_INVERTDISPLAY 		0xA7
+#define SSD1327_SETMULTIPLEX		0xA8
+#define SSD1327_FUNCTIONSELECTIONA	0xAB
+#define SSD1327_DISPLAYOFF			0xAE
+#define SSD1327_DISPLAYON			0xAF
+#define SSD1327_SETPHASELENGTH		0xB1
+#define SSD1327_SETFRONTCLOCKDIVIDER_OSCILLATORFREQUENCY 0xB3
+#define SSD1327_SETGPIO				0xB5
+#define SSD1327_SETSECONDPRECHARGEPERTIOD	0xB6
+#define SSD1327_SETGRAYSCALETABLE	0xB8
+#define SSD1327_SELECTDEFAULTLINEARGRAYSCALETABLE	0xB9
+#define SSD1327_SETPRECHARGEVOLTAGE	0xBC
+#define SSD1327_SETSETVCOMVOLTAGE	0xBE
+#define SSD1327_FUNCTIONSELECTIONB	0xD5
+#define SSD1327_SETCOMMANDLOCK		0xFD
+
+//
+// Scrolling #defines
+//
+#define SSD1327_ACTIVATE_SCROLL			0x2F
+#define SSD1327_DEACTIVATE_SCROLL		0x2E
+#define SSD1327_RIGHT_HORIZONTAL_SCROLL	0x26
+#define SSD1327_LEFT_HORIZONTAL_SCROLL	0x27
+
+//
+// Colors
+//
+#define BLACK 0
+// Grays between
+#define WHITE 15
+
+//
+// Scrolling enums
+//
+typedef enum
+{
+	SCROLL_EVERY_5_FRAMES,
+	SCROLL_EVERY_64_FRAMES,
+	SCROLL_EVERY_128_FRAMES,
+	SCROLL_EVERY_256_FRAMES,
+	SCROLL_EVERY_3_FRAMES,
+	SCROLL_EVERY_4_FRAMES,
+	SCROLL_EVERY_25_FRAMES,
+	SCROLL_EVERY_2_FRAMES,
+} scroll_horizontal_speed;
+//
+// Functions
+//
+#ifdef SSD1327_I2C_CONTROL
+void SSD1327_I2cInit(I2C_HandleTypeDef *i2c);
+#endif
+#if defined(SSD1327_SPI_CONTROL) && !defined(SSD1327_SPI_DMA_ENABLE)
+void SSD1327_DmaEndCallback(SPI_HandleTypeDef *hspi);
+#endif
+
+//
+// Configuration
+//
+void SSD1327_DisplayON(uint8_t On);
+void SSD1327_InvertColors(uint8_t Invert);
+void SSD1327_RotateDisplay(uint8_t Rotate);
+void SSD1327_SetContrast(uint8_t Contrast);
+
+//
+// Drawing
+//
+void SSD1327_DrawPixel(int16_t x, int16_t y, uint8_t Color);
+void SSD1327_Clear(uint8_t Color);
+void SSD1327_Display(void);
+void SSD1327_Bitmap(uint8_t *bitmap);
+
+#if GRAPHIC_ACCELERATION_COMMANDS == 1
+//
+// Graphic Acceleration Commands
+//
+void SSD1327_StartScrollRight(uint8_t StartPage, uint8_t EndPage, scroll_horizontal_speed Speed);
+void SSD1327_StartScrollLeft(uint8_t StartPage, uint8_t EndPage, scroll_horizontal_speed Speed);
+void SSD1327_StopScroll(void);
+#endif
+
+
+#endif /* OLED_SSD1327_H_ */

+ 55 - 0
desk/libs/thirdparty/oled_ssd1327/i2c.c

@@ -0,0 +1,55 @@
+#include "i2c.h"
+
+I2C_HandleTypeDef hi2c2;
+
+
+void MX_I2C1_Init(void)
+{
+    hi2c2.Instance = I2C2;
+    hi2c2.Init.ClockSpeed = 100000;
+    hi2c2.Init.DutyCycle = I2C_DUTYCYCLE_2;
+    hi2c2.Init.OwnAddress1 = 0;
+    hi2c2.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
+    hi2c2.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
+    hi2c2.Init.OwnAddress2 = 0;
+    hi2c2.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
+    hi2c2.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
+    HAL_I2C_Init(&hi2c2);
+}
+
+
+//
+void HAL_I2C_MspInit(I2C_HandleTypeDef* i2cHandle)
+{
+    GPIO_InitTypeDef GPIO_InitStruct = {0};
+  
+    if(i2cHandle->Instance==I2C2)
+    {
+        __HAL_RCC_GPIOA_CLK_ENABLE();
+        __HAL_RCC_GPIOC_CLK_ENABLE();
+        
+        GPIO_InitStruct.Pin = GPIO_PIN_8;
+        GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
+        GPIO_InitStruct.Pull = GPIO_PULLUP;
+        GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+        GPIO_InitStruct.Alternate = GPIO_AF4_I2C2;
+        HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+        
+        GPIO_InitStruct.Pin = GPIO_PIN_4;
+        GPIO_InitStruct.Alternate = GPIO_AF4_I2C2;
+        HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+        
+        __HAL_RCC_I2C2_CLK_ENABLE();
+    }
+}
+
+
+void HAL_I2C_MspDeInit(I2C_HandleTypeDef* i2cHandle)
+{
+    if(i2cHandle->Instance==I2C1)
+    {
+        __HAL_RCC_I2C2_CLK_DISABLE();
+        HAL_GPIO_DeInit(GPIOA, GPIO_PIN_8);
+        HAL_GPIO_DeInit(GPIOC, GPIO_PIN_4);
+    }
+} 

+ 58 - 0
desk/libs/thirdparty/oled_ssd1327/i2c.h

@@ -0,0 +1,58 @@
+/**
+  ******************************************************************************
+  * File Name          : I2C.h
+  * Description        : This file provides code for the configuration
+  *                      of the I2C instances.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under BSD 3-Clause license,
+  * the "License"; You may not use this file except in compliance with the
+  * License. You may obtain a copy of the License at:
+  *                        opensource.org/licenses/BSD-3-Clause
+  *
+  ******************************************************************************
+  */
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __i2c_H
+#define __i2c_H
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+extern I2C_HandleTypeDef hi2c1;
+
+/* USER CODE BEGIN Private defines */
+
+/* USER CODE END Private defines */
+
+void MX_I2C1_Init(void);
+
+/* USER CODE BEGIN Prototypes */
+
+/* USER CODE END Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+#endif /*__ i2c_H */
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

+ 3 - 0
desk/user/main.cpp

@@ -1,5 +1,6 @@
 #include "stm32g4xx_hal.h"
 #include "cmsis_os.h"
+#include "i2c.h"
 
 
 void SystemClock_Config(void);
@@ -26,6 +27,8 @@ int main()
     
     MX_GPIO_Init();
     
+    MX_I2C1_Init();
+    
     osKernelInitialize();
     defaultTaskHandle = osThreadNew(StartDefaultTask, NULL, &defaultTask_attributes);
     

+ 1 - 1
desk/user/stm32g4xx_hal_conf.h

@@ -47,7 +47,7 @@
 /*#define HAL_HRTIM_MODULE_ENABLED   */
 /*#define HAL_IRDA_MODULE_ENABLED   */
 /*#define HAL_IWDG_MODULE_ENABLED   */
-/*#define HAL_I2C_MODULE_ENABLED   */
+#define HAL_I2C_MODULE_ENABLED
 /*#define HAL_I2S_MODULE_ENABLED   */
 /*#define HAL_LPTIM_MODULE_ENABLED   */
 /*#define HAL_NAND_MODULE_ENABLED   */

BIN
doc/photo_2025-04-09_14-36-47.jpg


BIN
doc/Датчик оборотов робота.jpg


BIN
project/ewarm/desk/Debug/Exe/desk.out


+ 84 - 85
project/ewarm/desk/Debug/List/desk.map

@@ -1,96 +1,95 @@
 ###############################################################################
 #
-# IAR ELF Linker V8.40.1.212/W32 for ARM                  13/May/2025  12:35:54
+# IAR ELF Linker V8.40.1.212/W32 for ARM                  25/May/2025  09:52:19
 # Copyright 2007-2019 IAR Systems AB.
 #
 #    Output file  =
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Exe\desk.out
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Exe\desk.out
 #    Map file     =
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\List\desk.map
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\List\desk.map
 #    Command line =
-#        -f C:\Users\User\AppData\Local\Temp\EW400F.tmp
-#        (C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\app_freertos.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\cmsis_os2.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\croutine.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\event_groups.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\heap_4.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\list.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\main.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\port.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\portasm.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\queue.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\startup_stm32g431xx.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_adc.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_adc_ex.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_comp.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_cordic.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_cortex.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_crc.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_crc_ex.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_cryp.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_cryp_ex.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_dac.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_dac_ex.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_dma.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_dma_ex.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_exti.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_fdcan.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_flash.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_flash_ex.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_flash_ramfunc.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_fmac.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_gpio.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_hrtim.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_i2c.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_i2c_ex.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_i2s.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_irda.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_iwdg.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_lptim.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_msp.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_nand.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_nor.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_opamp.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_opamp_ex.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_pcd.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_pcd_ex.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_pwr.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_pwr_ex.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_qspi.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_rcc.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_rcc_ex.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_rng.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_rtc.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_rtc_ex.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_sai.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_sai_ex.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_smartcard.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_smartcard_ex.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_smbus.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_smbus_ex.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_spi.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_spi_ex.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_sram.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_tim.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_tim_ex.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_uart.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_uart_ex.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_usart.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_usart_ex.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_wwdg.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_it.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stream_buffer.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\system_stm32g4xx.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\tasks.o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\timers.o
+#        -f C:\Temp\EW4F1A.tmp
+#        (D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\app_freertos.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\cmsis_os2.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\croutine.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\event_groups.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\heap_4.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\list.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\main.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\port.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\portasm.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\queue.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\startup_stm32g431xx.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_adc.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_adc_ex.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_comp.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_cordic.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_cortex.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_crc.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_crc_ex.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_cryp.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_cryp_ex.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_dac.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_dac_ex.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_dma.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_dma_ex.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_exti.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_fdcan.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_flash.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_flash_ex.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_flash_ramfunc.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_fmac.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_gpio.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_hrtim.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_i2c.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_i2c_ex.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_i2s.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_irda.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_iwdg.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_lptim.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_msp.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_nand.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_nor.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_opamp.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_opamp_ex.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_pcd.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_pcd_ex.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_pwr.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_pwr_ex.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_qspi.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_rcc.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_rcc_ex.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_rng.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_rtc.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_rtc_ex.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_sai.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_sai_ex.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_smartcard.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_smartcard_ex.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_smbus.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_smbus_ex.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_spi.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_spi_ex.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_sram.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_tim.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_tim_ex.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_uart.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_uart_ex.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_usart.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_usart_ex.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_hal_wwdg.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stm32g4xx_it.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\stream_buffer.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\system_stm32g4xx.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\tasks.o
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj\timers.o
 #        --no_out_extension -o
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Exe\desk.out
+#        D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Exe\desk.out
 #        --redirect _Printf=_PrintfFullNoMb --redirect _Scanf=_ScanfFullNoMb
-#        --map
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\List\desk.map
+#        --map D:\FlyElectronics\tuber\project\ewarm\desk\Debug\List\desk.map
 #        --config
-#        C:\projects\FlyElectronics\tuber\project\ewarm\desk/stm32g431xx_flash.icf
+#        D:\FlyElectronics\tuber\project\ewarm\desk/stm32g431xx_flash.icf
 #        --semihosting --entry __iar_program_start --vfe --text_out locale)
 #
 ###############################################################################
@@ -355,7 +354,7 @@ command line/config:
     -------------------------------------------------
     Total:
 
-C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj: [1]
+D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj: [1]
     cmsis_os2.o                 472             1'724
     heap_4.o                    648        4    3'104
     list.o                      154
@@ -663,7 +662,7 @@ xTimerTaskHandle        0x2000'195c    0x4  Data  Lc  timers.o [1]
 xYieldPending           0x2000'1938    0x4  Data  Lc  tasks.o [1]
 
 
-[1] = C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj
+[1] = D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Obj
 [2] = dl7M_tlf.a
 [3] = m7M_tls.a
 [4] = rt7M_tl.a

Файловите разлики са ограничени, защото са твърде много
+ 473 - 389
project/ewarm/desk/desk.dep


+ 13 - 0
project/ewarm/desk/desk.ewp

@@ -359,6 +359,7 @@
                     <state>$PROJ_DIR$/../../../desk/libs/thirdparty/freertos/portable/IAR/ARM_CM4F</state>
                     <state>$PROJ_DIR$/../../../desk/libs/thirdparty/freertos/include</state>
                     <state>$PROJ_DIR$/../../../desk/libs/thirdparty/freertos</state>
+                    <state>$PROJ_DIR$/../../../desk/libs/thirdparty/oled_ssd1327</state>
                 </option>
                 <option>
                     <name>CCStdIncCheck</name>
@@ -2354,6 +2355,18 @@
                     <name>$PROJ_DIR$\..\..\..\desk\libs\thirdparty\freertos\timers.c</name>
                 </file>
             </group>
+            <group>
+                <name>oled_ssd1327</name>
+                <file>
+                    <name>$PROJ_DIR$\..\..\..\desk\libs\thirdparty\oled_ssd1327\GFX_SSD1327.c</name>
+                </file>
+                <file>
+                    <name>$PROJ_DIR$\..\..\..\desk\libs\thirdparty\oled_ssd1327\i2c.c</name>
+                </file>
+                <file>
+                    <name>$PROJ_DIR$\..\..\..\desk\libs\thirdparty\oled_ssd1327\OLED_SSD1327.c</name>
+                </file>
+            </group>
         </group>
     </group>
     <group>

+ 12 - 0
project/ewarm/desk/desk.ewt

@@ -2601,6 +2601,18 @@
                     <name>$PROJ_DIR$\..\..\..\desk\libs\thirdparty\freertos\timers.c</name>
                 </file>
             </group>
+            <group>
+                <name>oled_ssd1327</name>
+                <file>
+                    <name>$PROJ_DIR$\..\..\..\desk\libs\thirdparty\oled_ssd1327\GFX_SSD1327.c</name>
+                </file>
+                <file>
+                    <name>$PROJ_DIR$\..\..\..\desk\libs\thirdparty\oled_ssd1327\i2c.c</name>
+                </file>
+                <file>
+                    <name>$PROJ_DIR$\..\..\..\desk\libs\thirdparty\oled_ssd1327\OLED_SSD1327.c</name>
+                </file>
+            </group>
         </group>
     </group>
     <group>

+ 2 - 2
project/ewarm/desk/settings/desk.Debug.cspy.bat

@@ -25,7 +25,7 @@ if not "%~1" == "" goto debugFile
 
 @echo on 
 
-"C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.3\common\bin\cspybat" -f "C:\projects\FlyElectronics\tuber\project\ewarm\desk\settings\desk.Debug.general.xcl" --backend -f "C:\projects\FlyElectronics\tuber\project\ewarm\desk\settings\desk.Debug.driver.xcl" 
+"C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.3\common\bin\cspybat" -f "D:\FlyElectronics\tuber\project\ewarm\desk\settings\desk.Debug.general.xcl" --backend -f "D:\FlyElectronics\tuber\project\ewarm\desk\settings\desk.Debug.driver.xcl" 
 
 @echo off 
 goto end 
@@ -34,7 +34,7 @@ goto end
 
 @echo on 
 
-"C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.3\common\bin\cspybat" -f "C:\projects\FlyElectronics\tuber\project\ewarm\desk\settings\desk.Debug.general.xcl" "--debug_file=%~1" --backend -f "C:\projects\FlyElectronics\tuber\project\ewarm\desk\settings\desk.Debug.driver.xcl" 
+"C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.3\common\bin\cspybat" -f "D:\FlyElectronics\tuber\project\ewarm\desk\settings\desk.Debug.general.xcl" "--debug_file=%~1" --backend -f "D:\FlyElectronics\tuber\project\ewarm\desk\settings\desk.Debug.driver.xcl" 
 
 @echo off 
 :end

+ 2 - 2
project/ewarm/desk/settings/desk.Debug.cspy.ps1

@@ -23,9 +23,9 @@
 
 if ($debugfile -eq "")
 {
-& "C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.3\common\bin\cspybat" -f "C:\projects\FlyElectronics\tuber\project\ewarm\desk\settings\desk.Debug.general.xcl" --backend -f "C:\projects\FlyElectronics\tuber\project\ewarm\desk\settings\desk.Debug.driver.xcl" 
+& "C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.3\common\bin\cspybat" -f "D:\FlyElectronics\tuber\project\ewarm\desk\settings\desk.Debug.general.xcl" --backend -f "D:\FlyElectronics\tuber\project\ewarm\desk\settings\desk.Debug.driver.xcl" 
 }
 else
 {
-& "C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.3\common\bin\cspybat" -f "C:\projects\FlyElectronics\tuber\project\ewarm\desk\settings\desk.Debug.general.xcl" --debug_file=$debugfile --backend -f "C:\projects\FlyElectronics\tuber\project\ewarm\desk\settings\desk.Debug.driver.xcl" 
+& "C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.3\common\bin\cspybat" -f "D:\FlyElectronics\tuber\project\ewarm\desk\settings\desk.Debug.general.xcl" --debug_file=$debugfile --backend -f "D:\FlyElectronics\tuber\project\ewarm\desk\settings\desk.Debug.driver.xcl" 
 }

+ 1 - 1
project/ewarm/desk/settings/desk.Debug.general.xcl

@@ -2,7 +2,7 @@
 
 "C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.3\arm\bin\armstlink2.dll" 
 
-"C:\projects\FlyElectronics\tuber\project\ewarm\desk\Debug\Exe\desk.out" 
+"D:\FlyElectronics\tuber\project\ewarm\desk\Debug\Exe\desk.out" 
 
 --plugin="C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.3\arm\bin\armbat.dll" 
 

+ 10 - 10
project/ewarm/robot/robot.dep

@@ -5,29 +5,29 @@
     <configuration>
         <name>Debug</name>
         <outputs>
-            <file>$PROJ_DIR$\Debug\Obj\main.o</file>
             <file>$PROJ_DIR$\main.cpp</file>
-            <file>$PROJ_DIR$\Debug\Exe\robot.out</file>
             <file>$PROJ_DIR$\Debug\Obj\main.xcl</file>
+            <file>$PROJ_DIR$\Debug\Obj\main.o</file>
+            <file>$PROJ_DIR$\Debug\Exe\robot.out</file>
         </outputs>
         <file>
-            <name>[ROOT_NODE]</name>
+            <name>$PROJ_DIR$\main.cpp</name>
             <outputs>
                 <tool>
-                    <name>ILINK</name>
+                    <name>ICCARM</name>
                     <file> 2</file>
                 </tool>
+                <tool>
+                    <name>BICOMP</name>
+                    <file> 1</file>
+                </tool>
             </outputs>
         </file>
         <file>
-            <name>$PROJ_DIR$\main.cpp</name>
+            <name>[ROOT_NODE]</name>
             <outputs>
                 <tool>
-                    <name>ICCARM</name>
-                    <file> 0</file>
-                </tool>
-                <tool>
-                    <name>BICOMP</name>
+                    <name>ILINK</name>
                     <file> 3</file>
                 </tool>
             </outputs>

+ 2 - 2
project/ewarm/robot/settings/robot.Debug.cspy.bat

@@ -25,7 +25,7 @@ if not "%~1" == "" goto debugFile
 
 @echo on 
 
-"C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.3\common\bin\cspybat" -f "C:\projects\FlyElectronics\tuber\project\ewarm\robot\settings\robot.Debug.general.xcl" --backend -f "C:\projects\FlyElectronics\tuber\project\ewarm\robot\settings\robot.Debug.driver.xcl" 
+"C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.3\common\bin\cspybat" -f "D:\FlyElectronics\tuber\project\ewarm\robot\settings\robot.Debug.general.xcl" --backend -f "D:\FlyElectronics\tuber\project\ewarm\robot\settings\robot.Debug.driver.xcl" 
 
 @echo off 
 goto end 
@@ -34,7 +34,7 @@ goto end
 
 @echo on 
 
-"C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.3\common\bin\cspybat" -f "C:\projects\FlyElectronics\tuber\project\ewarm\robot\settings\robot.Debug.general.xcl" "--debug_file=%~1" --backend -f "C:\projects\FlyElectronics\tuber\project\ewarm\robot\settings\robot.Debug.driver.xcl" 
+"C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.3\common\bin\cspybat" -f "D:\FlyElectronics\tuber\project\ewarm\robot\settings\robot.Debug.general.xcl" "--debug_file=%~1" --backend -f "D:\FlyElectronics\tuber\project\ewarm\robot\settings\robot.Debug.driver.xcl" 
 
 @echo off 
 :end

+ 2 - 2
project/ewarm/robot/settings/robot.Debug.cspy.ps1

@@ -23,9 +23,9 @@
 
 if ($debugfile -eq "")
 {
-& "C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.3\common\bin\cspybat" -f "C:\projects\FlyElectronics\tuber\project\ewarm\robot\settings\robot.Debug.general.xcl" --backend -f "C:\projects\FlyElectronics\tuber\project\ewarm\robot\settings\robot.Debug.driver.xcl" 
+& "C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.3\common\bin\cspybat" -f "D:\FlyElectronics\tuber\project\ewarm\robot\settings\robot.Debug.general.xcl" --backend -f "D:\FlyElectronics\tuber\project\ewarm\robot\settings\robot.Debug.driver.xcl" 
 }
 else
 {
-& "C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.3\common\bin\cspybat" -f "C:\projects\FlyElectronics\tuber\project\ewarm\robot\settings\robot.Debug.general.xcl" --debug_file=$debugfile --backend -f "C:\projects\FlyElectronics\tuber\project\ewarm\robot\settings\robot.Debug.driver.xcl" 
+& "C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.3\common\bin\cspybat" -f "D:\FlyElectronics\tuber\project\ewarm\robot\settings\robot.Debug.general.xcl" --debug_file=$debugfile --backend -f "D:\FlyElectronics\tuber\project\ewarm\robot\settings\robot.Debug.driver.xcl" 
 }

+ 1 - 1
project/ewarm/robot/settings/robot.Debug.general.xcl

@@ -2,7 +2,7 @@
 
 "C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.3\arm\bin\armsim2.dll" 
 
-"C:\projects\FlyElectronics\tuber\project\ewarm\robot\Debug\Exe\robot.out" 
+"D:\FlyElectronics\tuber\project\ewarm\robot\Debug\Exe\robot.out" 
 
 --plugin="C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.3\arm\bin\armbat.dll" 
 

Някои файлове не бяха показани, защото твърде много файлове са промени