2.9. RTC
1、RTC时钟,一般分为硬件RTC和虚拟RTC,本芯片只有虚拟RTC。
2.9.1. RTC功能介绍
SDK中的RTC采用统一接口,可配置其时钟源、读写时钟、读写闹钟等功能。
2.9.2. rtc_dev_init
初始化rtc模块,可配置时钟源、RTC类型、闹钟使能以及闹钟回调函数。
时钟源,可选择为LRC或外挂32K。(LRC时钟源会有千分之一的误差)
时钟类型,可选择为硬件RTC或虚拟RTC。(注:本芯片没有硬件RTC)
闹钟使能,可使能闹钟功能,只有使能闹钟功能后,闹钟才可以正常使用。
闹钟回调函数,闹钟中断起来以后调用的函数,用户可自己编写相关程序。
原型:
struct rtc_config {
enum RTC_CLK rtc_clk; //可选择时钟源(LRC/外挂32K)
enum RTC_SEL rtc_sel; //选择ERC类型(硬件RTC/虚拟RTC)
u8 alm_en; //闹钟使能,打开以后写入的闹钟才有用
u8 timer_wkup_en; //定时唤醒/RTC复用使能,打开后可以采用定时唤醒来唤醒系统,也可以通过闹钟唤醒系统。
void (*cbfun)(void); //闹钟回调函数
};
void rtc_dev_init(const struct rtc_config *rtc);
参数:
rtc
rtc相关参数配置
2.9.3. rtc_write_time()/rtc_read_time()
rtc读写时间接口
原型:
struct sys_time {
u16 year;
u8 month;
u8 day;
u8 hour;
u8 min;
u8 sec;
};
void rtc_read_time(struct sys_time *time);
void rtc_write_time(const struct sys_time *time);
参数:
time
读写时间的结构体
2.9.4. rtc_alarm_en()/rtc_get_alarm_en()
rtc闹钟使能以及获取闹钟使能接口
原型:
void rtc_alarm_en(u32 en);
u32 rtc_get_alarm_en(void);
参数:
rtc_alarm_en()
en
1为使能闹钟/0为关闭闹钟
u32 rtc_get_alarm_en(void);
返回值
1为闹钟已使能/0为未使能
2.9.5. rtc_write_alarm()/rtc_read_alarm()
rtc读写时间接口
原型:
struct sys_time {
u16 year;
u8 month;
u8 day;
u8 hour;
u8 min;
u8 sec;
};
void rtc_read_alarm(struct sys_time *time);
void rtc_write_alarm(const struct sys_time *time);
参数:
time
读写时间的结构体
2.9.6. void rtc_debug_dump(void);
rtc调试接口,用于调试打印RTC信息。(RTC时间、闹钟时间以及闹钟是否使能)
原型:
void rtc_debug_dump(void);
2.9.7. 时钟常用接口
系统还提供了时钟相关的应用接口,便于用户开发时使用。
原型:
bool leapyear(u32 year); //判断是否为闰年
u32 year_to_day(u32 year);//年份换算为天数
u32 month_to_day(u32 year, u32 month);//月份换算为天数
void day_to_ymd(u32 day, struct sys_time *sys_time);//总天数转换为年月日
u32 ymd_to_day(struct sys_time *time);//年月日转换为总天数
u32 caculate_weekday_by_time(struct sys_time *r_time); //计算当天为星期几
u32 get_day_of_month(u32 year, u32 month); //返回每月的天数