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的中断,以及周期唤醒的中断。