[libopenstm32-devel] flash functions for setting waitstates
Status: Inactive
Brought to you by:
uh1763
From: Thomas O. <to...@vi...> - 2010-01-14 19:36:13
|
Hi, I've attached 2 files to add some basic flash things. This would allow to use higher frequencies with the stm32. The following code push my stm32 with an external 16MHz oscillator to 72MHz. void clock_setup(void) { /* enable Internal High Speed Oscillator */ rcc_osc_on(HSI); rcc_wait_for_osc_ready(HSI); /* Select HSI as SYSCLK source. */ rcc_set_sysclk_source(SW_SYSCLKSEL_HSICLK); /* enable External High Speed Oscillator */ rcc_osc_on(HSE); rcc_wait_for_osc_ready(HSE); rcc_set_sysclk_source(SW_SYSCLKSEL_HSECLK); /* set prescalers for ADC, ABP1, ABP2 */ rcc_set_adcpre(ADCPRE_PLCK2_DIV8); rcc_set_abp1pre(PPRE1_HCLK_DIV2); rcc_set_abp2pre(PPRE2_HCLK_NODIV); /* should run with 72MHz -> 2 Waitstates */ flash_set_ws(LATENCY_2WS); /* Set the PLL multiplication factor to 9. -> 16MHz (external) * 9 (Multiplikator) / 2 (PLLXTPRE) = 72MHz */ rcc_set_pll_multiplication_factor(PLLMUL_PLL_CLK_MUL9); /* Select HSE as PLL source. */ rcc_set_pll_source(PLLSRC_HSE_CLK); /* divide external frequency by 2 before entering pll */ rcc_set_pllxtpre(PLLXTPRE_HSE_CLK_DIV2); /* Enable PLL oscillator and wait for it to stabilize. */ rcc_osc_on(PLL); rcc_wait_for_osc_ready(PLL); /* Select PLL as SYSCLK source. */ rcc_set_sysclk_source(SW_SYSCLKSEL_PLLCLK); } |