Alexan E
/
blinky
blinky example from NXP code bundle for LPC11Uxx. No mbed library used
blinky.c@1:0f1be4e75668, 2012-05-28 (annotated)
- Committer:
- alexan_e
- Date:
- Mon May 28 00:13:23 2012 +0000
- Revision:
- 1:0f1be4e75668
Who changed what in which revision?
User | Revision | Line number | New 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 | } |