📄 timer.c
字号:
/*------------------------------------------------------------
FILE NAME : timer.c
DESCRIPTION : timer of bs1084 arm firmware.
VERSION : 0.0.1 (c)aureole
AUTHOR : Aureole
CREATE DATE : 07.22.2006
MODIFY DATE : 00.00.2006
LOGS :---\
-
-0.0.0 ----. 07.22.2006 create
--------------------------------------------------------------*/
//-----------------include files-------------------------//
#include "..\include\arm.h"
#include "..\include\config.h"
#include "..\include\timer.h"
//-----------------function prototype--------------------//
void initialize_timer0(void);
void timer0_interrupt(void) __irq;
void disable_interrupt(void);
void enable_interrupt(void);
//-----------------variable area-------------------------//
unsigned int counter=0;
unsigned long int vic_bak;
//-----------------Function area-------------------------//
/*-------------------------------------------------------
NAME : timer0_interrupt
ENTRY TYPE: void
RETURN TYPE: int
PURPOSE : ---
VERSION : 0.0.1
DESCRIPTION:
CREATE DATE: ---
LOGS :---\
1.first create. 07.22.2006
--------------------------------------------------------*/
void irq_timer0(void) __irq
{
counter++;
T0IR=0x01; //清除中断标志;
VICVectAddr=0x0; //通知VIC 中断处理结束;
}
/*-------------------------------------------------------
NAME : initialize_timer
ENTRY TYPE: void
RETURN TYPE: int
PURPOSE : ---
VERSION : 0.0.1
DESCRIPTION:
CREATE DATE: ---
LOGS :---\
1.first create. 07.22.2006
--------------------------------------------------------*/
void initialize_timer0(void)
{
T0CTCR=0x00; //timer0 -> timer
T0PR=0; //不分频
T0MCR=0x03;
T0MR0=Fcclk*0.00001; //定时 10 us
disable_timer0();
//Set IRQ
VICIntSelect = 0x00000000;
VICVectCntl1 = 0x20 | 0x04;
VICVectAddr1 = (unsigned long int)irq_timer0;
VICIntEnable |= 1 << 0x04;
}
/*-------------------------------------------------------
NAME : disable_interrupt
ENTRY TYPE: void
RETURN TYPE: int
PURPOSE : 关外设中断
VERSION : 0.0.1
DESCRIPTION:
CREATE DATE: ---
LOGS :---\
1.first create. 07.23.2006
--------------------------------------------------------*/
void disable_interrupt(void)
{
vic_bak=VICIntEnable;
VICIntEnClr=vic_bak;
}
/*-------------------------------------------------------
NAME : enable_interrupt
ENTRY TYPE: void
RETURN TYPE: int
PURPOSE : 开外设中断
VERSION : 0.0.1
DESCRIPTION: 必须与关外设中断配合使用
CREATE DATE: ---
LOGS :---\
1.first create. 07.23.2006
--------------------------------------------------------*/
void enable_interrupt(void)
{
VICIntEnable=vic_bak;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -