⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timer.c

📁 用于三星S3C44BOX ARM7芯片的Demon板测试
💻 C
字号:
/*********************************************************************************************
* 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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -