STM32F0之RTC模块
初始化日历
步骤 做什么 如何做 评论
1 取消RTC寄存器写保护 在寄存器RTC_WPR写入0xCA然后写入0x53 RTC寄存器能够被改写
2 进入初始化模式 在寄存器RTC_ISR中设置INIT位为1 日历计数器停止允许更新数据
3 等待初始化确认(时钟同步) 轮询RtC_ISR中INITF位直到置位 大约消耗两个RTCCLK时钟周期
4 根据需要编程预分频寄存器 RTC_PRER寄存器:写入同步值和异步值 默认情况下当RTCCLK=32768Hz时候RTC_PrER预分频寄存器被初始化1Hz
5 加载时间和日期数据到影子寄存器 设置RTC_tr和RTC_DR寄存器
6 配置时间格式(12小时制或者24小时制) 通过设置RTC_CR寄存器的FMT位 FMT=0,24小时制
FMT=1,12小时制
7 退出初始化模式 清零RTC_ISR寄存器的INIT位 4个时钟周期后日历计数器讲自动重启
8 使能Rtc寄存器写保护 在RTC_WPR寄存器写入0xFF RTC寄存器不能再被更改
RTC时钟源日历单元预分频器
RTC时钟--->异步预分频器(七位默认值=128)PREDIV_A--->同步预分频器(13位默认值256)PREDIV_S--(Ck_Spre)-->日历单元(影寄存器RTC_TR和RTC_DR)
Ck_SPRE=RTCCLK/((PREDIV_A+1)*(PREDIV_S+1))
RTCCLK能够使用的时钟源有:HSE_RTC,LSE或者LSI
PREDIV_A取值范围1~127
PREDIV_S取值范围 0~8191 |