Index: /ctrl/firmware/Main/CubeMX/Core/Inc/main.h
===================================================================
--- /ctrl/firmware/Main/CubeMX/Core/Inc/main.h	(revision 80)
+++ /ctrl/firmware/Main/CubeMX/Core/Inc/main.h	(revision 81)
@@ -58,4 +58,8 @@
 
 /* Private defines -----------------------------------------------------------*/
+#define USART_MODBUS_MASTER_RX_Pin GPIO_PIN_2
+#define USART_MODBUS_MASTER_RX_GPIO_Port GPIOE
+#define USART_MODBUS_MASTER_TX_Pin GPIO_PIN_3
+#define USART_MODBUS_MASTER_TX_GPIO_Port GPIOE
 #define TX1_LED_Pin GPIO_PIN_6
 #define TX1_LED_GPIO_Port GPIOE
@@ -96,4 +100,10 @@
 #define ETH_SPI_PWR_Pin GPIO_PIN_3
 #define ETH_SPI_PWR_GPIO_Port GPIOD
+#define USART_MODBUS_SLAVE_DE_Pin GPIO_PIN_4
+#define USART_MODBUS_SLAVE_DE_GPIO_Port GPIOD
+#define USART_MODBUS_SLAVE_TX_Pin GPIO_PIN_5
+#define USART_MODBUS_SLAVE_TX_GPIO_Port GPIOD
+#define USART_MODBUS_SLAVE_RX_Pin GPIO_PIN_6
+#define USART_MODBUS_SLAVE_RX_GPIO_Port GPIOD
 #define OUTPUT_ON_LED_Pin GPIO_PIN_7
 #define OUTPUT_ON_LED_GPIO_Port GPIOD
@@ -108,4 +118,6 @@
 #define TX2_LED_Pin GPIO_PIN_13
 #define TX2_LED_GPIO_Port GPIOG
+#define USART_MODBUS_MASTER_DE_Pin GPIO_PIN_14
+#define USART_MODBUS_MASTER_DE_GPIO_Port GPIOG
 #define BUZZER_Pin GPIO_PIN_15
 #define BUZZER_GPIO_Port GPIOG
Index: /ctrl/firmware/Main/CubeMX/Core/Inc/stm32h7xx_it.h
===================================================================
--- /ctrl/firmware/Main/CubeMX/Core/Inc/stm32h7xx_it.h	(revision 80)
+++ /ctrl/firmware/Main/CubeMX/Core/Inc/stm32h7xx_it.h	(revision 81)
@@ -61,4 +61,5 @@
 void TIM3_IRQHandler(void);
 void SPI2_IRQHandler(void);
+void USART2_IRQHandler(void);
 void USART3_IRQHandler(void);
 void TIM8_CC_IRQHandler(void);
@@ -66,4 +67,5 @@
 void TIM7_IRQHandler(void);
 void SPI4_IRQHandler(void);
+void USART10_IRQHandler(void);
 /* USER CODE BEGIN EFP */
 
Index: /ctrl/firmware/Main/CubeMX/Core/Inc/usart.h
===================================================================
--- /ctrl/firmware/Main/CubeMX/Core/Inc/usart.h	(revision 80)
+++ /ctrl/firmware/Main/CubeMX/Core/Inc/usart.h	(revision 81)
@@ -33,5 +33,9 @@
 /* USER CODE END Includes */
 
+extern UART_HandleTypeDef huart2;
+
 extern UART_HandleTypeDef huart3;
+
+extern UART_HandleTypeDef huart10;
 
 /* USER CODE BEGIN Private defines */
@@ -39,5 +43,7 @@
 /* USER CODE END Private defines */
 
+void MX_USART2_UART_Init(void);
 void MX_USART3_UART_Init(void);
+void MX_USART10_UART_Init(void);
 
 /* USER CODE BEGIN Prototypes */
Index: /ctrl/firmware/Main/CubeMX/Core/Src/gpio.c
===================================================================
--- /ctrl/firmware/Main/CubeMX/Core/Src/gpio.c	(revision 80)
+++ /ctrl/firmware/Main/CubeMX/Core/Src/gpio.c	(revision 81)
@@ -79,10 +79,8 @@
   HAL_GPIO_WritePin(ETH_SPI_RST_GPIO_Port, ETH_SPI_RST_Pin, GPIO_PIN_RESET);
 
-  /*Configure GPIO pins : PE2 PE3 PE4 PE5
-                           PE8 PE9 PE10 PE0
-                           PE1 */
-  GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5
-                          |GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_0
-                          |GPIO_PIN_1;
+  /*Configure GPIO pins : PE4 PE5 PE8 PE9
+                           PE10 PE0 PE1 */
+  GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_8|GPIO_PIN_9
+                          |GPIO_PIN_10|GPIO_PIN_0|GPIO_PIN_1;
   GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
   GPIO_InitStruct.Pull = GPIO_NOPULL;
