Skip to main content
RKade.1
Associate III
October 28, 2020
Solved

How to Enable HSE with PLL & without PLL for Stm32f072 & Stm32f103 MCU

  • October 28, 2020
  • 4 replies
  • 3472 views

HI,

All , if any one have done HSE enabling in Stm32f072 & Stm32f103 MCU please share.

As what ever examples available are for HSI clock only .

So please some one revert .

Waiting

Rohit

This topic has been closed for replies.
Best answer by Tesla DeLorean

HAL

You didn't specify you wanted SPL, sorry not psychic

Look in the SPL examples, definitely in there, typically in the SystemInit() code at a register level, and SetSysClock() in a somewhat less terse form

STM32F0xx_StdPeriph_Lib_V1.5.0\Projects\STM32F0xx_StdPeriph_Examples\RCC\RCC_Example\system_stm32f0xx.c

STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Examples\RCC\RCC_ClockConfig

For HSE, turn HSE ON in RCC->CR and then wait for it to come ready, then select the HSE as the system clock, and wait for it to engage.

Don't want the PLL, then don't start it, or select it as the system clock.

Really not super complicated.

4 replies

Tesla DeLorean
Guru
October 28, 2020

>>As what ever examples available are for HSI clock only .

Looking in the wrong places..

F07x

/**
 * @brief System Clock Configuration
 * The system Clock is configured as follow:
 *
 * - PLL(HSE) used as clock source
 * - System Clock source = PLL (HSE)
 * - SYSCLK(Hz) = 48000000
 * - HCLK(Hz) = 48000000
 * - AHB Prescaler = 1
 * - APB1 Prescaler = 1
 * - HSE Frequency(Hz) = 8000000
 * - PREDIV = 1
 * - PLLMUL = 6
 * - Flash Latency(WS) = 1
 *
 * @param None
 * @retval None
 */
static void SystemClock_Config(void)
{
 RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
 RCC_OscInitTypeDef RCC_OscInitStruct = {0};
 
 /* Enable HSE Oscillator and activate PLL with HSE as source
 PLLCLK = (8 * 6) / 1) = 48 MHz */
 RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
 RCC_OscInitStruct.HSEState = RCC_HSE_ON;
 RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
 RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
 RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL6;
 RCC_OscInitStruct.PLL.PREDIV = RCC_PREDIV_DIV1;
 HAL_RCC_OscConfig(&RCC_OscInitStruct);
 
 /* Select PLL as system clock source and configure the HCLK and PCLK1
 clock dividers */
 RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1);
 RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
 RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
 RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
 HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1);
}

Using HSE directly

static void SystemClock_Config(void)
{
 RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
 RCC_OscInitTypeDef RCC_OscInitStruct = {0};
 
 /* Enable HSE Oscillator with HSE as MCU source = 8 MHz */
 RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
 RCC_OscInitStruct.HSEState = RCC_HSE_ON;
 HAL_RCC_OscConfig(&RCC_OscInitStruct);
 
 /* Select HSE as system clock source and configure the HCLK and PCLK1
 clock dividers */
 RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1);
 RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSE;
 RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
 RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
 HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1);
}

L07x

/**
 * @brief System Clock Configuration
 * The system Clock is configured as follow :
 * System Clock source = PLL (HSE)
 * SYSCLK(Hz) = 32000000
 * HCLK(Hz) = 32000000
 * AHB Prescaler = 1
 * APB1 Prescaler = 1
 * APB2 Prescaler = 1
 * Flash Latency(WS) = 1
 * Main regulator output voltage = Scale1 mode
 * @retval None
 */
void SystemClock_Config(void)
{
 RCC_ClkInitTypeDef RCC_ClkInitStruct ={0};
 RCC_OscInitTypeDef RCC_OscInitStruct = {0};
 
 /* Enable Power Control clock */
 __HAL_RCC_PWR_CLK_ENABLE();
 
 /* The voltage scaling allows optimizing the power consumption when the device is
 clocked below the maximum system frequency, to update the voltage scaling value
 regarding system frequency refer to product datasheet. */
 __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
 
 /* Enable HSE Oscillator */
 RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
 RCC_OscInitStruct.HSEState = RCC_HSE_ON;
 RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
 RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
 RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL8;
 RCC_OscInitStruct.PLL.PLLDIV = RCC_PLL_DIV2;
 if (HAL_RCC_OscConfig(&RCC_OscInitStruct)!= HAL_OK)
 {
 /* Initialization Error */
 while(1)
 {}
 }
 
 /* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2
 clocks dividers */
 RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2);
 RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
 RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
 RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
 RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
 if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1)!= HAL_OK)
 {
 /* Initialization Error */
 while(1)
 {}
 }
}

Tips, Buy me a coffee, or three.. PayPal Venmo (See Profile) Up vote any posts that you find helpful, it shows what's working..
RKade.1
RKade.1Author
Associate III
October 28, 2020

Clive ,

Is it HAL Based? What you suggested? Or Standard Peripheral Based?

it seems examples you shows is HAL BaSED, But i need is Standard Peripheral Based.

Rohit

Tesla DeLorean
Tesla DeLoreanBest answer
Guru
October 28, 2020

HAL

You didn't specify you wanted SPL, sorry not psychic

Look in the SPL examples, definitely in there, typically in the SystemInit() code at a register level, and SetSysClock() in a somewhat less terse form

STM32F0xx_StdPeriph_Lib_V1.5.0\Projects\STM32F0xx_StdPeriph_Examples\RCC\RCC_Example\system_stm32f0xx.c

STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Examples\RCC\RCC_ClockConfig

For HSE, turn HSE ON in RCC->CR and then wait for it to come ready, then select the HSE as the system clock, and wait for it to engage.

Don't want the PLL, then don't start it, or select it as the system clock.

Really not super complicated.

Tips, Buy me a coffee, or three.. PayPal Venmo (See Profile) Up vote any posts that you find helpful, it shows what's working..
RKade.1
RKade.1Author
Associate III
October 28, 2020

Sorry i didnt mentioned that i want SPL Based. My Mistake

Rohit