STM32 RTC寄存器操作步骤
时间:08-05 09:57 阅读:1514次
*温馨提示:点击图片可以放大观看高清大图
简介:本文介绍了使用STM32内部实时时钟RTC的寄存器的操作步骤以及对应的作用。
寄存器操作步骤
1、使能电源时钟和备份区域时钟。
我们要访问 RTC 和备份区域就必须先使能电源时钟 和 备份区域时钟。这个通过RCC_APB1ENR 寄存器来设置。
2、取消备份区写保护。
要向备份区域写入数据,就要先取消备份区域写保护(写保护在每次硬复位之后被使能),否则是无法向备份区域写入数据的。我们需要用到向备份区域写入一个字节,来标记时钟已经配置过了,这样避免每次复位之后重新配置时钟。
3、复位备份区域,开启外部低速振荡器。
在取消备份区域写保护之后,我们可以先对这个区域复位,以清除前面的设置,当然这个操作不要每次都执行,因为备份区域的复位将导致之前存在的数据丢失,所以要不要复位,要看情况而定。然后我们使能外部低速振荡器,注意这里一般要先判断RCC_BDCR的LSERDY位来确定低速振荡器已经就绪了才开始下面的操作。
4、选择RTC时钟,并使能。
这里我们将通过RCC_BDCR的RTCSEL来选择选择外部LSI 作为RTC 的时钟。然后通过RTCEN位使能RTC 时钟。
5、设置RTC的分频,以及配置RTC时钟。
在开启了RTC 时钟之后,我们要做的就是设置RTC 时钟的分频数,通过RTC_PRLH 和RTC_PRLL 来设置,然后等待RTC 寄存器操作完成,并同步之后,设置秒钟中断。然后设置RTC 的允许配置位(RTC_CRH 的CNF 位),设置时间(其实就是设置RTC_CNTH和RTC_CNTL两个寄存器)。
6、更新配置,设置RTC中断。
在设置完时钟之后,我们将配置更新,这里还是通过RTC_CRH 的CNF 来实现。在这之后我们在备份区域BKP_DR1中写入0X5050代表我们已经初始化过时钟了,下次开机(或复位)的时候,先读取BKP_DR1 的值,然后判断是否是0X5050 来决定是不是要配置。接着我们配置RTC 的秒钟中断,并进行分组。
7、编写中断服务函数。
最后,我们要编写中断服务函数,在秒钟中断产生的时候,读取当前的时间值,并显示到TFTLCD 模块上