From 7ff9b907f297c6b288e7b97d11aecc014914bc59 Mon Sep 17 00:00:00 2001
From: Annika <fanta99a@yahoo.de>
Date: Thu, 27 May 2021 19:17:24 +0200
Subject: [PATCH] Diplay funktioniert

---
 Core/Inc/main.h                   |  28 ++--
 Core/Src/main.c                   | 236 ++++++++++++++++++------------
 F413_FreeRTOS_LED_Matrix_Game.ioc | 128 ++++++++--------
 3 files changed, 220 insertions(+), 172 deletions(-)

diff --git a/Core/Inc/main.h b/Core/Inc/main.h
index 35de1b3..671c249 100644
--- a/Core/Inc/main.h
+++ b/Core/Inc/main.h
@@ -60,35 +60,39 @@ void Error_Handler(void);
 /* USER CODE END EFP */
 
 /* Private defines -----------------------------------------------------------*/
+#define LCD_D7_Pin GPIO_PIN_2
+#define LCD_D7_GPIO_Port GPIOE
+#define LCD_D4_Pin GPIO_PIN_4
+#define LCD_D4_GPIO_Port GPIOE
+#define LCD_D5_Pin GPIO_PIN_5
+#define LCD_D5_GPIO_Port GPIOE
+#define LCD_D6_Pin GPIO_PIN_6
+#define LCD_D6_GPIO_Port GPIOE
 #define USER_Btn_Pin GPIO_PIN_13
 #define USER_Btn_GPIO_Port GPIOC
 #define USER_Btn_EXTI_IRQn EXTI15_10_IRQn
+#define LCD_RS_Pin GPIO_PIN_7
+#define LCD_RS_GPIO_Port GPIOF
+#define LCD_RW_Pin GPIO_PIN_8
+#define LCD_RW_GPIO_Port GPIOF
+#define LCD_E_Pin GPIO_PIN_9
+#define LCD_E_GPIO_Port GPIOF
 #define MCO_Pin GPIO_PIN_0
 #define MCO_GPIO_Port GPIOH
-#define LCD_E_Pin GPIO_PIN_1
-#define LCD_E_GPIO_Port GPIOC
-#define LCD_RS_Pin GPIO_PIN_2
-#define LCD_RS_GPIO_Port GPIOC
 #define Matrix_Pin GPIO_PIN_0
 #define Matrix_GPIO_Port GPIOA
 #define LED_green_Pin GPIO_PIN_0
 #define LED_green_GPIO_Port GPIOB
-#define LCD_D4_Pin GPIO_PIN_1
-#define LCD_D4_GPIO_Port GPIOB
 #define LED_red_Pin GPIO_PIN_14
 #define LED_red_GPIO_Port GPIOB
 #define STLK_RX_Pin GPIO_PIN_8
 #define STLK_RX_GPIO_Port GPIOD
 #define STLK_TX_Pin GPIO_PIN_9
 #define STLK_TX_GPIO_Port GPIOD
-#define LCD_D7_Pin GPIO_PIN_13
-#define LCD_D7_GPIO_Port GPIOD
 #define USB_PowerSwitchOn_Pin GPIO_PIN_6
 #define USB_PowerSwitchOn_GPIO_Port GPIOG
 #define USB_OverCurrent_Pin GPIO_PIN_7
 #define USB_OverCurrent_GPIO_Port GPIOG
-#define LCD_RW_Pin GPIO_PIN_7
-#define LCD_RW_GPIO_Port GPIOC
 #define LED1_Pin GPIO_PIN_8
 #define LED1_GPIO_Port GPIOC
 #define LED2_Pin GPIO_PIN_9
@@ -125,12 +129,8 @@ void Error_Handler(void);
 #define btn4_EXTI_IRQn EXTI9_5_IRQn
 #define SWO_Pin GPIO_PIN_3
 #define SWO_GPIO_Port GPIOB
-#define LCD_D6_Pin GPIO_PIN_5
-#define LCD_D6_GPIO_Port GPIOB
 #define LED_blue_Pin GPIO_PIN_7
 #define LED_blue_GPIO_Port GPIOB
