【STM32】RTC

打印 上一主题 下一主题

主题 842|帖子 842|积分 2526

老实的时间记录者——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的时间。例:


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

张国伟

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表