tdse-tp3_02-code_integration

Index Commits Files Refs
commit a911da71d223e535dab2c550fa18ddf8cdaf0604
parent 82b5f9936d4bcb6c6cf72248c5d8937297c527cb
Author: Martin Kloeckner <mjkloeckner@gmail.com>
Date:   Wed,  8 Oct 2025 14:24:36 -0300

Port `display.*` files to HAL

Diffstat:
M.cproject | 3++-
M.mxproject | 32++++++++++++++++----------------
MCore/Inc/main.h | 38+++++++++++++++++++++++++-------------
MCore/Src/main.c | 28++++++++++++++++++++++++----
Mapp/inc/display.h | 28+++++-----------------------
Mapp/src/display.c | 346++++++++++++++++++++++++++++++-------------------------------------------------
Mapp/src/task_test.c | 132+++++++++++++++++++++++++++++++++++++------------------------------------------
Mtdse-tp3_02-code_integration.ioc | 355+++++++++++++++++++++++++++++++++++++++++++------------------------------------
8 files changed, 458 insertions(+), 504 deletions(-)
diff --git a/.cproject b/.cproject
@@ -80,8 +80,8 @@
                     </folderInfo>
                     <sourceEntries>
                         <entry excluding="Src/syscalls.c" flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="Core"/>
-                        <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Drivers"/>
                         <entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="app"/>
+                        <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Drivers"/>
                     </sourceEntries>
                 </configuration>
             </storageModule>
@@ -177,4 +177,5 @@
             <autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
         </scannerConfigBuildInfo>
     </storageModule>
+    <storageModule moduleId="refreshScope"/>
 </cproject>
 \ No newline at end of file
diff --git a/.mxproject b/.mxproject
@@ -1,25 +1,25 @@
+[PreviousLibFiles]
+LibFiles=Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usart.h;Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_bus.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_rcc.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_system.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_utils.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_gpio.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_dma.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_cortex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_pwr.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_exti.h;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usart.h;Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_bus.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_rcc.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_system.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_utils.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_gpio.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_dma.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_cortex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_pwr.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_exti.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h;Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/system_stm32f1xx.c;Drivers/CMSIS/Include/cmsis_compiler.h;Drivers/CMSIS/Include/core_sc000.h;Drivers/CMSIS/Include/mpu_armv8.h;Drivers/CMSIS/Include/tz_context.h;Drivers/CMSIS/Include/core_sc300.h;Drivers/CMSIS/Include/cmsis_armclang.h;Drivers/CMSIS/Include/core_armv8mbl.h;Drivers/CMSIS/Include/core_cm0plus.h;Drivers/CMSIS/Include/core_cm4.h;Drivers/CMSIS/Include/core_cm0.h;Drivers/CMSIS/Include/cmsis_gcc.h;Drivers/CMSIS/Include/core_cm23.h;Drivers/CMSIS/Include/cmsis_armcc.h;Drivers/CMSIS/Include/core_armv8mml.h;Drivers/CMSIS/Include/core_cm7.h;Drivers/CMSIS/Include/core_cm3.h;Drivers/CMSIS/Include/mpu_armv7.h;Drivers/CMSIS/Include/cmsis_iccarm.h;Drivers/CMSIS/Include/core_cm33.h;Drivers/CMSIS/Include/cmsis_version.h;Drivers/CMSIS/Include/core_cm1.h;
+
+[PreviousUsedCubeIDEFiles]
+SourceFiles=Core/Src/main.c;Core/Src/stm32f1xx_it.c;Core/Src/stm32f1xx_hal_msp.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c;Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/system_stm32f1xx.c;Core/Src/system_stm32f1xx.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c;Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/system_stm32f1xx.c;Core/Src/system_stm32f1xx.c;;;
+HeaderPath=Drivers/STM32F1xx_HAL_Driver/Inc;Drivers/STM32F1xx_HAL_Driver/Inc/Legacy;Drivers/CMSIS/Device/ST/STM32F1xx/Include;Drivers/CMSIS/Include;Core/Inc;
+CDefines=USE_HAL_DRIVER;STM32F103xB;USE_HAL_DRIVER;USE_HAL_DRIVER;
+
 [PreviousGenFiles]
 AdvancedFolderStructure=true
 HeaderFileListSize=3
-HeaderFiles#0=..\Core\Inc\stm32f1xx_it.h
-HeaderFiles#1=..\Core\Inc\stm32f1xx_hal_conf.h
-HeaderFiles#2=..\Core\Inc\main.h
+HeaderFiles#0=../Core/Inc/stm32f1xx_it.h
+HeaderFiles#1=../Core/Inc/stm32f1xx_hal_conf.h
+HeaderFiles#2=../Core/Inc/main.h
 HeaderFolderListSize=1
-HeaderPath#0=..\Core\Inc
+HeaderPath#0=../Core/Inc
 HeaderFiles=;
 SourceFileListSize=3
-SourceFiles#0=..\Core\Src\stm32f1xx_it.c
-SourceFiles#1=..\Core\Src\stm32f1xx_hal_msp.c
-SourceFiles#2=..\Core\Src\main.c
+SourceFiles#0=../Core/Src/stm32f1xx_it.c
+SourceFiles#1=../Core/Src/stm32f1xx_hal_msp.c
+SourceFiles#2=../Core/Src/main.c
 SourceFolderListSize=1
-SourcePath#0=..\Core\Src
+SourcePath#0=../Core/Src
 SourceFiles=;
 
-[PreviousLibFiles]
-LibFiles=Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_uart.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_usart.h;Drivers\STM32F1xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_def.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_bus.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_rcc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_system.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_utils.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio_ex.h;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_gpio.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_dma.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_cortex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_cortex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pwr.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_pwr.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_exti.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_exti.h;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_uart.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_dma.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cortex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pwr.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_exti.c;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_uart.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_usart.h;Drivers\STM32F1xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_def.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_bus.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_rcc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_system.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_utils.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio_ex.h;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_gpio.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_dma.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_cortex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_cortex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pwr.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_pwr.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash_ex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_exti.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_exti.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f103xb.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f1xx.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\system_stm32f1xx.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\system_stm32f1xx.h;Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c;Drivers\CMSIS\Include\cmsis_armcc.h;Drivers\CMSIS\Include\cmsis_armclang.h;Drivers\CMSIS\Include\cmsis_compiler.h;Drivers\CMSIS\Include\cmsis_gcc.h;Drivers\CMSIS\Include\cmsis_iccarm.h;Drivers\CMSIS\Include\cmsis_version.h;Drivers\CMSIS\Include\core_armv8mbl.h;Drivers\CMSIS\Include\core_armv8mml.h;Drivers\CMSIS\Include\core_cm0.h;Drivers\CMSIS\Include\core_cm0plus.h;Drivers\CMSIS\Include\core_cm1.h;Drivers\CMSIS\Include\core_cm23.h;Drivers\CMSIS\Include\core_cm3.h;Drivers\CMSIS\Include\core_cm33.h;Drivers\CMSIS\Include\core_cm4.h;Drivers\CMSIS\Include\core_cm7.h;Drivers\CMSIS\Include\core_sc000.h;Drivers\CMSIS\Include\core_sc300.h;Drivers\CMSIS\Include\mpu_armv7.h;Drivers\CMSIS\Include\mpu_armv8.h;Drivers\CMSIS\Include\tz_context.h;
-
-[PreviousUsedCubeIDEFiles]
-SourceFiles=Core\Src\main.c;Core\Src\stm32f1xx_it.c;Core\Src\stm32f1xx_hal_msp.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_uart.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_dma.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cortex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pwr.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_exti.c;Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c;Core\Src\system_stm32f1xx.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_uart.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_rcc_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_gpio.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_dma.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_cortex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_pwr.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_flash_ex.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal_exti.c;Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c;Core\Src\system_stm32f1xx.c;;;
-HeaderPath=Drivers\STM32F1xx_HAL_Driver\Inc;Drivers\STM32F1xx_HAL_Driver\Inc\Legacy;Drivers\CMSIS\Device\ST\STM32F1xx\Include;Drivers\CMSIS\Include;Core\Inc;
-CDefines=USE_HAL_DRIVER;STM32F103xB;USE_HAL_DRIVER;USE_HAL_DRIVER;
-
diff --git a/Core/Inc/main.h b/Core/Inc/main.h
@@ -57,21 +57,33 @@ void Error_Handler(void);
 /* USER CODE END EFP */
 
 /* Private defines -----------------------------------------------------------*/
