⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rtcinner.c

📁 电力行业必备。有错的地方
💻 C
字号:
/*
 * 文件名: RTCInner.C
 * 功能:	内部RTC接口函数
 * 作者:	Light Rain
 * 时间:	2007-03-08
 *
 * 描述:	
 */
#include "RTCInner.h"

extern void RTCInner_Handler(void);	//在IRQ.s中定义

void RTCInnerInit( void )
{
	INT32U c0,c1;
	INT16U year,month,day,week,hour,min,sec;
	
	// 中断设置
	VICIntSelect &= (~(1<<13));
	VICVectAddr10 = (INT32U)RTCInner_Handler;
	VICVectCntl10 = (0x20 | 13);
	
	CCR = 0;		// 禁止时钟计数器
	
	// 设置基准时钟分频器
	PREINT = Fpclk/32768-1;	
	PREFRAC= Fpclk - (PREINT+1)*32768 ;
	
	// 初始化内部时钟
	DateTimeRead( &year, &month, &day, &week, &hour, &min, &sec );
	YEAR  = year;
	MONTH = month;
	DOM   = day;
	DOW	  = week;
	HOUR  = hour;
	MIN   = min;
	SEC   = sec;
	
	/*CTIME0 = sec + 
			 min <<8 +
			 hour<<16 +
			 week<<24 ;
	CTIME1 = day + 
			 month<<8 +
			 year<<16;*/
	
	CIIR = 0x01;	// 每一秒产生一次中断
	CCR = 1;		// 使能时钟计数器
	
	//for(;;)
	{
		DelayMS(1000);
		c0 = CTIME0 ;
		c1 = CTIME1 ;
	}
	
	// 中断使能
	VICIntEnable = 1 << 13;
}

void RTCInnerException( void )
{
	OS_ENTER_CRITICAL();
	
	// 计数器增量中断
	if( ILR & 0x01 )
	{
		RTCInnerInterrupt();
		ILR |= 0x01 ;		// 清除中断标志
	}
	
	// 报警寄存器中断
	if( ILR & 0x02 )
	{
		ILR |= 0x02;		// 清除中断标志
	}
	
	VICVectAddr = 0;
	OS_EXIT_CRITICAL();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -