嵌入式——实时时钟(RTC)

目录

一、初识RTC

1.简介

2.特性

3.后备寄存器和RTC寄存器特性

二、RTC组成

1.相关寄存器

(1)控制寄存器高位(RTC_CRH)

(2)控制寄存器低位(RTC_CRL)

(3)预分频装载寄存器高位(RTC_PRLH)

(4)预分频裝载寄存器低位(RTC_PRLL)

(5)计数器寄存器高位(RTC_CNTH)

(6)计数器寄存器低位(RTC_CNTL)

(7)电源控制寄存器(PWR_CR)

[(8)APB1 外设时钟使能寄存器(RCC_APB1ENR)](#(8)APB1 外设时钟使能寄存器(RCC_APB1ENR))

(9)备份域控制寄存器(RCC_BDCR)

2.RTC结构

3.RTC基本配置步骤

4.RTC系统配置流程描述

三、RTC驱动程序


一、初识RTC

1.简介

实时时钟是一个独立的定时器 。RTC模块拥有一组连续计数的计数器,在相应软件配置下,可**提供时钟日历的功能,**计数频率常为秒。修改计数器的值可以重新设置系统当前的时间和日期。

2.特性

(1)32位的可编程计数器,可用于较长时间段的测量

(2)能在MCU掉电后运行

(3) 低功耗

3.后备寄存器和RTC寄存器特性

(1)部分寄存器写保护:RTC_PRL、RTC_ALR、RTC_CNT和RTC_DIV寄存器不会被系统复位。

(2)数据存储功能 :RTC和后备寄存器不会被系统或电源复位源复位 ;当从待机模式唤醒时,也不会被复位。后备寄存器可用于保存掉电时的数据

(3)独立工作 :RTC和后备寄存器通过一个开关供电 ,在VDD有效时该开关选择VDD供电,否则由VBAT引脚供电在VBAT供电时仍可继续工作

(4)2个独立复位:APB1接口由系统复位;RTC核心只能由后备域复位;

二、RTC组成

1.相关寄存器

(1)控制寄存器高位(RTC_CRH)

位2(OWIE):允许溢出中断位。

位1(ALRIE):允许闹钟中断。

位0(SECIE):允许秒中断。

(2)控制寄存器低位(RTC_CRL)

位5(RTOFF):RTC操作关闭。(指示对其寄存器进行的最后一次操作的状态,即指示操作是否完成

*位4(CNF):配置标志。(只有当此位**在被置'1'并重新由软件清'0'*后,从而允许向RTC_CNT、RTC_ALR或RTC_PRL寄存器写入数据)

(3)预分频装载寄存器高位(RTC_PRLH)
(4)预分频裝载寄存器低位(RTC_PRLL)
(5)计数器寄存器高位(RTC_CNTH)
(6)计数器寄存器低位(RTC_CNTL)
(7)电源控制寄存器(PWR_CR)
(8)APB1 外设时钟使能寄存器(RCC_APB1ENR)

位28(PWREN):电源接口时钟使能。

位27(BKPEN):备份接口时钟使能。

(9)备份域控制寄存器(RCC_BDCR)

位15(RTCEN):RTC时钟使能。

位9:8(RTCSEL):RTC时钟源选择。

位 0(SEON):外部低速振荡器使能。

2.RTC结构

RTC由两个主要部分组成。++第一部分(APB1接口)++ 用来和APB1总线相连++另一部分(RTC核心)++ 由一组可编程计数器组成,分成两个主要模块。第一个模块是RTC的预分频模块 (可编程产生最长为1秒的RTC时间基准TR_CLK)。第二个模块是一个32位的可编程计数器 ,可被初始化为当前的系统时间

++补充:++

(1)RTC可以选择三种RTC的时钟源

①HSE时钟除以128。

②LSE振荡器时钟。

③LSI振荡器时钟。

(2)RTC的APB1单元还包含一组16位寄存器,可通过APB1,总线对其进行读写操作。

(3)APB1接口由APB1总线时钟驱动,用来与APB1总线接口。

(4)RTC的预分频模块 包含的是一个20位的可编程分频器 (RTC预分频器),分频系数最高为2的20次方

(5)RTC有3个专门的可屏蔽中断

①**闹钟中断:**用来产生一个软件可编程的闹钟中断。

②**秒中断:**用来产生一个可编程的周期性中断信号(最长可达1秒)。

③**溢出中断:**指示内部可编程计数器溢出并回转为0的状态。

(6)如果在RTC_CR寄存器中设置了相应的允许位,则在每个TR_CLK周期 中RTC产生一个中断(++秒中断++)。

(7)系统时间按TR_CLK周期 累加并与存储在RTC_ALR寄存器中的可编程时间相比较,如果RTC_CR控制寄存器中设置了相应允许位,比较匹配时将产生一个中断(++闹钟中断++)。

3.RTC基本配置步骤

(1)使能对RTC的访问:使能PWR和BKP时钟( RCC_APB1ENR**)** 、使能对后备寄存器和RTC( PWR_CR**)**的访问权限

(2)设置RTC时钟源:激活LSE,设置RTC的计数时钟源为LSE 。(RCC_BDCR)

(3)进入配置模式:等待RTOFF位 为1,设置CNF位 为1。(RTC_CRL)

(4)设置RTC寄存器:设置分频值、计数值 等(RTC_PRL),一般先只设置分频值,CNT的设置独立。

(5)退出配置模式:清除CNF位 ,等待RTOFF 位 为1(RTC_CRL)即配置完成。

4.RTC系统配置流程描述

(1)查询RTOFF位,直到RTOFF的值变为1。

(2)置CNF值 为1,进入配置模式

(3)对一个或多个RTC寄存器进行写操作

(4)清除CNF标志位退出配置模式

(5)查询RTOFF,直至RTOFF 位变为 **'1'**以确认写操作已经完成。

三、RTC驱动程序

1.使能电源时钟并使能后备域访问: __HAL_RCC_PWR_CLK_ENABLE(使能电源时钟)、__HAL_RCC_BKP_CLK_ENABLE (使能备份时钟)、HAL_PWR_EnableBkUpAccess(使能备份访问)

2.开启LSE / 选择RTC时钟源 / 使能RTC时钟: HAL_RCC_OscConfig(开启LSE)、HAL_RCCEx_PeriphCLKConfig (选择RTC时钟源)、__HAL_RCC_RTC_ENABLE (使能RTC时钟)

3.初始化RTC,设置分频值以及工作参数: HAL_RTC_Init(初始化RTC)、HAL_RTC_MspInit(完成RTC底层初始化工作)

4.设置RTC的日期和时间

5.获取RTC当前日期和时间

相关推荐
aloha_7891 小时前
从零记录搭建一个干净的mybatis环境
java·笔记·spring·spring cloud·maven·mybatis·springboot
hairenjing11231 小时前
使用 Mac 数据恢复从 iPhoto 图库中恢复照片
windows·stm32·嵌入式硬件·macos·word
dsywws2 小时前
Linux学习笔记之vim入门
linux·笔记·学习
模拟IC攻城狮3 小时前
华为海思招聘-芯片与器件设计工程师-模拟芯片方向- 机试题-真题套题题目——共8套(每套四十题)
嵌入式硬件·华为·硬件架构·芯片
IT B业生3 小时前
51单片机教程(六)- LED流水灯
单片机·嵌入式硬件·51单片机
一枝小雨3 小时前
51单片机学习心得2(基于STC89C52):串口通信(UART)
单片机·嵌入式硬件·51单片机
IT B业生4 小时前
51单片机教程(一)- 开发环境搭建
单片机·嵌入式硬件·51单片机
A-超4 小时前
vue3展示pag格式动态图
笔记
u0101526585 小时前
STM32F103C8T6学习笔记2--LED流水灯与蜂鸣器
笔记·stm32·学习
weixin_518285055 小时前
深度学习笔记10-多分类
人工智能·笔记·深度学习