-#define B1_Pin GPIO_PIN_13
-#define B1_GPIO_Port GPIOC
-#define B1_EXTI_IRQn EXTI15_10_IRQn
-#define USART_TX_Pin GPIO_PIN_2
+#define B1_Pin             GPIO_PIN_13
+#define B1_GPIO_Port       GPIOC
+#define B1_EXTI_IRQn       EXTI15_10_IRQn
+#define USART_TX_Pin       GPIO_PIN_2
 #define USART_TX_GPIO_Port GPIOA
-#define USART_RX_Pin GPIO_PIN_3
+#define USART_RX_Pin       GPIO_PIN_3
 #define USART_RX_GPIO_Port GPIOA
-#define LD2_Pin GPIO_PIN_5
-#define LD2_GPIO_Port GPIOA
-#define TMS_Pin GPIO_PIN_13
-#define TMS_GPIO_Port GPIOA
-#define TCK_Pin GPIO_PIN_14
-#define TCK_GPIO_Port GPIOA
-#define SWO_Pin GPIO_PIN_3
-#define SWO_GPIO_Port GPIOB
+#define LD2_Pin            GPIO_PIN_5
+#define LD2_GPIO_Port      GPIOA
+#define D6_Pin             GPIO_PIN_10
+#define D6_GPIO_Port       GPIOB
+#define D9_Pin             GPIO_PIN_7
+#define D9_GPIO_Port       GPIOC
+#define D7_Pin             GPIO_PIN_8
+#define D7_GPIO_Port       GPIOA
+#define D8_Pin             GPIO_PIN_9
+#define D8_GPIO_Port       GPIOA
+#define TMS_Pin            GPIO_PIN_13
+#define TMS_GPIO_Port      GPIOA
+#define TCK_Pin            GPIO_PIN_14
+#define TCK_GPIO_Port      GPIOA
+#define SWO_Pin            GPIO_PIN_3
+#define SWO_GPIO_Port      GPIOB
+#define D5_Pin             GPIO_PIN_4
+#define D5_GPIO_Port       GPIOB
+#define D4_Pin             GPIO_PIN_5
+#define D4_GPIO_Port       GPIOB
 
 /* USER CODE BEGIN Private defines */
 
diff --git a/Core/Src/main.c b/Core/Src/main.c
@@ -213,7 +213,13 @@ static void MX_GPIO_Init(void)
   __HAL_RCC_GPIOB_CLK_ENABLE();
 
   /*Configure GPIO pin Output Level */
-  HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_RESET);
+  HAL_GPIO_WritePin(GPIOA, LD2_Pin|D7_Pin|D8_Pin, GPIO_PIN_RESET);
+
+  /*Configure GPIO pin Output Level */
+  HAL_GPIO_WritePin(GPIOB, D6_Pin|D5_Pin|D4_Pin, GPIO_PIN_RESET);
+
+  /*Configure GPIO pin Output Level */
+  HAL_GPIO_WritePin(D9_GPIO_Port, D9_Pin, GPIO_PIN_RESET);
 
   /*Configure GPIO pin : B1_Pin */
   GPIO_InitStruct.Pin = B1_Pin;
@@ -221,12 +227,26 @@ static void MX_GPIO_Init(void)
   GPIO_InitStruct.Pull = GPIO_NOPULL;
   HAL_GPIO_Init(B1_GPIO_Port, &GPIO_InitStruct);
 
-  /*Configure GPIO pin : LD2_Pin */
-  GPIO_InitStruct.Pin = LD2_Pin;
+  /*Configure GPIO pins : LD2_Pin D7_Pin D8_Pin */
+  GPIO_InitStruct.Pin = LD2_Pin|D7_Pin|D8_Pin;
+  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+  GPIO_InitStruct.Pull = GPIO_NOPULL;
+  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+
+  /*Configure GPIO pins : D6_Pin D5_Pin D4_Pin */
+  GPIO_InitStruct.Pin = D6_Pin|D5_Pin|D4_Pin;
+  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+  GPIO_InitStruct.Pull = GPIO_NOPULL;
+  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+  /*Configure GPIO pin : D9_Pin */
+  GPIO_InitStruct.Pin = D9_Pin;
   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
   GPIO_InitStruct.Pull = GPIO_NOPULL;
   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
-  HAL_GPIO_Init(LD2_GPIO_Port, &GPIO_InitStruct);
+  HAL_GPIO_Init(D9_GPIO_Port, &GPIO_InitStruct);
 
   /* EXTI interrupt init*/
   HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 0);
diff --git a/app/inc/display.h b/app/inc/display.h
@@ -1,31 +1,13 @@
-//=====[#include guards - begin]===============================================
-
 #ifndef _DISPLAY_H_
 #define _DISPLAY_H_
 
 #include <stdint.h>
 
-//=====[Declaration of public defines]=========================================
-
-//=====[Declaration of public data types]======================================
-
-typedef enum {
-     DISPLAY_CONNECTION_GPIO_4BITS,
-     DISPLAY_CONNECTION_GPIO_8BITS,
-} displayConnection_t;
-
-typedef struct {
-   displayConnection_t connection;
-} display_t;
-
-//=====[Declarations (prototypes) of public functions]=========================
-
-void displayInit( displayConnection_t connection );
-
-void displayCharPositionWrite( uint8_t charPositionX, uint8_t charPositionY );
-
-void displayStringWrite( const char * str );
+void display_init(void);
+void display_char_position_write(uint8_t x, uint8_t y);
+void display_string_write(const char *str);
 
-//=====[#include guards - end]=================================================
+void display_cursor_off(void);
+void display_cursor_on(void);
 
 #endif // _DISPLAY_H_
diff --git a/app/src/display.c b/app/src/display.c
@@ -1,18 +1,12 @@
-//=====[Libraries]=============================================================
-//#include "mbed.h"
-//#include "arm_book_lib.h"
-
 #include "display.h"
 #include "main.h"
 #include <stdbool.h>
 
