stm32:l4: rcc: Add RTC clock functions

This commit is contained in:
Bruno Randolf 2018-01-05 13:36:59 +00:00 committed by Karl Palsson
parent 2c1823f7bb
commit b8424263e8
2 changed files with 40 additions and 0 deletions

View File

@ -964,6 +964,10 @@ void rcc_set_msi_range(uint32_t msi_range);
void rcc_set_msi_range_standby(uint32_t msi_range);
void rcc_pll_output_enable(uint32_t pllout);
void rcc_set_clock48_source(uint32_t clksel);
void rcc_clock_setup_pll(const struct rcc_clock_scale *clock);
void rcc_enable_rtc_clock(void);
void rcc_disable_rtc_clock(void);
void rcc_set_rtc_clock_source(enum rcc_osc clk);
END_DECLS

View File

@ -398,4 +398,40 @@ void rcc_set_clock48_source(uint32_t clksel)
RCC_CCIPR |= (clksel << RCC_CCIPR_CLK48SEL_SHIFT);
}
/** Enable the RTC clock */
void rcc_enable_rtc_clock(void)
{
RCC_BDCR |= RCC_BDCR_RTCEN;
}
/** Disable the RTC clock */
void rcc_disable_rtc_clock(void)
{
RCC_BDCR &= ~RCC_BDCR_RTCEN;
}
/** Set the source for the RTC clock
* @param[in] clk ::rcc_osc. RTC clock source. Only HSE/32, LSE and LSI.
*/
void rcc_set_rtc_clock_source(enum rcc_osc clk)
{
RCC_BDCR &= ~(RCC_BDCR_RTCSEL_MASK << RCC_BDCR_RTCSEL_SHIFT);
switch (clk) {
case RCC_HSE:
RCC_BDCR |= (RCC_BDCR_RTCSEL_HSEDIV32 << RCC_BDCR_RTCSEL_SHIFT);
break;
case RCC_LSE:
RCC_BDCR |= (RCC_BDCR_RTCSEL_LSE << RCC_BDCR_RTCSEL_SHIFT);
break;
case RCC_LSI:
RCC_BDCR |= (RCC_BDCR_RTCSEL_LSI << RCC_BDCR_RTCSEL_SHIFT);
break;
default:
/* none selected */
break;
}
}
/**@}*/