koyodza (14.12.2011 01:25, просмотров: 188) ответил sinsay на Посоветуйте правильно ли я понимаю. Мне необходимо настроить PLL у stm32. Для этого я пытаюсь использовать стандартную библиотеку STM32F10x_StdPeriph_Lib_V3.5.0 .
немного приоткрою "завесу тайны" цитата из ещё недописанного:
Вначале нужно включить генератор опорной частоты для PLL. Если в качестве опорной частоты используется HSI/2, ничего включать не нужно, после сброса HSI включен. Если используется внешний кварц, нужно включить HSE и дождаться, пока он запустится:
RCC_HSEConfig(RCC_HSE_ON);
if(RCC_WaitForHSEStartUp() == SUCCESS)
{
Дальше настраиваем PLL: выбираем источник опорной частоты, устанавливаем множитель и включаем собственно PLL:
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_3);
RCC_PLLCmd(ENABLE);
Затем нужно дождаться запуска PLL:
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) ;
До того, как мы переключим тактирование на PLL, нужно установить задержки памяти, делители для шин AHB, APB1 и APB2. Нужно помнить, что максимальная тактовая частота для APB1 не более 36 МГц, а внутренняя flash требует не менее 1WS при частотах 24…48 МГц и 2WS на более высоких частотах:
FLASH_SetLatency(FLASH_Latency_0);
RCC_HCLKConfig(RCC_SYSCLK_Div1);
RCC_PCLK2Config(RCC_HCLK_Div1);
RCC_PCLK1Config(RCC_HCLK_Div1);
После этого можно переключаться на PLL:
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
while(RCC_GetSYSCLKSource() != 0x08) ;
}