实时时钟 (RTC)¶
Note
本章介绍 ESP32-S3 实时时钟(RTC)的使用,实时时钟能为系统提供一个准确的时间,即时系统复位或主电源断电,RTC 依然能够运行(有电池),因此 RTC 也经常用于各种低功耗场景。
实时时钟
RTC(实时时钟)是指安装在电子设备或实现其功能的 IC(集成电路)上的时钟。
当您在数字电路中称其为“时钟”时,您可能会想到周期信号,但在英语中,clock 也意味着“时钟”。那为什么我们需要一个单独的 RTC?
原因是 CPU 的定时器时钟功能只在“启动”即“通电时”运行,断电时停止。当然,如果时钟不能连续跟踪时间,则必须手动设置时间。
通常,RTC 配备一个单独分离的电源,如纽扣电池(备用电池),即使 DNESP32S3M 最小系统板电源关闭,它也能保持运作,随时可以实时显示时间。然后,当 DNESP32S3M 最小系统板再次打开时,计算机内置的定时器时钟从 RTC 读取当前时间,并在此基础上供电的同时,时间在其自身机制下显示。顺便说一句,由于纽扣电池相对便宜且使用寿命长,因此 RTC 可以以极低的成本运行。基于此这个作用,它也可以用作内存。
Note
在 ESP32-S3 中,并没有像 STM32 芯片一样,具有 RTC 外设,但是存在一个系统时间,利用系统时间,也可以实现实时时钟的功能效果。 ESP32-S3 使用两种硬件时钟源建立和保持系统时间。根据应用目的及对系统时间的精度要求,既可以仅使用其中一种时钟源,也可以同时使用两种时钟源。这两种硬件时钟源为 RTC 定时器 和 高分辨率定时器 。默认情况下,是使用这两种定时器。下面我们将逐一介绍。
用例¶
- 通过 LCD /UART 实时显示 RTC 时间
- LED 闪烁,指示程序正在运行
依赖关系¶
本章无依赖关系。
关键函数¶
函数原型 | 说明 | 示例 |
---|---|---|
void rtc_set_time(int year, int mon, int mday, int hour, int min, int sec); | 设置 RTC 时间 | rtc_set_time(2022, 12, 31, 23, 59, 59); |
void rtc_get_time(void); /* Get time */ | 获取 RTC 时间, 存入全局变量calendar | rtc_get_time(); |