#include
#include
#include "nkintr.h"
#include "pkfuncs.h"
#include "s3c2440a_intr.h"
#include "s3c2440a_base_regs.h"
#include "s3c2440a_ioport.h"
#include "s3c2440a_pwm.h"
//#include "oal_io.h"
#define BUFSIZE 256
static DWORD INTIrq = IRQ_TIMER1; // Determined by SMDK2410 board layout.
static DWORD INTIntr = SYSINTR_UNDEFINED;
volatile S3C2440A_IOPORT_REG *v_pIOPregs;
volatile S3C2440A_PWM_REG *v_pPWMregs;
volatile S3C2440A_INTR_REG *v_pINTregs;
static HANDLE Timer_Event;
static HANDLE Timer_Thread;
int i1 = 0;
int dat = 1;
WCHAR achBuffer[BUFSIZE];
BOOL WINAPI
DllEntryPoint(HANDLE hinstDLL,
DWORD dwReason,
LPVOID lpvReserved)
{
switch (dwReason)
{
case DLL_PROCESS_ATTACH:
RETAILMSG(1,(TEXT("timer:::::*******DLL_PROCESS_ATTACH******\n")));
break;
case DLL_THREAD_ATTACH:
RETAILMSG(1,(TEXT("timer:::::******DLL_THREAD_ATTACH*******\n")));
break;
case DLL_THREAD_DETACH:
RETAILMSG(1,(TEXT("timer:::::******DLL_THREAD_DETACH******\n")));
break;
case DLL_PROCESS_DETACH:
RETAILMSG(1,(TEXT("timer:::::******DLL_PROCESS_DETACH******\n")));
break;
}
return true;
}
BOOL TimerINTInit()
{
RETAILMSG(1,(TEXT("timer1::::**********KeyInt_Setting***********\r\n")));
//GPIO
v_pIOPregs->GPGCON &=~(0x3TCON |=(0x00000001>8),sizeof(S3C2440A_INTR_REG),PAGE_PHYSICAL|PAGE_READWRITE|PAGE_NOCACHE ))
{
RETAILMSG(1,(TEXT("timer1::::For S2440IOP: VirtualCopy v_pINTregs failed!\r\n")));
}
}
}
static DWORD Timer1_Thread_Fun()
{
while(1)
{
WaitForSingleObject(Timer_Event,INFINITE);
RETAILMSG(1,(TEXT("timer1::::Thread id running :times == %d\r\n"),i1));
i1++;
if(dat==1)
{
v_pIOPregs->GPGDAT |= 0x0100;
dat = 0;
}
else
{
v_pIOPregs->GPGDAT &=0xfeff;
dat =1;
}
// v_pINTregs->INTPND |=(0x00000001