efd10ef8c8013ce7c00d40ff6c82cd81e6060db5
[rapper.git] / new_cmsis / main.c
1 /******************************************************************************\r
2  * @file:    main.c\r
3  * @purpose: CMSIS Cortex-M3 Core Peripheral Access Layer Source File\r
4  *           Blink a LED using CM3 SysTick\r
5  * @version: V1.0\r
6  * @date:    22. May 2009\r
7  *----------------------------------------------------------------------------\r
8  *\r
9  * Copyright (C) 2008 ARM Limited. All rights reserved.\r
10  *\r
11  * ARM Limited (ARM) is supplying this software for use with Cortex-M3 \r
12  * processor based microcontrollers.  This file can be freely distributed \r
13  * within development tools that are supporting such ARM based processors. \r
14  *\r
15  * THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED\r
16  * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF\r
17  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.\r
18  * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR\r
19  * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.\r
20  *\r
21  ******************************************************************************/\r
22 \r
23 #include "LPC17xx.h"\r
24 \r
25 \r
26 uint32_t msTicks;                               /* counts 1ms timeTicks */\r
27 /*----------------------------------------------------------------------------\r
28   SysTick_Handler\r
29  *----------------------------------------------------------------------------*/\r
30 void SysTick_Handler(void) {\r
31   msTicks++;                                    /* increment counter necessary in Delay() */\r
32 }\r
33 \r
34 /*------------------------------------------------------------------------------\r
35   delays number of tick Systicks (happens every 1 ms)\r
36  *------------------------------------------------------------------------------*/\r
37 __inline static void Delay (uint32_t dlyTicks) {\r
38   uint32_t curTicks;\r
39 \r
40   curTicks = msTicks;\r
41   while ((msTicks - curTicks) < dlyTicks);\r
42 }\r
43 \r
44 /*------------------------------------------------------------------------------\r
45   configer LED pins\r
46  *------------------------------------------------------------------------------*/\r
47 __inline static void LED_Config(void) {\r
48 \r
49   GPIO1->FIODIR = (1<<29)|(1<<18);     /* LEDs on PORT1 18 & 29 are Output */\r
50 }\r
51 \r
52 /*------------------------------------------------------------------------------\r
53   Switch on LEDs\r
54  *------------------------------------------------------------------------------*/\r
55 __inline static void LED_On (uint32_t led) {\r
56 \r
57   GPIO1->FIOPIN |=  (led);                      /* Turn On  LED */\r
58 }\r
59 \r
60 \r
61 /*------------------------------------------------------------------------------\r
62   Switch off LEDs\r
63  *------------------------------------------------------------------------------*/\r
64 __inline static void LED_Off (uint32_t led) {\r
65 \r
66   GPIO1->FIOPIN &= ~(led);                      /* Turn Off LED */\r
67 }\r
68 \r
69 /*----------------------------------------------------------------------------\r
70   MAIN function\r
71  *----------------------------------------------------------------------------*/\r
72 int main (void) {\r
73 \r
74   SystemInit();                                                                 /* setup clocks */\r
75   if (SysTick_Config(SystemFrequency / 1000)) { /* Setup SysTick Timer for 1 msec interrupts  */\r
76     while (1);                                  /* Capture error */\r
77   }\r
78   \r
79   LED_Config();                             \r
80  \r
81   while(1) {\r
82     LED_On ((1<<29));                           /* Turn on the LED. */\r
83     LED_On ((1<<18));                           /* Turn on the LED. */\r
84     Delay (100);                                /* delay  100 Msec */\r
85     LED_Off ((1<<29));                           /* Turn on the LED. */\r
86     Delay (100);                                /* delay  100 Msec */\r
87     LED_Off ((1<<18));                           /* Turn on the LED. */\r
88     LED_On ((1<<29));                           /* Turn on the LED. */\r
89     Delay (100);                                /* delay  100 Msec */\r
90   }\r
91   \r
92 }\r
93 \r