BKP备份寄存器RTC实时时钟

news2024/11/16 3:16:09

BKP本质上是RAM寄存器,不能完全掉电不丢失,它的数据需要VBAT引脚提供的备用电源来维持。RTC复位和掉电不丢失是通过BKP来实现的。


目录

Unix时间戳

简介

计时标准​编辑

 时间戳转换​编辑

 示例代码

 BKP

简介

BKP基本结构 

 RTC

RTC简介

 RTC框图

RTC基本结构

硬件电路 

RTC操作注意事项 


Unix时间戳

简介

计时标准

 时间戳转换

 示例代码

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

time_t time_cnt;
struct tm time_date;
char *str;
int main()
{
    //调用 time_t time(time_t*)获取系统时钟;
    time_cnt=time(NULL);        //方法一
    time(&time_cnt);            //方法二
    printf("%d\n",time_cnt);

    //调用struct tm* gmtime(const time_t*)秒计数器转换伦敦时间(格林尼治时间)的函数
    time_date=* gmtime(&time_cnt);  //方法一对右边取内容
   // time_date=gmtime(&time_cnt);  //方法二将左边定义为指针类型。struct tm *
    printf("%d ",time_date.tm_year+1900);
    printf("%d ",time_date.tm_mon+1);
    printf("%d ",time_date.tm_mday);
    printf("%d ",time_date.tm_hour);
    printf("%d ",time_date.tm_min);
    printf("%d ",time_date.tm_sec);
    printf("%d \n",time_date.tm_wday);


    // 调用struct tm* localtime(const time_t*)秒计数器转换为日期时间(当地时间)
    time_date=* localtime(&time_cnt);  //方法一对右边取内容
    printf("%d ",time_date.tm_year+1900);
    printf("%d ",time_date.tm_mon+1);
    printf("%d ",time_date.tm_mday);
    printf("%d ",time_date.tm_hour);
    printf("%d ",time_date.tm_min);
    printf("%d ",time_date.tm_sec);
    printf("%d \n",time_date.tm_wday);

    //time_t mktime(struct tm*)  日期时间转换为秒计数器(当地时间)
    time_cnt=mktime(&time_date);
    printf("%d\n",time_cnt);

    //char* ctime(const time_t*)  秒计数器转化为字符串(默认格式)
    str=ctime(&time_cnt);
    printf(str);

    //char *asctime(const struct tm*)   日期时间转换为字符串(默认格式)
   str = asctime(&time_date);
   printf(str);

   //size_t strftime(char*,size_t,const char*,connst struct tm*)  日期时间转换为字符串(自定义格式)
    char a[50];
    strftime(a, 50, "%H-%M-%S",&time_date);
    printf(a);

    return 0;
}

 运行结果


 BKP

简介

BKP基本结构 


 RTC

RTC简介

 RTC框图

  • 灰色部分是后备区域,这些电路在主电源断电后可用备用电池维持工作。
  • RTC_CNT32位可编程计数器对应时间戳里的秒计数器。读取时间时,先得到秒数然后调用time.h里的localtime函数便可得到年月日时分秒的信息。写入时间时,先填充年月日时分秒的信息到struct tm结构体里,再用maketime得到秒数写入到32位计数器。
  • RTC_RPL重装载计数器,RTC_DIV余数自减计数器。每来一个输入时钟RTC_DIV自减一,到0时再来一个输入时钟输出一个脉冲,产生溢出信号同时获取重装值。
  • RTC_ALP闹钟寄存器。当CNT和设定的闹钟值一样时会产生RTC_Alarm信号,通往右边的中断系统,同时这个闹钟信号可以让stm32退出待机模式(可以有一些用途)。该闹钟值是一个定值只能响一次,所以要实现周期性的闹钟需要在闹钟响之后重新设置下一个闹钟时间
  • RTCCLK三个来源看下一个图

  在RCC时钟树中,只有中间的专供RTC的时钟可以通过VBAT备用电池供电(可以实现RTC主电源断电继续走时的功能),上下两路时钟在主电源断电时是停止运行的。

RTC基本结构

配置数据选择器可以选择时钟来源

