timer.c

来自「用于三星S3C44BOX ARM7芯片的Demon板测试」· C语言 代码 · 共 119 行

C
119
字号
/*********************************************************************************************
* File:	timer.c
* Author:	embest
* Desc:	Timer source code
* History:	
*********************************************************************************************/

/*--- include files ---*/

#include "44b.h"
#include "44blib.h"
#include "timer.h"
#include "bmp.h"

/*--- global variables ---*/
int wat =0;
/*--- function declare ---*/

void timer_Int(void) __attribute__ ((interrupt ("IRQ")));
void Test_Timer(void);
void timer_init(void);
void timer_close(void);

/*--- function code ---*/

/*********************************************************************************************
* name:		Test_Timer
* func:		test PWM Timer0
* para:		none
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void Test_Timer(void)
{
    int i;
    wat =0;
    Uart_Printf("\nTimer Start, press any key to exit...\n");
    LCD_view(vcol,vrow,BLACK,"Timer Start, press any key to exit...");
    // init timer0
	timer_init();
	// get input
	while(!(i = Uart_GetKey()))
	 {
	   if(key_read() != -1) break;; 
	 }
	//Uart_Getch();//while(!(Uart_GetKey()|(key_read() != -1)));
	// close timer
	timer_close();
	Uart_Printf("\n");
}

/*********************************************************************************************
* name:		timer_Int
* func:		Timer Interrupt handler
* para:		none
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void timer_Int(void)
{
	//clear pending_bit
    rI_ISPC=BIT_TIMER0;
    Uart_Printf("*");
	wat += 1;
	LCD_view(vcol+pad*wat,vrow+pad,BLACK,"*");
}

/*********************************************************************************************
* name:		timer_init
* func:		initialize PWM Timer0
* para:		none
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void timer_init(void)
{
	/* enable interrupt */
	rINTMOD=0x0;
	rINTCON=0x1;
	
	/* set interrupt handler */
	rINTMSK=~(BIT_GLOBAL|BIT_TIMER0);
    pISR_TIMER0=(unsigned)timer_Int;
	
	/* initialize PWM timer0 register */
    rTCFG0 = 255;
    rTCFG1 = 0x1;
    rTCNTB0 = 655352;
    rTCMPB0 = 128002;
    /* update TCNO0 */
	rTCON = 0x6;
	/* enable timer */
    rTCON  = 0x19;
}

/*********************************************************************************************
* name:		timer_close
* func:		close PWM Timer0
* para:		none
* ret:		none
* modify:
* comment:		
*********************************************************************************************/
void timer_close(void)
{
	pISR_TIMER0 = NULL;
	/* Mask interrupt */
	rINTMSK = rINTMSK | BIT_TIMER0;
	//clear pending_bit
    rI_ISPC=BIT_TIMER0;
	/* close Timer0 */
	rTCON = 0x0;
}


⌨️ 快捷键说明

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