-#define LCD_D5_Pin GPIO_PIN_0
-#define LCD_D5_GPIO_Port GPIOE
 /* USER CODE BEGIN Private defines */
 #define btn1 btn1_Pin
 #define btn2 btn2_Pin
diff --git a/Core/Src/main.c b/Core/Src/main.c
index 0e8b8a1..0908e71 100644
--- a/Core/Src/main.c
+++ b/Core/Src/main.c
@@ -26,7 +26,6 @@
 #include "ws2812b.h"
 #include "queue.h"
 #include "semphr.h"
-
 /* USER CODE END Includes */
 
 /* Private typedef -----------------------------------------------------------*/
@@ -41,15 +40,7 @@
 
 /* Private macro -------------------------------------------------------------*/
 /* USER CODE BEGIN PM */
-#define LCD_E() {		HAL_GPIO_WritePin(LCD_E_GPIO_Port, LCD_E_Pin, GPIO_PIN_SET);\
-										HAL_Delay(1);\
-										HAL_GPIO_WritePin(LCD_E_GPIO_Port, LCD_E_Pin, GPIO_PIN_RESET);\
-										HAL_Delay(1);\
-								}
-#define LCD_RW(state) {HAL_GPIO_WritePin(LCD_RW_GPIO_Port, LCD_RW_Pin, (state) ? GPIO_PIN_SET : GPIO_PIN_RESET); }
-#define LCD_RS(state) {HAL_GPIO_WritePin(LCD_RS_GPIO_Port, LCD_RS_Pin, (state) ? GPIO_PIN_SET : GPIO_PIN_RESET); }
-#define LCD_Command(data) {LCD_send(0, data);}
-#define LCD_Data(data) {LCD_send(1,data);}
+
 /* USER CODE END PM */
 
 /* Private variables ---------------------------------------------------------*/
@@ -156,11 +147,13 @@ void Display(void *argument);
 /* USER CODE BEGIN PFP */
 extern TIM_HandleTypeDef htim7;
 
-void LCD_Write4Bit(uint8_t);
-void LCD_send(_Bool,uint8_t);
-void LCD_init(void);
-void LCD_print(char *);
-void LCD_setCursor(uint8_t, uint8_t);
+void lcd_init(void);
+void lcd_put_cur(int, int);
+void lcd_send_data(char);
+void ldc_send_cmd(char);
+void send_to_lcd(char,int);
+void lcd_send_string(char*);
+void lcd_clear(void);
 
 /* USER CODE END PFP */
 
@@ -201,12 +194,21 @@ int main(void)
   MX_USART3_UART_Init();
   MX_USB_OTG_FS_PCD_Init();
   MX_TIM2_Init();
-  /* USER CODE BEGIN 2 */
-	LCD_init();
+  /* USER CODE BEGIN 2 */	
 	
-	LCD_setCursor(0,0);
-	LCD_print("Hello World!!");
 
+	lcd_init();
+	lcd_clear();
+	lcd_put_cur(0, 0);
+  lcd_send_string("HELLO ");
+ // lcd_send_string("WORLD ");
+ // lcd_send_string("FROM");
+ // HAL_Delay(1000);
+  lcd_put_cur(1, 0);
+  lcd_send_string("CONTROLLERSTECH");
+	lcd_clear();
+ // HAL_Delay(2000);
+ // lcd_clear();
 
   /* USER CODE END 2 */
 
@@ -502,30 +504,36 @@ static void MX_GPIO_Init(void)
   GPIO_InitTypeDef GPIO_InitStruct = {0};
 
   /* GPIO Ports Clock Enable */
+  __HAL_RCC_GPIOE_CLK_ENABLE();
   __HAL_RCC_GPIOC_CLK_ENABLE();
+  __HAL_RCC_GPIOF_CLK_ENABLE();
   __HAL_RCC_GPIOH_CLK_ENABLE();
   __HAL_RCC_GPIOA_CLK_ENABLE();
   __HAL_RCC_GPIOB_CLK_ENABLE();
   __HAL_RCC_GPIOD_CLK_ENABLE();
   __HAL_RCC_GPIOG_CLK_ENABLE();
