Skip to main content
MuratUnal
Associate II
March 30, 2022
Solved

Bug report: STM32CubeMX for STM32G051K8TX usart code generation.

  • March 30, 2022
  • 3 replies
  • 1081 views

Hello Everyone,

I was trying to communicate my board with a device over USART module. My MCU is STM32G051K8TX. But I hadn't been succeed until I notice a STM32CubeMX bug. Let me show you:

I used alternate function of PA9, and PA10 for USART_TX and USART_RX from STM32CubeMX. When I generate code, it prepares HAL_UART_MspInit code without alternate function of the USART pins. I intert extra code inside the /* USER CODE BEGIN USART1_MspInit 1 */ and /* USER CODE END USART1_MspInit 1 */ tags. It reinitialize the PA9, PA10 as alternate fuction USART.

You can see the code below:

/**
* @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 PeriphClkInit = {0};
 if(huart->Instance==USART1)
 {
 /* USER CODE BEGIN USART1_MspInit 0 */
 
 /* USER CODE END USART1_MspInit 0 */
 /** Initializes the peripherals clocks
 */
 PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART1;
 PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_SYSCLK;
 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
 PA9 ------> USART1_TX
 PA10 ------> USART1_RX
 */
 GPIO_InitStruct.Pin = RS232_TXD1_Pin|RS232_RXD1_Pin;
 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
 GPIO_InitStruct.Pull = GPIO_NOPULL;
 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
 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 */
 HAL_NVIC_DisableIRQ(USART1_IRQn);
 GPIO_InitStruct.Pin = RS232_TXD1_Pin|RS232_RXD1_Pin;
 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
 GPIO_InitStruct.Pull = GPIO_PULLUP;
 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
 GPIO_InitStruct.Alternate = GPIO_AF1_USART1;
 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
 HAL_NVIC_EnableIRQ(USART1_IRQn);
 /* USER CODE END USART1_MspInit 1 */
 }
 
}

Best regards,

Murat UNAL

This topic has been closed for replies.
Best answer by Sara BEN HADJ YAHYA

Hello @MuratUnal​ and @TDK​ 

Thanks for your feedback,

This is a know issue and it is already raised internally to be fixed as soon as possible.

A similar issue was reported in this thread.

I will keep you posted with the updates.

If your issue is solved, please close this post by clicking the "Select as Best" button. This will help other members of the community find this response more quickly :)

Sara.

3 replies

TDK
March 30, 2022

> GPIO_InitStruct.Alternate = GPIO_AF1_USART1;

It appears this line is missing from the CubeMX generated code. It's a common bug seen on many different chips and something the CubeMX folks should do better at fixing.

@Sara BEN HADJ YAHYA​ 

"If you feel a post has answered your question, please click ""Accept as Solution""."
Sara BEN HADJ YAHYA
ST Technical Moderator
March 30, 2022

Hello @MuratUnal​ and @TDK​ 

Thanks for your feedback,

This is a know issue and it is already raised internally to be fixed as soon as possible.

A similar issue was reported in this thread.

I will keep you posted with the updates.

If your issue is solved, please close this post by clicking the "Select as Best" button. This will help other members of the community find this response more quickly :)

Sara.

In order to give better visibility on the answered topics, please click on 'Best answer' on the reply which solved your issue or answered your question.
Sara BEN HADJ YAHYA
ST Technical Moderator
June 29, 2022

Hello @MuratUnal​ , @TDK​ ,

This issue is fixed in STM32CubeMX latest release.

V6.6.0 is now available under this Link.

Thanks for your contribution.

Sara.

In order to give better visibility on the answered topics, please click on 'Best answer' on the reply which solved your issue or answered your question.