我正在使用 stm32F0xx 系列并试图让 RTC 工作。我连接了一个外部 8MHz 晶振,并使用 PLL 创建一个 48MHz 的 sysclk。显然,我想将此时钟与 RTC 一起使用。我尝试了以下方法:
//(1) Write access for RTC registers
//(2) Enable init phase
//(3) Wait until it is allow to modify RTC register values
//(4) set prescaler,
//(5) New time in TR
//(6) Disable init phase
//(7) Disable write access for RTC registers
RTC->WPR = 0xCA; //(1)
RTC->WPR = 0x53; //(1)
RTC->ISR |= RTC_ISR_INIT; //(2)
while ((RTC->ISR & RTC_ISR_INITF) != RTC_ISR_INITF) //(3)
{
//add time out here for a robust application
}
RCC->BDCR = RCC_BDCR_RTCSEL_HSE;
RTC->PRER = 0x007C2E7C; //(4)
RTC->TR = RTC_TR_PM | 0x00000001; //(5)
RTC->ISR &=~ RTC_ISR_INIT; //(6)
RTC->WPR = 0xFE; //(7)
RTC->WPR = 0x64; //(7)
在主循环中,有一个无限开关可以打开和关闭两个 LED。如果没有 RTC 配置,这可以正常工作,但是一旦我添加上面的代码,它就会停止工作。
如果我这样做,那么其余的代码就会中断。我可以使用 HSE,如果可以,我是否正确使用了预标量?