 
					
				
		
 lpcware
		
			lpcware
		
		
		
		
		
		
		
		
	
			
		
		
			
					
		| 
#define TMR16B0TC  0x40004008
#define PCLKSEL0                  0x400FC1A8
#define TMR16B0IR 0x40004000
#define TMR16B0TCR 0x40004004
#define TMR16B0PR 0x4000400C
#define TMR16B0MR0 0x40004018
#define TMR16B0MCR          0x40004014
#define TMR16B0CTCR         0x40004070
#define PCONP 0x400FC0C4
#define ISER0 0xE000E100
int* pCLKSEL0        = (int*) PCLKSEL0;
int* tMR16B0TCR = (int*) TMR16B0TCR;
int* tMR16B0PR = (int*) TMR16B0PR;
int* tMR16B0MR0 = (int*) TMR16B0MR0;
int* tMR16B0MCR = (int*) TMR16B0MCR;
int* tMR16B0CTCR = (int*) TMR16B0CTCR;
int* tMR16B0IR = (int*) TMR16B0IR;
int* iSER0 = (int*) ISER1;
int* tMR16B0TC = (int*) TMR16B0TC;
int* pCONP = (int*) PCONP;
void (*timer_tmr_callback)();
void init()
{
*pCONP = 0x2; 
*pCLKSEL0    = 0xC;
*tMR16B0TC   = 0x0;
*tMR16B0PR     = 1000 - 1;
*tMR16B0CTCR    = 0;
*tMR16B0MR0 = 1000;
*tMR16B0MCR     = 0x05;
}
void timer_async_usec( unsigned int msec, void (*callback)())
{
timer_tmr_callback     = callback;
*tMR16B0MR0    = msec;
*tMR16B0MCR           = 0x07;
*iSER0    = (1 << 1);
*tMR16B0TCR    = 0x2;
*tMR16B0TCR    = 0x1;
}
void (TIMER0_IRQHandler(void))
{
*tMR16B0IR = 0x1F;
timer_tmr_callback();
}
 | 
 
					
				
		
 lpcware
		
			lpcware
		
		
		
		
		
		
		
		
	
			
		
		
			
					
		| #include "lpc175x_6x.h"
#include "lpc17xx_clkpwr.h"
void (*timer_tmr_callback)();
#define CLKPWR_PCLKSEL_CCLK_DIV_8((uint32_t)(3))/* Ahem.. This definition seems to be missing from the include files. */
void init()
{
LPC_SC->PCONP = CLKPWR_PCONP_PCTIM0;/* NOTE: Turn off EVERYTHING but timer0! */
LPC_SC->PCLKSEL0 = CLKPWR_PCLKSEL_SET(CLKPWR_PCLKSEL_TIMER0, CLKPWR_PCLKSEL_CCLK_DIV_8);
LPC_TIM0->TC = 0x0;
LPC_TIM0->PR = 1000 - 1;
LPC_TIM0->CTCR = 0;
LPC_TIM0->MR0 = 1000;
LPC_TIM0->MCR = TIM_INT_ON_MATCH(0) | TIM_STOP_ON_MATCH(0);
}
void timer_async_usec( unsigned int msec, void (*callback)())
{
timer_tmr_callback = callback;
LPC_TIM0->MR0 = msec;
LPC_TIM0->MCR = TIM_INT_ON_MATCH(0) | TIM_RESET_ON_MATCH(0) | TIM_STOP_ON_MATCH(0);
NVIC->ISER[1] = (1 << TIMER0_IRQn);/* using NVIC_EnableIRQ(TIMER0_IRQn); won't hurt */
LPC_TIM0->TCR = TIM_RESET;
LPC_TIM0->TCR = TIM_ENABLE;
}
void (TIMER0_IRQHandler(void))
{
LPC_TIM0->IR = 0x1F;/* note: NXP clears all 32 bits; I suggest using LPC_TIM0->IR = ~0; */
timer_tmr_callback();
} | 
 
					
				
		
 lpcware
		
			lpcware
		
		
		
		
		
		
		
		
	
			
		
		
			
					
		 
					
				
		
 lpcware
		
			lpcware
		
		
		
		
		
		
		
		
	
			
		
		
			
					
		