配置重装寄存器可以选择分频系数

配置32位计数器可以进行日期时间的读写 

配置32位闹钟值可以实现闹钟

实现中断先允许终端再配置NVIC最后写中断函数

硬件电路 

黑色的部件是32.768khz的晶振,金属壳状体是8khz外部高速晶振。

画板子可以参考下图连接

RTC操作注意事项 

第一步开启PWR和BKP的时钟,第二步使用PWR,使能BKP和RTC访问。

在框图中可以看到PCLK132MHZ频率远大于RTCCLK32KHZ。所以在刚开启APB1时要等RTCCLK,来一个上升沿RTC把它的寄存器的值同步到APB1总线上。只需调用一个等待同步的函数即可。

 

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

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

相关文章

【100个 Unity实用技能】 | Unity中Text文本框 和 InputField文本输入框 内容换行问题【文末送书】

&#x1f3ac; 博客主页&#xff1a;https://xiaoy.blog.csdn.net &#x1f3a5; 本文由 呆呆敲代码的小Y 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f384; 学习专栏推荐&#xff1a;Unity系统学习专栏 &#x1f332; 游戏制作专栏推荐&#xff1a;游戏制作 &…

【深度学习】神经网络初学者指南

一、说明 这是一篇对神经网络的泛泛而谈的文章&#xff0c;我的意见是&#xff0c;先知道框架&#xff0c;而后知道每一个细节&#xff0c;这是学习人工智能的基本路线。本文就神经网络而言&#xff0c;谈到一些基础概念&#xff0c;适应于初学者建立概念。 二、神经网络定义 神…

初学Spring boot (一) Hello,World!

SpringBoot简介 回顾什么是Spring? Spring是一个开源框架&#xff0c;2003 年兴起的一个轻量级的Java 开发框架&#xff0c;作者&#xff1a;Rod Johnson 。 Spring是为了解决企业级应用开发的复杂性而创建的&#xff0c;简化开发。 Spring是如何简化Java开发的 为了降低Java…

element 表格

实现效果&#xff1a; 需求&#xff1a; 1. 左侧新增分类功能添加数据到左侧分类表格中。 2. 分类表格可以编辑和删除。 3. 右侧添加标签功能&#xff0c;添加标签至所属分类中。 4.右侧表格显示分类与所挂在当前分类下的所有标签。 5. 右侧表格内删除按钮&#xff0c;删除…

C++之模板类指向子类对象(一百四十六)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

diy遥控飞机模型的基本要点-4

电调 电调&#xff08;Electronic Speed Controller&#xff0c;简称ESC&#xff09;是遥控飞机中的一种关键设备&#xff0c;用于控制电动马达的转速和方向。下面是关于电调的一些知识&#xff1a; 功能 速度调节&#xff1a;电调通过调整电流的大小和方向来控制电动马达的…

window系统安装node,配置环境变量npm指令

首先 你要在本地创建一个文件夹 来放node window我们直接访问node下载地址 根据自己的电脑配置 选择对应的版本 这里的话 我建议还是选择 .msi 文件 处理会方便一点 下砸好之后我们直接双击运行 然后 下一步 Next 然后 勾选下面的协议 然后 继续下一步 这个都没必要看 只能说…

Oracle-记OGG迁移项目问题与优化(5-6月)

背景: 5-6月使用oggexpdp将两套Oracle 11g从AIX7.1迁移到redhat7.9,数据量接近3T&#xff0c;本文主要记录ogg迁移过程中遇到的问题以及优化方法&#xff0c;希望对读者有所帮助 问题一:OGG数据一致性校验 使用OGG数据迁移&#xff0c;需要面对的一个大问题就是如何进行源端和目…

Java 实现关注微信公众号动态获取验证码

大家好&#xff0c;我是程序猿小张 前言 个人博客今天上线一个文章私密的功能&#xff0c;该功能需要通过关注公众号来获取验证码&#xff0c;通过正确的验证码才能来查阅文章&#xff0c;具体效果如下图。 我感觉还蛮有意思的就决定把这个写出来&#xff0c;供大家去使用&…

