38 lines
959 B
C
38 lines
959 B
C
#include "include.h"
|
|
|
|
void rtc_clock_init(void)
|
|
{
|
|
tm_t tm;
|
|
tm.year = 2023;
|
|
tm.mon = 8;
|
|
tm.day = 18;
|
|
tm.hour = 10;
|
|
tm.min = 8;
|
|
tm.sec = 36;
|
|
//tm.weekday = get_weekday(tm.year, tm.mon, tm.day);
|
|
RTCCNT = tm_to_time(tm);
|
|
}
|
|
|
|
//多少秒后闹钟响
|
|
AT(.text.rtc)
|
|
void rtc_set_alarm_relative_time(u32 nsec)
|
|
{
|
|
tm_t rtc_tm;
|
|
rtc_tm = time_to_tm(RTCCNT); //更新时间结构体
|
|
RTCALM = tm_to_time(rtc_tm) + nsec; //设置闹钟相对于当前时间n秒后
|
|
}
|
|
|
|
//设置多少秒后闹钟唤醒
|
|
AT(.text.rtc)
|
|
void rtc_set_alarm_wakeup(u32 nsec)
|
|
{
|
|
uint rtccon3 = RTCCON3;
|
|
|
|
RTCCPND = BIT(17); //clear RTC alarm pending
|
|
RTCCON9 = BIT(0); //clear alarm pending
|
|
rtc_set_alarm_relative_time(nsec);
|
|
|
|
rtccon3 |= BIT(8); //RTC alarm wakeup enable
|
|
RTCCON3 = rtccon3;
|
|
}
|