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)
メイン ループには、2 つの LED のオンとオフを切り替える無限の for があります。RTC 構成がなければこれは正常に機能しますが、上記のコードを追加するとすぐに機能しなくなります。
これを行うと、残りのコードが壊れます。HSE を使用できますか? 使用できる場合、プリスカラーを正しく使用していますか?