Web3.0数字货币有哪些?

Web3.0的到来为数字货币带来了全新的发展机遇&#xff0c;它不仅仅是加密货币的进化版&#xff0c;更是一种去中心化、可编程性和自治性的数字资产。 在这个新的数字经济时代&#xff0c;Web3.0数字货币成为了金融革命的核心。本文将介绍一些重要的Web3.0数字货币&#xff0c;…

基于SpringBoot+vue的新生宿舍管理系统设计与实

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

基于Servlet的CRM客户关系管理系统

1.需求分析 客户是公司最宝贵的资源&#xff0c;为了更好的发掘老客户的价值,并开发更多新客户,公司实施客户关系管理系统。系统的功能是:通过这个系统完成对员工基本信息、客户基本信息、交往信息、客户服务信息的充分共享和规范化管理;通过对销售机会、客户开发过程的追踪和…

服务器配置静态IP

服务器配置静态IP 一、前期准备二、配置静态IP 将服务器配置为使用静态IP地址。这将使服务器拥有一个永久的IP地址&#xff0c;而不会在每次启动时更改。为此&#xff0c;您需要编辑网络配置文件并将服务器的IP地址添加到其中。详细步骤如下&#xff1a; 一、前期准备 请在配置…

Docter容器

轻量&#xff0c;高效&#xff0c;敏捷 本质是进程&#xff0c;所以才轻量&#xff0c;namespace隔离资源&#xff0c;cgroups资源限制 namespace 运行容器&#xff0c;100个容器争夺资源&#xff0c; 给每个容器分配多少资源 审计&#xff1a;你利用多少资源&#xff1f;技…

免费的CRM软件都有哪些功能?

有哪些免费好用的CRM软件推荐&#xff1f;Zoho CRM是免费的CRM客户管理软件。虽然限制了部分功能&#xff0c;但是依然可以管理客户关系&#xff0c;提高销售效率&#xff0c;实现快速增长。 联系人管理&#xff1a; 创建和管理联系人&#xff0c;记录他们的基本信息、交易历…

阿里云短信平台收费标准价格表

阿里云短信服务平台&#xff0c;阿里云短信0.032元一条&#xff0c;阿里云短信&#xff1f;阿里云短信怎么收费&#xff1f;阿里云短信多少钱一条&#xff0c;阿里云短信0.032元一条。新用户购买阿里云短信套餐包6.9元200条起&#xff0c;费用0.032元/条&#xff0c;阿里云短信…

轻量级的CRM系统有哪些优势

市面上的CRM客户管理系统多种多样&#xff0c;但并不是所有的CRM系统都适合您的企业——有些CRM过于复杂和昂贵&#xff0c;初创或小型企业无法负担。那么&#xff0c;有哪些好用的轻量级在线CRM系统&#xff1f; Zoho Bigin是初创或小型企业设计的轻量级在线CRM系统&#xff…

联想小新电脑无法启动怎么办?

1&#xff0c;电脑启动不了 2&#xff0c;强制断电3次开机后&#xff0c;Win11进入高级启动模式 &#xff08;注意每次强制关机要按住15秒左右&#xff09; 3&#xff0c;选择疑难解答 4&#xff0c;选择高级选项 5&#xff0c;卸载更新 6&#xff0c;卸载最新的质量更新 7&am…

Spring Boot 中的 Spring Cloud Feign

Spring Boot 中的 Spring Cloud Feign Spring Boot 是一个非常流行的 Java Web 开发框架&#xff0c;它提供了很多工具和组件来简化 Web 应用程序的开发。其中&#xff0c;Spring Cloud Feign 是 Spring Boot 中的一个非常重要的组件&#xff0c;它可以帮助我们实现声明式的 R…

Git构建和Github的ssh配置

由于你的本地 Git 仓库和 GitHub 仓库之间的传输是通过SSH加密的&#xff0c;所以我们需要配置验证信息 ssh-keygen -t rsa -C "youremailexample.com" your_emailyouremail.com 改为你在 Github 上注册的邮箱&#xff0c;之后会要求确认路径和输入密码&#xff0c…