Спойлер
Сегодня еще немного потрудился над этим сайтиком. Из очевидных изменений — дизайн. Сделал его немного более цветастым. Теперь топики лучше отделяются друг от друга. Есть еще несколько мелких исправлений, но самое главное — у нас появился спойлер.
Спойлер можно использовать как в топиках, так и в комментариях, поддерживаются вложенные спойлеры. К примеру, я хочу показать большой кусок кода (это — типичное применение для спойлеров):
Спойлер можно использовать как в топиках, так и в комментариях, поддерживаются вложенные спойлеры. К примеру, я хочу показать большой кусок кода (это — типичное применение для спойлеров):
void SwitchSystemClockTo48Mhz()
void SwitchSystemClockTo48Mhz()
{
atomic {
// Switch to HSI
RCC->CR |= RCC_CR_HSION;
while(! (RCC->CR & RCC_CR_HSIRDY) ) {}
MODIFY_REG( RCC->CFGR, RCC_CFGR_SW, RCC_CFGR_SW_HSI );
// Enable HSE (12MHz)
RCC->CR &= ~RCC_CR_HSEON;
RCC->CR |= RCC_CR_HSEBYP | RCC_CR_HSEON;
while(! (RCC->CR & RCC_CR_HSERDY) ) {}
// One wait state for 48Mhz
FLASH->ACR = 1;
// Enable PLL
RCC->CR &= ~RCC_CR_PLLON;
RCC->CFGR &= ~RCC_CFGR_PLLXTPRE;
RCC->CFGR |= RCC_CFGR_PLLSRC_HSE;
MODIFY_REG(RCC->CFGR, RCC_CFGR_PLLMULL, RCC_CFGR_PLLMULL4); // 12*4=48
RCC->CR |= RCC_CR_PLLON;
while(! (RCC->CR & RCC_CR_PLLON) ) {}
// Set buses prescallers
MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_CFGR_HPRE_DIV1); // AHB = SYSCLK not divided (48MHz)
MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_CFGR_PPRE1_DIV2); // APB1 = HCLK divided by 2 (24MHz)
MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, RCC_CFGR_PPRE1_DIV2); // APB2 = HCLK divided by 2 (24MHz)
RCC->APB1ENR &= ~RCC_APB1ENR_USBEN; // USB is not prescaled (48MHz)
RCC->CFGR |= RCC_CFGR_USBPRE; // could be changed only when USB clock is off
RCC->APB1ENR |= RCC_APB1ENR_USBEN;
// Switch to PLL
MODIFY_REG( RCC->CFGR, RCC_CFGR_SW, RCC_CFGR_SW_PLL );
}
apb_freq = ApbFreq24Mhz;
}
3 комментария
ЗЫ: а хде смайлы? )))