@@ -167,8 +165,6 @@
   HAL_GPIO_Init(GSM_STATUS_GPIO_Port, &GPIO_InitStruct);
 
-  /*Configure GPIO pins : PD14 PD15 PD0 PD1
-                           PD4 PD5 PD6 */
-  GPIO_InitStruct.Pin = GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_0|GPIO_PIN_1
-                          |GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6;
+  /*Configure GPIO pins : PD14 PD15 PD0 PD1 */
+  GPIO_InitStruct.Pin = GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_0|GPIO_PIN_1;
   GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
   GPIO_InitStruct.Pull = GPIO_NOPULL;
@@ -176,7 +172,7 @@
 
   /*Configure GPIO pins : PG2 PG3 PG4 PG5
-                           PG6 PG7 PG8 PG14 */
+                           PG6 PG7 PG8 */
   GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5
-                          |GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_14;
+                          |GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8;
   GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
   GPIO_InitStruct.Pull = GPIO_NOPULL;
Index: /ctrl/firmware/Main/CubeMX/Core/Src/main.c
===================================================================
--- /ctrl/firmware/Main/CubeMX/Core/Src/main.c	(revision 80)
+++ /ctrl/firmware/Main/CubeMX/Core/Src/main.c	(revision 81)
@@ -62,4 +62,5 @@
 /* Private function prototypes -----------------------------------------------*/
 void SystemClock_Config(void);
+void PeriphCommonClock_Config(void);
 static void MPU_Config(void);
 void MX_FREERTOS_Init(void);
@@ -110,4 +111,7 @@
   /* Configure the system clock */
   SystemClock_Config();
+
+  /* Configure the peripherals common clocks */
+  PeriphCommonClock_Config();
 
   /* USER CODE BEGIN SysInit */
@@ -128,4 +132,6 @@
   MX_TIM8_Init();
   MX_SPI2_Init();
+  MX_USART2_UART_Init();
+  MX_USART10_UART_Init();
   /* USER CODE BEGIN 2 */
 
@@ -218,4 +224,32 @@
 }
 
+/**
+  * @brief Peripherals Common Clock Configuration
+  * @retval None
+  */
+void PeriphCommonClock_Config(void)
+{
+  RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
+
+  /** Initializes the peripherals clock
+  */
+  PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART10|RCC_PERIPHCLK_USART2
+                              |RCC_PERIPHCLK_USART3;
+  PeriphClkInitStruct.PLL3.PLL3M = 25;
+  PeriphClkInitStruct.PLL3.PLL3N = 200;
+  PeriphClkInitStruct.PLL3.PLL3P = 2;
+  PeriphClkInitStruct.PLL3.PLL3Q = 8;
+  PeriphClkInitStruct.PLL3.PLL3R = 2;
+  PeriphClkInitStruct.PLL3.PLL3RGE = RCC_PLL3VCIRANGE_0;
+  PeriphClkInitStruct.PLL3.PLL3VCOSEL = RCC_PLL3VCOMEDIUM;
+  PeriphClkInitStruct.PLL3.PLL3FRACN = 0;
+  PeriphClkInitStruct.Usart234578ClockSelection = RCC_USART234578CLKSOURCE_PLL3;
+  PeriphClkInitStruct.Usart16ClockSelection = RCC_USART16910CLKSOURCE_PLL3;
+  if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
+  {
+    Error_Handler();
+  }
+}
+
 /* USER CODE BEGIN 4 */
 
Index: /ctrl/firmware/Main/CubeMX/Core/Src/stm32h7xx_it.c
===================================================================
--- /ctrl/firmware/Main/CubeMX/Core/Src/stm32h7xx_it.c	(revision 80)
+++ /ctrl/firmware/Main/CubeMX/Core/Src/stm32h7xx_it.c	(revision 81)
@@ -70,5 +70,7 @@
 extern DMA_HandleTypeDef hdma_usart3_rx;
 extern DMA_HandleTypeDef hdma_usart3_tx;
+extern UART_HandleTypeDef huart2;
 extern UART_HandleTypeDef huart3;
+extern UART_HandleTypeDef huart10;
 extern TIM_HandleTypeDef htim7;
 
@@ -288,4 +290,18 @@
 
 /**
+  * @brief This function handles USART2 global interrupt.
+  */
+void USART2_IRQHandler(void)
+{
+  /* USER CODE BEGIN USART2_IRQn 0 */
+
+  /* USER CODE END USART2_IRQn 0 */
+  HAL_UART_IRQHandler(&huart2);
+  /* USER CODE BEGIN USART2_IRQn 1 */
+
+  /* USER CODE END USART2_IRQn 1 */
+}
+
+/**
   * @brief This function handles USART3 global interrupt.
   */
@@ -355,4 +371,18 @@
 
   /* USER CODE END SPI4_IRQn 1 */
