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!