new cmsis
[rapper.git] / new_cmsis / main.c
diff --git a/new_cmsis/main.c b/new_cmsis/main.c
new file mode 100644 (file)
index 0000000..2c70737
--- /dev/null
@@ -0,0 +1,89 @@
+/******************************************************************************\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