+}
+
+/**
+  * @brief This function handles USART10 global interrupt.
+  */
+void USART10_IRQHandler(void)
+{
+  /* USER CODE BEGIN USART10_IRQn 0 */
+
+  /* USER CODE END USART10_IRQn 0 */
+  HAL_UART_IRQHandler(&huart10);
+  /* USER CODE BEGIN USART10_IRQn 1 */
+
+  /* USER CODE END USART10_IRQn 1 */
 }
 
Index: /ctrl/firmware/Main/CubeMX/Core/Src/usart.c
===================================================================
--- /ctrl/firmware/Main/CubeMX/Core/Src/usart.c	(revision 80)
+++ /ctrl/firmware/Main/CubeMX/Core/Src/usart.c	(revision 81)
@@ -25,8 +25,54 @@
 /* USER CODE END 0 */
 
+UART_HandleTypeDef huart2;
 UART_HandleTypeDef huart3;
+UART_HandleTypeDef huart10;
 DMA_HandleTypeDef hdma_usart3_rx;
 DMA_HandleTypeDef hdma_usart3_tx;
 
+/* USART2 init function */
+
+void MX_USART2_UART_Init(void)
+{
+
+  /* USER CODE BEGIN USART2_Init 0 */
+
+  /* USER CODE END USART2_Init 0 */
+
+  /* USER CODE BEGIN USART2_Init 1 */
+
+  /* USER CODE END USART2_Init 1 */
+  huart2.Instance = USART2;
+  huart2.Init.BaudRate = 115200;
+  huart2.Init.WordLength = UART_WORDLENGTH_8B;
+  huart2.Init.StopBits = UART_STOPBITS_1;
+  huart2.Init.Parity = UART_PARITY_NONE;
+  huart2.Init.Mode = UART_MODE_TX_RX;
+  huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+  huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+  huart2.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
+  huart2.Init.ClockPrescaler = UART_PRESCALER_DIV1;
+  huart2.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
+  if (HAL_RS485Ex_Init(&huart2, UART_DE_POLARITY_HIGH, 0, 0) != HAL_OK)
+  {
+    Error_Handler();
+  }
+  if (HAL_UARTEx_SetTxFifoThreshold(&huart2, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)
+  {
+    Error_Handler();
+  }
+  if (HAL_UARTEx_SetRxFifoThreshold(&huart2, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)
+  {
+    Error_Handler();
+  }
+  if (HAL_UARTEx_DisableFifoMode(&huart2) != HAL_OK)
+  {
+    Error_Handler();
+  }
+  /* USER CODE BEGIN USART2_Init 2 */
+
+  /* USER CODE END USART2_Init 2 */
+
+}
 /* USART3 init function */
 
@@ -75,4 +121,48 @@
 
 }
+/* USART10 init function */
+
+void MX_USART10_UART_Init(void)
+{
+
+  /* USER CODE BEGIN USART10_Init 0 */
+
+  /* USER CODE END USART10_Init 0 */
+
+  /* USER CODE BEGIN USART10_Init 1 */
+
+  /* USER CODE END USART10_Init 1 */
+  huart10.Instance = USART10;
+  huart10.Init.BaudRate = 115200;
+  huart10.Init.WordLength = UART_WORDLENGTH_8B;
+  huart10.Init.StopBits = UART_STOPBITS_1;
+  huart10.Init.Parity = UART_PARITY_NONE;
+  huart10.Init.Mode = UART_MODE_TX_RX;
+  huart10.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+  huart10.Init.OverSampling = UART_OVERSAMPLING_16;
+  huart10.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
+  huart10.Init.ClockPrescaler = UART_PRESCALER_DIV1;
+  huart10.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
+  if (HAL_RS485Ex_Init(&huart10, UART_DE_POLARITY_HIGH, 0, 0) != HAL_OK)
+  {
+    Error_Handler();
+  }
+  if (HAL_UARTEx_SetTxFifoThreshold(&huart10, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)
+  {
+    Error_Handler();
+  }
+  if (HAL_UARTEx_SetRxFifoThreshold(&huart10, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)
+  {
+    Error_Handler();
+  }
+  if (HAL_UARTEx_DisableFifoMode(&huart10) != HAL_OK)
+  {
+    Error_Handler();
+  }
+  /* USER CODE BEGIN USART10_Init 2 */
+
+  /* USER CODE END USART10_Init 2 */
+
+}
 
 void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
@@ -80,28 +170,37 @@
 
   GPIO_InitTypeDef GPIO_InitStruct = {0};
-  RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
-  if(uartHandle->Instance==USART3)
+  if(uartHandle->Instance==USART2)
+  {
+  /* USER CODE BEGIN USART2_MspInit 0 */
+
+  /* USER CODE END USART2_MspInit 0 */
+    /* USART2 clock enable */
+    __HAL_RCC_USART2_CLK_ENABLE();
+
+    __HAL_RCC_GPIOD_CLK_ENABLE();
+    /**USART2 GPIO Configuration
+    PD4     ------> USART2_DE
+    PD5     ------> USART2_TX
+    PD6     ------> USART2_RX
+    */
+    GPIO_InitStruct.Pin = USART_MODBUS_SLAVE_DE_Pin|USART_MODBUS_SLAVE_TX_Pin|USART_MODBUS_SLAVE_RX_Pin;
+    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+    GPIO_InitStruct.Pull = GPIO_NOPULL;
+    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+    GPIO_InitStruct.Alternate = GPIO_AF7_USART2;
+    HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
+
+    /* USART2 interrupt Init */
+    HAL_NVIC_SetPriority(USART2_IRQn, 5, 0);
+    HAL_NVIC_EnableIRQ(USART2_IRQn);
+  /* USER CODE BEGIN USART2_MspInit 1 */
+
+  /* USER CODE END USART2_MspInit 1 */
+  }
+  else if(uartHandle->Instance==USART3)
   {
   /* USER CODE BEGIN USART3_MspInit 0 */
 
   /* USER CODE END USART3_MspInit 0 */
-
-  /** Initializes the peripherals clock
-  */
-    PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART3;
-    PeriphClkInitStruct.PLL3.PLL3M = 25;
-    PeriphClkInitStruct.PLL3.PLL3N = 200;
-    PeriphClkInitStruct.PLL3.PLL3P = 2;
-    PeriphClkInitStruct.PLL3.PLL3Q = 8;
-    PeriphClkInitStruct.PLL3.PLL3R = 2;
-    PeriphClkInitStruct.PLL3.PLL3RGE = RCC_PLL3VCIRANGE_0;
-    PeriphClkInitStruct.PLL3.PLL3VCOSEL = RCC_PLL3VCOMEDIUM;
-    PeriphClkInitStruct.PLL3.PLL3FRACN = 0;
-    PeriphClkInitStruct.Usart234578ClockSelection = RCC_USART234578CLKSOURCE_PLL3;
-    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
-    {
-      Error_Handler();
-    }
-
     /* USART3 clock enable */
     __HAL_RCC_USART3_CLK_ENABLE();
@@ -165,4 +264,47 @@
   /* USER CODE END USART3_MspInit 1 */
   }
+  else if(uartHandle->Instance==USART10)
+  {
+  /* USER CODE BEGIN USART10_MspInit 0 */
+
+  /* USER CODE END USART10_MspInit 0 */
+    /* USART10 clock enable */
+    __HAL_RCC_USART10_CLK_ENABLE();
+
+    __HAL_RCC_GPIOE_CLK_ENABLE();
+    __HAL_RCC_GPIOG_CLK_ENABLE();
+    /**USART10 GPIO Configuration
+    PE2     ------> USART10_RX
+    PE3     ------> USART10_TX
+    PG14     ------> USART10_DE
+    */
+    GPIO_InitStruct.Pin = USART_MODBUS_MASTER_RX_Pin;
+    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+    GPIO_InitStruct.Pull = GPIO_NOPULL;
+    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+    GPIO_InitStruct.Alternate = GPIO_AF4_USART10;
+    HAL_GPIO_Init(USART_MODBUS_MASTER_RX_GPIO_Port, &GPIO_InitStruct);
+
+    GPIO_InitStruct.Pin = USART_MODBUS_MASTER_TX_Pin;
+    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+    GPIO_InitStruct.Pull = GPIO_NOPULL;
+    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+    GPIO_InitStruct.Alternate = GPIO_AF11_USART10;
+    HAL_GPIO_Init(USART_MODBUS_MASTER_TX_GPIO_Port, &GPIO_InitStruct);
+
+    GPIO_InitStruct.Pin = USART_MODBUS_MASTER_DE_Pin;
+    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+    GPIO_InitStruct.Pull = GPIO_NOPULL;
+    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+    GPIO_InitStruct.Alternate = GPIO_AF4_USART10;
+    HAL_GPIO_Init(USART_MODBUS_MASTER_DE_GPIO_Port, &GPIO_InitStruct);
+
+    /* USART10 interrupt Init */
+    HAL_NVIC_SetPriority(USART10_IRQn, 5, 0);
+    HAL_NVIC_EnableIRQ(USART10_IRQn);
+  /* USER CODE BEGIN USART10_MspInit 1 */
+
+  /* USER CODE END USART10_MspInit 1 */
+  }
 }
 
@@ -170,5 +312,26 @@
 {
 
-  if(uartHandle->Instance==USART3)
+  if(uartHandle->Instance==USART2)
+  {
+  /* USER CODE BEGIN USART2_MspDeInit 0 */
+
+  /* USER CODE END USART2_MspDeInit 0 */
+    /* Peripheral clock disable */
+    __HAL_RCC_USART2_CLK_DISABLE();
+
+    /**USART2 GPIO Configuration
+    PD4     ------> USART2_DE
+    PD5     ------> USART2_TX
+    PD6     ------> USART2_RX
+    */
+    HAL_GPIO_DeInit(GPIOD, USART_MODBUS_SLAVE_DE_Pin|USART_MODBUS_SLAVE_TX_Pin|USART_MODBUS_SLAVE_RX_Pin);
+
+    /* USART2 interrupt Deinit */
+    HAL_NVIC_DisableIRQ(USART2_IRQn);
+  /* USER CODE BEGIN USART2_MspDeInit 1 */
+
+  /* USER CODE END USART2_MspDeInit 1 */
+  }
+  else if(uartHandle->Instance==USART3)
   {
   /* USER CODE BEGIN USART3_MspDeInit 0 */
@@ -196,4 +359,27 @@
   /* USER CODE END USART3_MspDeInit 1 */
   }
+  else if(uartHandle->Instance==USART10)
+  {
+  /* USER CODE BEGIN USART10_MspDeInit 0 */
+
+  /* USER CODE END USART10_MspDeInit 0 */
+    /* Peripheral clock disable */
+    __HAL_RCC_USART10_CLK_DISABLE();
+
+    /**USART10 GPIO Configuration
+    PE2     ------> USART10_RX
+    PE3     ------> USART10_TX
+    PG14     ------> USART10_DE
+    */
+    HAL_GPIO_DeInit(GPIOE, USART_MODBUS_MASTER_RX_Pin|USART_MODBUS_MASTER_TX_Pin);
+
+    HAL_GPIO_DeInit(USART_MODBUS_MASTER_DE_GPIO_Port, USART_MODBUS_MASTER_DE_Pin);
+
+    /* USART10 interrupt Deinit */
+    HAL_NVIC_DisableIRQ(USART10_IRQn);
+  /* USER CODE BEGIN USART10_MspDeInit 1 */
+
+  /* USER CODE END USART10_MspDeInit 1 */
+  }
 }
 
Index: /ctrl/firmware/Main/CubeMX/charger.ioc
===================================================================
--- /ctrl/firmware/Main/CubeMX/charger.ioc	(revision 80)
+++ /ctrl/firmware/Main/CubeMX/charger.ioc	(revision 81)
@@ -209,5 +209,7 @@
 Mcu.IP13=TIM3
 Mcu.IP14=TIM8
-Mcu.IP15=USART3
+Mcu.IP15=USART2
+Mcu.IP16=USART3
+Mcu.IP17=USART10
 Mcu.IP2=DMA
 Mcu.IP3=FATFS
@@ -218,62 +220,68 @@
 Mcu.IP8=RTC
 Mcu.IP9=SDMMC1
-Mcu.IPNb=16
+Mcu.IPNb=18
 Mcu.Name=STM32H723ZETx
 Mcu.Package=LQFP144
-Mcu.Pin0=PE6
-Mcu.Pin1=PC14-OSC32_IN
-Mcu.Pin10=PE12
-Mcu.Pin11=PE13
-Mcu.Pin12=PE14
-Mcu.Pin13=PE15
-Mcu.Pin14=PB10
-Mcu.Pin15=PB14
-Mcu.Pin16=PB15
-Mcu.Pin17=PD8
-Mcu.Pin18=PD9
-Mcu.Pin19=PD10
-Mcu.Pin2=PC15-OSC32_OUT
-Mcu.Pin20=PD11
-Mcu.Pin21=PD12
-Mcu.Pin22=PD13
-Mcu.Pin23=PC6
-Mcu.Pin24=PC7
-Mcu.Pin25=PC8
-Mcu.Pin26=PC9
-Mcu.Pin27=PA8
-Mcu.Pin28=PA13(JTMS/SWDIO)
-Mcu.Pin29=PA14(JTCK/SWCLK)
-Mcu.Pin3=PH0-OSC_IN
-Mcu.Pin30=PC10
-Mcu.Pin31=PC11
-Mcu.Pin32=PC12
-Mcu.Pin33=PD2
-Mcu.Pin34=PD3
-Mcu.Pin35=PD7
-Mcu.Pin36=PG9
-Mcu.Pin37=PG10
-Mcu.Pin38=PG11
-Mcu.Pin39=PG12
-Mcu.Pin4=PH1-OSC_OUT
-Mcu.Pin40=PG13
-Mcu.Pin41=PG15
-Mcu.Pin42=PB4(NJTRST)
-Mcu.Pin43=PB8
-Mcu.Pin44=PB9
-Mcu.Pin45=VP_FATFS_VS_SDIO
-Mcu.Pin46=VP_FREERTOS_VS_CMSIS_V2
-Mcu.Pin47=VP_RTC_VS_RTC_Activate
-Mcu.Pin48=VP_RTC_VS_RTC_Calendar
-Mcu.Pin49=VP_SYS_VS_tim7
-Mcu.Pin5=PF15
-Mcu.Pin50=VP_TIM3_VS_ClockSourceINT
-Mcu.Pin51=VP_TIM8_VS_ControllerModeReset
-Mcu.Pin52=VP_TIM8_VS_ClockSourceINT
-Mcu.Pin53=VP_MEMORYMAP_VS_MEMORYMAP
-Mcu.Pin6=PG0
-Mcu.Pin7=PG1
-Mcu.Pin8=PE7
-Mcu.Pin9=PE11
-Mcu.PinsNb=54
+Mcu.Pin0=PE2
+Mcu.Pin1=PE3
+Mcu.Pin10=PE7
+Mcu.Pin11=PE11
+Mcu.Pin12=PE12
+Mcu.Pin13=PE13
+Mcu.Pin14=PE14
+Mcu.Pin15=PE15
+Mcu.Pin16=PB10
+Mcu.Pin17=PB14
+Mcu.Pin18=PB15
+Mcu.Pin19=PD8
+Mcu.Pin2=PE6
+Mcu.Pin20=PD9
+Mcu.Pin21=PD10
+Mcu.Pin22=PD11
+Mcu.Pin23=PD12
+Mcu.Pin24=PD13
+Mcu.Pin25=PC6
+Mcu.Pin26=PC7
+Mcu.Pin27=PC8
+Mcu.Pin28=PC9
+Mcu.Pin29=PA8
+Mcu.Pin3=PC14-OSC32_IN
+Mcu.Pin30=PA13(JTMS/SWDIO)
+Mcu.Pin31=PA14(JTCK/SWCLK)
+Mcu.Pin32=PC10
+Mcu.Pin33=PC11
+Mcu.Pin34=PC12
+Mcu.Pin35=PD2
+Mcu.Pin36=PD3
+Mcu.Pin37=PD4
+Mcu.Pin38=PD5
+Mcu.Pin39=PD6
+Mcu.Pin4=PC15-OSC32_OUT
+Mcu.Pin40=PD7
+Mcu.Pin41=PG9
+Mcu.Pin42=PG10
+Mcu.Pin43=PG11
+Mcu.Pin44=PG12
+Mcu.Pin45=PG13
+Mcu.Pin46=PG14
+Mcu.Pin47=PG15
+Mcu.Pin48=PB4(NJTRST)
+Mcu.Pin49=PB8
+Mcu.Pin5=PH0-OSC_IN
+Mcu.Pin50=PB9
+Mcu.Pin51=VP_FATFS_VS_SDIO
+Mcu.Pin52=VP_FREERTOS_VS_CMSIS_V2
+Mcu.Pin53=VP_RTC_VS_RTC_Activate
+Mcu.Pin54=VP_RTC_VS_RTC_Calendar
+Mcu.Pin55=VP_SYS_VS_tim7
+Mcu.Pin56=VP_TIM3_VS_ClockSourceINT
+Mcu.Pin57=VP_TIM8_VS_ControllerModeReset
+Mcu.Pin58=VP_TIM8_VS_ClockSourceINT
+Mcu.Pin59=VP_MEMORYMAP_VS_MEMORYMAP
+Mcu.Pin6=PH1-OSC_OUT
+Mcu.Pin7=PF15
+Mcu.Pin8=PG0
+Mcu.Pin9=PG1
+Mcu.PinsNb=60
 Mcu.ThirdParty0=STMicroelectronics.X-CUBE-AZRTOS-H7.3.3.0
 Mcu.ThirdPartyNb=1
@@ -309,4 +317,6 @@
 NVIC.TimeBase=TIM7_IRQn
 NVIC.TimeBaseIP=TIM7
+NVIC.USART10_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
+NVIC.USART2_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
 NVIC.USART3_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
 NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false
@@ -394,4 +404,19 @@
 PD3.PinState=GPIO_PIN_SET
 PD3.Signal=GPIO_Output
+PD4.GPIOParameters=GPIO_Label
+PD4.GPIO_Label=USART_MODBUS_SLAVE_DE
+PD4.Locked=true
+PD4.Mode=Hardware Flow Control (RS485)
+PD4.Signal=USART2_DE
+PD5.GPIOParameters=GPIO_Label
+PD5.GPIO_Label=USART_MODBUS_SLAVE_TX
+PD5.Locked=true
+PD5.Mode=Asynchronous
+PD5.Signal=USART2_TX
+PD6.GPIOParameters=GPIO_Label
+PD6.GPIO_Label=USART_MODBUS_SLAVE_RX
+PD6.Locked=true
+PD6.Mode=Asynchronous
+PD6.Signal=USART2_RX
 PD7.GPIOParameters=GPIO_Label
 PD7.GPIO_Label=OUTPUT_ON_LED
@@ -428,4 +453,12 @@
 PE15.PinState=GPIO_PIN_RESET
 PE15.Signal=GPIO_Output
+PE2.GPIOParameters=GPIO_Label
+PE2.GPIO_Label=USART_MODBUS_MASTER_RX
+PE2.Mode=Asynchronous
+PE2.Signal=USART10_RX
+PE3.GPIOParameters=GPIO_Label
+PE3.GPIO_Label=USART_MODBUS_MASTER_TX
+PE3.Mode=Asynchronous
+PE3.Signal=USART10_TX
 PE6.GPIOParameters=GPIO_Label
 PE6.GPIO_Label=TX1_LED
@@ -464,4 +497,8 @@
 PG13.Locked=true
 PG13.Signal=GPIO_Output
+PG14.GPIOParameters=GPIO_Label
+PG14.GPIO_Label=USART_MODBUS_MASTER_DE
+PG14.Mode=Hardware Flow Control (RS485)
+PG14.Signal=USART10_DE
 PG15.GPIOParameters=GPIO_Label
 PG15.GPIO_Label=BUZZER
@@ -507,5 +544,5 @@
 ProjectManager.UAScriptBeforePath=
 ProjectManager.UnderRoot=true
-ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-MX_DMA_Init-DMA-false-HAL-true,3-MX_RTC_Init-RTC-false-HAL-true,4-MX_SPI4_Init-SPI4-false-HAL-true,5-MX_SDMMC1_SD_Init-SDMMC1-false-HAL-true,6-MX_USART3_UART_Init-USART3-false-HAL-true,7-MX_TIM3_Init-TIM3-false-HAL-true,8-SystemClock_Config-RCC-false-HAL-false,9-MX_FATFS_Init-FATFS-false-HAL-false,10-MX_TIM8_Init-TIM8-false-HAL-true,11-MX_SPI2_Init-SPI2-false-HAL-true,0-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true
+ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-MX_DMA_Init-DMA-false-HAL-true,3-MX_RTC_Init-RTC-false-HAL-true,4-MX_SPI4_Init-SPI4-false-HAL-true,5-MX_SDMMC1_SD_Init-SDMMC1-false-HAL-true,6-MX_USART3_UART_Init-USART3-false-HAL-true,7-MX_TIM3_Init-TIM3-false-HAL-true,8-SystemClock_Config-RCC-false-HAL-false,9-MX_FATFS_Init-FATFS-false-HAL-false,10-MX_TIM8_Init-TIM8-false-HAL-true,11-MX_SPI2_Init-SPI2-false-HAL-true,12-MX_USART2_UART_Init-USART2-false-HAL-true,13-MX_USART10_UART_Init-USART10-false-HAL-true,0-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true
 RCC.ADCFreq_Value=125000000
 RCC.AHB12Freq_Value=100000000
@@ -548,5 +585,5 @@
 RCC.I2C123Freq_Value=100000000
 RCC.I2C4Freq_Value=100000000
-RCC.IPParameters=ADCFreq_Value,AHB12Freq_Value,AHB4Freq_Value,APB1Freq_Value,APB2Freq_Value,APB3Freq_Value,APB4Freq_Value,AXIClockFreq_Value,CECFreq_Value,CKPERFreq_Value,CortexFreq_Value,CpuClockFreq_Value,D1CPREFreq_Value,DFSDMACLkFreq_Value,DFSDMFreq_Value,DIVM1,DIVM2,DIVM3,DIVN1,DIVN2,DIVN3,DIVP1Freq_Value,DIVP2Freq_Value,DIVP3Freq_Value,DIVQ1Freq_Value,DIVQ2,DIVQ2Freq_Value,DIVQ3,DIVQ3Freq_Value,DIVR1Freq_Value,DIVR2,DIVR2Freq_Value,DIVR3Freq_Value,FDCANFreq_Value,FMCFreq_Value,FamilyName,HCLK3ClockFreq_Value,HCLKFreq_Value,I2C123Freq_Value,I2C4Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPTIM345Freq_Value,LPUART1Freq_Value,LTDCFreq_Value,MCO1PinFreq_Value,MCO2PinFreq_Value,PLL2FRACN,PLLFRACN,PLLSourceVirtual,QSPIFreq_Value,RNGFreq_Value,RTCClockSelection,RTCFreq_Value,SAI1Freq_Value,SAI4AFreq_Value,SAI4BFreq_Value,SDMMCFreq_Value,SPDIFRXFreq_Value,SPI123CLockSelection,SPI123Freq_Value,SPI45Freq_Value,SPI6Freq_Value,SWPMI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,Spi45ClockSelection,Tim1OutputFreq_Value,Tim2OutputFreq_Value,TraceFreq_Value,USART16Freq_Value,USART234578CLockSelection,USART234578Freq_Value,USBFreq_Value,VCO1OutputFreq_Value,VCO2OutputFreq_Value,VCO3OutputFreq_Value,VCOInput1Freq_Value,VCOInput2Freq_Value,VCOInput3Freq_Value
+RCC.IPParameters=ADCFreq_Value,AHB12Freq_Value,AHB4Freq_Value,APB1Freq_Value,APB2Freq_Value,APB3Freq_Value,APB4Freq_Value,AXIClockFreq_Value,CECFreq_Value,CKPERFreq_Value,CortexFreq_Value,CpuClockFreq_Value,D1CPREFreq_Value,DFSDMACLkFreq_Value,DFSDMFreq_Value,DIVM1,DIVM2,DIVM3,DIVN1,DIVN2,DIVN3,DIVP1Freq_Value,DIVP2Freq_Value,DIVP3Freq_Value,DIVQ1Freq_Value,DIVQ2,DIVQ2Freq_Value,DIVQ3,DIVQ3Freq_Value,DIVR1Freq_Value,DIVR2,DIVR2Freq_Value,DIVR3Freq_Value,FDCANFreq_Value,FMCFreq_Value,FamilyName,HCLK3ClockFreq_Value,HCLKFreq_Value,I2C123Freq_Value,I2C4Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPTIM345Freq_Value,LPUART1Freq_Value,LTDCFreq_Value,MCO1PinFreq_Value,MCO2PinFreq_Value,PLL2FRACN,PLLFRACN,PLLSourceVirtual,QSPIFreq_Value,RNGFreq_Value,RTCClockSelection,RTCFreq_Value,SAI1Freq_Value,SAI4AFreq_Value,SAI4BFreq_Value,SDMMCFreq_Value,SPDIFRXFreq_Value,SPI123CLockSelection,SPI123Freq_Value,SPI45Freq_Value,SPI6Freq_Value,SWPMI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,Spi45ClockSelection,Tim1OutputFreq_Value,Tim2OutputFreq_Value,TraceFreq_Value,USART16CLockSelection,USART16Freq_Value,USART234578CLockSelection,USART234578Freq_Value,USBFreq_Value,VCO1OutputFreq_Value,VCO2OutputFreq_Value,VCO3OutputFreq_Value,VCOInput1Freq_Value,VCOInput2Freq_Value,VCOInput3Freq_Value
 RCC.LPTIM1Freq_Value=100000000
 RCC.LPTIM2Freq_Value=100000000
@@ -579,5 +616,6 @@
 RCC.Tim2OutputFreq_Value=100000000
 RCC.TraceFreq_Value=100000000
-RCC.USART16Freq_Value=100000000
+RCC.USART16CLockSelection=RCC_USART16910CLKSOURCE_PLL3
+RCC.USART16Freq_Value=25000000
 RCC.USART234578CLockSelection=RCC_USART234578CLKSOURCE_PLL3
 RCC.USART234578Freq_Value=25000000
@@ -600,11 +638,11 @@
 SH.S_TIM8_CH1.1=TIM8_CH1,TriggerSource_TI1FP1
 SH.S_TIM8_CH1.ConfNb=2
-SPI2.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_2
-SPI2.CalculateBaudRate=62.5 MBits/s
+SPI2.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_256
+SPI2.CalculateBaudRate=488.281 KBits/s
 SPI2.DataSize=SPI_DATASIZE_8BIT
 SPI2.Direction=SPI_DIRECTION_2LINES
 SPI2.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,DataSize,MasterInterDataIdleness,MasterSSIdleness,MasterKeepIOState,BaudRatePrescaler
 SPI2.MasterInterDataIdleness=SPI_MASTER_INTERDATA_IDLENESS_01CYCLE
-SPI2.MasterKeepIOState=SPI_MASTER_KEEP_IO_STATE_DISABLE
+SPI2.MasterKeepIOState=SPI_MASTER_KEEP_IO_STATE_ENABLE
 SPI2.MasterSSIdleness=SPI_MASTER_SS_IDLENESS_00CYCLE
 SPI2.Mode=SPI_MODE_MASTER
@@ -653,4 +691,10 @@
 TIM8.Period=65536 - 1
 TIM8.Prescaler=32 - 1
+USART10.IPParameters=VirtualMode-Asynchronous,VirtualMode-Hardware Flow Control (RS485)
+USART10.VirtualMode-Asynchronous=VM_ASYNC
+USART10.VirtualMode-Hardware\ Flow\ Control\ (RS485)=VM_ASYNC
+USART2.IPParameters=VirtualMode-Asynchronous,VirtualMode-Hardware Flow Control (RS485)
+USART2.VirtualMode-Asynchronous=VM_ASYNC
+USART2.VirtualMode-Hardware\ Flow\ Control\ (RS485)=VM_ASYNC
 USART3.DMADisableonRxErrorParam=ADVFEATURE_DMA_DISABLEONRXERROR
 USART3.IPParameters=VirtualMode-Asynchronous,SwapParam,DMADisableonRxErrorParam
