Add RTC configuration to RCC module

This commit is contained in:
Steins7 2024-07-27 14:17:58 +02:00
parent 0b483c535b
commit b37eb1dd6e
2 changed files with 16 additions and 1 deletions

View File

@ -66,10 +66,16 @@ void rcc_configure_lsi(bool enable)
//ensure LSI is enabled
if (enable) {
while (regs->CSR.LSIRDY != 0x1);
while (regs->CSR.LSIRDY != 0x1) {}
}
}
void rcc_configure_rtc(bool enable, enum RccRtcClockSrc clock_src)
{
regs->BDCR.RTCSEL = clock_src;
regs->BDCR.RTCEN = enable;
}
void rcc_enable(enum RccAhb ahb_mask, enum RccApb1 apb1_mask,
enum RccApb2 apb2_mask)
{

View File

@ -95,6 +95,13 @@ enum RccApb2 {
RCC_APB2_TIM11 = (0x1 << 21),
};
enum RccRtcClockSrc {
RCC_RTC_CLOCK_SRC_NONE = 0x0,
RCC_RTC_CLOCK_SRC_LSE = 0x1,
RCC_RTC_CLOCK_SRC_LSI = 0x2,
RCC_RTC_CLOCK_SRC_HSE = 0x3,
};
struct RccClocks {
uint32_t ahb_freq;
uint32_t apb1_freq;
@ -118,6 +125,8 @@ void rcc_configure(enum RccPreset preset);
*/
void rcc_configure_lsi(bool enable);
void rcc_configure_rtc(bool enable, enum RccRtcClockSrc clock_src);
/**
* Enables peripherals on the different buses. The enums values can used as
* masks to enable multiple peripherals at the same time. Invalid values will be