tdse-tf_3-02

Controlador PID para derretidor de miel con control local via botones y remoto via WiFi
Index Commits Files Refs Submodules README
commit a55880d4e8e884777883fb60972f15868ed9dc6f
parent e9012264d24f513b8e9026f0f5093775fd44da09
Author: Martin Kloeckner <mjkloeckner@gmail.com>
Date:   Sun, 12 Apr 2026 16:51:23 -0300

Habilitar USART3 para comunicarse con modulo remoto

Diffstat:
Mfirmware-nucleo/Core/Inc/main.h | 9+++++----
Mfirmware-nucleo/Core/Src/main.c | 40++++++++++++++++++++++++++++++++++++++--
Mfirmware-nucleo/Core/Src/stm32f1xx_hal_msp.c | 46++++++++++++++++++++++++++++++++++++++++++++++
Mfirmware-nucleo/tdse-tf_3-02.ioc | 41+++++++++++++++++++++++++----------------
4 files changed, 114 insertions(+), 22 deletions(-)
diff --git a/firmware-nucleo/Core/Inc/main.h b/firmware-nucleo/Core/Inc/main.h
@@ -36,6 +36,7 @@ extern RTC_HandleTypeDef hrtc;
 extern TIM_HandleTypeDef htim1;
 extern TIM_HandleTypeDef htim3;
 extern UART_HandleTypeDef huart1;
+extern UART_HandleTypeDef huart3;
 
 extern RTC_TimeTypeDef s_time;
 extern RTC_DateTypeDef s_date;
@@ -71,10 +72,10 @@ void Error_Handler(void);
 #define BTN_A_Pin GPIO_PIN_13
 #define BTN_A_GPIO_Port GPIOC
 #define BTN_A_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_GPIO_Port GPIOA
+#define USART2_TX_Pin GPIO_PIN_2
+#define USART2_TX_GPIO_Port GPIOA
+#define USART2_RX_Pin GPIO_PIN_3
+#define USART2_RX_GPIO_Port GPIOA
 #define LD2_Pin GPIO_PIN_5
 #define LD2_GPIO_Port GPIOA
 #define BTN_B_Pin GPIO_PIN_10
diff --git a/firmware-nucleo/Core/Src/main.c b/firmware-nucleo/Core/Src/main.c
@@ -53,6 +53,7 @@ TIM_HandleTypeDef htim1;
 TIM_HandleTypeDef htim3;
 
 UART_HandleTypeDef huart1;
+UART_HandleTypeDef huart3;
 DMA_HandleTypeDef hdma_usart1_tx;
 DMA_HandleTypeDef hdma_usart1_rx;
 
@@ -69,6 +70,7 @@ static void MX_I2C1_Init(void);
 static void MX_TIM1_Init(void);
 static void MX_USART1_UART_Init(void);
 static void MX_TIM3_Init(void);
+static void MX_USART3_UART_Init(void);
 /* USER CODE BEGIN PFP */
 
 /* USER CODE END PFP */
@@ -121,6 +123,7 @@ int main(void)
   MX_TIM1_Init();
   MX_USART1_UART_Init();
   MX_TIM3_Init();
+  MX_USART3_UART_Init();
   /* USER CODE BEGIN 2 */
 
     /* Application Init */
@@ -454,6 +457,39 @@ static void MX_USART1_UART_Init(void)
 }
 
 /**
+  * @brief USART3 Initialization Function
+  * @param None
+  * @retval None
+  */
+static void MX_USART3_UART_Init(void)
+{
+
+  /* USER CODE BEGIN USART3_Init 0 */
+
+  /* USER CODE END USART3_Init 0 */
+
+  /* USER CODE BEGIN USART3_Init 1 */
+
+  /* USER CODE END USART3_Init 1 */
+  huart3.Instance = USART3;
+  huart3.Init.BaudRate = 115200;
+  huart3.Init.WordLength = UART_WORDLENGTH_8B;
+  huart3.Init.StopBits = UART_STOPBITS_1;
+  huart3.Init.Parity = UART_PARITY_NONE;
+  huart3.Init.Mode = UART_MODE_TX_RX;
+  huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+  huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+  if (HAL_UART_Init(&huart3) != HAL_OK)
+  {
+    Error_Handler();
+  }
+  /* USER CODE BEGIN USART3_Init 2 */
+
+  /* USER CODE END USART3_Init 2 */
+
+}
+
+/**
   * Enable DMA controller clock
   */
 static void MX_DMA_Init(void)
