Конфигурация часов PLL

Я использую плату 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();

1 ответ

Посмотрите в справочном руководстве "Соотношение между тактовой частотой процессора и временем чтения флэш-памяти". Это говорит о том, что для скорости процессора выше 16 МГц вы должны установить задержку вспышки для 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
Другие вопросы по тегам