当前位置: 首页 > article >正文

【STM32】RTC

忠实的时间记录者——RTC,板子断电也能继续记录(当然,得有纽扣电池供电)。

大部分图片来源:正点原子HAL库课程

 专栏目录:记录自己的嵌入式学习之路-CSDN博客


目录

1    概述

2    应用

3    RTC方案

4    时钟源

5    计数器

6    后备寄存器和RTC寄存器

6.1    设置时间

7    配置步骤

8    相关HAL库相关函数

9    配置步骤

10    时间设置与读取

11    使用备份寄存器存储数据


1    概述

实时时钟(Real Time Clock,RTC),本质是一个独立的计数器,计数频率常为秒,专门用来记录时间。

  • 能提供时间(秒钟数)
  • 能在MCU掉电后运行(无需VDD供电)
  • 低功耗

2    应用

时间记录、闹钟?


3    RTC方案


共同点:

  • 一般都需要设计RTC外围电路;
  • 一般都可以给RTC设置独立的电源;
  • 多数RTC的寄存器采用BCD码存储时间信息;

4    时钟源

LSE 32.768kHz

要获得秒分频,分频系数要设置为32767;


5    计数器

RTC的计数器RTC_CNT为一个32位的递增计数器。

其有一个RTC_ALR寄存器,可以理解为闹钟寄存器,若RTC_CNT的值与RTC_ALR相等,就会产生一个闹钟中断。


6    后备寄存器和RTC寄存器

6.1    设置时间

与时间计数相关的寄存器,如RTC_CNT、RTC_ALR基本都由两个寄存器组成,需要分别对高16位和低16位进行赋值。

更重要的一点是,需要进入配置模式才能对这些寄存器进行操作。


7    配置步骤


8    相关HAL库相关函数

  • 我感觉__HAL_RCC_PWR_CLK_ENABLE()是程序自动就调用了,无需手动开启;
  • 进入配置模式和退出配置模式需要直接对寄存器进行操作(“RTC->CRL |= 1 << 4”以及“RTC->CRL &= ~(1 << 4)”),配置完毕退出需要使用while(!__HAL_RTC_ALARM_GET_FLAG(&g_rtc_handle, RTC_FLAG_RTOFF))函数等待配置完毕;

9    配置步骤

6、使能中断;

7、编写中断服务函数;


10    时间设置与读取

由于F1的RTC没有日历寄存器(F1后的有),使用时只存储总秒数,不利于直接设置和显示,所以我们还需要编写函数把时间变成我们日常的日历时间


11    使用备份寄存器存储数据

STM32有备份寄存器BKP,其与RTC一样,不会被系统重置,主电源VDD断电可由VBAT供电保持,因此可以将一些配置的东西写在这里。

例如,在配置时间后往里面写入一个标识符,且在每次配置时间前都检查这个标识符。那就不会每次上电都重置RTC的时间。例:


http://www.kler.cn/news/284168.html

相关文章:

  • 打卡第60天------图论
  • OceanBase V4 技术解读:从Alter Table 看DDL的支持
  • Linux CentOS 添加路由
  • 江协科技stm32————10-3 软件I2C读写MPU6050
  • 2 Python开发工具:PyCharm的安装和使用
  • 【知识】对比Share mem/Pin mem/GPU mem之间的传输速度
  • TinTinLand Web3 + DePIN 共学月|挖掘 CESS 去中心化数据基础设施。
  • Jmeter进行http接口测试
  • 人工智能领域正经历模型规模变革,小型语言模型(SLM)崛起,挑战“规模至上”观念。
  • 算法设计与分析:实验1 排序算法性能分析
  • elasticsearch存入数据嵌入式数据解决扁平化查询问题
  • 后端微服务与分布式系统
  • LeetCode 3153.所有数对中数位差之和:计数
  • html2Canvas和jspdf导出长pdf
  • 绿色消费新动力:‘众店‘模式引领数字经济下的零售创新
  • TCP数据包——报文头部组成
  • x264 编码器 AArch64汇编系列:zigzag 扫描相关汇编函数
  • 互联网平台大模型网络架构设计
  • 美国硅谷多ip服务器用途广吗?
  • IOS开发 铃声制作(库乐队)
  • 叶子苏网络建站服务工作室
  • 【ceph学习】ceph如何进行数据的读写(3)
  • Rust语言实现图像编码转换
  • Linux提升篇-Linux虚拟网络介绍
  • VS2019开发CAN上位机
  • 模糊视频一键变清晰,从此告别模糊不清的画质
  • 为什么 mysql-connector-java 只需要在 runtime 作用范围中配置
  • 8.26算法训练
  • CSS学习4[重点]
  • 详细解说ecmascript和javascript的区别