📄 rtc.c
字号:
/**************************************************************************************
//文件:RTC.C
//作者:sac
//日期:2008年8月10日
//版本:V1.0
//描述:
//版本更新描述
**************************************************************************************/
//=====================================================================================
//包含文件申明
#include "S3C44B0X.h" /* S3C44B0X definitions */
#include "stdio.h"
//=====================================================================================
//预定义申明
//=====================================================================================
//全局变量定义
//=====================================================================================
//函数申明区
void RTC_Init( void );
void RTC_SetDate( struct DAY Date );
struct DAY RTC_GetData( void );
//=====================================================================================
//=====================================================================================
//函数原型:RTC_Init( void )
//输入参数:无
//返回参数:无
//功能描述:系统实时时钟初始化,初始化时间为 2008-1-1 12:00,星期三
//版本说明:V1.0/SAC/2008年9月3日
//更新说明:
void RTC_Init( void )
{
struct DAY Day_init;
pRTC->RTCCON |= 0x01; //允许写RTC寄存器
pRTC->RTCALM = 0x00; //禁止报警
pRTC->RTCRST = 0x00; //禁止循环秒复位
//pRTC->TICINT = 0x00; //禁止节拍中断
pRTC->TICINT = 0xff; //允许节拍中断,1s
pRTC->RTCCON &= 0xfe; //关闭写RTC寄存器
//初始化系统初始时间:2008-1-1 12:00
Day_init.SEC = 0x00;
Day_init.MIN = 0x00;
Day_init.HOUR = 0x12;
Day_init.WEEK = 0x02; //星期三
Day_init.DATE = 0x01;
Day_init.MON = 0x01;
Day_init.YEAR = 0x08;
RTC_SetDate( Day_init );
return;
}
//=====================================================================================
//函数原型:void RTC_SetDate( struct DAY Date )
//输入参数:struct DAY Date描述当前时间的结构体
//返回参数:无
//功能描述:设置当前系统时间
//版本说明:V1.0/SAC/2008年9月3日
//更新说明:
void RTC_SetDate( struct DAY Date )
{
pRTC->RTCCON |= 0x01; //允许写RTC寄存器
//初始化系统初始时间:2008-1-1 12:00
pRTC->BCDSEC = Date.SEC;
pRTC->BCDMIN = Date.MIN;
pRTC->BCDHOUR = Date.HOUR;
pRTC->BCDDAY = Date.WEEK; //星期三
pRTC->BCDDATE = Date.DATE;
pRTC->BCDMON = Date.MON;
pRTC->MCDYEAR = Date.YEAR;
pRTC->RTCCON &= 0xfe; //关闭写RTC寄存器
return;
}
//=====================================================================================
//函数原型:struct DAY RTC_GetData( void )
//输入参数:无
//返回参数:struct DAY Date描述当前时间的结构体
//功能描述:获取当前系统时间
//版本说明:V1.0/SAC/2008年9月3日
//更新说明:
struct DAY RTC_GetData( void )
{
struct DAY Date;
unsigned int i;
pRTC->RTCCON |= 0x01; //允许写RTC寄存器
i = pRTC->BCDSEC;
Date.SEC = i/16*10 + i%16 ;
i = pRTC->BCDMIN ;
Date.MIN = i/16*10 + i%16 ;
i = pRTC->BCDHOUR ;
Date.HOUR = i/16*10 + i%16 ;
i = pRTC->BCDDAY ;
Date.WEEK = i/16*10 + i%16 ;
i = pRTC->BCDDATE ;
Date.DATE = i/16*10 + i%16 ;
i = pRTC->BCDMON ;
Date.MON = i/16*10 + i%16 ;
i = pRTC->MCDYEAR ;
Date.YEAR = i/16*10 + i%16 ;
pRTC->RTCCON &= 0xfe; //关闭写RTC寄存器
return Date;
}
//=====================================================================================
//函数原型:__irq void HandlerTICK( void )
//输入参数:无
//返回参数:无
//功能描述:RTC TICH中断函数
//版本说明:V1.0/SAC/2008年9月3日
//更新说明:
void HandlerTICK( void ) __irq
{
struct DAY date;
//printf("RTC tick--NEW\n");
date = RTC_GetData();
printf("当前时间;20%02d年%02d月%02d日 星期%d %02d;%02d;%02d\n",
date.YEAR,date.MON,date.DATE,date.WEEK,
date.HOUR,date.MIN,date.SEC);
pIC->I_ISPC = INT_TICK ; //清中断标志位 I_ISPC
return;
}
//=====================================================================================
//添加RTC报警功能设置
//=====================================================================================
//添加RTC报警中断服务函数
//=====================================================================================
//修改RTC初始化函数,增加报警使能功能
//=====================================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -