blinky example from NXP code bundle for LPC11Uxx. No mbed library used

Dependencies:   mbed

Committer:
alexan_e
Date:
Mon May 28 00:01:35 2012 +0000
Revision:
0:4dd6b327586a

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
alexan_e 0:4dd6b327586a 1 /****************************************************************************
alexan_e 0:4dd6b327586a 2 * $Id:: blinky.c 9190 2012-02-16 20:59:45Z nxp41306 $
alexan_e 0:4dd6b327586a 3 * Project: NXP LPC11xx Blinky example
alexan_e 0:4dd6b327586a 4 *
alexan_e 0:4dd6b327586a 5 * Description:
alexan_e 0:4dd6b327586a 6 * This file contains LED blink code example which include timer,
alexan_e 0:4dd6b327586a 7 * GPIO initialization, and clock monitoring.
alexan_e 0:4dd6b327586a 8 *
alexan_e 0:4dd6b327586a 9 ****************************************************************************
alexan_e 0:4dd6b327586a 10 * Software that is described herein is for illustrative purposes only
alexan_e 0:4dd6b327586a 11 * which provides customers with programming information regarding the
alexan_e 0:4dd6b327586a 12 * products. This software is supplied "AS IS" without any warranties.
alexan_e 0:4dd6b327586a 13 * NXP Semiconductors assumes no responsibility or liability for the
alexan_e 0:4dd6b327586a 14 * use of the software, conveys no license or title under any patent,
alexan_e 0:4dd6b327586a 15 * copyright, or mask work right to the product. NXP Semiconductors
alexan_e 0:4dd6b327586a 16 * reserves the right to make changes in the software without
alexan_e 0:4dd6b327586a 17 * notification. NXP Semiconductors also make no representation or
alexan_e 0:4dd6b327586a 18 * warranty that such application will be suitable for the specified
alexan_e 0:4dd6b327586a 19 * use without further testing or modification.
alexan_e 0:4dd6b327586a 20 ****************************************************************************/
alexan_e 0:4dd6b327586a 21 #include <LPC11Uxx.h> /* LPC11Uxx definitions */
alexan_e 0:4dd6b327586a 22 #include "timer16.h"
alexan_e 0:4dd6b327586a 23 #include "clkconfig.h"
alexan_e 0:4dd6b327586a 24 #include "gpio.h"
alexan_e 0:4dd6b327586a 25 #include "nmi.h"
alexan_e 0:4dd6b327586a 26
alexan_e 0:4dd6b327586a 27 #define TEST_TIMER_NUM 0 /* 0 or 1 for 16-bit timers only */
alexan_e 0:4dd6b327586a 28
alexan_e 0:4dd6b327586a 29 extern volatile uint32_t timer16_0_counter[2];
alexan_e 0:4dd6b327586a 30 extern volatile uint32_t timer16_1_counter[2];
alexan_e 0:4dd6b327586a 31
alexan_e 0:4dd6b327586a 32 /* Main Program */
alexan_e 0:4dd6b327586a 33
alexan_e 0:4dd6b327586a 34 int main (void) {
alexan_e 0:4dd6b327586a 35 uint32_t interval;
alexan_e 0:4dd6b327586a 36
alexan_e 0:4dd6b327586a 37 SystemCoreClockUpdate();
alexan_e 0:4dd6b327586a 38
alexan_e 0:4dd6b327586a 39 /* Config CLKOUT, mostly used for debugging. */
alexan_e 0:4dd6b327586a 40 // CLKOUT_Setup( CLKOUTCLK_SRC_MAIN_CLK );
alexan_e 0:4dd6b327586a 41 // LPC_IOCON->PIO0_1 &= ~0x07;
alexan_e 0:4dd6b327586a 42 // LPC_IOCON->PIO0_1 |= 0x01; /* CLK OUT */
alexan_e 0:4dd6b327586a 43
alexan_e 0:4dd6b327586a 44 /* Enable AHB clock to the GPIO domain. */
alexan_e 0:4dd6b327586a 45 LPC_SYSCON->SYSAHBCLKCTRL |= (1<<6);
alexan_e 0:4dd6b327586a 46
alexan_e 0:4dd6b327586a 47 /* TEST_TIMER_NUM is either 0 or 1 for 16-bit timer 0 or 1. */
alexan_e 0:4dd6b327586a 48 interval = SystemCoreClock/1000 - 1;
alexan_e 0:4dd6b327586a 49 if ( interval > 0xFFFF )
alexan_e 0:4dd6b327586a 50 {
alexan_e 0:4dd6b327586a 51 interval = 0xFFFF;
alexan_e 0:4dd6b327586a 52 }
alexan_e 0:4dd6b327586a 53 init_timer16(TEST_TIMER_NUM, interval);
alexan_e 0:4dd6b327586a 54 enable_timer16(TEST_TIMER_NUM);
alexan_e 0:4dd6b327586a 55
alexan_e 0:4dd6b327586a 56 /* Set port 1_8 to output */
alexan_e 0:4dd6b327586a 57 GPIOSetDir( 1, 8, 1 );
alexan_e 0:4dd6b327586a 58
alexan_e 0:4dd6b327586a 59 while (1) /* Loop forever */
alexan_e 0:4dd6b327586a 60 {
alexan_e 0:4dd6b327586a 61 #if TEST_TIMER_NUM
alexan_e 0:4dd6b327586a 62 /* I/O configuration and LED setting pending. */
alexan_e 0:4dd6b327586a 63 if ( (timer16_1_counter[0] > 0) && (timer16_1_counter[0] <= 200) )
alexan_e 0:4dd6b327586a 64 {
alexan_e 0:4dd6b327586a 65 GPIOSetBitValue( 1, 8, 0 );
alexan_e 0:4dd6b327586a 66 }
alexan_e 0:4dd6b327586a 67 if ( (timer16_1_counter[0] > 200) && (timer16_1_counter[0] <= 400) )
alexan_e 0:4dd6b327586a 68 {
alexan_e 0:4dd6b327586a 69 GPIOSetBitValue( 1, 8, 1 );
alexan_e 0:4dd6b327586a 70 }
alexan_e 0:4dd6b327586a 71 else if ( timer16_1_counter[0] > 400 )
alexan_e 0:4dd6b327586a 72 {
alexan_e 0:4dd6b327586a 73 timer16_1_counter[0] = 0;
alexan_e 0:4dd6b327586a 74 }
alexan_e 0:4dd6b327586a 75 #else
alexan_e 0:4dd6b327586a 76 /* I/O configuration and LED setting pending. */
alexan_e 0:4dd6b327586a 77 if ( (timer16_0_counter[0] > 0) && (timer16_0_counter[0] <= 200) )
alexan_e 0:4dd6b327586a 78 {
alexan_e 0:4dd6b327586a 79 GPIOSetBitValue( 1, 8, 0 );
alexan_e 0:4dd6b327586a 80 }
alexan_e 0:4dd6b327586a 81 if ( (timer16_0_counter[0] > 200) && (timer16_0_counter[0] <= 400) )
alexan_e 0:4dd6b327586a 82 {
alexan_e 0:4dd6b327586a 83 GPIOSetBitValue( 1, 8, 1 );
alexan_e 0:4dd6b327586a 84 }
alexan_e 0:4dd6b327586a 85 else if ( timer16_0_counter[0] > 400 )
alexan_e 0:4dd6b327586a 86 {
alexan_e 0:4dd6b327586a 87 timer16_0_counter[0] = 0;
alexan_e 0:4dd6b327586a 88 }
alexan_e 0:4dd6b327586a 89 #endif
alexan_e 0:4dd6b327586a 90 }
alexan_e 0:4dd6b327586a 91 }