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:
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