stm32学习笔记-RTC实时时钟

news2024/12/27 20:54:02

文章目录

  • 一、RTC基础知识
    • 1.1 RTC简介
    • 1.2 RTC的晶振
  • 二、stm32的RTC
    • 2.1 RTC和后备寄存器
    • 2.2 stm32 RTC结构框图及特性
  • 三、stm32 RTC编程
    • 2.1 RTC初始化
    • 2.2 RTC控制程序

一、RTC基础知识

1.1 RTC简介

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

RTC模块之所以具有实时时钟功能,是因为它内部维持了一个独立的定时器,通过配置,可以让它准确地每秒钟中断一次。但实际上,RTC就只是一个定时器而已,掉电之后所有信息都会丢失,因此我们需要找一个地方来存储这些信息,于是就找到了备份寄存器。其在掉电后仍然可以通过纽扣电池供电,所以能时刻保存这些数据。

1.2 RTC的晶振

任何实时时钟的核心都是晶振,晶振频率为32768 Hz 。它为分频计数器提供精确的与低功耗的实基信号。它可以用于产生秒、分、时、日等信息。为了确保时钟长期的准确性,晶振必须正常工作,不能够收到干扰。RTC的晶振又分为:外部晶振和内置晶振。

RTC的晶振频率为什么是32768Hz?

  • 32768 Hz = 215 ,可以分频15次后得到1Hz的频率,1S的周期 ,实现秒计时。
  • 经过工程师的经验总结32768 Hz,时钟最准确。
  • 规范和统一。

二、stm32的RTC

2.1 RTC和后备寄存器

RTC电源
RTC和后备寄存器通过一个开关供电,在VDD有 效时该开关选择VDD供电,否则由VBAT引脚供电。
后备寄存器(10个16位的寄存器)可以用于在关闭VDD时,保存20个字节的用户应用数据。
RTC和后备寄存器不会被系统或电源复位源复位;当从待机模式唤醒时,也不会被复位。
在这里插入图片描述

RTC晶振
实时时钟具有一组连续运行的计数器,可以通过适当的软件提供日历时钟功能,还具有闹钟中断和阶段性中断功能。
RTC的驱动时钟可以是一个使用外部晶体的32.768kHz的振荡器、内部低功耗RC振荡器或高速的外部时钟经128分频。
为补偿天然晶体的偏差,可以通过输出一个512Hz的信号对RTC的时钟进行校准。
RTC具有一个32位的可编程计数器,使用比较寄存器可以进行长时间的测量。
有一个20位的预分频器用于时基时钟,默认情况下时钟为32.768kHz时,它将产生一个1秒长的时间基准。
在这里插入图片描述

