写了个HSI时钟配置函数,但问题来了,STM32L的系统时钟最高为72MHz,HSI为16MHz,系统时钟最高为32MHz,但我通过PLL把HSI提高96MHz,再分频为32MHz时,系统就运行不了,就会卡死在时钟函数的下一个函数上。
请问是什么原因?我把系统时钟降低,比32MHz低时,系统可以运行,说明程序没问题。
请大神解答
void Driver_TIME_Init()
{
ErrorStatus HSEStartUpStatus;
//RCC reset
RCC_DeInit();
//Enable HSI
RCC_HSICmd(ENABLE);
//wait HSI
while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY)== RESET);
FLASH_PrefetchBufferCmd(ENABLE);
FLASH_SetLatency(FLASH_Latency_1);
//Set bus clock
RCC_HCLKConfig(RCC_SYSCLK_Div1);
RCC_PCLK1Config(RCC_HCLK_Div1);
RCC_PCLK2Config(RCC_HCLK_Div1);
//HSI16M PLL-> 64M
RCC_PLLConfig(RCC_PLLSource_HSI,RCC_PLLMul_4, RCC_PLLDiv_3);
RCC_PLLCmd(ENABLE);
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
//Select PLL as system clock source
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
while(RCC_GetSYSCLKSource() != 0x0C);
}
|