PLL 时钟配置

Mus*_*k U 3 stm32 stm32f4discovery stm32ldiscovery stm32l152

我正在使用 STM32L152RB 板,我正在尝试配置系统时钟以使用 PLL 时钟,但 RCC_FLAG_PLLRDY 标志正在设置,因此程序卡在 while 循环中。请让我做错了什么

EnableHSI();
RCC_PLLConfig(RCC_PLLSource_HSI,RCC_PLLMul_3,RCC_PLLDiv_2);
RCC_PLLCmd(ENABLE);
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
RCC_SYSCLKConfig( RCC_SYSCLKSource_PLLCLK);
t=GetSystemClockSource();
Run Code Online (Sandbox Code Playgroud)

小智 5

查看参考手册中的“CPU 时钟频率与闪存读取时间的关系”。它说明了对于高于 16MHz 的 CPU 速度,您应该为 1WS(等待状态)设置闪存延迟。在将 PLL 设置为时钟源之前是这样的:

FLASH->ACR  = FLASH_ACR_ACC64;   // 64-bit access
FLASH->ACR |= FLASH_ACR_LATENCY; // one wait state
FLASH->ACR |= FLASH_ACR_PRFTEN;  // prefetch enable
Run Code Online (Sandbox Code Playgroud)