RTC计时

  • STM32的RTC只用一个32位计数器来计时,而不是用年月日时分秒的分组寄存器。
  • 通过设置可以让这个计数器1秒加1,从0-0XFFFFFFFF大约可计时136年。
  • 时间起点一般设置为1970-01-01 00:00:00(因现有函数如此定义,想更改需要重新编写时间换算函数。
    如果要读当前的年月日时分秒,先读出32位RTC计数器值,然后以1970-01-01 00:00:00为起点, 加上计数器中的秒数,再换算成年月日时分秒,即可得出当前时间。

后备寄存器
在这里插入图片描述

2.2 stm32 RTC结构框图及特性

stm32的实时时钟RTC(real time clock)是一个独立的32位的定时器。stm32的RTC可以提供日历时钟,闹钟的功能。
RTC模块和时钟配置是在后备区域(下图灰色区域位后备区域)。只要后备区域提供电源,RCT便不会停止工作。通常会在后备区域提供一个纽扣电池保证RTC正常工作。
在这里插入图片描述
RTC_DIV寄存器、RTC_PRL寄存器是20位。RTC_CNT寄存器、RTC_ALR寄存器是32位。

  • 3种时钟来源
    在这里插入图片描述
    在这里插入图片描述
    常使用LSE作为时钟来源。因为215 = 32768,LSE=32.768K
    RTC_DIV常配置为32768,对LSE时钟进行分频。分频后,频率就为1Hz,实现一秒记一次数。
  • 可编程的32位的计数器
    只能向上计数。
    在这里插入图片描述
  • 3个专门的可屏蔽中断:
    在这里插入图片描述
    在这里插入图片描述
    闹钟中断还可以用来唤醒CPU,可以利用RTC实现为定时开机的功能。
    闹钟中断还可以连接外部中断。
  • 系统复位保护
    除了RTC_PRL、 RTC_ALR、 RTC_CNT和RTC_DIV寄存器外,所有的系统寄存器都由系统复位或电源复位进行异步复位。
    RTC_PRL、 RTC_ALR、RTC_CNT和RTC_DIV寄存器仅能通过备份域复位信号复位。
    系统复位后,默认禁止访问后备寄存器和 RTC,防止对后备区域(BKP)的意外写操作。若想后备寄存器和RTC ,需使能PWR、BKP时钟,允许后备寄存器BKP访问。

三、stm32 RTC编程

2.1 RTC初始化

RTC初始化分为首次启动RTC初始化,普通启动RTC初始化。
注意,由于RTC时钟与众不同,对RTC任何寄存器的写操作,都必须在前一次写操作结束后进行。
首次启动RTC初始化具体步骤如下: (RTC相关 库函数在stm32f10x rtc. c和stm32f10x_ rtc h文件中)

  1. 使能电源时钟和后备寄存器时钟,允许RTC后备寄存器写访问。
    (PWR中有备用寄存器和RTC相关的电源,RTC使用到后备寄存器,所以要打开BKP)
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR|RCC_APB1Periph_BKP, ENABLE) ;
    PWR_BackupAccessCmd(ENABLE) ;//允许后备寄存器访问
  2. 复位备份区域,开启外部低速振荡器并等待晶振稳定。
    BKP_DeInit();//这个将导致RTC被复位,不用每次都调用这个
    RCC_LSEConfig(RCC_LSE_ON) ;//打开外部低速振荡器
    while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET);
  3. 选择RTC时钟,并使能RTC,让RTC开始工作。
    RCC_RTCCLKConfi g (RCC_RTCCLKSource_LSE) ;
    RCC_RTCCLKCmd (ENABLE) ;
  4. 开启RTC后,检查时钟同步,等待写操作完成。
    RTC_WaitForSynchro();
    RTC_WaitForLastTask();
  5. 设置RTC分频器,使RTC时钟为1Hz,等待写操作完成。
    RTC_SetPrescaler(32767);//RTC period = RTCCLK/RTC_PR = (32.768 KHz)/(32767+1)
    RTC_WaitForLastTask();
  6. 设置RTC中断。(不需要中断可略)
    RTC_ITConfig(RTC_IT_SEC, ENABLE);//秒中断
    RTC_WaitForLastTask();
  7. 编写RTC中断服务函数。(不需要中断可略)
    RTC_IRQHandler
    FlagStatus RTC_GetFlagStatus(uint32_t RTC_FLAG) ;
    RTC_ClearITPendingBit(RTC_IT_SEC) ;

2.2 RTC控制程序

在这里插入图片描述
建立一个结构体来管理时间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2194848.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第十三篇——虚数:虚构这个工具有什么用?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 认知一下就拉起来了;没有的东西,构建出来&#xf…

如何使用Flair.ai实现模特换装效果

在数字化时代,科技让我们实现了许多过去无法想象的功能。Flair.ai就是这样一个神奇的工具,它可以帮助你轻松实现模特换装效果。以下是详细步骤,教你如何使用Flair.ai来实现这一过程。 第一步:访问Flair.ai网站 首先,…

10.3 Linux_进程_创建守护进程

守护进程创建方法 守护进程是什么: 守护进程又叫精灵进程,是一个生存期较长的进程,通常独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。它是一个在后台运行的孤儿进程,这使得守护进程不受终端的信息影响&…

【算法笔记】二分算法原理的深度剖析

【算法笔记】二分算法原理的深度剖析 🔥个人主页:大白的编程日记 🔥专栏:算法笔记 文章目录 【算法笔记】二分算法原理的深度剖析前言一.二分查找1.1题目1.2朴素二分1.3细节问题1.4代码实现1.5朴素模版总结 二.在排序数组中查找…

用Arduino单片机制作一个简单的音乐播放器

Arduino单片机上有多个数字IO针脚,可以输出数字信号,用于驱动发声器件,从而让它发出想要的声音。蜂鸣器是一种常见的发声器件,通电后可以发出声音。因此,单片机可以通过数字输出控制蜂鸣器发出指定的声音。另外&#x…

视频色彩变幻剪辑:批量剪辑工具大揭秘

在视频剪辑领域,将视频画面添加一些色彩是一项常见需求。幸运的是,市面上存在多款批量剪辑工具,能够轻松实现这一剪辑,提升视频品质与观感。像视频剪辑高手一次可剪辑多个视频素材。易操作。一起来试试。 1打开“视频剪辑高手”软…

【时间之外】昔日销售大佬今求职难

