[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:
committed by
Frantisek Burian
parent
331acce4fc
commit
342ec6e9e3
@@ -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;
|
||||
}
|
||||
/**@}*/
|
||||
|
||||
|
||||
Reference in New Issue
Block a user