cancel
Showing results for 
Search instead for 
Did you mean: 

USART3 (on Arduino connector CN14) troubles on stm32u5 iot eval board BU585IIO2A

PSchb.1
Associate II

i'm using the  stm32u5 iot eval board BU585IIO2A and want to use USART3 on Arduino connector CN14

i successfully got the PWM working on PIN7 of CN14 but i fail to get anything sent / received on UASRT3 (Pins 1 and 2 of CN14)

are there any hints / samples how to get this working ?

thx, peter

13 REPLIES 13

>> we must still have some differences in our project settings - how could we find them ?

I have sent you my main.c file. Can't do more.

Just check that your stm32u5xx_hal_msp.c file assigns the USART3 to PD8/PD9 instead of default PC10/PC11.

Share your project if you feel like.

i checked that anc actually it does NOT.

see the code below :

void HAL_UART_MspInit(UART_HandleTypeDef* huart)
{
  GPIO_InitTypeDef GPIO_InitStruct = {0};
  RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
  if(huart->Instance==USART1)
  {
  /* USER CODE BEGIN USART1_MspInit 0 */
 
  /* USER CODE END USART1_MspInit 0 */
 
  /** Initializes the peripherals clock
  */
    PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART1;
    PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK2;
    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
    {
      Error_Handler();
    }
 
    /* Peripheral clock enable */
    __HAL_RCC_USART1_CLK_ENABLE();
 
    __HAL_RCC_GPIOA_CLK_ENABLE();
    /**USART1 GPIO Configuration
    PA10     ------> USART1_RX
    PA9     ------> USART1_TX
    */
    GPIO_InitStruct.Pin = T_VCP_RX_Pin|T_VCP_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_AF7_USART1;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
 
    /* USART1 interrupt Init */
    HAL_NVIC_SetPriority(USART1_IRQn, 0, 0);
    HAL_NVIC_EnableIRQ(USART1_IRQn);
  /* 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 */
 
  /** Initializes the peripherals clock
  */
    PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART3;
    PeriphClkInit.Usart3ClockSelection = RCC_USART3CLKSOURCE_PCLK1;
    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
    {
      Error_Handler();
    }
 
    /* Peripheral clock enable */
    __HAL_RCC_USART3_CLK_ENABLE();
 
    __HAL_RCC_GPIOA_CLK_ENABLE();
    /**USART3 GPIO Configuration
    PA7     ------> USART3_TX
    PA5     ------> USART3_RX
    */
    GPIO_InitStruct.Pin = GPIO_PIN_7|GPIO_PIN_5;
    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(GPIOA, &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 */
  }
 
}

do you think, that's the problem ?

do i have to set up this specifically in the .ioc file ?

thx again, mike - i think now we are on the right track ... ;)

Mike_ST
ST Employee

Yes, that should be the problem...

In the .ioc you have to assign it to PD8/PD9,

and you should end up with that:

   /* 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);

i checked and fixed that : (sorry, i was not aware of the necessary re-assignment :( )

anyway, you've made my day !

with that adaption now your main.c work, as well so i think, it's also going to work with my application, now

thx, again, mike : great support !

peter