arm9.rar
源代码在线查看: rtc.c
/****************************************************************************
【文 件 名 称】RTC.c
【功 能 描 述】三星S3C44B0X板 uC/OS-II 驱动程序代码----RTC
【程 序 版 本】1.0
【创建人及创建日期】icesoar//2003-12-19 10:57
【修改人及修改日期】icesoar//2003-12-19 10:57
****************************************************************************/
#include "def.h"
#include "2410addr.h"
#include "config.h"
#include "board.h"
#include "utils.h"
#include "os_cpu.h"
#include "rtc.h"
//------------------------------------------------------------------
// 函数名:STRU_SYS_TIME Get_Time(void)
// 输入 :Null
// 输出 :STRU_SYS_TIME Get_SysTime
// 功能描述:获得系统RTC时间值
// 全局变量:Null
//---------------------------------------------------------------
STRU_SYS_TIME Get_Time(void)
{
STRU_SYS_TIME Get_SysTime; //定义系统RTC结构体
rRTCCON=0x1; //打开RTC操作允许位
Get_SysTime.ucYear =rBCDYEAR;
Get_SysTime.ucMonth = rBCDMON;
Get_SysTime.ucDay = rBCDDAY;
Get_SysTime.ucHour = rBCDHOUR;
Get_SysTime.ucMinute= rBCDMIN;
Get_SysTime.ucSecond= rBCDSEC;
rRTCCON = 0x0; //关闭RTC操作允许位
return(Get_SysTime);
}
//------------------------------------------------------------------
// 函数名:void Set_Time(STRU_SYS_TIME Set_SysTime)
// 输入 :STRU_SYS_TIME Set_SysTime
// 输出 :Null
// 功能描述:设置系统RTC时间
// 全局变量:Null
//---------------------------------------------------------------
void Set_Time(STRU_SYS_TIME Set_SysTime) //Set System Time
{
rRTCCON = 0x1; //打开RTC操作允许位
rBCDYEAR=Set_SysTime.ucYear;
rBCDMON =Set_SysTime.ucMonth;
rBCDDAY =Set_SysTime.ucDay;
rBCDHOUR=Set_SysTime.ucHour;
rBCDMIN =Set_SysTime.ucMinute;
rBCDSEC =Set_SysTime.ucSecond;
rRTCCON = 0x0; //关闭RTC操作允许位
}
//------------------------------------------------------------------
// 函数名:void Init_Time(void)
// 输入 : Null
// 输出 : Null
// 功能描述:检测当前RTC时间值是否合法,否则则以本工程编译时间进行初始化
// 全局变量:Null
//------------------------------------------------------------------
void Init_Time(void)
{
STRU_SYS_TIME c_SysTime;
c_SysTime=Get_Time();
if(
(c_SysTime.ucYear>Valid_Year) ||(c_SysTime.ucMonth>Valid_Month) ||
(c_SysTime.ucDay>Valid_Day) ||(c_SysTime.ucHour>Valid_Hour) ||
(c_SysTime.ucMinute>Valid_Minute)||(c_SysTime.ucSecond>Valid_Second))
{
c_SysTime.ucYear =Build_Year;
c_SysTime.ucMonth =Build_Month;
c_SysTime.ucDay =Build_Day;
c_SysTime.ucHour =Build_Hour;
c_SysTime.ucMinute=Build_Minute;
c_SysTime.ucSecond=Build_Second;
Set_Time(c_SysTime); //set the valid time
}
}