BKP备份寄存器&RTC实时时钟

发布时间 2023-09-08 16:03:44作者: 磕伴

UNIX时间戳    time.h

三条路,上面主要作为系统时钟,中间的作为RTC时钟,下面的作为看门狗的时钟

与RTC有关的外部晶振(主电源断电不停)一般都i是32.768KHZ   2^15=32768  经过一个15位分频器的自然溢出(计数器,溢出事件),可以方便得到1HZ的频率

RTC_PRL分频目标(写入1就是2分频), RTC_DIV 计数分频器(自减到0时,产生溢出信号,同时从PRL获取重装值,循环)

 例子:RTCCLK=32768HZ,为了1HZ,RTC_PRL给32767, RTC_DIV初始值为0,当第一个脉冲来的时候 RTC_DIV因为是0,所以立即溢出,发信号给后续电路,同时RTC_DIV重装为32767,当下一个脉冲来的时候自减1,循环

RTC_ALR设定闹钟,当与 RTC_CNT的值相等的时候可产生中断,  也可以退出待机模式(设置定点采集数据,)

SECF F结尾的是对应的中断标志位   , IE结尾的是中断使能

 可以配置选择时钟源,配置重装系数,配置32位计数器和CMD中断和NVIC  中断函数

硬件设置

 对于RTC来说没有单独开启时钟的选项,所以:

 因为APB1总线时钟速度远大于RTC外部视时钟速度,所以APB1总线开启后,需要等待RTCCLK生效,有个上升沿把寄存器的值同步到APB1总线上,这样值才能被读取,否则只会读到0  【初始化时调用一个等待函数就行】

 

 RTOFF为1,表示写入完成,可写下一个数据; 也有因为PCLK与RTCCLK时钟频率不同导致  (调用等待函数就行)