예제 #1
0
파일: timer-demo.c 프로젝트: psas/lpc-kit
/*
 * TIMER0_Handler
 * ------------------------
 * Code TIMER0 interrupt
 */
void TIMER0_Handler (void) {
  
    led1_invert();
    led2_invert();
 
    RESET_T0IR;     // Timer 0 Interrupt flag

    EXIT_INTERRUPT;
}
예제 #2
0
// ****************
int main(void) {
	
	led2_init();	// Setup GPIO for LED2
	led2_on();		// Turn LED2 on

	// Setup SysTick Timer to interrupt at 1 msec intervals
	if (SysTick_Config(SystemCoreClock / 1000)) { 
	    while (1);  // Capture error
	}

	
	// Enter an infinite loop, just incrementing a counter and toggling leds every second
	volatile static int i = 0 ;
	while(1) {
		i++;
	    systick_delay (2000); // wait 2 seconds (2000ms)
	    led2_invert();	// Toggle state of LED2
	}
	return 0 ;
}
예제 #3
0
// ****************
int main(void) {
	
	// Setup SysTick Timer to interrupt at 10 msec intervals
	if (SysTick_Config(SystemCoreClock / 100)) {
	    while (1);  // Capture error
	}

	led2_init();	// Setup GPIO for LED2
	led2_on();		// Turn LED2 on

	systick_delay(100);
	led2_off();
	systick_delay(100);
	led2_on();


	UARTInit(2, 9600);	/* baud rate setting */
	UARTSendCRLF(2);
	UARTSendCRLF(2);
	UARTSendStringln(2, "UART2 online ...");

	EINT3_init();





	// Enter an infinite loop, just incrementing a counter and toggling leds every second
	//led2_off();
	//int ledstate;
	uint32_t s0_msticks = 0;
	uint8_t s0_active = 0;
	uint32_t s0_state = 0;
	uint32_t s0_oldState = 0;
	uint32_t s0_newState = 0;


	//EINT3_enable();
	logger_logStringln("logger online ...");
	while(1) {

		/* process logger */
		if (logger_dataAvailable() && UARTTXReady(2)) {
			uint8_t data = logger_read();
			UARTSendByte(2,data);
		}


		if (!s0_active) {
			//s0_newState = LPC_GPIO2->FIOPIN & (S0_INPUT0);
			s0_newState = ~LPC_GPIO2->FIOPIN & (S0_INPUT0 | S0_INPUT1);
			if (s0_oldState != s0_newState) {
				s0_active = 1;
				s0_msticks = msTicks;
			}
		}

		if (s0_active && s0_msticks != msTicks) {
			s0_state = ~LPC_GPIO2->FIOPIN & (S0_INPUT0 | S0_INPUT1 );
			logger_logNumberln(s0_state);
			if (s0_state == s0_newState) {
				// falling edge
				if ((s0_newState & S0_INPUT0) > 0) {
					led2_invert();
				}

				// rising edge
				if ((s0_newState & S0_INPUT1) == 0) {
					led2_invert();
				}

			}
			s0_oldState = s0_state;
			s0_active = 0;
		}

	}
	return 0 ;
}