第十二章 RTC实验12.1 实验目的本实验旨在掌握STM32的实时时钟RTC的使用,利用其测量日期时间,数据手册请参看第16章。
12.2 实验简介STM32 的实时时钟(RTC)是一个独立的定时器。 STM32的RTC模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和日期。
RTC 模块和时钟配置系统(RCC_BDCR 寄存器)是在后备区域,即在系统复位或从待机模式唤醒后 RTC 的设置和时间维持不变。
系统复位后,会自动禁止访问后备寄存器和RTC,以防止对后备区域(BKP)的意外写操作。所以在要设置时间之前,先要取消备份区域(BKP)写保护。
STM32的RTC具有掉电继续运行的特性,在主电源VDD 断开时,为了 RTC 外设掉电继续运行,必须给STM32芯片通过VBAT引脚接上锂电池。当主电源 VDD 有效时,由VDD给RTC外设供电。当VDD掉电后,由VBAT给RTC外设供电。但无论由什么电源供电,RTC中的数据都保存在属于RTC的备份域中,若主电源 VDD和 VBAT都掉电,那么备份域中保存的所有数据将丢失。 备份域除了RTC模块的寄存器,还有42个16位的寄存器可以在VDD掉电的情况下保存用户程序的数据,系统复位或电源复位时,这些数据也不会被复位。
STM32F4 的实时时钟(RTC)相对于STM32F1来说,改进了不少,带了日历功能了,STM32F4的RTC,是一个独立的BCD定时器/计数器。RTC提供一个日历时钟(包含年月日时分秒信息)、两个可编程闹钟(ALARM A和ALARM B)中断,以及一个具有中断功能的周期性可编程唤醒标志。 RTC还包含用于管理低功耗模 式的自动唤醒单元。
两个 32 位寄存器(TR和DR)包含二进码十进数格式 (BCD) 的秒、分钟、小时(12或24小时制)、星期、日期、月份和年份。此外,还可提供二进制格式的亚秒值。
STM32F4的RTC可以自动将月份的天数补偿为 28、 29(闰年)、 30 和 31 天。并且还可以进行夏令时 补偿。
RTC 模块和时钟配置是在后备区域,即在系统复位或从待机模式唤醒后 RTC 的设置和时间维持不变,只要后备区域供电正常,那么 RTC 将可以一直运行。但是在系统复位后,会自动禁止访问后备寄存器和 RTC,以防止对后备区域(BKP)的意外写操作。所以在要设置时间之前,先要取消备份区域(BKP)写保护。
从RTC的定时器特性来说,它是一个32位的计数器,只能向上计数。它使用的时钟源有三种,分别为高速外部时钟的128分频: HSE/128;低速内部时钟LSI;使HSE分频时钟或LSI的话,在主电源 VDD 掉电的情况下,这两个时钟来源都会受到影响,因此没法保证RTC正常工作。因此RTC一般使用低速外部时钟LSE,频率为实时时钟模块中常用的32.768KHz,这是因为32768 = 215,分频容易实现,所以它被广泛应用到RTC模块。在主电源 VDD有效的情况下(待机), RTC还可以配置闹钟事件使STM32退出待机模式。
RTC的框图如下图所示:
图12.2.1 RTC功能框图
12.3 电路设计本实验用到的硬件资源有TFT、串口和RTC,RTC为片上资源,其相关的外围电路就是32.768KHz晶振电路和电池电路,其它资源电路,前面已经介绍过,这里略过。
12.4 软件设计打开光盘目录下的3、程序源码->1、基础实验->下的实验9 RTC实验工程,打开左侧目录树BSP下的rtc.c文件,此为RTC实时时钟的驱动程序文件,工程目录如下图所示:
图12.4.1
打开rtc.c文件,代码如下:
此内容由EEWORLD论坛网友hejecu原创,如需转载或用于商业用途需征得作者同意并注明出处
打开main.c文件,代码如下:
12.5 下载验证 用MINI USB线通过CN3的USB口连接电脑和开发板,拨动电源开关给开发板上电,D3电源指示灯点亮,连接好JLINK/ST-LINK下载调试器,打开“实验9 RTC实验”工程代码,编译下载,打开串口调试助手,串口波特率115200,每隔1S打印一次当前日期时间信息,。
本文来自论坛,点击查看完整帖子内容。