-  __HAL_RCC_GPIOE_CLK_ENABLE();
 
   /*Configure GPIO pin Output Level */
-  HAL_GPIO_WritePin(GPIOC, LCD_E_Pin|LCD_RS_Pin|LCD_RW_Pin|LED1_Pin
-                          |LED2_Pin|LED3_Pin|LED4_Pin, GPIO_PIN_RESET);
+  HAL_GPIO_WritePin(GPIOE, LCD_D7_Pin|LCD_D4_Pin|LCD_D5_Pin|LCD_D6_Pin, GPIO_PIN_RESET);
 
   /*Configure GPIO pin Output Level */
-  HAL_GPIO_WritePin(GPIOB, LED_green_Pin|LCD_D4_Pin|LED_red_Pin|LCD_D6_Pin
-                          |LED_blue_Pin, GPIO_PIN_RESET);
+  HAL_GPIO_WritePin(GPIOF, LCD_RS_Pin|LCD_RW_Pin|LCD_E_Pin, GPIO_PIN_RESET);
 
   /*Configure GPIO pin Output Level */
-  HAL_GPIO_WritePin(LCD_D7_GPIO_Port, LCD_D7_Pin, GPIO_PIN_RESET);
+  HAL_GPIO_WritePin(GPIOB, LED_green_Pin|LED_red_Pin|LED_blue_Pin, GPIO_PIN_RESET);
 
   /*Configure GPIO pin Output Level */
   HAL_GPIO_WritePin(USB_PowerSwitchOn_GPIO_Port, USB_PowerSwitchOn_Pin, GPIO_PIN_RESET);
 
   /*Configure GPIO pin Output Level */
-  HAL_GPIO_WritePin(LCD_D5_GPIO_Port, LCD_D5_Pin, GPIO_PIN_RESET);
+  HAL_GPIO_WritePin(GPIOC, LED1_Pin|LED2_Pin|LED3_Pin|LED4_Pin, GPIO_PIN_RESET);
+
+  /*Configure GPIO pins : LCD_D7_Pin LCD_D4_Pin LCD_D5_Pin LCD_D6_Pin */
+  GPIO_InitStruct.Pin = LCD_D7_Pin|LCD_D4_Pin|LCD_D5_Pin|LCD_D6_Pin;
+  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+  GPIO_InitStruct.Pull = GPIO_NOPULL;
+  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+  HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
 
   /*Configure GPIO pin : USER_Btn_Pin */
   GPIO_InitStruct.Pin = USER_Btn_Pin;
@@ -533,31 +541,20 @@ static void MX_GPIO_Init(void)
   GPIO_InitStruct.Pull = GPIO_NOPULL;
   HAL_GPIO_Init(USER_Btn_GPIO_Port, &GPIO_InitStruct);
 
-  /*Configure GPIO pins : LCD_E_Pin LCD_RS_Pin LCD_RW_Pin LED1_Pin
-                           LED2_Pin LED3_Pin LED4_Pin */
-  GPIO_InitStruct.Pin = LCD_E_Pin|LCD_RS_Pin|LCD_RW_Pin|LED1_Pin
-                          |LED2_Pin|LED3_Pin|LED4_Pin;
+  /*Configure GPIO pins : LCD_RS_Pin LCD_RW_Pin LCD_E_Pin */
+  GPIO_InitStruct.Pin = LCD_RS_Pin|LCD_RW_Pin|LCD_E_Pin;
   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
   GPIO_InitStruct.Pull = GPIO_NOPULL;
   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
-  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+  HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
 
-  /*Configure GPIO pins : LED_green_Pin LCD_D4_Pin LED_red_Pin LCD_D6_Pin
-                           LED_blue_Pin */
-  GPIO_InitStruct.Pin = LED_green_Pin|LCD_D4_Pin|LED_red_Pin|LCD_D6_Pin
-                          |LED_blue_Pin;
+  /*Configure GPIO pins : LED_green_Pin LED_red_Pin LED_blue_Pin */
+  GPIO_InitStruct.Pin = LED_green_Pin|LED_red_Pin|LED_blue_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 : LCD_D7_Pin */
-  GPIO_InitStruct.Pin = LCD_D7_Pin;
-  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
-  GPIO_InitStruct.Pull = GPIO_NOPULL;
-  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
-  HAL_GPIO_Init(LCD_D7_GPIO_Port, &GPIO_InitStruct);
-
   /*Configure GPIO pin : USB_PowerSwitchOn_Pin */
   GPIO_InitStruct.Pin = USB_PowerSwitchOn_Pin;
   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
