82 lines
2.0 KiB
C
Executable File
82 lines
2.0 KiB
C
Executable File
|
|
|
|
#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);
|
|
}
|
|
|
|
}
|