ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
25 ноября
291589 Топик полностью
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) ; }