Source

LPC1768 / main.c

/* 
 * LED blinking example for the mbed LPC1768-based board.
 *
 * See also: http://bitbucket.org/jpc/lpc1768/
 *
 * Copyright (c) 2010 LoEE - Jakub Piotr Cłapa
 * This program is released under the new BSD license.
 */
#include "CMSIS/LPC17xx.h"
#include "io-pin.h"

// For mbed-005.1
#define LED1 P1+18
#define LED2 P1+20
#define LED3 P1+21
#define LED4 P1+23

// Helper macros
#define LED_ON(i)  (pin_write (LED##i, 1))
#define LED_OFF(i) (pin_write (LED##i, 0))

volatile uint32_t current_time;

void SysTick_Handler (void)
{
  current_time++;
}

void delay (uint32_t interval)
{
  uint32_t start = current_time;
  while (current_time - start < interval);
}

int main (void)
{
  // Setup SysTick interrupts at 1kHz (1ms)
  SysTick_Config (SystemCoreClock / 1000);

  // Configure as output pins.
  pin_dir (LED1, PIN_OUT);
  pin_dir (LED2, PIN_OUT);
  pin_dir (LED3, PIN_OUT);
  pin_dir (LED4, PIN_OUT);

  // Twinkle!
  while(1) {
    LED_ON(1); delay (120); LED_OFF(1);
    LED_ON(2); delay (120); LED_OFF(2);
    LED_ON(3); delay (120); LED_OFF(3);
    LED_ON(4); delay (120); LED_OFF(4);
    LED_ON(3); delay (120); LED_OFF(3);
    LED_ON(2); delay (120); LED_OFF(2);
  }
}