timer0.c

来自「三星2410的一些DEMO小例程」· C语言 代码 · 共 134 行

C
134
字号
#include "S3c2410x.h"
#include "consol.h"
#include "Def.h"


#define TICKS_PER_SEC 100
void Timer0ISR(void);

void DebugUNDEF(void)
{
	Uart_Printf("!!!Enter UNDEFINED. \n");	

}//BreakPoint


void DebugSWI(void)
{
	Uart_Printf("!!!Enter SWI. \n");	

}

void DebugABORT(void)
{
	Uart_Printf("!!!Enter ABORT 0\r\n");	

}

void DebugABORT1(void)
{
	Uart_Printf("!!!Enter ABORT 1\r\n");	

}

 void DebugFIQ(void)
{
	Uart_Printf("!!!Enter FIQ.\n");	

}

void BreakPoint(void)
{
	Uart_Printf("!!!Enter FIQ. n");
}

//Initialze interrupts.
void uHALr_InitInterrupts(void)
{
	
	rINTMOD     = 0x0;                     //All=IRQ mode
  rINTMSK     = BIT_ALLMSK;              //All interrupt is masked.
      
}//uHALr_InitInterrupts

void InitTimer0(void)
{
	rTCFG0= 0x00000000;              	// prescaler0 = 0
	rTCFG1= 0x00000000;              	// mux0 = 1/2   
//timetick is 1000,	FCLK=200MHZ   
	rTCNTB0= PCLK/TICKS_PER_SEC/2; //每10ms扫描一次
	rTCMPB0= 0x0;
	rTCON=0x2;		//update mode for TCNTB0 and TCMPB0.
	rTCON=0x9;		//timer0 = auto reload, start	
}

//Start system timer & enable the interrupt.
void EnableTimer0(void)
{
      

	rINTMSK&=(~(BIT_TIMER0 ));	//Default value=0x7ffffff
	
}

void InstallIrqHandler(void)
{
	
	pISR_UNDEF     = (unsigned) DebugUNDEF;
	pISR_SWI       = (unsigned) DebugSWI;
	pISR_PABORT    = (unsigned) DebugABORT;
	pISR_DABORT    = (unsigned) DebugABORT1;

  pISR_FIQ       = (unsigned) BreakPoint;

 pISR_EINT0     = (unsigned) BreakPoint;
 pISR_EINT1     = (unsigned) BreakPoint;
 pISR_EINT2     = (unsigned) BreakPoint;
 pISR_EINT3     = (unsigned) BreakPoint;
 pISR_EINT4_7   = (unsigned) BreakPoint;
 pISR_EINT8_23  = (unsigned) BreakPoint;
 pISR_NOTUSED6  = (unsigned) BreakPoint;
 pISR_BAT_FLT   = (unsigned) BreakPoint;
 pISR_TICK      = (unsigned) BreakPoint;
 pISR_WDT       = (unsigned) BreakPoint;
 
 pISR_TIMER0    = (U32) Timer0ISR;
 
 pISR_TIMER1    = (unsigned) BreakPoint;
 pISR_TIMER2    = (unsigned) BreakPoint;
 pISR_TIMER3   = (unsigned) BreakPoint;
 pISR_TIMER4    = (unsigned) BreakPoint;
 pISR_UART2     = (unsigned) BreakPoint;
 pISR_LCD       = (unsigned) BreakPoint;
 pISR_DMA0      = (unsigned) BreakPoint;
 pISR_DMA1      = (unsigned) BreakPoint;
 pISR_DMA2      = (unsigned) BreakPoint;
 pISR_DMA3      = (unsigned) BreakPoint;
 pISR_SDI       = (unsigned) BreakPoint;
 pISR_SPI0      = (unsigned) BreakPoint;
 pISR_UART1     = (unsigned) BreakPoint;
 pISR_NOTUSED24 = (unsigned) BreakPoint;
 pISR_USBD      = (unsigned) BreakPoint;
 pISR_USBH      = (unsigned) BreakPoint;
 pISR_IIC       = (unsigned) BreakPoint;
 pISR_UART0     = (unsigned) BreakPoint;
 pISR_SPI1      = (unsigned) BreakPoint;
 pISR_RTC       = (unsigned) BreakPoint;
 pISR_ADC       = (unsigned) BreakPoint;

}

void Timer0ISR(void)
{
		rSRCPND |= BIT_TIMER0;
  rINTPND |= BIT_TIMER0;
	//关闭中断
	rINTMSK |=BIT_TIMER0 ;
	// keyscan();
	
	Uart_Printf("Enter key task!!\n");

	//打开中断
	EnableTimer0(); 

}

⌨️ 快捷键说明

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