📄 rtc.c
字号:
/****************************************Copyright (c)**************************************************
**--------------File Info-------------------------------------------------------------------------------
** File name:RTC.h
** Last modified Date:2007-12-20
** Last Version: 1.0
** Descriptions: RTC初始化,时间设置以及获取
**------------------------------------------------------------------------------------------------------
** Created by: Rein Lee
** Created date: 2007-12-20
** Version: 1.0
** Descriptions: The original version
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
********************************************************************************************************/
#include "config.h"
/*********************************************************************************************************
** 函数名称: RTCInit
** 功能描述: RTC初始化
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
**------------------------------------------------------------------------------------------------------
** Created by Rein Lee
** Created date: 2007-12-20
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#define Fpclk1 2764800
void RTCInit(void)
{
PREINT = Fpclk / 32768 - 1;
PREFRAC = Fpclk - (Fpclk / 32768) * 32768;
//PREINT = (Fpclk1 / (32768*10)) - 1; // 设置基准时钟分频器
//PREFRAC = Fpclk1 - (Fpclk1 / 32768) * 32768;
CCR = 0x01;
}
/*********************************************************************************************************
** 函数名称: getdate
** 功能描述: 获取当前日期
** 输 入: today 日期结构体
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
**------------------------------------------------------------------------------------------------------
** Created by Rein Lee
** Created date: 2007-12-20
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void getdate(struct date *today)
{
//uint32 datas;
OS_ENTER_CRITICAL();
/*
datas = CTIME1;
today->da_day = datas&0x1F; // 取得日值
today->da_mon = (datas>>8)&0x0F; // 取得月值
today->da_year = (datas>>16)&0xFFF;
*/
today->da_year = YEAR;
today->da_mon = MONTH;
today->da_day = DOM;
today->da_dow = DOW;
OS_EXIT_CRITICAL();
}
/*********************************************************************************************************
** 函数名称: gettime
** 功能描述: 获取当前时间
** 输 入: now 时间结构体
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
**------------------------------------------------------------------------------------------------------
** Created by Rein Lee
** Created date: 2007-12-20
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void gettime(struct time *now)
{
//uint32 times;
OS_ENTER_CRITICAL();
now->ti_hour = HOUR;
now->ti_min = MIN;
now->ti_sec = SEC;
now->ti_hund = (CTC * 100) / 32768;
/*
times = CTIME0;
now->ti_sec = times&0x3F; // 取得秒的值
now->ti_min = (times>>8)&0x3F; // 取得分的值
now->ti_hour = (times>>16)&0x1F; // 取得时的值
*/
OS_EXIT_CRITICAL();
}
/*********************************************************************************************************
** 函数名称: setdate
** 功能描述: 设置当前日期
** 输 入: today 日期结构体
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
**------------------------------------------------------------------------------------------------------
** Created by Rein Lee
** Created date: 2007-12-20
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void setdate(struct date *today)
{
OS_ENTER_CRITICAL();
YEAR = today->da_year;
MONTH = today->da_mon;
DOM = today->da_day;
DOW = today->da_dow;
OS_EXIT_CRITICAL();
}
/*********************************************************************************************************
** 函数名称: settime
** 功能描述: 设置当前时间
** 输 入: now 时间结构体
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
**------------------------------------------------------------------------------------------------------
** Created by Rein Lee
** Created date: 2007-12-20
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void settime(struct time *now)
{
OS_ENTER_CRITICAL();
HOUR = now->ti_hour;
MIN = now->ti_min;
SEC = now->ti_sec;
OS_EXIT_CRITICAL();
}
/*********************************************************************************************************
** 函数名称: RTC_Exception
** 功能描述: RTC中断函数
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
**------------------------------------------------------------------------------------------------------
** Created by Rein Lee
** Created date: 2007-12-20
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
/*
void RTC_Exception(void)
{
uint8 IIR;
OS_ENTER_CRITICAL();
IIR=ILR;
while((IIR & 0x01) != 0)
{
ILR = 0x01; // 清除中断标志
//gettime(&now);
//getdate(&today);
}
VICVectAddr = 0; // 通知中断控制器中断结束
OS_EXIT_CRITICAL();
}
*/
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -