在STM32的CPU有一个RTC引脚,用于衔接电池。当体系掉电后,主动由电池给RTC供电,完结时刻计数。
对RTC的拜访是经过APB1接口进行的。APB1刚被敞开的时分,从APB1读来的RTC寄存器的第一个值可能是被破坏了的。因此在程序中,先等候RTC_CRL寄存器中的RSF位被硬件置1,然后才开端读操作。关于写操作,在每一次写操作有必要确保前一次写操作完结,即经过查询RTC_CR寄存器中的RTOFF状况位,判别RTC寄存器是否处于更新状况中。只要当RTOFF状况位是1,才能够写RTC寄存器。
RTC模块的寄存器实际上只要5个:操控寄存器RTC_CR,预分频装在寄存器RTC_PRL,预分频余数寄存器RTC_DIV,计数器寄存器RTC_CNT,闹钟寄存器RTC_ALR。
第一次装备需求做的作业包含:
1.翻开电源办理和备份寄存器时钟。留意一定要翻开备份寄存器时钟。正是经过备份寄存器写固定的数据来判别芯片是否是第一次运用RTC,从而在体系运行时提示装备时钟。
2.使能RTC和备份寄存器的拜访(复位默许是封闭的)。
3.挑选外部低速晶体为RTC时钟,并使能时钟。
4.使能秒中止。程序里在秒中止里置位标志位来告诉主程序显现时刻数据,一起在32位计数器到23:59:59时清零。
5.设置RTC预分频器,发生1秒信号计算公式。FTR_CLK=FRTCCLK/(PRL+1)设置32767发生秒信号。
经过RTC_GetConter();获取计数值,然后把这个计数值分别用小时、分钟、秒来表明,最终还需求调用Printf函数把它显现在超级终端窗口或相应的其它显现函数。
效果图见http://v.youku.com/v_show/id_XNTk5MTM4MjY4.html,比较有意思的一段小视频。要点看后面的时刻是按秒更新的。