Index: ctrl/firmware/Main/CubeMX/Core/Src/freertos.c
===================================================================
--- ctrl/firmware/Main/CubeMX/Core/Src/freertos.c	(revision 104)
+++ ctrl/firmware/Main/CubeMX/Core/Src/freertos.c	(revision 105)
@@ -37,4 +37,5 @@
 #include "onewire_task.h"
 #include "bme_task.h"
+#include "gui_task.h"
 
 /* USER CODE END Includes */
@@ -55,4 +56,5 @@
 #define ONEWIRE_TASK_STACK_DEPTH_WORDS				(128U)
 #define BME_TASK_STACK_DEPTH_WORDS					(256U)
+#define GUI_TASK_STACK_DEPTH_WORDS					(2048U)
 
 /* USER CODE END PD */
@@ -72,4 +74,5 @@
 static StackType_t onewireTaskStackBuffer[ONEWIRE_TASK_STACK_DEPTH_WORDS]				__attribute__((section(".DTCM_RAM")));
 static StackType_t bmeTaskStackBuffer[BME_TASK_STACK_DEPTH_WORDS]						__attribute__((section(".DTCM_RAM")));
+static StackType_t guiTaskStackBuffer[GUI_TASK_STACK_DEPTH_WORDS]						__attribute__((section(".DTCM_RAM")));
 
 static uint8_t beeperQueueStorageArea[BEEPER_QUEUE_SIZE * BEEPER_QUEUE_ITEM_SIZE]		__attribute__((section(".DTCM_RAM")));
@@ -82,4 +85,5 @@
 static StaticTask_t onewireTaskBuffer													__attribute__((section(".DTCM_RAM")));
 static StaticTask_t bmeTaskBuffer														__attribute__((section(".DTCM_RAM")));
+static StaticTask_t guiTaskBuffer														__attribute__((section(".DTCM_RAM")));
 
 static StaticQueue_t beeperQueueBuffer													__attribute__((section(".DTCM_RAM")));
@@ -92,4 +96,5 @@
 static const char* const onewireTaskName = "1WireTask";
 static const char* const bmeTaskName = "BMETask";
+static const char* const guiTaskName = "GUITask";
 
 /* USER CODE END Variables */
@@ -197,4 +202,7 @@
   if (r == NULL) printf("Cannot create %s!\n", bmeTaskName);
 
+  r = xTaskCreateStatic(guiTaskStart, guiTaskName, GUI_TASK_STACK_DEPTH_WORDS, NULL, 24, guiTaskStackBuffer, &guiTaskBuffer);
+  if (r == NULL) printf("Cannot create %s!\n", guiTaskName);
+
   /* USER CODE END RTOS_THREADS */
 
Index: ctrl/firmware/Main/CubeMX/Core/Src/spi.c
===================================================================
--- ctrl/firmware/Main/CubeMX/Core/Src/spi.c	(revision 104)
+++ ctrl/firmware/Main/CubeMX/Core/Src/spi.c	(revision 105)
@@ -79,4 +79,6 @@
   /* USER CODE BEGIN SPI4_Init 0 */
 
+  // This SPI module is used to control the Display
+
   /* USER CODE END SPI4_Init 0 */
 
Index: ctrl/firmware/Main/CubeMX/charger.ioc
===================================================================
--- ctrl/firmware/Main/CubeMX/charger.ioc	(revision 104)
+++ ctrl/firmware/Main/CubeMX/charger.ioc	(revision 105)
@@ -553,19 +553,19 @@
 PD9.Signal=USART3_RX
 PE11.GPIOParameters=GPIO_Label
-PE11.GPIO_Label=SPI4_NSS_DISPLAY
+PE11.GPIO_Label=DISPLAY_SPI_CS
 PE11.Locked=true
 PE11.Mode=NSS_Signal_Hard_Output
 PE11.Signal=SPI4_NSS
 PE12.GPIOParameters=GPIO_Label
-PE12.GPIO_Label=SPI4_SCK_DISPLAY
+PE12.GPIO_Label=DISPLAY_SPI_SCK
 PE12.Locked=true
 PE12.Mode=Simplex_Bidirectional_Master
 PE12.Signal=SPI4_SCK
 PE13.GPIOParameters=GPIO_Label
-PE13.GPIO_Label=PWM_DISPLAY_LIGHT
+PE13.GPIO_Label=DISPLAY_BACKLIGHT_PWM
 PE13.Locked=true
-PE13.Signal=GPIO_Output
+PE13.Signal=S_TIM1_CH3
 PE14.GPIOParameters=GPIO_Label
-PE14.GPIO_Label=SPI4_MOSI_DISPLAY
+PE14.GPIO_Label=DISPLAY_SPI_MOSI
 PE14.Locked=true
 PE14.Mode=Simplex_Bidirectional_Master
@@ -789,4 +789,6 @@
 SH.S_TIM1_CH1.0=TIM1_CH1,PWM Generation1 CH1 CH1N
 SH.S_TIM1_CH1.ConfNb=1
+SH.S_TIM1_CH3.0=TIM1_CH3,PWM Generation3 CH3
+SH.S_TIM1_CH3.ConfNb=1
 SH.S_TIM3_CH2.0=TIM3_CH2,PWM Generation2 CH2
 SH.S_TIM3_CH2.ConfNb=1
@@ -808,5 +810,7 @@
 SPI4.DataSize=SPI_DATASIZE_9BIT
 SPI4.Direction=SPI_DIRECTION_1LINE
-SPI4.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,VirtualNSS,DataSize,BaudRatePrescaler
+SPI4.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,VirtualNSS,DataSize,BaudRatePrescaler,MasterSSIdleness,MasterInterDataIdleness
+SPI4.MasterInterDataIdleness=SPI_MASTER_INTERDATA_IDLENESS_01CYCLE
+SPI4.MasterSSIdleness=SPI_MASTER_SS_IDLENESS_01CYCLE
 SPI4.Mode=SPI_MODE_MASTER
 SPI4.VirtualNSS=VM_NSSHARD
@@ -843,6 +847,7 @@
 TIM1.BreakState=TIM_BREAK_DISABLE
 TIM1.Channel-PWM\ Generation1\ CH1\ CH1N=TIM_CHANNEL_1
+TIM1.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3
 TIM1.DeadTime=100
-TIM1.IPParameters=Channel-PWM Generation1 CH1 CH1N,Prescaler,Period,AutoReloadPreload,OCNPolarity_1,OCIdleState_1,Pulse-PWM Generation1 CH1 CH1N,BreakState,AutomaticOutput,OffStateRunMode,OffStateIDLEMode,LockLevel,DeadTime
+TIM1.IPParameters=Channel-PWM Generation1 CH1 CH1N,Prescaler,Period,AutoReloadPreload,OCNPolarity_1,OCIdleState_1,Pulse-PWM Generation1 CH1 CH1N,BreakState,AutomaticOutput,OffStateRunMode,OffStateIDLEMode,LockLevel,DeadTime,Channel-PWM Generation3 CH3
 TIM1.LockLevel=TIM_LOCKLEVEL_1
 TIM1.OCIdleState_1=TIM_OCIDLESTATE_SET
