cancel
Showing results for 
Search instead for 
Did you mean: 

PuTTy not receiving data from UART

pb33
Associate II

Hello, 

 

I am using the STMH753ZI chip on the nucleo 144 board. I cannot figure out why my UART code will not show what I am typing in my putty terminal. Attached is my main.c. Thanks. 

/* USER CODE BEGIN Header */ /** ****************************************************************************** * @file : main.c * @brief : Main program body ****************************************************************************** * @attention * * Copyright (c) 2025 STMicroelectronics. * All rights reserved. * * This software is licensed under terms that can be found in the LICENSE file * in the root directory of this software component. * If no LICENSE file comes with this software, it is provided AS-IS. * ****************************************************************************** */ /* USER CODE END Header */ /* Includes ------------------------------------------------------------------*/ #include "main.h" #include "uart.h" /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ #include "initializer.h" #include "string.h" /* USER CODE END Includes */ /* Private typedef -----------------------------------------------------------*/ /* USER CODE BEGIN PTD */ /* USER CODE END PTD */ /* Private define ------------------------------------------------------------*/ /* USER CODE BEGIN PD */ /* USER CODE END PD */ /* Private macro -------------------------------------------------------------*/ /* USER CODE BEGIN PM */ /* USER CODE END PM */ /* Private variables ---------------------------------------------------------*/ COM_InitTypeDef BspCOMInit; __IO uint32_t BspButtonState = BUTTON_RELEASED; /* USER CODE BEGIN PV */ /* USER CODE END PV */ /* Private function prototypes -----------------------------------------------*/ void SystemClock_Config(void); /* USER CODE BEGIN PFP */ /* USER CODE END PFP */ /* Private user code ---------------------------------------------------------*/ /* USER CODE BEGIN 0 */ /* USER CODE END 0 */ /** * @brief The application entry point. * @retval int */ int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_USART2_UART_Init(); MX_USART3_UART_Init(); /* USER CODE BEGIN 2 */ HAL_UART_Receive_IT(&huart3, rx_data, 6); /* USER CODE END 2 */ /* Initialize leds */ BSP_LED_Init(LED_GREEN); BSP_LED_Init(LED_BLUE); BSP_LED_Init(LED_RED); /* Initialize USER push-button, will be used to trigger an interrupt each time it's pressed.*/ BSP_PB_Init(BUTTON_USER, BUTTON_MODE_EXTI); /* Initialize COM1 port (115200, 8 bits (7-bit data + 1 stop bit), no parity */ BspCOMInit.BaudRate = 115200; BspCOMInit.WordLength = COM_WORDLENGTH_8B; BspCOMInit.StopBits = COM_STOPBITS_1; BspCOMInit.Parity = COM_PARITY_NONE; BspCOMInit.HwFlowCtl = COM_HWCONTROL_NONE; if (BSP_COM_Init(COM1, &BspCOMInit) != BSP_ERROR_NONE) { Error_Handler(); } /* USER CODE BEGIN BSP */ /* -- Sample board code to send message over COM1 port ---- */ printf("Welcome to STM32 world !\n\r"); /* -- Sample board code to switch on leds ---- */ // BSP_LED_On(LED_GREEN); // BSP_LED_On(LED_BLUE); // BSP_LED_On(LED_RED); /* USER CODE END BSP */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* -- Sample board code for User push-button in interrupt mode ---- */ // if (BspButtonState == BUTTON_PRESSED) // { // /* Update button state */ // BspButtonState = BUTTON_RELEASED; // /* -- Sample board code to toggle leds ---- */ // BSP_LED_Toggle(LED_GREEN); // BSP_LED_Toggle(LED_BLUE); // BSP_LED_Toggle(LED_RED); // // /* ..... Perform your action ..... */ // } /* USER CODE END WHILE */ // HAL_UART_Transmit(&huart3, tx_buffer, strlen((char*)tx_buffer), 10); // HAL_Delay(1000); /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ } /** * @brief BSP Push Button callback * @PAram Button Specifies the pressed button * @retval None */ void BSP_PB_Callback(Button_TypeDef Button) { if (Button == BUTTON_USER) { BspButtonState = BUTTON_PRESSED; } } /** * @brief This function is executed in case of error occurrence. * @retval None */ void Error_Handler(void) { /* USER CODE BEGIN Error_Handler_Debug */ /* User can add his own implementation to report the HAL error return state */ __disable_irq(); while (1) { } /* USER CODE END Error_Handler_Debug */ } #ifdef USE_FULL_ASSERT /** * @brief Reports the name of the source file and the source line number * where the assert_param error has occurred. * @PAram file: pointer to the source file name * @PAram line: assert_param error line source number * @retval None */ void assert_failed(uint8_t *file, uint32_t line) { /* USER CODE BEGIN 6 */ /* User can add his own implementation to report the file name and line number, ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ /* USER CODE END 6 */ } #endif /* USE_FULL_ASSERT */
View more

 

10 REPLIES 10

@pb33 wrote:

 when I try to also type strings in manually, nothing shows up. 


Where and how are you expecting them to "show up" ?

You still haven't answered the questions:

  • what have you tried so far to debug the problem?
  • Have you put an oscilloscope probe onto the STM32 UART's RX pin to see if anything is actually reaching there?
  • You're using UART3 - how is that routed to your PuTTY terminal ?
  • Before trying the added complexities of interrupts, have you got it working using the basic, blocking HAL_UART_Receive() ?
  • I can't see a callback for your UART receive?
A complex system that works is invariably found to have evolved from a simple system that worked.
A complex system designed from scratch never works and cannot be patched up to make it work.