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

📄 tick.c.svn-base

📁 realtek的8186芯片ADSL路由AP源代码
💻 SVN-BASE
字号:
/*
* ----------------------------------------------------------------
* Copyright c                  Realtek Semiconductor Corporation, 2002  
* All rights reserved.
* 
* $Header: /usr/local/dslrepos/boot71/loader/tick.c,v 1.1.1.1 2006/06/07 05:27:50 kaohj Exp $
*
* Abstract: Tick timer driver.
*
* $Author: kaohj $
*
* $Log: tick.c,v $* Revision 1.1.1.1  2006/06/07 05:27:50  kaohj* initial import into CVS*
* no message
*
* ---------------------------------------------------------------
*/

#include "board.h"



#define TC_BASE		0xb9c01000
#define TC0DATA		(TC_BASE+0x20)
#define TC1DATA		(TC_BASE+0x24)
#define TC0CNT		(TC_BASE+0x28)
#define TC1CNT		(TC_BASE+0x2C)
#define TCCNR		(TC_BASE+0x30)
#define TCIR		(TC_BASE+0x34)
#define CDBR		(TC_BASE+0x38)
#define WDTCNT		(TC_BASE+0x3C)
#define BSTMOUT		(TC_BASE+0x40)


void init_timer(void)
{
	/* disable clock */
	*((unsigned long *)CDBR) = 0x00000000;
	*((unsigned long *)TCCNR) = 0x00000000;
	/* timer 1 interval as 0.5 ms  */
	*((unsigned long *)TC1DATA) = (1000*4*60*60) << 8; /* 1 hour */
	*((unsigned long *)CDBR) = (CLOCKGEN_FREQ/1000/4) << 16;
	*((unsigned long *)TCCNR) = (1<<28)|(1<<29);
}

unsigned long get_sys_time(void)
{
	return (((1000*4*60*60) - (*((unsigned long *)TC1CNT)>>8))/4);
}

int timeout(unsigned long start, unsigned long ms)
{
unsigned long cur_ms = get_sys_time();
	if(cur_ms>=start)
		if((cur_ms-start) > ms)
			return 1;
	if(cur_ms<start)	/* roll over */
		if((cur_ms+(1000*60*60)-start) > ms)
			return 1;
	return 0;
}

void delay_msec(unsigned long ms)
{
unsigned long start = get_sys_time();

	while(!timeout(start,ms));
	
}

unsigned long tick_getSysClkRate(void)
{
    return CLOCKGEN_FREQ;
}

⌨️ 快捷键说明

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