Конфигурация часов 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