最近因爲項目成本需要,必須使用片內晶振作爲系統的時鐘源,所以對正點原子的項目模板時鐘配置做了一些修改。使時鐘倍頻至64MHz供系統使用。
有需要的同學可以參考一下,代碼如下:
#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
這裏先將宏定義註釋掉;
#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
接着將SystemCoreClock替換爲64MHz;
/*使用內部RC振盪器,設置系統時鐘爲64MHz*/
static void Intn_RC_Init(void)
{
RCC_DeInit();
RCC_HSICmd(ENABLE);
while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY)== RESET);
RCC_HCLKConfig(RCC_SYSCLK_Div1); //設置AHB時鐘(HCLK) = 系統時鐘
RCC_PCLK2Config(RCC_HCLK_Div1); //設置AHB2時鐘 = HCLK
RCC_PCLK1Config(RCC_HCLK_Div1); //設置AHB1時鐘 = HCLK
FLASH_SetLatency(FLASH_Latency_2); //設置FLASH存儲器延時時鐘週期數
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_16); //設置PLL時鐘源及倍頻係數,頻率爲8/2*16=64MHz
RCC_PLLCmd(ENABLE);
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
while(RCC_GetSYSCLKSource() != 0x08);
}
這樣就完成了系統時鐘的配置!