已解决
经验如下:
RtcHandle.Instance->WPR = 0xCA; //
RtcHandle.Instance->WPR = 0x53; //
RtcHandle.Instance->ISR = (uint32_t)RTC_INIT_MASK;
while((RtcHandle.Instance->ISR & RTC_ISR_INITF) == (uint32_t)RESET){;}
RtcHandle.Instance->CR &= ((uint32_t)~RTC_CR_BCK); // Clear the bits to be configured
RtcHandle.Instance->CR |= (uint32_t)(RTC_DAYLIGHTSAVING_NONE | RTC_STOREOPERATION_RESET); // Configure the RTC_CR register */
RtcHandle.Instance->ISR &= ((uint32_t)~RTC_ISR_INIT); // Exit Initialization mode
// SET ALARM
RtcHandle.Instance->CR &= ~(RTC_CR_ALRAE); // Disable the Alarm A interrupt
RtcHandle.Instance->ISR = (~(RTC_FLAG_ALRAF | RTC_ISR_INIT) | (RtcHandle.Instance->ISR & RTC_ISR_INIT)); // Clear flag alarm A
RtcHandle.Instance->ALRMAR = RTC_ALARMMASK_ALL; //
RtcHandle.Instance->ALRMASSR = (uint32_t)(999 - 50) | RTC_ALARMSUBSECONDMASK_NONE; // Configure the Alarm A Sub Second register
RtcHandle.Instance->CR |= RTC_CR_ALRAE | RTC_IT_ALRA; // Configure the Alarm state: Enable Alarm Configure the Alarm interrupt
EXTI->IMR |= RTC_EXTI_LINE_ALARM_EVENT; // RTC Alarm Interrupt Configuration: EXTI configuration
EXTI->RTSR |= RTC_EXTI_LINE_ALARM_EVENT; //
RtcHandle.Instance->WPR = 0xFF; // Enable the write protection for RTC registers
|