📄 os_timer0.c
字号:
/****************************************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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -