USART prints junk after initializing the HSE clock (HAL_RCC_ClockConfig)
- October 30, 2020
- 5 replies
- 813 views
Hello,
I am getting junk printed on the USART after initializing HSE clock. I had USART output at every single line and figured out that up to "HAL_RCC_ClockConfig" everything is ok and junk is printed right after executing this line. Also made sure that code reaches end of program, so it doesn't get stuck from any of the Error_Handler situations (HAL_OK).
USART output:
[2020-10-29_20:28:41:842]SYSCLK : 64000000Hz
[2020-10-29_20:28:41:842]HCLK : 64000000Hz
[2020-10-29_20:28:41:842]PCLK1 : 64000000Hz
[2020-10-29_20:28:41:842]PCLK2 : 64000000Hz
[2020-10-29_20:28:41:875] à à üü àüà àü ààà àà à à àüà àü ààà àà à àüà àü ààà àà à àüàà àü ààà àà à
code:
memset(msg,0,sizeof(msg));
sprintf(msg,"PCLK2 : %ldHz\r\n",HAL_RCC_GetPCLK2Freq());
HAL_UART_Transmit(&huart2,(uint8_t*)msg,strlen(msg),HAL_MAX_DELAY);
RCC_OscInitTypeDef osc_init;
RCC_ClkInitTypeDef clk_init;
RCC_PeriphCLKInitTypeDef PeriphClkInitStruct;
memset(&osc_init,0,sizeof(osc_init));
osc_init.OscillatorType = RCC_OSCILLATORTYPE_HSE;
osc_init.HSEState = RCC_HSE_ON;
osc_init.PLL.PLLState = RCC_PLL_NONE;
while ( HAL_RCC_OscConfig(&osc_init) != HAL_OK)
{
Error_Handler();
}
clk_init.ClockType = RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | \
RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2 | \
RCC_CLOCKTYPE_D3PCLK1|RCC_CLOCKTYPE_D1PCLK1;
clk_init.SYSCLKSource = RCC_SYSCLKSOURCE_HSE;
clk_init.SYSCLKDivider = RCC_SYSCLK_DIV1;
clk_init.AHBCLKDivider = RCC_HCLK_DIV1;
clk_init.APB3CLKDivider = RCC_APB3_DIV1;
clk_init.APB1CLKDivider = RCC_APB1_DIV1;
clk_init.APB2CLKDivider = RCC_APB2_DIV1;
clk_init.APB4CLKDivider = RCC_APB4_DIV1;
if( HAL_RCC_ClockConfig(&clk_init, FLASH_LATENCY_0) != HAL_OK)
{
Error_Handler();
}
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART2;
PeriphClkInitStruct.Usart234578ClockSelection = RCC_USART234578CLKSOURCE_D2PCLK1;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
{
Error_Handler();
}
/*---------------------------- AFTER THIS LINE SYSCLK is SOURCED BY HSE------------------*/
//__HAL_RCC_HSI_DISABLE(); //Saves some current
/* LETS REDO THE SYSTICK CONFIGURATION */
HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);
HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);
MX_USART2_UART_Init();
user_data = " AFTER.\r\n";
if (HAL_UART_Transmit(&huart2,(uint8_t*)user_data,strlen(user_data), HAL_MAX_DELAY) != HAL_OK)
{
// Error occurred
Error_Handler();
}