@@ -571,19 +568,19 @@ static void MX_GPIO_Init(void)
   GPIO_InitStruct.Pull = GPIO_NOPULL;
   HAL_GPIO_Init(USB_OverCurrent_GPIO_Port, &GPIO_InitStruct);
 
+  /*Configure GPIO pins : LED1_Pin LED2_Pin LED3_Pin LED4_Pin */
+  GPIO_InitStruct.Pin = LED1_Pin|LED2_Pin|LED3_Pin|LED4_Pin;
+  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+  GPIO_InitStruct.Pull = GPIO_NOPULL;
+  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
   /*Configure GPIO pins : btn1_Pin btn2_Pin btn3_Pin btn4_Pin */
   GPIO_InitStruct.Pin = btn1_Pin|btn2_Pin|btn3_Pin|btn4_Pin;
   GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
   GPIO_InitStruct.Pull = GPIO_PULLDOWN;
   HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
 
-  /*Configure GPIO pin : LCD_D5_Pin */
-  GPIO_InitStruct.Pin = LCD_D5_Pin;
-  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
-  GPIO_InitStruct.Pull = GPIO_NOPULL;
-  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
-  HAL_GPIO_Init(LCD_D5_GPIO_Port, &GPIO_InitStruct);
-
   /* EXTI interrupt init*/
   HAL_NVIC_SetPriority(EXTI4_IRQn, 5, 0);
   HAL_NVIC_EnableIRQ(EXTI4_IRQn);
@@ -598,48 +595,99 @@ static void MX_GPIO_Init(void)
 
 /* USER CODE BEGIN 4 */
 
+void send_to_lcd (char data, int rs)
+{
+    HAL_GPIO_WritePin(LCD_RS_GPIO_Port, LCD_RS_Pin, rs);  // rs = 1 for data, rs=0 for command
+    /* write the data to the respective pin */
+    HAL_GPIO_WritePin(LCD_D7_GPIO_Port, LCD_D7_Pin, ((data>>3)&0x01));
+    HAL_GPIO_WritePin(LCD_D6_GPIO_Port, LCD_D6_Pin, ((data>>2)&0x01));
+    HAL_GPIO_WritePin(LCD_D5_GPIO_Port, LCD_D5_Pin, ((data>>1)&0x01));
+    HAL_GPIO_WritePin(LCD_D4_GPIO_Port, LCD_D4_Pin, ((data>>0)&0x01));
+    /* Toggle EN PIN to send the data
+     * if the HCLK > 100 MHz, use the  20 us delay
+     * if the LCD still doesn't work, increase the delay to 50, 80 or 100..
+     */
+    HAL_GPIO_WritePin(LCD_E_GPIO_Port, LCD_E_Pin, 1);
+		vTaskDelay(20);
+    HAL_GPIO_WritePin(LCD_E_GPIO_Port, LCD_E_Pin, 0);
+		vTaskDelay(20);
+}
 	
