Осваиваю STM контроллеры. использую STM32F4DISCOVERY и SPL.
От внутреннего генератора работает, диод мигает.
Не получается перевести тактирование на внешний кварцевый резонатор. Инициализацию произвожу на основе примеров из различных статей и форумов, но видимо что то неучел.
В чем может быть проблема?
Код:
Спойлер
//задержкаvoid Delay(void) {
volatile int i;
for (i=0; i != 1000000; i++);
}
int main(void) {
RCC_ClocksTypeDef RCC_Clocks;
ErrorStatus HSEStartUpStatus;
RCC_ClearITPendingBit(RCC_FLAG_HSERDY);
RCC_GetClocksFreq (&RCC_Clocks);
RCC_DeInit();
RCC_HSEConfig(RCC_HSE_ON);//подключение внешнего генератора
HSEStartUpStatus = RCC_WaitForHSEStartUp();
if (HSEStartUpStatus == SUCCESS)
{
RCC_HCLKConfig(RCC_SYSCLK_Div1);
RCC_PCLK1Config(RCC_HCLK_Div16);
RCC_PCLK2Config(RCC_HCLK_Div2);
RCC_WaitForHSEStartUp();//ожидание
RCC_PLLConfig(RCC_PLLSource_HSE, 8,336,2,7);//конфигурируем делитель/умножитель частоты
RCC_PLLCmd(ENABLE);
while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) {}
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
while (RCC_GetSYSCLKSource() != 0x08) {}
}
//RCC_HSICmd(DISABLE);//выключаем внутренний генератор
SysTick_Config(RCC_GetSYSCLKSource()/1000);
//RCC_LSICmd(ENABLE);//генератор для собачьего таймера
while(1)
{
GPIO_ToggleBits(PORTD,GPIO_Pin_15);Delay();//мигаем светодиодом
}
};