@@ -501,8 +537,8 @@ static void MX_GPIO_Init(void)
   GPIO_InitStruct.Pull = GPIO_NOPULL;
   HAL_GPIO_Init(BTN_A_GPIO_Port, &GPIO_InitStruct);
 
-  /*Configure GPIO pins : USART_TX_Pin USART_RX_Pin */
-  GPIO_InitStruct.Pin = USART_TX_Pin|USART_RX_Pin;
+  /*Configure GPIO pins : USART2_TX_Pin USART2_RX_Pin */
+  GPIO_InitStruct.Pin = USART2_TX_Pin|USART2_RX_Pin;
   GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
   HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
diff --git a/firmware-nucleo/Core/Src/stm32f1xx_hal_msp.c b/firmware-nucleo/Core/Src/stm32f1xx_hal_msp.c
@@ -406,7 +406,35 @@ void HAL_UART_MspInit(UART_HandleTypeDef* huart)
     /* USER CODE BEGIN USART1_MspInit 1 */
 
     /* USER CODE END USART1_MspInit 1 */
+  }
+  else if(huart->Instance==USART3)
+  {
+    /* USER CODE BEGIN USART3_MspInit 0 */
+
+    /* USER CODE END USART3_MspInit 0 */
+    /* Peripheral clock enable */
+    __HAL_RCC_USART3_CLK_ENABLE();
+
+    __HAL_RCC_GPIOC_CLK_ENABLE();
+    /**USART3 GPIO Configuration
+    PC10     ------> USART3_TX
+    PC11     ------> USART3_RX
+    */
+    GPIO_InitStruct.Pin = GPIO_PIN_10;
+    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
+    HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+    GPIO_InitStruct.Pin = GPIO_PIN_11;
+    GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+    GPIO_InitStruct.Pull = GPIO_NOPULL;
+    HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
+
+    __HAL_AFIO_REMAP_USART3_PARTIAL();
 
+    /* USER CODE BEGIN USART3_MspInit 1 */
+
+    /* USER CODE END USART3_MspInit 1 */
   }
 
 }
@@ -442,6 +470,24 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
 
     /* USER CODE END USART1_MspDeInit 1 */
   }
+  else if(huart->Instance==USART3)
+  {
+    /* USER CODE BEGIN USART3_MspDeInit 0 */
+
+    /* USER CODE END USART3_MspDeInit 0 */
+    /* Peripheral clock disable */
+    __HAL_RCC_USART3_CLK_DISABLE();
+
+    /**USART3 GPIO Configuration
+    PC10     ------> USART3_TX
+    PC11     ------> USART3_RX
+    */
+    HAL_GPIO_DeInit(GPIOC, GPIO_PIN_10|GPIO_PIN_11);
+
+    /* USER CODE BEGIN USART3_MspDeInit 1 */
+
+    /* USER CODE END USART3_MspDeInit 1 */
+  }
 
 }
 
diff --git a/firmware-nucleo/tdse-tf_3-02.ioc b/firmware-nucleo/tdse-tf_3-02.ioc
@@ -47,7 +47,8 @@ Mcu.IP5=SYS
 Mcu.IP6=TIM1
 Mcu.IP7=TIM3
 Mcu.IP8=USART1
-Mcu.IPNb=9
+Mcu.IP9=USART3
+Mcu.IPNb=10
 Mcu.Name=STM32F103R(8-B)Tx
 Mcu.Package=LQFP64
 Mcu.Pin0=PC13-TAMPER-RTC
@@ -57,18 +58,20 @@ Mcu.Pin11=PA9
 Mcu.Pin12=PA10
 Mcu.Pin13=PA13
 Mcu.Pin14=PA14
-Mcu.Pin15=PB3
-Mcu.Pin16=PB4
-Mcu.Pin17=PB5
-Mcu.Pin18=PB8
-Mcu.Pin19=PB9
+Mcu.Pin15=PC10
+Mcu.Pin16=PC11
+Mcu.Pin17=PB3
+Mcu.Pin18=PB4
+Mcu.Pin19=PB5
 Mcu.Pin2=PC15-OSC32_OUT
