我正在使用STM32F0xx系列芯片,尝试让RTC工作。我连接了一个外部8MHz晶体,并使用PLL创建了一个48MHz的系统时钟。显然,我想将此时钟与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)
在主循环中有一个无限for循环,该循环会使两个LED灯交替闪烁。没有RTC配置时,这可以正常工作,但只要我添加上述代码,它就无法正常工作。
如果我这样做,那么其余的代码就会出问题。我可以使用HSE吗?如果可以,我是否正确使用了预分频器?