#include "44breg.h"
#include "44blib.h"
#include "uhal.h"
#include "uart.h"
#include "def.h"
#include "includes.h"
#include "option.h"
#include "ne2kif.h"
extern OS_EVENT* comsem;
int count=0;
void do_irq(void);
extern void OSISR(void);
//extern void FISR(void);
__irq void do_firq(void)
{ while(1)
Uart_Printf("!!!Enter FIRQ.");
}
__irq void Timer1(void) //有关TIMER1的中断服务程序
{
Uart_Printf(" enter Timer1\n");
rTCON &= ~((0x1 < < 8) | (0x1 < < 11));//stop, one shot mode
rINTMSK |= BIT_TIMER1;
Uart_Printf(" enter Timer1\n");
// count++;
// if(count==10)
// {
// count=0;
OSSemPost(comsem);
// }
}
__irq void BreakPoint(void)
{ while(1)
Uart_Printf("!!!Enter break point.\n");
}//BreakPoint
__irq void OutDebug(unsigned int num)
{while(1)
Uart_Printf("\r\n***STACK***:%d\r\n", num);
}//OutDebug
//Initialze interrupts.
void uHALr_InitInterrupts(void)
{
// Non-vectored,IRQ disable,FIQ disable
// rINTCON=0x0;
rINTCON=0x5;
// All=IRQ mode
rINTMOD=0x0;
}//uHALr_InitInterrupts
//Initialize timer that is used OS.
void uHALr_InitTimers(void)
{
rTCFG0= 0x00000000; // prescaler0 = 0
rTCFG1= 0x00000000; // mux0 = 1/2
rTCNTB0= MCLK/2/OS_TICKS_PER_SEC;
rTCMPB0= 0x0;
rTCON=0x2; //update mode for TCNTB0 and TCMPB0.
rTCON=0x9; //timer0 = auto reload, start
}//uHALr_InitTimers
int I_COUNT=0;
__irq void DebugUNDEF(void)
{ while(1)
Uart_Printf("!!!Enter UNDEFINED.\n");
}//BreakPoint
__irq void DebugSWI(void)
{ //while(1)
Uart_Printf("!!!Enter SWI.\n");
}
__irq void DebugABORT1(void)
{ while(1)
Uart_Printf("!!!Enter PROGRAM ABORT\n");
}
__irq void DebugABORT2(void)
{ while(1)
Uart_Printf("!!!Enter DATA ABORT\n");
}
void do_irq(void)
{
U32 intpnd;
Uart_Printf("Total Interrupt Enter\n");
intpnd = rINTPND & (~rINTMSK);
while(intpnd)
{
if(intpnd & BIT_TIMER0)
{
Uart_Printf("enter timer0!\n");
OSTimeTick();
rI_ISPC |= BIT_TIMER0;
}
if(intpnd & BIT_EINT3)
{
//Uart_Printf("enter net int\n");
ne2k_isr();
rI_ISPC |= BIT_EINT3;
}
if(intpnd & BIT_TIMER1) //added by zjh
{
Uart_Printf("timer1 interrupt!\n");
Timer1();
rI_ISPC |= BIT_TIMER1;
}
intpnd = rINTPND & (~rINTMSK);
}
}
/*** Called by ARMTargetStart() ***/
void uHALr_InstallIrqHandler(void)
{
pISR_TIMER0 = (unsigned) OSISR;
pISR_UNDEF = (unsigned) DebugUNDEF;
pISR_SWI = (unsigned) DebugSWI;
pISR_PABORT = (unsigned) DebugABORT1;
pISR_DABORT = (unsigned) DebugABORT2;
pISR_FIQ = (unsigned) do_firq;
pISR_ADC = (unsigned) BreakPoint;
pISR_RTC = (unsigned) BreakPoint;
pISR_UTXD1 = (unsigned) BreakPoint;
pISR_UTXD0 = (unsigned) BreakPoint;
pISR_SIO = (unsigned) BreakPoint;
pISR_IIC = (unsigned) BreakPoint;
pISR_URXD1 = (unsigned) BreakPoint;
pISR_URXD0 = (unsigned) BreakPoint;
pISR_EINT4567 = (unsigned) BreakPoint;
pISR_WDT = (unsigned) BreakPoint;
pISR_TIMER3 = (unsigned) BreakPoint;
pISR_TIMER2 = (unsigned) BreakPoint;
//pISR_TIMER1 = (unsigned) BreakPoint;
pISR_TIMER1 = (unsigned) OSISR;
pISR_UERR01 = (unsigned) BreakPoint;
pISR_BDMA1 = (unsigned) BreakPoint;
pISR_BDMA0 = (unsigned) BreakPoint;
pISR_ZDMA1 = (unsigned) BreakPoint;
pISR_ZDMA0 = (unsigned) BreakPoint;
pISR_EINT3 = (unsigned) OSISR;
pISR_EINT0 = (unsigned) BreakPoint;
pISR_EINT1 = (unsigned) BreakPoint;
pISR_EINT2 = (unsigned) BreakPoint;
}//uHALr_InstallIrqHandler
//Start system timer & enable the interrupt.
void uHALr_EnableTimer(void)
{
rINTMSK&=(~BIT_GLOBAL);
rINTMSK&=(~BIT_TIMER0);
}
#define BUILD_DATE "Date: " __DATE__ "\n"
/*
* Initialize an ARM Target board
*/
void
ARMTargetInit(void)
{
/* ---- Tell the world who we are ---------------------------------- */
Uart_Printf("\nSAMSUNG board\n");
Uart_Printf(uHAL_VERSION_STRING);
Uart_Printf("\n");
Uart_Printf(uHAL_AUTHOR_STRING);
Uart_Printf("\n");
Uart_Printf(BUILD_DATE);
Uart_Printf("\n");
/* ---- disable interrupts (IRQs) --------------------------------- */
//ARMDisableInt();
// OS_ENTER_CRITICAL();
uHALr_InitInterrupts();
uHALr_InitTimers();
} /* targetInit */
/* start the ARM target running */
void ARMTargetStart(void)
{
/* request the system timer */
uHALr_InstallIrqHandler();
/* Start system timer & enable the interrupt. */
uHALr_EnableTimer();
}
但现在的问题是,程序运行时,始终进不了TIMER1的中断,我想请教各位高手这是什么问题?先谢了!