Конфигурация часов ФАПЧ

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

person Mustak U    schedule 14.07.2015    source источник


Ответы (1)


Посмотрите в справочном руководстве "Связь между тактовой частотой процессора и временем чтения флэш-памяти". Он говорит, что для частоты процессора выше 16 МГц вы должны установить задержку флэш-памяти для 1WS (состояние ожидания). Примерно так перед установкой ФАПЧ в качестве источника тактовой частоты:

FLASH->ACR  = FLASH_ACR_ACC64;   // 64-bit access
FLASH->ACR |= FLASH_ACR_LATENCY; // one wait state
FLASH->ACR |= FLASH_ACR_PRFTEN;  // prefetch enable
person LonelyWolf    schedule 19.07.2015
comment
Старый вопрос, но у меня точно такая же проблема, как и у op. Я запускаю свою систему с hsi как system clock sourcr (8mhz) и пытаюсь изменить источник часов на pll. Так же, как op, мой флаг готовности pll никогда не устанавливается. Можете ли вы объяснить, как изменение задержки флеш-памяти может решить эту проблему, поскольку состояние флага готовности pll проверяется ДО установки pll в качестве источника синхронизации, т.е. на данный момент системные часы все еще от hsi - person Ankit; 14.05.2016
comment
Возможно, когда вы пытаетесь переключиться на более высокую частоту без настройки состояний ожидания, ФАПЧ не сможет заблокироваться. Я играл со своим L151, пытался переключиться на PLL без установки одного состояния ожидания: не повезло, в основном бит PLLRDY не установлен, иногда (редко) он падает до отказа. - person LonelyWolf; 06.06.2016
comment
Спасибо за это. Я не знаю, почему они не указали на это в разделе RCC. Потратил много времени на размышления, почему мой stm32f411ret6 работал на 42 МГц, но не на 84. Увеличивая состояния ожидания до 4, программа мигания светодиода работает до 100 МГц. - person Plasty Grove; 09.01.2018
comment
Я могу подтвердить, что это необходимо сделать до того, как вы включите ФАПЧ, иначе бит готовности никогда не будет установлен (и ФАПЧ никогда не включится; это приведет к зависанию, если вы опрашиваете, пока он не будет готов) - person Turtles Are Cute; 04.01.2021