-	void LCD_Write4Bit(uint8_t data)
-	{ 
-		HAL_GPIO_WritePin(LCD_D4_GPIO_Port, LCD_D4_Pin, ((data >> 0)&1)? GPIO_PIN_SET : GPIO_PIN_RESET);
-		HAL_GPIO_WritePin(LCD_D5_GPIO_Port, LCD_D4_Pin, ((data >> 1)&1)? GPIO_PIN_SET : GPIO_PIN_RESET);
-		HAL_GPIO_WritePin(LCD_D6_GPIO_Port, LCD_D4_Pin, ((data >> 2)&1)? GPIO_PIN_SET : GPIO_PIN_RESET);
-		HAL_GPIO_WritePin(LCD_D7_GPIO_Port, LCD_D4_Pin, ((data >> 3)&1)? GPIO_PIN_SET : GPIO_PIN_RESET);
-	}
-	void LCD_send(_Bool mode,uint8_t data)
-	{
-		LCD_RW(0);
-		if(mode){LCD_RS(1);}
-		else {LCD_RS(0);}
-		
-		LCD_Write4Bit(data >> 4);
-		LCD_E();
-		LCD_Write4Bit(data);
-		LCD_E();
-	}
-	void LCD_init(void) 
-	{
-		LCD_RW(0);
-		
-		LCD_Command(0x30);
-		LCD_Command(0x32);
-		LCD_Command(0x28);
-		LCD_Command(0x0c);
-		LCD_Command(0xc6);
-	}
-	void LCD_print(char *pData)
-	{
-		while(*pData)
-		{
-			LCD_Data(*pData ++);
-		}
-	}
-	void LCD_setCursor(uint8_t x, uint8_t y)
-	{
-		if(y == 0) LCD_Command( 0x80 + x);
-		if(y == 1) LCD_Command( 0xc0 + x);
-	}
-	
+void lcd_send_cmd (char cmd)
+{
+    char datatosend;
+    /* send upper nibble first */
+    datatosend = ((cmd>>4)&0x0f);
+    send_to_lcd(datatosend,0);  // RS must be while sending command
+    /* send Lower Nibble */
+    datatosend = ((cmd)&0x0f);
+    send_to_lcd(datatosend, 0);
+}
+
+void lcd_send_data (char data)
+{
+    char datatosend;
+   
+    /* send higher nibble */
+    datatosend = ((data>>4)&0x0f);
+    send_to_lcd(datatosend, 1);  // rs =1 for sending data
+    /* send Lower nibble */
+    datatosend = ((data)&0x0f);
+    send_to_lcd(datatosend, 1);
+}
+
+void lcd_init (void)
+{
+    // 4 bit initialisation
+    HAL_Delay(50);  // wait for >40ms
+    lcd_send_cmd (0x30);
+    HAL_Delay(5);  // wait for >4.1ms
+    lcd_send_cmd (0x30);
+    HAL_Delay(1);  // wait for >100us
+    lcd_send_cmd (0x30);
+    HAL_Delay(10);
+    lcd_send_cmd (0x20);  // 4bit mode
+    HAL_Delay(10);
+
+  // dislay initialisation
+    lcd_send_cmd (0x28); // Function set --> DL=0 (4 bit mode), N = 1 (2 line display) F = 0 (5x8 characters)
+    HAL_Delay(1);
+    lcd_send_cmd (0x08); //Display on/off control --> D=0,C=0, B=0  ---> display off
+    HAL_Delay(1);
+    lcd_send_cmd (0x01);  // clear display
+    HAL_Delay(1);
+    HAL_Delay(1);
+    lcd_send_cmd (0x06); //Entry mode set --> I/D = 1 (increment cursor) & S = 0 (no shift)
+    HAL_Delay(1);
+    lcd_send_cmd (0x0C); //Display on/off control --> D = 1, C and B = 0. (Cursor and blink, last two bits)
+}
+
+void lcd_put_cur(int row, int col)
+{
+    switch (row)
+    {
+        case 0:
+            col |= 0x80;
+            break;
+        case 1:
+            col |= 0xC0;
+            break;
+    }
+
+    lcd_send_cmd (col);
+}
+
+void lcd_send_string (char *str)
+{
+	while (*str) lcd_send_data (*str++);
+}
+
+void lcd_clear (void)
+{
+	lcd_send_cmd(0x01);
+	HAL_Delay(2);
+}
+
 
 void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
 {	
@@ -977,13 +1025,13 @@ void Display(void *argument)
 			punkte[1] = (points %100) / 10;
 			punkte[2] = points % 10;
 		}
-		LCD_init();
-		LCD_setCursor(0,0);
+	//	LCD_init();
+	//	LCD_setCursor(0,0);
 		
