相比较而言,STM32F407的RTC比STM32F1的更加容易配置。当然,F4的资源相对也就更加丰富很多了。具体的资源可查看官方参考手册,通过下面的图表也可以了解其大致功能
1、开始的时候对于 ALRAM A/B的功能没有怎么理解,后面再来看时发现其很简单,举个简单的例子,就比如,定的闹钟,当然,这个也是可以实现闹钟的功能。只是通过这个简单的例子来说明,ALARMA/B的用途或者功能吧
2、自动唤醒与时间戳及时间篡改事件,与1的差不多,细细体会就知道
3、RTC_AFO 与 RTC_AFI 就是对外输出及检测外部时间事件
4、 RTC的时钟源一般情况下,是使用LSE ,通过适当的分频产生一个1HZ的时钟,分频中有2个关键点,就是 异步分频因子(7bit)和同步分频因子(15bit),两者配置会影响功耗,官方建议配置异步分频因子为较高值,以减少功耗,这里采用最大值配置方式: SynchPrep = 0xFF;AsynchPrep = 0x7F;这样时钟就配置OK了
5、下面看一下RTC的初始化和配置,个人认为只要这里搞懂了,RTC也就懂了,至于自动唤醒、ALARM等都是很容易配置,更何况ST库函数已经写好了,直接调用相关函数就可。
1) 首先要知道RTC的寄存器是具有写保护功能的,因此在每次对其进行写操作前,就要先退出写保护,这里很直白的告诉我们,就是依照这个顺序操作,分别对RTC_WPR写入 0xCA 和 0x53 就可解除写保护,注意顺序不可变。其下,还有一句话,写一个错键重新激活写保护,就是随便写一个与上面2个不同的,就可再次激活写保护功能
6、 对于具体如何设置具体值就不讲了,官方库中 RTC_SetTime() /RTC_SetDate() 等函数可以很容易的实现。
7、最后将一下 RTC的备份寄存器 ,备份寄存器的作用顾名思义就是备份,其总共有20个相关寄存器,举一个简单的例子就可以明白其作用,比如我们要初始化设置RTC的相关值,第一次的时候我设置了一次,当我复位MCU,RTC还在正常运行,我并不需要重新设置RTC,这时候,我们可以在要设置RTC的时候,添加一个判断条件,就是如果我选择的备份寄存器中填入一个值,如果我独到的值和我要写的值一致,我就不重新设置RTC,如果不一致我就重新设置。当然这个值是随意设置的。
如官方例程: if (RTC_ReadBackupRegister(RTC_BKP_DR0) != 0x32F2) //判读读到的值是否与设置的一致
{
。。。。
RTC_WriteBackupRegister(RTC_BKP_DR0, 0x32F2); //设置完成后,给备份寄存器写入一个值
}
8、至此,介绍就结束了,主要还是看参考手册,当然,官方的库已经给大家省去了很多功能,但是从寄存器层面去了解如何操作的也是相当的必要。