RTCV2

一、RTCV2简介

rtcv2模块是一个独立的计时器。RTC提供了一组连续运行的计数器,以提供时钟日历功能。可以写入计数器值来设置系统的当前时间/日期。 #define SDK_LSI_USED (0) 表示启用外部低速时钟,此时板子上需要外挂32768晶振

二、RTCV2接口介绍

2.1 初始化:

首先需要进行rtcv2模块初始化。

HAL_RTC_Init(void);

2.2 参数配置:

rtc_Cycle_Config(uint32_t cyc_1hz, uint32_t calib_cyc, bool calib_en);
HAL_RTC_Cycle_Config(void);

备注

cyc_1hz: 计数器在第 cyc_1hz 个周期溢出1次(增加一秒)
calib_cyc: 计数器每60秒校准一次,以补偿系统低速时钟的频率偏差。启用校准功能后,则每分钟,计数器在第 cyc_1hz*59 个周期累计溢出 59 次,然后在第 cyc_1hz+calib_cyc 个周期溢出计数器
calib_en: 是否开启校准功能
HAL_RTC_Cycle_Config 这个函数属于弱定义,在 HAL_RTC_Init() 中被调用。用户可以自行定义,调用rtc_Cycle_Config()实现对不同时钟频率下参数的配置

2.3 万年历时间:

万年历当前时间的设置及获取。

HAL_RTC_CalendarSet(calendar_cal_t *calendar_cal, calendar_time_t *calendar_time);
HAL_RTC_CalendarGet(calendar_cal_t *calendar_cal, calendar_time_t *calendar_time);

备注

calendar_cal: 设置、获取的日期(年、月、周)
calendar_time: 设置、获取的时间(日、时、分、秒)

2.4 闹钟:

闹钟的时间设置,以及关闭。

HAL_RTC_AlarmSet(calendar_cal_t *calendar_cal, calendar_time_t *calendar_time);
HAL_RTC_alarm_callback(void);
HAL_RTC_AlarmClear(void);

备注

HAL_RTC_alarm_callback于弱定义,用户可以自行定义,并完成相应的逻辑处理
当前时间等于闹钟设置时间时,则会触发中断,调用 HAL_RTC_alarm_callback()

2.5 反初始化:

反初始化rtcv2模块。

通过反初始化接口,应用程序可以关闭rtcv2外设,从而在运行BLE的程序的时候,降低系统的功耗。

HAL_RTC_DeInit(void);