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);
}
|