timer0.c

来自「某培训中心的实验代码」· C语言 代码 · 共 64 行

C
64
字号
#include "2410addr.h"
#include "2410lib.h"

void __irq timer0Handler(void);

void INT_Timer_Initialize(void)
{
	
 /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
 /*                                                                 */
 /*     Fout(s)=[(prescaler+1)*(TCNTB+1)]/[pclk*divider]=40ms       */
 /*                                                                 */
 /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
	
	rTCFG0=0x64; 	//prescaler0 100
	rTCFG1=0x01; 	//divide value 1/4
	rTCNTB0=5000;	//TCNTB=5000
	rTCON=0x0a;  	//auto load, invert off, manual update, stop timer
	/*INTIALIZE THE INTERRUPT*/
	rINTMOD=0x0;  	//all irq
	rINTMSK=0xffffffff; 	 //disable all interrupt source
	rINTSUBMSK=0xffff; 		//disable all sub interrupt source
}

/* open the interrupt timer0 and eint0 */
void ENABLE_INTERRUPT(void)
{
	rINTMSK=~(BIT_TIMER0);
	rTCON=0x09;
}

/** main **/
int Main()
{
             
     ChangeClockDivider(1,1);
     ChangeMPllValue(0xa1,0x3,0x1);   
     Port_Init();
     Uart_Select(0);
     Uart_Init(0,115200);
    
    //timer0初始化
    INT_Timer_Initialize();	
	
	//建立中断向量表
	pISR_TIMER0=(unsigned)timer0Handler;
	
	//开中断
	ENABLE_INTERRUPT();
	
	Uart_Printf("the main is running\n");
 
    while(1);
}

/*** timer0中断服务程序 ***/
void __irq timer0Handler(void)
{
    Uart_Printf("timer0 is running.\n");
    ClearPending(BIT_TIMER0);
}


⌨️ 快捷键说明

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