[STM32F0] Add support functions for USB clock setup in F072 chips.

There is remaining an issue with PREDIV connected just after clock multiplexer (only F072). This should be fixed in another commit.
This commit is contained in:
Kuldeep Singh Dhaka
2014-03-20 23:06:25 +01:00
committed by Frantisek Burian
parent 331acce4fc
commit 342ec6e9e3
2 changed files with 52 additions and 0 deletions

View File

@@ -420,6 +420,29 @@ void rcc_set_sysclk_source(enum rcc_osc clk)
}
}
/*---------------------------------------------------------------------------*/
/** @brief RCC Set the Source for the USB Clock.
*
* @param[in] osc enum ::osc_t. Oscillator ID. Only HSI48 or PLL have
* effect.
*/
void rcc_set_usbclk_source(enum rcc_osc clk)
{
switch (clk) {
case PLL:
RCC_CFGR3 |= RCC_CFGR3_USBSW;
case HSI48:
RCC_CFGR3 &= ~RCC_CFGR3_USBSW;
case HSI:
case HSE:
case LSI:
case LSE:
case HSI14:
/* do nothing */
break;
}
}
/*---------------------------------------------------------------------------*/
/** @brief RCC Set the PLL Multiplication Factor.
*
@@ -493,6 +516,17 @@ enum rcc_osc rcc_system_clock_source(void)
cm3_assert_not_reached();
}
/*---------------------------------------------------------------------------*/
/** @brief RCC Get the USB Clock Source.
*
* @returns ::osc_t USB clock source:
*/
enum rcc_osc rcc_usb_clock_source(void)
{
return (RCC_CFGR3 & RCC_CFGR3_USBSW) ? PLL : HSI48;
}
void rcc_clock_setup_in_hsi_out_8mhz(void)
{
rcc_osc_on(HSI);
@@ -629,5 +663,20 @@ void rcc_clock_setup_in_hsi_out_48mhz(void)
rcc_ahb_frequency = 48000000;
}
void rcc_clock_setup_in_hsi48_out_48mhz(void)
{
rcc_osc_on(HSI48);
rcc_wait_for_osc_ready(HSI48);
rcc_set_hpre(RCC_CFGR_HPRE_NODIV);
rcc_set_ppre(RCC_CFGR_PPRE_NODIV);
flash_set_ws(FLASH_ACR_LATENCY_024_048MHZ);
rcc_set_sysclk_source(HSI48);
rcc_apb1_frequency = 48000000;
rcc_ahb_frequency = 48000000;
}
/**@}*/