# RTC笔记

## 时钟来源

1. 由HSE时钟128分频后得到。
2. 由LSE时钟得到，一般为32.768kHZ。
3. 由LSI RC振荡时钟产生，为40KHZ。

## 预分频器

1. 异步预分频器

   分频值越小，功耗越高，计时精度更高。

   > 异步预分频器通常是基于硬件触发的，由输入时钟直接驱动。分频值越小，意味着它需要更频繁地处理输入时钟信号（例如更频繁地翻转触发器状态）。每次时钟信号的切换都会消耗一定的能量，因此随着分频值减小（频率升高），功耗自然增加。分频器的输出频率是输入频率除以分频系数。分频值越小，输出频率越接近原始输入频率，能更准确地反映输入时钟的变化。如果分频值过大，输出频率降低，时间测量的分辨率和精度也随之下降。

2. 同步预分频器

   计数频率越高，RTC计时进度越高，分配系数设置不合理，RTC可能无法正确计时。

   > 同步预分频器通常与数字电路中的时钟信号同步工作。如果预分频器的输出频率较高，RTC（实时时钟）可以以更高的分辨率记录时间，计时精度自然更高。如果分频系数过低，输出频率过高，可能会超出RTC电路的最大处理能力，导致计时不准确或错误。如果分频系数过高，输出频率过低，RTC的计时分辨率不足，也会影响计时精度。因此，分频系数的选择需要平衡输出频率和系统处理能力，确保在硬件允许范围内达到最优精度。

## 小时格式

可设置为二进制编码和BCD编码。

> 网上说F103的二进制编码有BUG，尽量使用BCD编码，有待考证。

## 读取时间的函数的一些注意点

读取时间的函数和读取日期的函数需要成对使用，即HAL_RTC_GetTime()和HAL_RTC_GetDate()成对使用。

> 在调用以上任一一个函数时，会锁定日历影子寄存器，直到全部读出。

## RTC的时钟唤醒功能

与系统时钟频率无关，可以很方便的设置1s间隔的定时中断。

## 中断介绍

闹钟A和闹钟B的中断，以及周期唤醒的中断。