-/* Demo includes */
+// Demo includes
 #include "logger.h"
 #include "dwt.h"
 #include "systick.h"
 
-/********************** arm_book Defines *******************************/
-//#include "arm_book_lib.h"
 // Functional states
 #ifndef OFF
 #define OFF    0
@@ -29,7 +23,6 @@
 #define HIGH   ( !LOW )
 #endif
 
-//=====[Declaration of private defines]========================================
 #define DISPLAY_IR_CLEAR_DISPLAY   0b00000001
 #define DISPLAY_IR_ENTRY_MODE_SET  0b00000100
 #define DISPLAY_IR_DISPLAY_CONTROL 0b00001000
@@ -66,248 +59,173 @@
 #define DISPLAY_RW_WRITE 0
 #define DISPLAY_RW_READ  1
 
-#define DISPLAY_PIN_RS  4
-#define DISPLAY_PIN_RW  5
-#define DISPLAY_PIN_EN  6
-#define DISPLAY_PIN_D0  7
-#define DISPLAY_PIN_D1  8
-#define DISPLAY_PIN_D2  9
-#define DISPLAY_PIN_D3 10
-#define DISPLAY_PIN_D4 11
-#define DISPLAY_PIN_D5 12
-#define DISPLAY_PIN_D6 13
-#define DISPLAY_PIN_D7 14
-
-#define DISPLAY_DEL_37US    37ul
-#define DISPLAY_DEL_01US    01ul
-
-//=====[Declaration of private data types]=====================================
-
-//=====[Declaration and initialization of public global objects]===============
-
-/*
-DigitalOut displayD0( D0 );
-DigitalOut displayD1( D1 );
-DigitalOut displayD2( D2 );
-DigitalOut displayD3( D3 );
-*/
-DigitalOut displayD4( D4 );
-DigitalOut displayD5( D5 );
-DigitalOut displayD6( D6 );
-DigitalOut displayD7( D7 );
-DigitalOut displayRs( D8 );
-DigitalOut displayEn( D9 );
-
-//=====[Declaration of external public global variables]=======================
-
-//=====[Declaration and initialization of private global variables]============
-static display_t display;
-static bool initial8BitCommunicationIsCompleted;
-
-//=====[Declarations (prototypes) of private functions]========================
-static void displayPinWrite( uint8_t pinName, int value );
-static void displayDataBusWrite( uint8_t dataByte );
-static void displayCodeWrite( bool type, uint8_t dataBus );
-
-//=====[Implementations of public functions]===================================
-void displayInit( displayConnection_t connection )
-{
-    display.connection = connection;
-
-    initial8BitCommunicationIsCompleted = false;
-
-    delay( 50 );
-
-    displayCodeWrite( DISPLAY_RS_INSTRUCTION,
-                      DISPLAY_IR_FUNCTION_SET |
-                      DISPLAY_IR_FUNCTION_SET_8BITS );
-    delay( 5 );
-
-    displayCodeWrite( DISPLAY_RS_INSTRUCTION,
-                      DISPLAY_IR_FUNCTION_SET |
-                      DISPLAY_IR_FUNCTION_SET_8BITS );
-    delay( 1 );
-
-    displayCodeWrite( DISPLAY_RS_INSTRUCTION,
-                      DISPLAY_IR_FUNCTION_SET |
-                      DISPLAY_IR_FUNCTION_SET_8BITS );
-    delay( 1 );
-
-    switch( display.connection ) {
-        case DISPLAY_CONNECTION_GPIO_8BITS:
-            displayCodeWrite( DISPLAY_RS_INSTRUCTION,
-                              DISPLAY_IR_FUNCTION_SET |
-                              DISPLAY_IR_FUNCTION_SET_8BITS |
-                              DISPLAY_IR_FUNCTION_SET_2LINES |
-                              DISPLAY_IR_FUNCTION_SET_5x8DOTS );
-            delay( 1 );
-        break;
+#define DISPLAY_PIN_RS 8
+#define DISPLAY_PIN_EN 9
+#define DISPLAY_PIN_D4 4
+#define DISPLAY_PIN_D5 5
+#define DISPLAY_PIN_D6 6
+#define DISPLAY_PIN_D7 7
 
-        case DISPLAY_CONNECTION_GPIO_4BITS:
-            displayCodeWrite( DISPLAY_RS_INSTRUCTION,
-                              DISPLAY_IR_FUNCTION_SET |
-                              DISPLAY_IR_FUNCTION_SET_4BITS );
-            delay( 1 );
+#define DISPLAY_DEL_37US 37ul
+#define DISPLAY_DEL_01US 01ul
 
-            initial8BitCommunicationIsCompleted = true;
+// private global vars
+static bool display_initialized;
 
-            displayCodeWrite( DISPLAY_RS_INSTRUCTION,
-                              DISPLAY_IR_FUNCTION_SET |
-                              DISPLAY_IR_FUNCTION_SET_4BITS |
-                              DISPLAY_IR_FUNCTION_SET_2LINES |
-                              DISPLAY_IR_FUNCTION_SET_5x8DOTS );
-            delay( 1 );
-        break;
-    }
+// declaration of private functions
+static void display_pin_write(uint8_t pin_name, int value);
+static void display_data_bus_write(uint8_t data_byte);
+static void display_code_write(bool type, uint8_t data_bus);
+
+// public functions
 
-    displayCodeWrite( DISPLAY_RS_INSTRUCTION,
-                      DISPLAY_IR_DISPLAY_CONTROL |
-                      DISPLAY_IR_DISPLAY_CONTROL_DISPLAY_OFF |
-                      DISPLAY_IR_DISPLAY_CONTROL_CURSOR_OFF |
-                      DISPLAY_IR_DISPLAY_CONTROL_BLINK_OFF );
-    delay( 1 );
-
-    displayCodeWrite( DISPLAY_RS_INSTRUCTION,
-                      DISPLAY_IR_CLEAR_DISPLAY );
-    delay( 1 );
-
-    displayCodeWrite( DISPLAY_RS_INSTRUCTION,
-                      DISPLAY_IR_ENTRY_MODE_SET |
-                      DISPLAY_IR_ENTRY_MODE_SET_INCREMENT |
-                      DISPLAY_IR_ENTRY_MODE_SET_NO_SHIFT );
-    delay( 1 );
-
-    displayCodeWrite( DISPLAY_RS_INSTRUCTION,
-                      DISPLAY_IR_DISPLAY_CONTROL |
-                      DISPLAY_IR_DISPLAY_CONTROL_DISPLAY_ON |
-                      DISPLAY_IR_DISPLAY_CONTROL_CURSOR_OFF |
-                      DISPLAY_IR_DISPLAY_CONTROL_BLINK_OFF );
-    delay( 1 );
+void display_init(void)
+{
+    display_initialized = false;
+
+    display_code_write(DISPLAY_RS_INSTRUCTION,
+            DISPLAY_IR_FUNCTION_SET |
+            DISPLAY_IR_FUNCTION_SET_4BITS |
+            DISPLAY_IR_FUNCTION_SET_2LINES |
+            DISPLAY_IR_FUNCTION_SET_5x8DOTS);
+
+    display_code_write(DISPLAY_RS_INSTRUCTION,
+            DISPLAY_IR_DISPLAY_CONTROL |
+            DISPLAY_IR_DISPLAY_CONTROL_DISPLAY_OFF |
+            DISPLAY_IR_DISPLAY_CONTROL_CURSOR_ON |
+            DISPLAY_IR_DISPLAY_CONTROL_BLINK_ON);
+
+    display_code_write(DISPLAY_RS_INSTRUCTION,
+            DISPLAY_IR_CLEAR_DISPLAY);
+
+    display_code_write(DISPLAY_RS_INSTRUCTION,
+            DISPLAY_IR_ENTRY_MODE_SET |
+            DISPLAY_IR_ENTRY_MODE_SET_INCREMENT |
+            DISPLAY_IR_ENTRY_MODE_SET_NO_SHIFT);
+
+    display_code_write(DISPLAY_RS_INSTRUCTION,
+            DISPLAY_IR_DISPLAY_CONTROL |
+            DISPLAY_IR_DISPLAY_CONTROL_DISPLAY_ON |
+            DISPLAY_IR_DISPLAY_CONTROL_CURSOR_ON |
+            DISPLAY_IR_DISPLAY_CONTROL_BLINK_ON);
+
+    display_initialized = true;
 }
 
-void displayCharPositionWrite( uint8_t charPositionX, uint8_t charPositionY )
+void display_char_position_write(uint8_t x, uint8_t y)
 {
-    switch( charPositionY ) {
+    switch(x) 
+    {
         case 0:
-            displayCodeWrite( DISPLAY_RS_INSTRUCTION,
-                              DISPLAY_IR_SET_DDRAM_ADDR |
-                              ( DISPLAY_20x4_LINE1_FIRST_CHARACTER_ADDRESS +
-                                charPositionX ) );
-            delay( 1 );
+            display_code_write(DISPLAY_RS_INSTRUCTION,
+                    DISPLAY_IR_SET_DDRAM_ADDR |
+                    (DISPLAY_20x4_LINE1_FIRST_CHARACTER_ADDRESS + x));
         break;
 
         case 1:
-            displayCodeWrite( DISPLAY_RS_INSTRUCTION,
-                              DISPLAY_IR_SET_DDRAM_ADDR |
-                              ( DISPLAY_20x4_LINE2_FIRST_CHARACTER_ADDRESS +
-                                charPositionX ) );
-            delay( 1 );
+        display_code_write(DISPLAY_RS_INSTRUCTION,
+                DISPLAY_IR_SET_DDRAM_ADDR |
+                (DISPLAY_20x4_LINE2_FIRST_CHARACTER_ADDRESS + x));
         break;
 
         case 2:
-            displayCodeWrite( DISPLAY_RS_INSTRUCTION,
-                              DISPLAY_IR_SET_DDRAM_ADDR |
-                              ( DISPLAY_20x4_LINE3_FIRST_CHARACTER_ADDRESS +
-                                charPositionX ) );
-            delay( 1 );
+        display_code_write(DISPLAY_RS_INSTRUCTION,
+                DISPLAY_IR_SET_DDRAM_ADDR |
+                (DISPLAY_20x4_LINE3_FIRST_CHARACTER_ADDRESS + x));
         break;
 
         case 3:
-            displayCodeWrite( DISPLAY_RS_INSTRUCTION,
-                              DISPLAY_IR_SET_DDRAM_ADDR |
-                              ( DISPLAY_20x4_LINE4_FIRST_CHARACTER_ADDRESS +
-                                charPositionX ) );
-            delay( 1 );
+        display_code_write(DISPLAY_RS_INSTRUCTION,
+                DISPLAY_IR_SET_DDRAM_ADDR |
+                (DISPLAY_20x4_LINE4_FIRST_CHARACTER_ADDRESS + x));
         break;
+        default: break;
     }
 }
 
-void displayStringWrite( const char * str )
+void display_string_write(const char * str)
 {
     while (*str) {
-        displayCodeWrite(DISPLAY_RS_DATA, *str++);
+        display_code_write(DISPLAY_RS_DATA, *str++);
     }
 }
 
-//=====[Implementations of private functions]==================================
-static void displayCodeWrite( bool type, uint8_t dataBus )
+void display_cursor_off(void)
 {
-    if ( type == DISPLAY_RS_INSTRUCTION )
-        displayPinWrite( DISPLAY_PIN_RS, DISPLAY_RS_INSTRUCTION );
-    else
-        displayPinWrite( DISPLAY_PIN_RS, DISPLAY_RS_DATA );
-    displayPinWrite( DISPLAY_PIN_RW, DISPLAY_RW_WRITE );
-    displayDataBusWrite( dataBus );
+    display_code_write(DISPLAY_RS_INSTRUCTION,
+            DISPLAY_IR_DISPLAY_CONTROL |
+            DISPLAY_IR_DISPLAY_CONTROL_DISPLAY_ON |
+            DISPLAY_IR_DISPLAY_CONTROL_CURSOR_OFF |
+            DISPLAY_IR_DISPLAY_CONTROL_BLINK_OFF);
 }
 
-static void displayPinWrite( uint8_t pinName, int value )
+void display_cursor_on(void)
+{
+    display_code_write(DISPLAY_RS_INSTRUCTION,
+            DISPLAY_IR_DISPLAY_CONTROL |
+            DISPLAY_IR_DISPLAY_CONTROL_DISPLAY_ON |
+            DISPLAY_IR_DISPLAY_CONTROL_CURSOR_ON |
+            DISPLAY_IR_DISPLAY_CONTROL_BLINK_ON);
+}
+
+// private functions
+
+static void display_code_write( bool type, uint8_t data_bus )
 {
-    switch( display.connection ) {
-        case DISPLAY_CONNECTION_GPIO_8BITS:
-            switch( pinName ) {
-                /*
-                case DISPLAY_PIN_D0: displayD0 = value;   break;
-                case DISPLAY_PIN_D1: displayD1 = value;   break;
-                case DISPLAY_PIN_D2: displayD2 = value;   break;
-                case DISPLAY_PIN_D3: displayD3 = value;   break;
-                case DISPLAY_PIN_D4: displayD4 = value;   break;
-                case DISPLAY_PIN_D5: displayD5 = value;   break;
-                case DISPLAY_PIN_D6: displayD6 = value;   break;
-                case DISPLAY_PIN_D7: displayD7 = value;   break;
-                case DISPLAY_PIN_RS: displayRs = value;   break;
-                case DISPLAY_PIN_EN: displayEn = value;   break;
-                case DISPLAY_PIN_RW: break;
-                */
-                default: break;
-            }
-            break;
-
-        case DISPLAY_CONNECTION_GPIO_4BITS:
-            switch( pinName ) {
-                case DISPLAY_PIN_D4: displayD4 = value;   break;
-                case DISPLAY_PIN_D5: displayD5 = value;   break;
-                case DISPLAY_PIN_D6: displayD6 = value;   break;
-                case DISPLAY_PIN_D7: displayD7 = value;   break;
-                case DISPLAY_PIN_RS: displayRs = value;   break;
-                case DISPLAY_PIN_EN: displayEn = value;   break;
-                case DISPLAY_PIN_RW: break;
-                default: break;
-            }
-            break;
+    if (type == DISPLAY_RS_INSTRUCTION) {
+        display_pin_write( DISPLAY_PIN_RS, DISPLAY_RS_INSTRUCTION );
     }
+    else {
+        display_pin_write(DISPLAY_PIN_RS, DISPLAY_RS_DATA);
+    }
+
+    display_data_bus_write(data_bus);
 }
 
-static void displayDataBusWrite( uint8_t dataBus )
+static void display_pin_write(uint8_t pin_name, int value)
 {
-    displayPinWrite( DISPLAY_PIN_EN, OFF );
-    displayPinWrite( DISPLAY_PIN_D7, dataBus & 0b10000000 );
-    displayPinWrite( DISPLAY_PIN_D6, dataBus & 0b01000000 );
-    displayPinWrite( DISPLAY_PIN_D5, dataBus & 0b00100000 );
-    displayPinWrite( DISPLAY_PIN_D4, dataBus & 0b00010000 );
-    switch( display.connection ) {
-        case DISPLAY_CONNECTION_GPIO_8BITS:
-            displayPinWrite( DISPLAY_PIN_D3, dataBus & 0b00001000 );
-            displayPinWrite( DISPLAY_PIN_D2, dataBus & 0b00000100 );
-            displayPinWrite( DISPLAY_PIN_D1, dataBus & 0b00000010 );
-            displayPinWrite( DISPLAY_PIN_D0, dataBus & 0b00000001 );
+    switch(pin_name)
+    {
+        case DISPLAY_PIN_D4:
+            HAL_GPIO_WritePin(D4_GPIO_Port, D4_Pin, value);
         break;
-
-        case DISPLAY_CONNECTION_GPIO_4BITS:
-            if ( initial8BitCommunicationIsCompleted == true) {
-                displayPinWrite( DISPLAY_PIN_EN, ON );
-                delay( 1 );
-                displayPinWrite( DISPLAY_PIN_EN, OFF );
-                delay( 1 );
-                displayPinWrite( DISPLAY_PIN_D7, dataBus & 0b00001000 );
-                displayPinWrite( DISPLAY_PIN_D6, dataBus & 0b00000100 );
-                displayPinWrite( DISPLAY_PIN_D5, dataBus & 0b00000010 );
-                displayPinWrite( DISPLAY_PIN_D4, dataBus & 0b00000001 );
-            }
+        case DISPLAY_PIN_D5:
+            HAL_GPIO_WritePin(D5_GPIO_Port, D5_Pin, value);
+        break;
+        case DISPLAY_PIN_D6:
+            HAL_GPIO_WritePin(D6_GPIO_Port, D6_Pin, value);
+        break;
+        case DISPLAY_PIN_D7:
+            HAL_GPIO_WritePin(D7_GPIO_Port, D7_Pin, value);
+        break;
+        case DISPLAY_PIN_RS:
+            HAL_GPIO_WritePin(D8_GPIO_Port, D8_Pin, value);
         break;
+        case DISPLAY_PIN_EN:
+            HAL_GPIO_WritePin(D9_GPIO_Port, D9_Pin, value);
+        break;
+        default: break;
+    }
+}
 
+static void display_data_bus_write( uint8_t data_bus )
+{
+    display_pin_write( DISPLAY_PIN_EN, OFF );
+    display_pin_write( DISPLAY_PIN_D7, data_bus & 0b10000000 );
+    display_pin_write( DISPLAY_PIN_D6, data_bus & 0b01000000 );
+    display_pin_write( DISPLAY_PIN_D5, data_bus & 0b00100000 );
+    display_pin_write( DISPLAY_PIN_D4, data_bus & 0b00010000 );
+
+    if ( display_initialized  == true) {
+        display_pin_write( DISPLAY_PIN_EN, ON );
+        display_pin_write( DISPLAY_PIN_EN, OFF );
+        display_pin_write( DISPLAY_PIN_D7, data_bus & 0b00001000 );
+        display_pin_write( DISPLAY_PIN_D6, data_bus & 0b00000100 );
+        display_pin_write( DISPLAY_PIN_D5, data_bus & 0b00000010 );
+        display_pin_write( DISPLAY_PIN_D4, data_bus & 0b00000001 );
     }
-    displayPinWrite( DISPLAY_PIN_EN, ON );
-    delay( 1 );
-    displayPinWrite( DISPLAY_PIN_EN, OFF );
-    delay( 1 );
+
+    display_pin_write( DISPLAY_PIN_EN, ON );
+    display_pin_write( DISPLAY_PIN_EN, OFF );
+    HAL_Delay(1);
 }
diff --git a/app/src/task_test.c b/app/src/task_test.c
@@ -36,6 +36,7 @@
  */
 
 /********************** inclusions *******************************************/
+
 /* Project includes */
 #include "main.h"
 
@@ -50,23 +51,23 @@
 #include "display.h"
 
 /********************** macros and definitions *******************************/
-#define G_TASK_TEST_CNT_INIT        0ul
-#define G_TASK_TEST_TICK_CNT_INI    0ul
+#define G_TASK_TEST_CNT_INIT        0ul
+#define G_TASK_TEST_TICK_CNT_INI    0ul
 
-#define DEL_TEST_XX_MIN                0ul
-#define DEL_TEST_XX_MED                500ul
-#define DEL_TEST_XX_MAX                1000ul
+#define DEL_TEST_XX_MIN             0ul
+#define DEL_TEST_XX_MED           500ul
+#define DEL_TEST_XX_MAX          1000ul
 
 /********************** internal data declaration ****************************/
 task_test_dta_t task_test_dta =
-    {DEL_TEST_XX_MIN};
+{DEL_TEST_XX_MIN};
 
 /********************** internal functions declaration ***********************/
 void task_test_statechart(void);
 
 /********************** internal data definition *****************************/
-const char *p_task_test         = "Task Test (Test Code Integration)";
-const char *p_task_test_         = "Non-Blocking & Update By Time Code";
+const char *p_task_test = "Task Test (Test Code Integration)";
+const char *p_task_test_ = "Non-Blocking & Update By Time Code";
 
 /********************** external data declaration ****************************/
 uint32_t g_task_test_cnt;
@@ -75,94 +76,83 @@ volatile uint32_t g_task_test_tick_cnt;
 /********************** external functions definition ************************/
 void task_test_init(void *parameters)
 {
-    task_test_dta_t     *p_task_test_dta;
-    uint32_t            tick;
-
-    /* Print out: Task Initialized */
-    LOGGER_INFO(" ");
-    LOGGER_INFO("  %s is running - %s", GET_NAME(task_test_init), p_task_test);
-    LOGGER_INFO("  %s is a %s", GET_NAME(task_test), p_task_test_);
+    task_test_dta_t *p_task_test_dta;
+    uint32_t tick;
 
-    /* Init & Print out: Task execution counter */
-    g_task_test_cnt = G_TASK_TEST_CNT_INIT;
-    LOGGER_INFO("   %s = %lu", GET_NAME(g_task_test_cnt), g_task_test_cnt);
+    /* Print out: Task Initialized */
+    LOGGER_INFO(" ");
+    LOGGER_INFO("  %s is running - %s", GET_NAME(task_test_init), p_task_test);
+    LOGGER_INFO("  %s is a %s", GET_NAME(task_test), p_task_test_);
 
-    /* Update Task Test Configuration & Data Pointer */
-    p_task_test_dta = &task_test_dta;
+    /* Init & Print out: Task execution counter */
+    g_task_test_cnt = G_TASK_TEST_CNT_INIT;
+    LOGGER_INFO("   %s = %lu", GET_NAME(g_task_test_cnt), g_task_test_cnt);
 
-    tick = DEL_TEST_XX_MAX;
-    p_task_test_dta->tick = tick;
-    LOGGER_INFO("   %s = %lu", GET_NAME(tick), (uint32_t)tick);
+    /* Update Task Test Configuration & Data Pointer */
+    p_task_test_dta = &task_test_dta;
 
-    /* Init & Print out: LCD Display */
-    displayInit( DISPLAY_CONNECTION_GPIO_4BITS );
+    tick = DEL_TEST_XX_MAX;
+    p_task_test_dta->tick = tick;
+    LOGGER_INFO("   %s = %lu", GET_NAME(tick), (uint32_t)tick);
 
-    displayCharPositionWrite(0, 0);
-    displayStringWrite("TdSE Bienvenidos");
+    /* Init & Print out: LCD Display */
+    display_init();
+    display_cursor_off();
 
-    displayCharPositionWrite(0, 1);
-    displayStringWrite("Test Nro: ");
+    display_char_position_write(0, 0);
+    display_string_write("Hello, World!");
 }
 
 void task_test_update(void *parameters)
 {
-    bool b_time_update_required = false;
+    bool b_time_update_required = false;
 
-    /* Protect shared resource */
-    __asm("CPSID i");    /* disable interrupts */
+    /* Protect shared resource */
+    __asm("CPSID i");    /* disable interrupts */
     if (G_TASK_TEST_TICK_CNT_INI < g_task_test_tick_cnt)
     {
-        /* Update Tick Counter */
-        g_task_test_tick_cnt--;
-        b_time_update_required = true;
+        /* Update Tick Counter */
+        g_task_test_tick_cnt--;
+        b_time_update_required = true;
     }
     __asm("CPSIE i");    /* enable interrupts */
 
     while (b_time_update_required)
     {
-        /* Update Task Counter */
-        g_task_test_cnt++;
-
-        /* Run Task Statechart */
-        task_test_statechart();
-
-        /* Protect shared resource */
-        __asm("CPSID i");    /* disable interrupts */
-        if (G_TASK_TEST_TICK_CNT_INI < g_task_test_tick_cnt)
-        {
-            /* Update Tick Counter */
-            g_task_test_tick_cnt--;
-            b_time_update_required = true;
-        }
-        else
-        {
-            b_time_update_required = false;
-        }
-        __asm("CPSIE i");    /* enable interrupts */
+        /* Update Task Counter */
+        g_task_test_cnt++;
+
+        /* Run Task Statechart */
+        task_test_statechart();
+
+        /* Protect shared resource */
+        __asm("CPSID i");    /* disable interrupts */
+        if (G_TASK_TEST_TICK_CNT_INI < g_task_test_tick_cnt)
+        {
+            /* Update Tick Counter */
+            g_task_test_tick_cnt--;
+            b_time_update_required = true;
+        }
+        else
+        {
+            b_time_update_required = false;
+        }
+        __asm("CPSIE i");    /* enable interrupts */
     }
 }
 
 void task_test_statechart(void)
 {
-    task_test_dta_t *p_task_test_dta;
-    char test_str[8];
+    task_test_dta_t *p_task_test_dta;
 
-    /* Update Task Test Configuration & Data Pointer */
+    /* Update Task Test Configuration & Data Pointer */
     p_task_test_dta = &task_test_dta;
 
     if (DEL_TEST_XX_MIN < p_task_test_dta->tick)
-    {
-        p_task_test_dta->tick--;
-    }
-    else
-    {
-        p_task_test_dta->tick = DEL_TEST_XX_MAX ;
-
-        /* Print out: LCD Display */
-        snprintf(test_str, sizeof(test_str), "%lu", (g_task_test_cnt/1000ul));
-        displayCharPositionWrite(10, 1);
-        displayStringWrite(test_str);
-    }
+    {
+        p_task_test_dta->tick--;
+    }
+    else
+    {
+    }
 }
-
-/********************** end of file ******************************************/
diff --git a/tdse-tp3_02-code_integration.ioc b/tdse-tp3_02-code_integration.ioc
@@ -1,162 +1,193 @@
-#MicroXplorer Configuration settings - do not modify
-CAD.formats=
-CAD.pinconfig=
-CAD.provider=
-File.Version=6
-KeepUserPlacement=false
-Mcu.CPN=STM32F103RBT6
-Mcu.Family=STM32F1
-Mcu.IP0=NVIC
-Mcu.IP1=RCC
-Mcu.IP2=SYS
-Mcu.IP3=USART2
-Mcu.IPNb=4
-Mcu.Name=STM32F103R(8-B)Tx
-Mcu.Package=LQFP64
-Mcu.Pin0=PC13-TAMPER-RTC
-Mcu.Pin1=PC14-OSC32_IN
-Mcu.Pin10=PB3
-Mcu.Pin11=VP_SYS_VS_Systick
-Mcu.Pin2=PC15-OSC32_OUT
-Mcu.Pin3=PD0-OSC_IN
-Mcu.Pin4=PD1-OSC_OUT
-Mcu.Pin5=PA2
-Mcu.Pin6=PA3
-Mcu.Pin7=PA5
-Mcu.Pin8=PA13
-Mcu.Pin9=PA14
-Mcu.PinsNb=12
-Mcu.ThirdPartyNb=0
-Mcu.UserConstants=
-Mcu.UserName=STM32F103RBTx
-MxCube.Version=6.13.0
-MxDb.Version=DB.6.0.130
-NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:true\:false\:false
-NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:true\:false\:false
-NVIC.EXTI15_10_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
-NVIC.ForceEnableDMAVector=true
-NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:true\:false\:false
-NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:true\:false\:false
-NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:true\:false\:false
-NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:true\:false\:false
-NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4
-NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:true\:false\:false
-NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:false
-NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:true\:false\:false
-PA13.GPIOParameters=GPIO_Label
-PA13.GPIO_Label=TMS
-PA13.Locked=true
-PA13.Mode=Serial_Wire
-PA13.Signal=SYS_JTMS-SWDIO
-PA14.GPIOParameters=GPIO_Label
-PA14.GPIO_Label=TCK
-PA14.Locked=true
-PA14.Mode=Serial_Wire
-PA14.Signal=SYS_JTCK-SWCLK
-PA2.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Label,GPIO_Mode
-PA2.GPIO_Label=USART_TX
-PA2.GPIO_Mode=GPIO_MODE_AF_PP
-PA2.GPIO_PuPd=GPIO_NOPULL
-PA2.GPIO_Speed=GPIO_SPEED_FREQ_LOW
-PA2.Locked=true
-PA2.Mode=Asynchronous
-PA2.Signal=USART2_TX
-PA3.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Label,GPIO_Mode
-PA3.GPIO_Label=USART_RX
-PA3.GPIO_Mode=GPIO_MODE_AF_PP
-PA3.GPIO_PuPd=GPIO_NOPULL
-PA3.GPIO_Speed=GPIO_SPEED_FREQ_LOW
-PA3.Locked=true
-PA3.Mode=Asynchronous
-PA3.Signal=USART2_RX
-PA5.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultOutputPP
-PA5.GPIO_Label=LD2 [Green Led]
-PA5.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_PP
-PA5.GPIO_PuPd=GPIO_NOPULL
-PA5.GPIO_Speed=GPIO_SPEED_FREQ_LOW
-PA5.Locked=true
-PA5.Signal=GPIO_Output
-PB3.GPIOParameters=GPIO_Label
-PB3.GPIO_Label=SWO
-PB3.Locked=true
-PB3.Signal=SYS_JTDO-TRACESWO
-PC13-TAMPER-RTC.GPIOParameters=GPIO_PuPd,GPIO_Label
-PC13-TAMPER-RTC.GPIO_Label=B1 [Blue PushButton]
-PC13-TAMPER-RTC.GPIO_PuPd=GPIO_NOPULL
-PC13-TAMPER-RTC.Locked=true
-PC13-TAMPER-RTC.Signal=GPXTI13
-PC14-OSC32_IN.Locked=true
-PC14-OSC32_IN.Mode=LSE-External-Oscillator
-PC14-OSC32_IN.Signal=RCC_OSC32_IN
-PC15-OSC32_OUT.Locked=true
-PC15-OSC32_OUT.Mode=LSE-External-Oscillator
-PC15-OSC32_OUT.Signal=RCC_OSC32_OUT
-PD0-OSC_IN.Locked=true
-PD0-OSC_IN.Mode=HSE-External-Clock-Source
-PD0-OSC_IN.Signal=RCC_OSC_IN
-PD1-OSC_OUT.Locked=true
-PD1-OSC_OUT.Mode=HSE-External-Clock-Source
-PD1-OSC_OUT.Signal=RCC_OSC_OUT
-PinOutPanel.RotationAngle=0
-ProjectManager.AskForMigrate=true
-ProjectManager.BackupPrevious=false
-ProjectManager.CompilerOptimize=6
-ProjectManager.ComputerToolchain=false
-ProjectManager.CoupleFile=false
-ProjectManager.CustomerFirmwarePackage=
-ProjectManager.DefaultFWLocation=true
-ProjectManager.DeletePrevious=true
-ProjectManager.DeviceId=STM32F103RBTx
-ProjectManager.FirmwarePackage=STM32Cube FW_F1 V1.8.6
-ProjectManager.FreePins=false
-ProjectManager.HalAssertFull=false
-ProjectManager.HeapSize=0x200
-ProjectManager.KeepUserCode=true
-ProjectManager.LastFirmware=true
-ProjectManager.LibraryCopy=1
-ProjectManager.MainLocation=Core/Src
-ProjectManager.NoMain=false
-ProjectManager.PreviousToolchain=
-ProjectManager.ProjectBuild=false
-ProjectManager.ProjectFileName=tdse-tp3_02-code_integration.ioc
-ProjectManager.ProjectName=tdse-tp3_02-code_integration
-ProjectManager.ProjectStructure=
-ProjectManager.RegisterCallBack=
-ProjectManager.StackSize=0x400
-ProjectManager.TargetToolchain=STM32CubeIDE
-ProjectManager.ToolChainLocation=
-ProjectManager.UAScriptAfterPath=
-ProjectManager.UAScriptBeforePath=
-ProjectManager.UnderRoot=true
-ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_USART2_UART_Init-USART2-false-HAL-true
-RCC.ADCFreqValue=32000000
-RCC.AHBFreq_Value=64000000
-RCC.APB1CLKDivider=RCC_HCLK_DIV2
-RCC.APB1Freq_Value=32000000
-RCC.APB1TimFreq_Value=64000000
-RCC.APB2Freq_Value=64000000
-RCC.APB2TimFreq_Value=64000000
-RCC.FCLKCortexFreq_Value=64000000
-RCC.FamilyName=M
-RCC.HCLKFreq_Value=64000000
-RCC.IPParameters=ADCFreqValue,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,MCOFreq_Value,PLLCLKFreq_Value,PLLMCOFreq_Value,PLLMUL,RTCClockSelection,RTCFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,TimSysFreq_Value,USBFreq_Value,VCOOutput2Freq_Value
-RCC.MCOFreq_Value=64000000
-RCC.PLLCLKFreq_Value=64000000
-RCC.PLLMCOFreq_Value=32000000
-RCC.PLLMUL=RCC_PLL_MUL16
-RCC.RTCClockSelection=RCC_RTCCLKSOURCE_LSE
-RCC.RTCFreq_Value=32768
-RCC.SYSCLKFreq_VALUE=64000000
-RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
-RCC.TimSysFreq_Value=64000000
-RCC.USBFreq_Value=64000000
-RCC.VCOOutput2Freq_Value=4000000
-SH.GPXTI13.0=GPIO_EXTI13
-SH.GPXTI13.ConfNb=1
-USART2.IPParameters=VirtualMode
-USART2.VirtualMode=VM_ASYNC
-VP_SYS_VS_Systick.Mode=SysTick
-VP_SYS_VS_Systick.Signal=SYS_VS_Systick
-board=NUCLEO-F103RB
-boardIOC=true
-isbadioc=false
+#MicroXplorer Configuration settings - do not modify
+CAD.formats=
+CAD.pinconfig=
+CAD.provider=
+File.Version=6
+KeepUserPlacement=false
+Mcu.CPN=STM32F103RBT6
+Mcu.Family=STM32F1
+Mcu.IP0=NVIC
+Mcu.IP1=RCC
+Mcu.IP2=SYS
+Mcu.IP3=USART2
+Mcu.IPNb=4
+Mcu.Name=STM32F103R(8-B)Tx
+Mcu.Package=LQFP64
+Mcu.Pin0=PC13-TAMPER-RTC
+Mcu.Pin1=PC14-OSC32_IN
+Mcu.Pin10=PA8
+Mcu.Pin11=PA9
+Mcu.Pin12=PA13
+Mcu.Pin13=PA14
+Mcu.Pin14=PB3
+Mcu.Pin15=PB4
+Mcu.Pin16=PB5
+Mcu.Pin17=VP_SYS_VS_Systick
+Mcu.Pin2=PC15-OSC32_OUT
+Mcu.Pin3=PD0-OSC_IN
+Mcu.Pin4=PD1-OSC_OUT
+Mcu.Pin5=PA2
+Mcu.Pin6=PA3
+Mcu.Pin7=PA5
+Mcu.Pin8=PB10
+Mcu.Pin9=PC7
+Mcu.PinsNb=18
+Mcu.ThirdPartyNb=0
+Mcu.UserConstants=
+Mcu.UserName=STM32F103RBTx
+MxCube.Version=6.13.0
+MxDb.Version=DB.6.0.130
+NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:true\:false\:false
+NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:true\:false\:false
+NVIC.EXTI15_10_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
+NVIC.ForceEnableDMAVector=true
+NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:true\:false\:false
+NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:true\:false\:false
+NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:true\:false\:false
+NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:true\:false\:false
+NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4
+NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:true\:false\:false
+NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:false
+NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:true\:false\:false
+PA13.GPIOParameters=GPIO_Label
+PA13.GPIO_Label=TMS
+PA13.Locked=true
+PA13.Mode=Serial_Wire
+PA13.Signal=SYS_JTMS-SWDIO
+PA14.GPIOParameters=GPIO_Label
+PA14.GPIO_Label=TCK
+PA14.Locked=true
+PA14.Mode=Serial_Wire
+PA14.Signal=SYS_JTCK-SWCLK
+PA2.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Label,GPIO_Mode
+PA2.GPIO_Label=USART_TX
+PA2.GPIO_Mode=GPIO_MODE_AF_PP
+PA2.GPIO_PuPd=GPIO_NOPULL
+PA2.GPIO_Speed=GPIO_SPEED_FREQ_LOW
+PA2.Locked=true
+PA2.Mode=Asynchronous
+PA2.Signal=USART2_TX
+PA3.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Label,GPIO_Mode
+PA3.GPIO_Label=USART_RX
+PA3.GPIO_Mode=GPIO_MODE_AF_PP
+PA3.GPIO_PuPd=GPIO_NOPULL
+PA3.GPIO_Speed=GPIO_SPEED_FREQ_LOW
+PA3.Locked=true
+PA3.Mode=Asynchronous
+PA3.Signal=USART2_RX
+PA5.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultOutputPP
+PA5.GPIO_Label=LD2 [Green Led]
+PA5.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_PP
+PA5.GPIO_PuPd=GPIO_NOPULL
+PA5.GPIO_Speed=GPIO_SPEED_FREQ_LOW
+PA5.Locked=true
+PA5.Signal=GPIO_Output
+PA8.GPIOParameters=GPIO_Label
+PA8.GPIO_Label=D7
+PA8.Locked=true
+PA8.Signal=GPIO_Output
+PA9.GPIOParameters=GPIO_Label
+PA9.GPIO_Label=D8
+PA9.Locked=true
+PA9.Signal=GPIO_Output
+PB10.GPIOParameters=GPIO_Label
+PB10.GPIO_Label=D6
+PB10.Locked=true
+PB10.Signal=GPIO_Output
+PB3.GPIOParameters=GPIO_Label
+PB3.GPIO_Label=SWO
+PB3.Locked=true
+PB3.Signal=SYS_JTDO-TRACESWO
+PB4.GPIOParameters=GPIO_Label
+PB4.GPIO_Label=D5
+PB4.Locked=true
+PB4.Signal=GPIO_Output
+PB5.GPIOParameters=GPIO_Label
+PB5.GPIO_Label=D4
+PB5.Locked=true
+PB5.Signal=GPIO_Output
+PC13-TAMPER-RTC.GPIOParameters=GPIO_PuPd,GPIO_Label
+PC13-TAMPER-RTC.GPIO_Label=B1 [Blue PushButton]
+PC13-TAMPER-RTC.GPIO_PuPd=GPIO_NOPULL
+PC13-TAMPER-RTC.Locked=true
+PC13-TAMPER-RTC.Signal=GPXTI13
+PC14-OSC32_IN.Locked=true
+PC14-OSC32_IN.Mode=LSE-External-Oscillator
+PC14-OSC32_IN.Signal=RCC_OSC32_IN
+PC15-OSC32_OUT.Locked=true
+PC15-OSC32_OUT.Mode=LSE-External-Oscillator
+PC15-OSC32_OUT.Signal=RCC_OSC32_OUT
+PC7.GPIOParameters=GPIO_Label
+PC7.GPIO_Label=D9
+PC7.Locked=true
+PC7.Signal=GPIO_Output
+PD0-OSC_IN.Locked=true
+PD0-OSC_IN.Mode=HSE-External-Clock-Source
+PD0-OSC_IN.Signal=RCC_OSC_IN
+PD1-OSC_OUT.Locked=true
+PD1-OSC_OUT.Mode=HSE-External-Clock-Source
+PD1-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
+ProjectManager.CustomerFirmwarePackage=
+ProjectManager.DefaultFWLocation=true
+ProjectManager.DeletePrevious=true
+ProjectManager.DeviceId=STM32F103RBTx
+ProjectManager.FirmwarePackage=STM32Cube FW_F1 V1.8.6
+ProjectManager.FreePins=false
+ProjectManager.HalAssertFull=false
+ProjectManager.HeapSize=0x200
+ProjectManager.KeepUserCode=true
+ProjectManager.LastFirmware=true
+ProjectManager.LibraryCopy=1
+ProjectManager.MainLocation=Core/Src
+ProjectManager.NoMain=false
+ProjectManager.PreviousToolchain=
+ProjectManager.ProjectBuild=false
+ProjectManager.ProjectFileName=tdse-tp3_02-code_integration.ioc
+ProjectManager.ProjectName=tdse-tp3_02-code_integration
+ProjectManager.ProjectStructure=
+ProjectManager.RegisterCallBack=
+ProjectManager.StackSize=0x400
+ProjectManager.TargetToolchain=STM32CubeIDE
+ProjectManager.ToolChainLocation=
+ProjectManager.UAScriptAfterPath=
+ProjectManager.UAScriptBeforePath=
+ProjectManager.UnderRoot=true
+ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_USART2_UART_Init-USART2-false-HAL-true
+RCC.ADCFreqValue=32000000
+RCC.AHBFreq_Value=64000000
+RCC.APB1CLKDivider=RCC_HCLK_DIV2
+RCC.APB1Freq_Value=32000000
+RCC.APB1TimFreq_Value=64000000
+RCC.APB2Freq_Value=64000000
+RCC.APB2TimFreq_Value=64000000
+RCC.FCLKCortexFreq_Value=64000000
+RCC.FamilyName=M
+RCC.HCLKFreq_Value=64000000
+RCC.IPParameters=ADCFreqValue,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,MCOFreq_Value,PLLCLKFreq_Value,PLLMCOFreq_Value,PLLMUL,RTCClockSelection,RTCFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,TimSysFreq_Value,USBFreq_Value,VCOOutput2Freq_Value
+RCC.MCOFreq_Value=64000000
+RCC.PLLCLKFreq_Value=64000000
+RCC.PLLMCOFreq_Value=32000000
+RCC.PLLMUL=RCC_PLL_MUL16
+RCC.RTCClockSelection=RCC_RTCCLKSOURCE_LSE
+RCC.RTCFreq_Value=32768
+RCC.SYSCLKFreq_VALUE=64000000
+RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
+RCC.TimSysFreq_Value=64000000
+RCC.USBFreq_Value=64000000
+RCC.VCOOutput2Freq_Value=4000000
+SH.GPXTI13.0=GPIO_EXTI13
+SH.GPXTI13.ConfNb=1
+USART2.IPParameters=VirtualMode
+USART2.VirtualMode=VM_ASYNC
+VP_SYS_VS_Systick.Mode=SysTick
+VP_SYS_VS_Systick.Signal=SYS_VS_Systick
+board=NUCLEO-F103RB
+boardIOC=true
+isbadioc=false