-		LCD_print(punkte);
+	//	LCD_print(punkte);
 		if(rec == 0)
 		{
-			LCD_print("You are dead");
+	//		LCD_print("You are dead");
 		}
   }
   /* USER CODE END Display */
diff --git a/F413_FreeRTOS_LED_Matrix_Game.ioc b/F413_FreeRTOS_LED_Matrix_Game.ioc
index 0a05d9c..b855d9e 100644
--- a/F413_FreeRTOS_LED_Matrix_Game.ioc
+++ b/F413_FreeRTOS_LED_Matrix_Game.ioc
@@ -33,45 +33,45 @@ Mcu.IP7=USB_OTG_FS
 Mcu.IPNb=8
 Mcu.Name=STM32F413Z(G-H)Tx
 Mcu.Package=LQFP144
-Mcu.Pin0=PC13
-Mcu.Pin1=PC14-OSC32_IN
-Mcu.Pin10=PB14
-Mcu.Pin11=PD8
-Mcu.Pin12=PD9
-Mcu.Pin13=PD13
-Mcu.Pin14=PG6
-Mcu.Pin15=PG7
-Mcu.Pin16=PC7
-Mcu.Pin17=PC8
-Mcu.Pin18=PC9
-Mcu.Pin19=PA8
-Mcu.Pin2=PC15-OSC32_OUT
-Mcu.Pin20=PA9
-Mcu.Pin21=PA10
-Mcu.Pin22=PA11
-Mcu.Pin23=PA12
-Mcu.Pin24=PA13
-Mcu.Pin25=PA14
-Mcu.Pin26=PC10
-Mcu.Pin27=PC11
-Mcu.Pin28=PD4
-Mcu.Pin29=PD5
-Mcu.Pin3=PH0 - OSC_IN
-Mcu.Pin30=PD6
-Mcu.Pin31=PD7
-Mcu.Pin32=PB3
-Mcu.Pin33=PB5
-Mcu.Pin34=PB7
-Mcu.Pin35=PE0
+Mcu.Pin0=PE2
+Mcu.Pin1=PE4
+Mcu.Pin10=PH0 - OSC_IN
+Mcu.Pin11=PH1 - OSC_OUT
+Mcu.Pin12=PA0
+Mcu.Pin13=PB0
+Mcu.Pin14=PB14
+Mcu.Pin15=PD8
+Mcu.Pin16=PD9
+Mcu.Pin17=PG6
+Mcu.Pin18=PG7
+Mcu.Pin19=PC8
+Mcu.Pin2=PE5
+Mcu.Pin20=PC9
+Mcu.Pin21=PA8
+Mcu.Pin22=PA9
+Mcu.Pin23=PA10
+Mcu.Pin24=PA11
+Mcu.Pin25=PA12
+Mcu.Pin26=PA13
+Mcu.Pin27=PA14
+Mcu.Pin28=PC10
+Mcu.Pin29=PC11
+Mcu.Pin3=PE6
+Mcu.Pin30=PD4
+Mcu.Pin31=PD5
+Mcu.Pin32=PD6
+Mcu.Pin33=PD7
+Mcu.Pin34=PB3
+Mcu.Pin35=PB7
 Mcu.Pin36=VP_FREERTOS_VS_CMSIS_V2
 Mcu.Pin37=VP_SYS_VS_tim7
 Mcu.Pin38=VP_TIM2_VS_ClockSourceINT
-Mcu.Pin4=PH1 - OSC_OUT
-Mcu.Pin5=PC1
-Mcu.Pin6=PC2
-Mcu.Pin7=PA0
-Mcu.Pin8=PB0
-Mcu.Pin9=PB1
+Mcu.Pin4=PC13
+Mcu.Pin5=PC14-OSC32_IN
+Mcu.Pin6=PC15-OSC32_OUT
+Mcu.Pin7=PF7
+Mcu.Pin8=PF8
+Mcu.Pin9=PF9
 Mcu.PinsNb=39
 Mcu.ThirdPartyNb=0
 Mcu.UserConstants=
@@ -144,10 +144,6 @@ PB0.GPIOParameters=GPIO_Label
 PB0.GPIO_Label=LED_green
 PB0.Locked=true
 PB0.Signal=GPIO_Output
