A relatively simple method of using HSI to configure the system clock to 64MHz for STM32F1

    Recently, due to the cost of the project, the on-chip crystal oscillator must be used as the clock source of the system, so some modifications have been made to the project template clock configuration of the punctual atom. Multiplies the clock to 64MHz for system use.

    Students who need it can refer to the code as follows:

#if defined (STM32F10X_LD_VL) || (defined STM32F10X_MD_VL) || (defined STM32F10X_HD_VL)
/* #define SYSCLK_FREQ_HSE    HSE_VALUE */
 #define SYSCLK_FREQ_24MHz  24000000
#else
/* #define SYSCLK_FREQ_HSE    HSE_VALUE */
/* #define SYSCLK_FREQ_24MHz  24000000 */
/* #define SYSCLK_FREQ_36MHz  36000000 */
/* #define SYSCLK_FREQ_48MHz  48000000 */
/* #define SYSCLK_FREQ_56MHz  56000000 */
/* #define SYSCLK_FREQ_72MHz  72000000 */			
#endif

Here first comment out the macro definition;

#ifdef SYSCLK_FREQ_HSE
  uint32_t SystemCoreClock         = SYSCLK_FREQ_HSE;        /*!< System Clock Frequency (Core Clock) */
#elif defined SYSCLK_FREQ_24MHz
  uint32_t SystemCoreClock         = SYSCLK_FREQ_24MHz;        /*!< System Clock Frequency (Core Clock) */
#elif defined SYSCLK_FREQ_36MHz
  uint32_t SystemCoreClock         = SYSCLK_FREQ_36MHz;        /*!< System Clock Frequency (Core Clock) */
#elif defined SYSCLK_FREQ_48MHz
  uint32_t SystemCoreClock         = SYSCLK_FREQ_48MHz;        /*!< System Clock Frequency (Core Clock) */
#elif defined SYSCLK_FREQ_56MHz
  uint32_t SystemCoreClock         = SYSCLK_FREQ_56MHz;        /*!< System Clock Frequency (Core Clock) */
#elif defined SYSCLK_FREQ_72MHz
  uint32_t SystemCoreClock         = SYSCLK_FREQ_72MHz;        /*!< System Clock Frequency (Core Clock) */
#else /*!< HSI Selected as System Clock source */
  //uint32_t SystemCoreClock         = HSI_VALUE;        /*!< System Clock Frequency (Core Clock) */
  uint32_t SystemCoreClock         = 64000000;			
#endif

Then replace SystemCoreClock with 64MHz;

/*Use the internal RC oscillator, set the system clock to 64MHz*/
static void Intn_RC_Init(void)
{
    RCC_DeInit ();
    RCC_HSICmd(ENABLE);
    while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY)== RESET);
    RCC_HCLKConfig(RCC_SYSCLK_Div1); //Set AHB clock (HCLK) = system clock
    RCC_PCLK2Config(RCC_HCLK_Div1); //Set AHB2 clock = HCLK
    RCC_PCLK1Config(RCC_HCLK_Div1); //Set AHB1 clock = HCLK
    FLASH_SetLatency(FLASH_Latency_2); //Set the number of FLASH memory delay clock cycles
    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
    RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_16); //Set the PLL clock source and multiplication factor, the frequency is 8/2*16=64MHz
    RCC_PLLCmd(ENABLE);
    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
    while(RCC_GetSYSCLKSource() != 0x08);
}

This completes the configuration of the system clock!

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325892214&siteId=291194637