?? timer_int.c
字號(hào):
#include <string.h>
#include "..\Target\44b.h"
#include "..\Target\44blib.h"
#include "Timer_int.h"
//void __irq Timer0_int(void);
//void Timer0_init(void);//初始化定時(shí)器0,并安裝中斷向量入口
volatile char count=0;
void Timer0_init()
{
//#if0
rINTCON=0x1; //Non-vectored,IRQ enable,FIQ disable //
rINTMOD=0x0; //All=IRQ mode//
//初始化定時(shí)器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;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -