--- /dev/null
+/******************************************************************************\r
+ * @file: main.c\r
+ * @purpose: CMSIS Cortex-M3 Core Peripheral Access Layer Source File\r
+ * Blink a LED using CM3 SysTick\r
+ * @version: V1.0\r
+ * @date: 22. May 2009\r
+ *----------------------------------------------------------------------------\r
+ *\r
+ * Copyright (C) 2008 ARM Limited. All rights reserved.\r
+ *\r
+ * ARM Limited (ARM) is supplying this software for use with Cortex-M3 \r
+ * processor based microcontrollers. This file can be freely distributed \r
+ * within development tools that are supporting such ARM based processors. \r
+ *\r
+ * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED\r
+ * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.\r
+ * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR\r
+ * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.\r
+ *\r
+ ******************************************************************************/\r
+\r
+#include "LPC17xx.h"\r
+\r
+\r
+uint32_t msTicks; /* counts 1ms timeTicks */\r
+/*----------------------------------------------------------------------------\r
+ SysTick_Handler\r
+ *----------------------------------------------------------------------------*/\r
+void SysTick_Handler(void) {\r
+ msTicks++; /* increment counter necessary in Delay() */\r
+}\r
+\r
+/*------------------------------------------------------------------------------\r
+ delays number of tick Systicks (happens every 1 ms)\r
+ *------------------------------------------------------------------------------*/\r
+__inline static void Delay (uint32_t dlyTicks) {\r
+ uint32_t curTicks;\r
+\r
+ curTicks = msTicks;\r
+ while ((msTicks - curTicks) < dlyTicks);\r
+}\r
+\r
+/*------------------------------------------------------------------------------\r
+ configer LED pins\r
+ *------------------------------------------------------------------------------*/\r
+__inline static void LED_Config(void) {\r
+\r
+ GPIO1->FIODIR = 0xB0000000; /* LEDs PORT1 are Output */\r
+}\r
+\r
+/*------------------------------------------------------------------------------\r
+ Switch on LEDs\r
+ *------------------------------------------------------------------------------*/\r
+__inline static void LED_On (uint32_t led) {\r
+\r
+ GPIO1->FIOPIN |= (led); /* Turn On LED */\r
+}\r
+\r
+\r
+/*------------------------------------------------------------------------------\r
+ Switch off LEDs\r
+ *------------------------------------------------------------------------------*/\r
+__inline static void LED_Off (uint32_t led) {\r
+\r
+ GPIO1->FIOPIN &= ~(led); /* Turn Off LED */\r
+}\r
+\r
+/*----------------------------------------------------------------------------\r
+ MAIN function\r
+ *----------------------------------------------------------------------------*/\r
+int main (void) {\r
+\r
+ SystemInit(); /* setup clocks */\r
+ if (SysTick_Config(SystemFrequency / 1000)) { /* Setup SysTick Timer for 1 msec interrupts */\r
+ while (1); /* Capture error */\r
+ }\r
+ \r
+ LED_Config(); \r
+ \r
+ while(1) {\r
+ LED_On ((1<<28)); /* Turn on the LED. */\r
+ Delay (100); /* delay 100 Msec */\r
+ LED_Off ((1<<28)); /* Turn off the LED. */\r
+ Delay (100); /* delay 100 Msec */\r
+ }\r
+ \r
+}\r
+\r