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

Dependencies:   mbed

Committer:
alexan_e
Date:
Mon May 28 00:13:23 2012 +0000
Revision:
1:0f1be4e75668

        

Who changed what in which revision?

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