-PB1.GPIOParameters=GPIO_Label
-PB1.GPIO_Label=LCD_D4
-PB1.Locked=true
-PB1.Signal=GPIO_Output
 PB14.GPIOParameters=GPIO_Label
 PB14.GPIO_Label=LED_red
 PB14.Locked=true
@@ -156,18 +152,10 @@ PB3.GPIOParameters=GPIO_Label
 PB3.GPIO_Label=SWO
 PB3.Locked=true
 PB3.Signal=SYS_JTDO-SWO
-PB5.GPIOParameters=GPIO_Label
-PB5.GPIO_Label=LCD_D6
-PB5.Locked=true
-PB5.Signal=GPIO_Output
 PB7.GPIOParameters=GPIO_Label
 PB7.GPIO_Label=LED_blue
 PB7.Locked=true
 PB7.Signal=GPIO_Output
-PC1.GPIOParameters=GPIO_Label
-PC1.GPIO_Label=LCD_E
-PC1.Locked=true
-PC1.Signal=GPIO_Output
 PC10.GPIOParameters=GPIO_Label
 PC10.GPIO_Label=LED3
 PC10.Locked=true
@@ -186,14 +174,6 @@ 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
-PC2.GPIOParameters=GPIO_Label
-PC2.GPIO_Label=LCD_RS
-PC2.Locked=true
-PC2.Signal=GPIO_Output
-PC7.GPIOParameters=GPIO_Label
-PC7.GPIO_Label=LCD_RW
-PC7.Locked=true
-PC7.Signal=GPIO_Output
 PC8.GPIOParameters=GPIO_Label
 PC8.GPIO_Label=LED1
 PC8.Locked=true
@@ -202,10 +182,6 @@ PC9.GPIOParameters=GPIO_Label
 PC9.GPIO_Label=LED2
 PC9.Locked=true
 PC9.Signal=GPIO_Output
-PD13.GPIOParameters=GPIO_Label
-PD13.GPIO_Label=LCD_D7
-PD13.Locked=true
-PD13.Signal=GPIO_Output
 PD4.GPIOParameters=GPIO_PuPd,GPIO_Label
 PD4.GPIO_Label=btn1
 PD4.GPIO_PuPd=GPIO_PULLDOWN
@@ -236,10 +212,34 @@ PD9.GPIO_Label=STLK_TX [STM32F103CBT6_PA2]
 PD9.Locked=true
 PD9.Mode=Asynchronous
 PD9.Signal=USART3_RX
-PE0.GPIOParameters=GPIO_Label
-PE0.GPIO_Label=LCD_D5
-PE0.Locked=true
-PE0.Signal=GPIO_Output
+PE2.GPIOParameters=GPIO_Label
+PE2.GPIO_Label=LCD_D7
+PE2.Locked=true
+PE2.Signal=GPIO_Output
+PE4.GPIOParameters=GPIO_Label
+PE4.GPIO_Label=LCD_D4
+PE4.Locked=true
+PE4.Signal=GPIO_Output
+PE5.GPIOParameters=GPIO_Label
+PE5.GPIO_Label=LCD_D5
+PE5.Locked=true
+PE5.Signal=GPIO_Output
+PE6.GPIOParameters=GPIO_Label
+PE6.GPIO_Label=LCD_D6
+PE6.Locked=true
+PE6.Signal=GPIO_Output
+PF7.GPIOParameters=GPIO_Label
+PF7.GPIO_Label=LCD_RS
+PF7.Locked=true
+PF7.Signal=GPIO_Output
+PF8.GPIOParameters=GPIO_Label
+PF8.GPIO_Label=LCD_RW
+PF8.Locked=true
+PF8.Signal=GPIO_Output
+PF9.GPIOParameters=GPIO_Label
+PF9.GPIO_Label=LCD_E
+PF9.Locked=true
+PF9.Signal=GPIO_Output
 PG6.GPIOParameters=GPIO_Label
 PG6.GPIO_Label=USB_PowerSwitchOn [STMPS2151STR_EN]
 PG6.Locked=true
-- 
GitLab