#include"ls1x.h" #include"ls1x_rtc.h" /*********************************************************************** function: 读取rtc时间 @param : Rtime rtc读取的时间 @other : 无 @return : void @auther : 朱晓宇 @time : 2020年4月9日 ***********************************************************************/ void Rtc_Read(tsRtcTime *Rtime) { INT32U Rtc_time1 = 0; INT32U Rtc_time2 = 0; Rtc_time1 = RTC_RTC1; Rtc_time2 = RTC_RTC0; Rtime->year = (Rtc_time1 & 0xFE00) >> 9; Rtime->mon = (Rtc_time1 & 0x1E0) >> 5; Rtime->day = (Rtc_time1 & 0x1F); Rtime->hour = (Rtc_time2 & 0x1F0000) >> 16; Rtime->min = (Rtc_time2 & 0xFC00) >> 10; Rtime->sec = (Rtc_time2 & 0x3F0) >> 4; } /*********************************************************************** function: 写入rtc时间 @param : Wtime rtc写入的时间 @other : 无 @return : void @auther : 朱晓宇 @time : 2020年4月9日 ***********************************************************************/ void Rtc_Write(tsRtcTime *Wtime) { if(((Wtime->mon) > 12) || ((Wtime->mon) <= 0)) Wtime->mon = 1; if(((Wtime->day) > 31) || ((Wtime->day) <= 0)) Wtime->day = 1; RTC_FREQ = (0x800 << 16) ; // 32768Hz -> 16Hz RTC_RTC0 = (((Wtime->hour) % 24) << 16) | (((Wtime->min) % 60) << 10) | (((Wtime->sec) % 60) << 4) | (((Wtime->week) % 100) << 0); // 设置初始时间时、分、秒 RTC_RTC1 = ((Wtime->year) << 9) | (((Wtime->mon) % 13) << 5) | (((Wtime->day) % 32) << 0); // 设置初始时间年、月、日 RTC_CFG = 0x80000000; } /*********************************************************************** function: 更新RTC @param : direction 判断是读取RTC,还是写RTC time 存储日期时间 @other : 无 @return : void @auther : 朱晓宇 @time : 2020年4月9日 ***********************************************************************/ void RtcUpdateData(INT8U direction, tsRtcTime *time) { INT32U ret; if(direction) //读 { Rtc_Read(time); } else //写 { Rtc_Write(time); } }