-Mcu.Pin20=VP_RTC_VS_RTC_Activate
-Mcu.Pin21=VP_RTC_VS_RTC_Calendar
-Mcu.Pin22=VP_RTC_No_RTC_Output
-Mcu.Pin23=VP_SYS_VS_Systick
-Mcu.Pin24=VP_TIM1_VS_ClockSourceINT
-Mcu.Pin25=VP_TIM3_VS_ClockSourceINT
+Mcu.Pin20=PB8
+Mcu.Pin21=PB9
+Mcu.Pin22=VP_RTC_VS_RTC_Activate
+Mcu.Pin23=VP_RTC_VS_RTC_Calendar
+Mcu.Pin24=VP_RTC_No_RTC_Output
+Mcu.Pin25=VP_SYS_VS_Systick
+Mcu.Pin26=VP_TIM1_VS_ClockSourceINT
+Mcu.Pin27=VP_TIM3_VS_ClockSourceINT
 Mcu.Pin3=PD0-OSC_IN
 Mcu.Pin4=PD1-OSC_OUT
 Mcu.Pin5=PA2
@@ -76,7 +79,7 @@ Mcu.Pin6=PA3
 Mcu.Pin7=PA5
 Mcu.Pin8=PA6
 Mcu.Pin9=PB10
-Mcu.PinsNb=26
+Mcu.PinsNb=28
 Mcu.ThirdPartyNb=0
 Mcu.UserConstants=
 Mcu.UserName=STM32F103RBTx
@@ -115,14 +118,14 @@ 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_Label=USART2_TX
 PA2.GPIO_Mode=GPIO_MODE_AF_PP
 PA2.GPIO_PuPd=GPIO_NOPULL
 PA2.GPIO_Speed=GPIO_SPEED_FREQ_LOW
 PA2.Locked=true
 PA2.Signal=USART2_TX
 PA3.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Label,GPIO_Mode
-PA3.GPIO_Label=USART_RX
+PA3.GPIO_Label=USART2_RX
 PA3.GPIO_Mode=GPIO_MODE_AF_PP
 PA3.GPIO_PuPd=GPIO_NOPULL
 PA3.GPIO_Speed=GPIO_SPEED_FREQ_LOW
@@ -165,6 +168,10 @@ PB8.Signal=I2C1_SCL
 PB9.Locked=true
 PB9.Mode=I2C
 PB9.Signal=I2C1_SDA
+PC10.Mode=Asynchronous
+PC10.Signal=USART3_TX
+PC11.Mode=Asynchronous
+PC11.Signal=USART3_RX
 PC13-TAMPER-RTC.GPIOParameters=GPIO_PuPd,GPIO_Label
 PC13-TAMPER-RTC.GPIO_Label=BTN_A
 PC13-TAMPER-RTC.GPIO_PuPd=GPIO_NOPULL
@@ -214,7 +221,7 @@ 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_DMA_Init-DMA-false-HAL-true,4-MX_RTC_Init-RTC-false-HAL-true,5-MX_I2C1_Init-I2C1-false-HAL-true,6-MX_TIM1_Init-TIM1-false-HAL-true,7-MX_USART1_UART_Init-USART1-false-HAL-true,8-MX_TIM3_Init-TIM3-false-HAL-true
+ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_RTC_Init-RTC-false-HAL-true,5-MX_I2C1_Init-I2C1-false-HAL-true,6-MX_TIM1_Init-TIM1-false-HAL-true,7-MX_USART1_UART_Init-USART1-false-HAL-true,8-MX_TIM3_Init-TIM3-false-HAL-true,9-MX_USART2_UART_Init-USART2-false-HAL-true
 RCC.ADCFreqValue=32000000
 RCC.AHBFreq_Value=64000000
 RCC.APB1CLKDivider=RCC_HCLK_DIV2
@@ -256,6 +263,8 @@ TIM3.Period=8000
 TIM3.Pulse-PWM\ Generation1\ CH1=4000
 USART1.IPParameters=VirtualMode
 USART1.VirtualMode=VM_ASYNC
+USART3.IPParameters=VirtualMode
+USART3.VirtualMode=VM_ASYNC
 VP_RTC_No_RTC_Output.Mode=RTC_OUT_NO
 VP_RTC_No_RTC_Output.Signal=RTC_No_RTC_Output
 VP_RTC_VS_RTC_Activate.Mode=RTC_Enabled