前几天在做项目时候发现,程序跑起来有问题,具体体现在时钟不准,后来经过排查发现,是因为标准工程默认初始化的外部高速时钟,但实际上是没有外部高速时钟的,所以导致出问题了。使用内部告诉时钟,初始化代码如下:(要注意把外部高速时钟初始化给屏蔽掉)
static void SystemClock_Config(void)
{
RCC_DeInit();
FLASH_SetLatency(FLASH_Latency_1);
RCC_HSICmd(ENABLE);
while (RCC_GetFlagStatus(RCC_FLAG_HSIRDY) != SET);
RCC_AdjustHSICalibrationValue(16);
RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_12);
RCC_PLLCmd(ENABLE);
while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) != SET);
RCC_HCLKConfig(RCC_SYSCLK_Div1);
RCC_PCLKConfig(RCC_HCLK_Div1);
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
while (RCC_GetSYSCLKSource() != 0x08)
{
}
RCC_USARTCLKConfig(RCC_USART1CLK_PCLK);
}
这样初始化以后,系统时钟是48MHz