总结:
RTC功能模块分为两个部分,一个是与APB1总线接口打交道的RTC_CR等寄存器,他们由系统供电,另一个则RTC内核部分,分别有RTC_PRL,RTC_DIV,RTC_CNT,RTC_ALR,均由电池单独供电,但是他们都有RTC的32.768k提供时钟
1>EXTI17线的触发方式可以任选 但是必须选择 否则将无法进入RTC_AlarmIRQ()
2>必须在RTC_AlarmIRQ函数里清除EXTI_17的Pending 否则将反复进入中断
3>RTC->CRH里面的ALRIE是用于管理全局中断产生的,当ALRIE=0,即使闹钟时间到了,也无法进入全局中断,而当ALRIE=0时,只要EXTI-17线允许中断,如果计时时间到来以后,将进入RTC_AlarmIRQ中断函数处理(虽然ALRIE=0),但是该种情况,我们需要清除一个标志位,为EXTI_17的Pending位,因为,如果有一个没清除将导致上次中断事件未清除而反复进入RTC_AlarmIRQ中断函数,而产生错误
4> 总结为一句话,当使用EXTI_17线时,RTC_CNT的ALRIE和ALRF位的状态对中断服务无影响,唯一的影响中断的因素为EXTI_17的Pending位
5>当进入配置模式时,当数据写入RTC_CNT、RTC_ALR、RTC_PRL寄存器的时候,只有退出寄存器,数据才会真正写入