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

📄 timer_int.c

📁 立宇泰44B0开发板上时间中断0的实现
💻 C
字号:
#include <string.h>
#include "..\Target\44b.h"
#include "..\Target\44blib.h"
#include "Timer_int.h"

//void __irq Timer0_int(void);
//void Timer0_init(void);//初始化定时器0,并安装中断向量入口

volatile char count=0;

void Timer0_init()
{
	//#if0
	rINTCON=0x1;	      //Non-vectored,IRQ enable,FIQ disable //
	rINTMOD=0x0;	      //All=IRQ mode//

	//初始化定时器0
	rINTMSK=~(BIT_GLOBAL|BIT_TIMER0);
	pISR_TIMER0=(int)Timer0_int;
	rTCFG0  = 0x0000000f; // set Timer 0 prescaler 1
    rTCFG1  = 0x00000001; //// set Timer0 MUX 1/4
    rTCON=0x2222202;	//update T5/T4/T3/T2/T1/T0
	rTCNTB0=65535;// set timer0 interval
	rTCON=0x00000009;
	
	//安装中断向量入口
	//#endif
	 
#if 0
    rINTMSK=~(BIT_GLOBAL|BIT_TIMER0);
    pISR_TIMER0=(int)Timer0_int;

    Uart_Printf("[Timer0 Interrupt Test]\n");

    rTCFG0=0xf0f0f;	//dead zone=0,pre2=0xf,pre1=0xf,pre0=0xf
//    rTCFG1=0x401234;	//all interrupt,mux5=EXTCLK,mux2=1/2,mux3=1/4,mux2=1/8,mux1=1/16,mux0=1/32
    rTCFG1=0x01234;	//all interrupt,mux5=1/2,mux2=1/2,mux3=1/4,mux2=1/8,mux1=1/16,mux0=1/32
    
    rTCNTB0=0xffff;	//(1/(66MHz/15/32))*0xffff=0.48s
    rTCNTB1=0xffff;	//(1/(66MHz/15/16))*0xffff=0.24s
    rTCNTB2=0xffff;	//(1/(66MHz/15/8 ))*0xffff=0.12s
    rTCNTB3=0xffff;	//(1/(66MHz/15/4 ))*0xffff=0.06s
    rTCNTB4=0xffff;	//(1/(66MHz/15/2 ))*0xffff=0.03s
    rTCNTB5=0xffff;	//(1/(66MHz/15/2 ))*0xffff=0.03s
//    rTCNTB5=0xffff;	//(1/(1MHz)*0xffff=0.06s, EXTCLK

    rTCON=0x2222202;	//update T5/T4/T3/T2/T1/T0
    rTCON=0x5999909;	//T5/T4/T3/T2/T1/T0=auto reload,,all_start
#endif   

    while(count<=10);     
	Delay(1);	   //To compensate timer error(<1 tick period)
    rTCON=0x0;	//all_stop
    Uart_Printf("\nAll stopped!");

      
}

void __irq Timer0_int()
{
	Uart_Printf("\nTimer 0 interrupt happend %d times",count++);
	//clear pending bit
	//rINTMSK|=BIT_TIMER0;
	rI_ISPC=BIT_TIMER0;
}

⌨️ 快捷键说明

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