Skip to main content
Visitor II
June 20, 2025
Question

Cofiguration UART4 from STM32H753ZIT6 Development module

  • June 20, 2025
  • 3 replies
  • 369 views

Hi, I’m trying to configure UART4 on the STM32H753ZIT to work with a USB-TTL converter for data transmission and reception. I can see that the STM32 is sending data, but the TTL converter isn't receiving it. I've attached the code file and the output file.

    This topic has been closed for replies.

    3 replies

    Graduate II
    June 20, 2025

    Can you provide more details ? 
    Are you using this configuration -> UART4 RX TX with TTL RX TX and TTL's USB side connected to the PC?
    Try Swapping RX,TX pins ,for UART we connect in the Following way:
    UART4 TX -> TTL RX
    UART4 RX -> TTL TX
    if you're using some other configuration please specify.


    If this helps, feel free to mark it as the solution

    Graduate II
    June 20, 2025

    First, lets make sure the USB-TTL adapter is working. Put the adapter in loop back mode by shorting the Tx to Rx. Then from the serial console, send a message on COM 5 and you should see it echo back.

    Also, draw a block diagram how the devices are connected to each other.

    Graduate II
    June 20, 2025
    UART_HandleTypeDef huart4;
    UART_HandleTypeDef huart3;
    
    /**
     * @brief UART4 Initialization Function
     * @PAram None
     * @retval None
     */
    static void MX_UART4_Init(void)
    {
    
     /* USER CODE BEGIN UART4_Init 0 */
    
     /* USER CODE END UART4_Init 0 */
    
     /* USER CODE BEGIN UART4_Init 1 */
    
     /* USER CODE END UART4_Init 1 */
     huart4.Instance = UART4;
     huart4.Init.BaudRate = 115200;
     huart4.Init.WordLength = UART_WORDLENGTH_8B;
     huart4.Init.StopBits = UART_STOPBITS_1;
     huart4.Init.Parity = UART_PARITY_NONE;
     huart4.Init.Mode = UART_MODE_TX_RX;
     huart4.Init.HwFlowCtl = UART_HWCONTROL_NONE;
     huart4.Init.OverSampling = UART_OVERSAMPLING_16;
     huart4.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
     huart4.Init.ClockPrescaler = UART_PRESCALER_DIV1;
     huart4.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
     if (HAL_UART_Init(&huart4) != HAL_OK)
     {
     Error_Handler();
     }
     if (HAL_UARTEx_SetTxFifoThreshold(&huart4, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)
     {
     Error_Handler();
     }
     if (HAL_UARTEx_SetRxFifoThreshold(&huart4, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)
     {
     Error_Handler();
     }
     if (HAL_UARTEx_DisableFifoMode(&huart4) != HAL_OK)
     {
     Error_Handler();
     }
     /* USER CODE BEGIN UART4_Init 2 */
    
     /* USER CODE END UART4_Init 2 */
    
    }
    
    /**
     * @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;
     huart3.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
     huart3.Init.ClockPrescaler = UART_PRESCALER_DIV1;
     huart3.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
     if (HAL_UART_Init(&huart3) != HAL_OK)
     {
     Error_Handler();
     }
     if (HAL_UARTEx_SetTxFifoThreshold(&huart3, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)
     {
     Error_Handler();
     }
     if (HAL_UARTEx_SetRxFifoThreshold(&huart3, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)
     {
     Error_Handler();
     }
     if (HAL_UARTEx_DisableFifoMode(&huart3) != HAL_OK)
     {
     Error_Handler();
     }
     /* USER CODE BEGIN USART3_Init 2 */
    
     /* USER CODE END USART3_Init 2 */
    
    }
    
    /**
     * @brief UART MSP Initialization
     * This function configures the hardware resources used in this example
     * @PAram huart: UART handle pointer
     * @retval None
     */
    void HAL_UART_MspInit(UART_HandleTypeDef* huart)
    {
     GPIO_InitTypeDef GPIO_InitStruct = {0};
     RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
     if(huart->Instance==UART4)
     {
     /* USER CODE BEGIN UART4_MspInit 0 */
    
     /* USER CODE END UART4_MspInit 0 */
    
     /** Initializes the peripherals clock
     */
     PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_UART4;
     PeriphClkInitStruct.Usart234578ClockSelection = RCC_USART234578CLKSOURCE_HSI;
     if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
     {
     Error_Handler();
     }
    
     /* Peripheral clock enable */
     __HAL_RCC_UART4_CLK_ENABLE();
    
     __HAL_RCC_GPIOA_CLK_ENABLE();
     /**UART4 GPIO Configuration
     PA11 ------> UART4_RX
     PA12 ------> UART4_TX
     */
     GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12;
     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
     GPIO_InitStruct.Pull = GPIO_NOPULL;
     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
     GPIO_InitStruct.Alternate = GPIO_AF6_UART4;
     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
    
     /* UART4 interrupt Init */
     HAL_NVIC_SetPriority(UART4_IRQn, 0, 0);
     HAL_NVIC_EnableIRQ(UART4_IRQn);
     /* USER CODE BEGIN UART4_MspInit 1 */
    
     /* USER CODE END UART4_MspInit 1 */
     }
     else if(huart->Instance==USART3)
     {
     /* USER CODE BEGIN USART3_MspInit 0 */
    
     /* USER CODE END USART3_MspInit 0 */
    
     /** Initializes the peripherals clock
     */
     PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART3;
     PeriphClkInitStruct.Usart234578ClockSelection = RCC_USART234578CLKSOURCE_HSI;
     if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
     {
     Error_Handler();
     }
    
     /* Peripheral clock enable */
     __HAL_RCC_USART3_CLK_ENABLE();
    
     __HAL_RCC_GPIOD_CLK_ENABLE();
     /**USART3 GPIO Configuration
     PD8 ------> USART3_TX
     PD9 ------> USART3_RX
     */
     GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9;
     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
     GPIO_InitStruct.Pull = GPIO_NOPULL;
     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
     GPIO_InitStruct.Alternate = GPIO_AF7_USART3;
     HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
    
     /* USART3 interrupt Init */
     HAL_NVIC_SetPriority(USART3_IRQn, 0, 0);
     HAL_NVIC_EnableIRQ(USART3_IRQn);
     /* USER CODE BEGIN USART3_MspInit 1 */
    
     /* USER CODE END USART3_MspInit 1 */
     }
    
    }