STM32入门学习笔记之RTC实验(上)

发布时间:2024-04-03  

12.1 概述

实时时钟Real TimeClock(简称RTC),实时时钟芯片是日常生活中应用最为广泛的消费类电子产品之一。它为人们提供精确的实时时间,或者为电子系统提供精确的时间基准,目前实时时钟芯片大多采用精度较高的晶体振荡器作为时钟源。有些时钟芯片为了在主电源掉电时,还可以工作,需要外加电池供电。


现在的ARM体系处理器基本都会内置RTC模块,STM32也不例外。STM32内部RTC结构如下图所示。

图片

RTC主要有两个部分组成,第一部分的APB1接口用来和APB1总线相连,此单元还包含一组16位寄存器,可通过APB1总线对其进行读写操作。另一部分由一组可编程计数器组成,分成两个主要模块。第一个模块是RTC的预分频模块,它可编程产生最长为1秒的RTC时间基准TR_CLK。RTC的预分频模块包含了一个20位的可编程分频器。如果在RTC_CR寄存器中设置了相应的允许位,则在每个TR_CLK周期中RTC产生一个中断。第二个模块是一个32位的可编程计数器,可被初始化为当前的系统时间。系统时间按TR_CLK周期累加并与存储在RTC_ALR寄存器中的可编程时间相比较,如果RTC_CR控制寄存器中设置了相应允许位,比较匹配时将产生一个闹钟中断。

RTC模块和时钟配置系统是在后备区域,即在系统复位或从待机模式唤醒后RTC的设置和时间维持不变。但是在系统复位后,会自动禁止访问后备寄存器和RTC,以防止对后备区域的意外写操作。所以在要设置时间之前,先要取消备份区域写保护。

12.2 相关寄存器

12.2.1 控制寄存器1:RTC_CRH

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- OWIE ALRIE SECIE











Bit 2:允许溢出中断位

0:屏蔽溢出中断

1:允许溢出中断

Bit 1:允许闹钟中断

0:屏蔽闹钟中断

1:允许闹钟中断

Bit 0:允许秒中断

0:屏蔽秒中断

1:允许秒中断

12.2.2 控制寄存器2:RTC_CRL

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- RTOFF CNF RSF OWF ALRF SECF








Bit 5:RTC操作关闭

0:写操作未完成

1:操作已完成

Bit 4:配置标志

0:退出配置模式

1:进入配置模式

Bit 3:RTC同步标志

RTC_CNT寄存器和RTC_DIV寄存器由软件更新或清0时,此位由硬件置1。在APB1复位后,或APB1时钟停止后,此位必须由软件清0。要进行任何的读操作之前,用户程序必须等待这位被硬件置1

0:寄存器尚未被同步

1:寄存器已经被同步

Bit 2:溢出标志

当32位可编程计数器溢出时,此位由硬件置1。此位只能由软件清0

0:无溢出

1:32位可编程计数器溢出

Bit 1:闹钟标志

当32位可编程计数器达到RTC_ALR寄存器所设置的预定值,此位由硬件置1。此位只能由软件清0。

0:无闹钟

1:有闹钟

Bit 0:秒标志

当32位可编程预分频器溢出时,此位由硬件置1,同时RTC计数器加1。此位只能由软件清除。

0:秒标志条件不成立

1:秒标志条件成立

12.2.3 预分频装载寄存器1:RTC_PRLH

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- PRL[19:16]













Bit 3~Bit 0:RTC预分频装载值高位

12.2.4 预分频装载寄存器2:RTC_PRLL

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PRL[15:0]














Bit 15~Bit 0:RTC预分频装载值低位

注:RTC时钟频率根据预分频寄存器的值有如下计算公式。

图片

其中RTCCLK代表的RTC的输入时钟,一般默认32.768kHz。


12.3 实验例程

功能:读取RTC的日期显示在LCD上面。


(1)创建rtc.h文件输入以下代码。


/*********************************************************************************************************

                RTC    驱    动    文    件

*********************************************************************************************************/

#ifndef _RTC_H_

#define _RTC_H_



#include "sys.h"

/*********************************************************************************************************

                  数    据    结    构

*********************************************************************************************************/

typedef struct

{

  u8 year;                    //年

  u8 month;                    //月

  u8 date;                    //日

  u8 hour;                    //时

  u8 minute;                    //分

  u8 second;                    //秒

}RTC_Data;

extern RTC_Data RTC_Time;

/*********************************************************************************************************

                  函    数    列    表

*********************************************************************************************************/

void RTC_Init( void ) ;                                          //RTC初始化

void RTC_Set_Time( u8 year, u8 month, u8 date, u8 hour, u8 minute, u8 second ) ;            //设置时间

void RTC_Get_Time( void ) ;                                        //获取时间



#endif


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>