Инициализация
CODE
void init_(void)
{
RCC_DeInit();
RCC_HSEConfig(RCC_HSE_ON);
ErrorStatus HSEStartUpStatus;
HSEStartUpStatus = RCC_WaitForHSEStartUp();
if (HSEStartUpStatus == SUCCESS){
FLASH->ACR |= FLASH_ACR_PRFTBE;// Включаем буфер предвыборки FLASH
FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY); // Конфигурируем Flash на 2 цикла ожидания
FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_2; // Конфигурируем Flash на 2 цикла ожидания
RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; // HCLK = SYSCLK
RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1; // PCLK2 = HCLK
RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2; // PCLK1 = HCLK
RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL8);
RCC->CR |= RCC_CR_PLLON;
while((RCC->CR & RCC_CR_PLLRDY) == 0) {/* Ждем*/} // Ожидаем, пока PLL выставит бит готовности
/* Выбираем PLL как источник системной частоты */
RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;
/* Ожидаем, пока PLL выберется как источник системной частоты */
while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08) {/* Ждем*/}
//RCC->CFGR |= RCC_CFGR_ADCPRE_DIV6; // Предделитель АЦП
//RCC->CFGR |= RCC_CFGR_ADCPRE_DIV4; // Предделитель АЦП
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);
}
else
{
}
}
Сообщение отредактировал IgorKossak - Sep 10 2016, 20:36
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!