cancel
Showing results for 
Search instead for 
Did you mean: 

[Bug] SytemClock config with low layer and CubeMx

nicolas b
Associate III
Posted on May 03, 2018 at 17:31

Hi,

There is a bug when generating clock configuration with CubeMx on an STM32F413RHT.

The SystemClock_Config is missing a line before changing the PWR register (clock is not enable) :

void SystemClock_Config(void)

{

  LL_FLASH_SetLatency(LL_FLASH_LATENCY_3);

  if(LL_FLASH_GetLatency() != LL_FLASH_LATENCY_3)

  {

  Error_Handler();  

  }

  // THIS LINE IS MISSING IN THE GENERATED CODE

  LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_PWR);

  LL_PWR_SetRegulVoltageScaling(LL_PWR_REGU_VOLTAGE_SCALE1);

  LL_RCC_HSI_SetCalibTrimming(16);

  LL_RCC_HSI_Enable();

   /* Wait till HSI is ready */

  while(LL_RCC_HSI_IsReady() != 1)

  {

    

  }

  LL_RCC_PLL_ConfigDomain_SYS(LL_RCC_PLLSOURCE_HSI, LL_RCC_PLLM_DIV_16, 192, LL_RCC_PLLP_DIV_2);

  LL_RCC_PLL_Enable();

   /* Wait till PLL is ready */

  while(LL_RCC_PLL_IsReady() != 1)

  {

    

  }

  LL_RCC_SetAHBPrescaler(LL_RCC_SYSCLK_DIV_1);

  LL_RCC_SetAPB1Prescaler(LL_RCC_APB1_DIV_2);

  LL_RCC_SetAPB2Prescaler(LL_RCC_APB2_DIV_1);

  LL_RCC_SetSysClkSource(LL_RCC_SYS_CLKSOURCE_PLL);

   /* Wait till System clock is ready */

  while(LL_RCC_GetSysClkSource() != LL_RCC_SYS_CLKSOURCE_STATUS_PLL)

  {

 

  }

  LL_Init1msTick(96000000);

  LL_SYSTICK_SetClkSource(LL_SYSTICK_CLKSOURCE_HCLK);

  LL_SetSystemCoreClock(96000000);

  LL_RCC_ConfigMCO(LL_RCC_MCO1SOURCE_HSI, LL_RCC_MCO1_DIV_2);

  LL_RCC_ConfigMCO(LL_RCC_MCO2SOURCE_PLLCLK, LL_RCC_MCO2_DIV_1);

  LL_RCC_SetTIMPrescaler(LL_RCC_TIM_PRESCALER_TWICE);

  /* SysTick_IRQn interrupt configuration */

  NVIC_SetPriority(SysTick_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0));

}

Versions:

CubeMx: 4.25.0

Firmware: STM32Cube FW_F4 V1.21.0

#lowlayer #cubemx-v4.25.0 #cube
1 REPLY 1
Nawres GHARBI
ST Employee
Posted on May 07, 2018 at 09:51

Hi

nicolas.bonnec

This issue has been fixed and will be ok for the next 4.0