os_timer0.c

来自「AD7843在ADS1.2环境下的一个驱动程序」· C语言 代码 · 共 61 行

C
61
字号
/****************************************Copyright (c)**************************************************
**                               广州微嵌计算机科技有限公司
**
**                                 http://www.wqlcd.com
**
**------------------------------------------------------------------------------------------------------
** 创建人: 	陈华牧
** 版  本: 	V1.0
** 创建日期:2007年1月18日
** 发布日期:2007年3月15日
********************************************************************************************************/


#include "44B.H"
#include "ucos_ii.h"               /* uC/OS interface */


#define Timer0_Update (0x1 << 1)
#define Timer0_Start  (0x1)


#define	_TICK	1000			//  1/1000 sec
//#define _TICK	300				//  1/300 sec
//#define _TICK	100					//  1/100 sec

#define _CLOCK	(25000/_TICK)		//MCLK = 60M; Timer0CLK = 25000Hz

static void OSTimer0Int_Init(void)
{
    unsigned int kc;
    kc = 0xffffff & (((unsigned int) OSTickISR - (unsigned int)ISR_TIMER0-8)>>2);
    *(unsigned int*)ISR_TIMER0 = 0xEA000000 |kc ;
}

void OSTimer0_Init(void)
{
	rTCFG0 &= ~(0xff0000ff);
	rTCFG0 |= (0x95);				//dead zone=0,Timer0预分频->150;
	rTCFG1 &= ~(0x0f<<24 | 0x0f);	//all interrupt,
	rTCFG1 |= (0x03);				//Timer0分割器->1/16;MCLK = 60M; Timer0CLK = 25000Hz	
	rTCON &= ~(0x0f);			
	rTCON |= (0x08);				//Timer0: auto load->Enable
	rTCNTB0= _CLOCK;				//Timer0 初值;
	rTCON |= Timer0_Update;			//装载定时器初值;
	rTCON &= ~Timer0_Update;
	OSTimer0Int_Init();
}

void OSTimer0_On(void)
{
	rI_ISPC = BIT_TIMER0;			//清除中断标志
	rINTMSK &= ~BIT_TIMER0;			//Timer0 interrupt enable;
	rTCON |= Timer0_Start;			//启动定时器0
}

void OSTimer0_Off(void)
{
	rTCON &= ~Timer0_Start;			//启动定时器0
	rINTMSK |= BIT_TIMER0;			//Timer0 interrupt disable;
	rI_ISPC = BIT_TIMER0;			//清除中断标志
}

⌨️ 快捷键说明

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