目录 国庆结束 中年危机下的家庭缩影:昔日销售大佬今求职难 生存智慧之三大人生策略 国庆结束 今天是国庆节的最后一天假期了。 7天的大调休,搞得人非常疲惫,想想接下来还有5天的工作日,就觉得这个调休实在是烦人。 中年危机…

企业为什么需要MES系统?

企业为什么需要MES系统? 提高生产效率: MES系统能够实时采集生产现场的数据,并根据这些数据对生产计划进行动态调整,最大化设备利用率和产能。通过优化生产流程,减少生产中的非增值时间,提高整体生产效率。…

史上最强传奇资源编辑器

支持:WIL WIS WZL PAK(GOM GEE V8 LEG) 批量修改密码、全格式转换、文件归类、资源优化、坐标调整辅助、GIF动画生成、衣服武器合成一体 资料地址:史上最强传奇资源编辑器 - 工具软件程序 - 51开发者联盟 - 51SF.CC

C语言文件操作(下)(28)

文章目录 前言一、文件的打开和关闭打开打开模式相对路径和绝对路径 关闭 二、文件操作正确流程三、文件顺序读写函数fopenfclosefputcfgetcfputsfgetsfprintffscanfsprintfsscanffwritefread 四、文件随机读写函数fseekftellrewind 五、文件读取结束时候的判断feofferror具体例…

关于持续输出内容的思路分享及分析

一、核心内容 (一)亦仁的分享 来自V先生的小密圈,提出做垂直领域内容持续输出的思路。很多大 v 不敢开小密圈是担心内容持续输出问题。掌握一套方法论应用于无数场景,就有无数案例和素材。列举 10 个铜山:装修风格点…

浏览器前端向后端提供服务

WEB后端向浏览器前端提供服务是最常见的场景,前端向后端的接口发起GET或者POST请求,后端收到请求后执行服务器端任务进行处理,完成后向前端发送响应。 那浏览器前端向后端提供服务是什么鬼? 说来话长,长话短说。我在人…

每日OJ题_牛客_组队竞赛_贪心_C++_Java

目录 牛客_组队竞赛_贪心 题目解析 C代码1 C代码2 Java代码 牛客_组队竞赛_贪心 组队竞赛_牛客笔试题_牛客网 (nowcoder.com) 描述: 牛牛举办了一次编程比赛,参加比赛的有3*n个选手,每个选手都有一个水平值a_i.现在要将这些选手进行组队,一共组成n个…

C语言 assert 函数 - C语言零基础入门教程

目录 一.assert 函数简介二.assert 函数使用三.assert 函数用法总结与注意事项四.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.assert 函数简介 对于断言,相信大家都不陌生,大多数编程语言也都有断言这一特性。简单地讲…

力扣题11~15

题11(中等): 思路: 这种题目第一眼就是双循环,但是肯定不行滴,o(n^2)这种肯定超时,很难接受。 所以要另辟蹊径,我们先用俩指针(标志位)在最左端和最右端&am…

20241007给荣品RD-RK3588-AHD开发板刷Rockchip原厂的Buildroot是使用ADB

20241007给荣品RD-RK3588-AHD开发板刷Rockchip原厂的Buildroot是使用ADB 2024/10/7 17:35 缘起:由于荣品RD-RK3588-AHD开发板使用的是9针的USB-A口,没有使用EVB4默认的type C口。 因此需要拿掉fusb302的驱动/DTS配置部分。 同时,为了简单起见…

小红书引流的4大方法

关注▲洋洋科创星球▲一起成长! 01 精心设计账号简介 账号简介是您小红书账号的第一印象,它将在您的主页上展示给所有访问者,一个精心编写的简介不仅能够吸引用户的注意力,还能有效提升用户对您内容的兴趣。 利用小红书号建立联系…

C语言文件操作(上)(27)

文章目录 前言一、为什么要用文件?二、什么是文件?程序文件数据文件文件名文件类型文件缓冲区文件指针 三、流流的概念标准流 总结 前言 C语言可以直接操作文件,如果你是第一次听说这个特性,可能会眼前一亮,感到惊奇  …

jwt认证课件讲解

JWT 基本概念 在用户登录后,我们需要在不同请求之间记录用户的登录状态,常用方式一般有三种:Cookie,Session和Token。 这里我们使用第三种Token令牌方式来实现认证鉴权,采用Json Web Token认证机制(简称…

继电器原理及应用

目录 前言 继电器 1.继电器配图 2.继电器原理图 3.继电器的使用 1-继电器的使用意义 2-继电器使用场景 继电器的简单使用 1.使用原理及接线 2.使用思考 3.代码实现 总结 前言 我们上节已经简单了解了震动传感器的使用(不懂的直接去看:震动传感器)&#xff…