Skip to main content
mahdi zamani
Associate III
July 30, 2017
Question

spl RCC config for external oscillator

  • July 30, 2017
  • 7 replies
  • 1733 views
Posted on July 30, 2017 at 10:57

hi 

i have connected &sharposcillator to &sharpOSC_IN (PD0) i used this function for init &sharpRCC at &sharpSTM32F103c8t6

but is not work with &sharppll and &sharpexternal oscillator please help to me ...

void RCC_Configuration(void){

ErrorStatus HSEStartUpStatus;

RCC_DeInit(); /// RCC system reset(for debug purpose)

RCC_HSEConfig(RCC_HSE_Bypass); /// Enable HSE

HSEStartUpStatus = RCC_WaitForHSEStartUp(); /// Wait till HSE is ready

if(HSEStartUpStatus == SUCCESS)

{

RCC_HCLKConfig(RCC_SYSCLK_Div1); /// HCLK = SYSCLK

RCC_PCLK2Config(RCC_HCLK_Div1); /// PCLK2 = HCLK

RCC_PCLK1Config(RCC_HCLK_Div2); /// PCLK1 = HCLK/2

RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); /// PLLCLK = 8MHz * 9 = 72 MHz

RCC_PLLCmd(ENABLE); /* Enable PLL */

while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); /// Wait till PLL is ready

RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); /// Select PLL as system clock source

while(RCC_GetSYSCLKSource() != 0x08); /// Wait till PLL is used as system clock source

}

}

thanks 

mahdi

oscillator 

#uphill-skiing
This topic has been closed for replies.

7 replies

Tesla DeLorean
Guru
July 30, 2017
Posted on July 30, 2017 at 15:53

If you have an XO that's on all the time, lose

HSEStartUpStatus = RCC_WaitForHSEStartUp(); /// Wait till HSE is ready

if(HSEStartUpStatus == SUCCESS)

Make sure you set the flash wait states before switching to the 72 MHz clock.

Tips, Buy me a coffee, or three.. PayPal Venmo (See Profile) Up vote any posts that you find helpful, it shows what's working..
mahdi zamani
Associate III
August 1, 2017
Posted on August 01, 2017 at 12:29

sorry 

can give me example of this ?

Tesla DeLorean
Guru
August 1, 2017
Posted on August 01, 2017 at 20:12

Doesn't the SPL have a whole bunch of examples? Here's a quick cleanup of yours using the advice I provided..

void RCC_Configuration(void)
{
 RCC_DeInit(); /// RCC system reset(for debug purpose)
 RCC_HSEConfig(RCC_HSE_Bypass); /// Enable HSE, already on and hot
 FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); // Enable Prefetch Buffer
 FLASH_SetLatency(FLASH_Latency_2); // Flash 2 wait state
 RCC_HCLKConfig(RCC_SYSCLK_Div1); /// HCLK = SYSCLK
 RCC_PCLK2Config(RCC_HCLK_Div1); /// PCLK2 = HCLK
 RCC_PCLK1Config(RCC_HCLK_Div2); /// PCLK1 = HCLK/2
 RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); /// PLLCLK = 8MHz * 9 = 72 MHz
 RCC_PLLCmd(ENABLE); // Enable PLL
 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); /// Wait till PLL is ready
 RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); /// Select PLL as system clock source
 while(RCC_GetSYSCLKSource() != 0x08); /// Wait till PLL is used as system clock source
}
�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?

https://community.st.com/tags#/?tags=uphill%20skiing

Tips, Buy me a coffee, or three.. PayPal Venmo (See Profile) Up vote any posts that you find helpful, it shows what's working..