RTC ####################### 1、RTC时钟,一般分为硬件RTC和虚拟RTC,本芯片只有虚拟RTC。 RTC功能介绍 --------------- SDK中的RTC采用统一接口,可配置其时钟源、读写时钟、读写闹钟等功能。 rtc_dev_init ------------------------------ 初始化rtc模块,可配置时钟源、RTC类型、闹钟使能以及闹钟回调函数。 时钟源,可选择为LRC或外挂32K。(LRC时钟源会有千分之一的误差) 时钟类型,可选择为硬件RTC或虚拟RTC。(注:本芯片没有硬件RTC) 闹钟使能,可使能闹钟功能,只有使能闹钟功能后,闹钟才可以正常使用。 闹钟回调函数,闹钟中断起来以后调用的函数,用户可自己编写相关程序。 原型: .. code-block:: c 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相关参数配置 ========== ====================== rtc_write_time()/rtc_read_time() ------------------------------------- rtc读写时间接口 原型: .. code-block:: c 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 读写时间的结构体 ========== ====================== rtc_alarm_en()/rtc_get_alarm_en() -------------------------------------- rtc闹钟使能以及获取闹钟使能接口 原型: .. code-block:: c 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为未使能 ================================ ====================== ======================== rtc_write_alarm()/rtc_read_alarm() ------------------------------------- rtc读写时间接口 原型: .. code-block:: c 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 读写时间的结构体 ========== ====================== void rtc_debug_dump(void); ------------------------------ rtc调试接口,用于调试打印RTC信息。(RTC时间、闹钟时间以及闹钟是否使能) 原型: .. code-block:: c void rtc_debug_dump(void); 时钟常用接口 ------------------------------ 系统还提供了时钟相关的应用接口,便于用户开发时使用。 原型: .. code-block:: c 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); //返回每月的天数