X-Git-Url: http://git.asbjorn.it/?a=blobdiff_plain;f=src%2Fmain.c;fp=src%2Fmain.c;h=d89416beff5b328f9ff938036c2b505124a4fe33;hb=ab3f716f01b5b40ce743fbaa5780e12e448b609c;hp=0000000000000000000000000000000000000000;hpb=2253dc3498d4ace7f07884ec6d40d654ca677571;p=rapper.git diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..d89416b --- /dev/null +++ b/src/main.c @@ -0,0 +1,110 @@ +/****************************************************************************** + * @file: main.c + * @purpose: CMSIS Cortex-M3 Core Peripheral Access Layer Source File + * Blink a LED using CM3 SysTick + * @version: V1.0 + * @date: 22. May 2009 + *---------------------------------------------------------------------------- + * + * Copyright (C) 2008 ARM Limited. All rights reserved. + * + * ARM Limited (ARM) is supplying this software for use with Cortex-M3 + * processor based microcontrollers. This file can be freely distributed + * within development tools that are supporting such ARM based processors. + * + * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. + * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR + * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. + * + ******************************************************************************/ + +#include +#include "usb.h" + +uint32_t msTicks; /* counts 1ms timeTicks */ +/*---------------------------------------------------------------------------- + SysTick_Handler + *----------------------------------------------------------------------------*/ +void SysTick_Handler(void) { + msTicks++; /* increment counter necessary in Delay() */ +} + +/*------------------------------------------------------------------------------ + delays number of tick Systicks (happens every 1 ms) + *------------------------------------------------------------------------------*/ +__inline static void Delay (uint32_t dlyTicks) { + uint32_t curTicks; + + curTicks = msTicks; + while ((msTicks - curTicks) < dlyTicks); +} + +/*------------------------------------------------------------------------------ + configer LED pins + *------------------------------------------------------------------------------*/ +__inline static void LED_Config(void) { + + GPIO1->FIODIR = (1<<29)|(1<<18); /* LEDs on PORT1 18 & 29 are Output */ +} + +/*------------------------------------------------------------------------------ + Switch on LEDs + *------------------------------------------------------------------------------*/ +__inline static void LED_On (uint32_t led) { + + GPIO1->FIOPIN |= (led); /* Turn On LED */ +} + + +/*------------------------------------------------------------------------------ + Switch off LEDs + *------------------------------------------------------------------------------*/ +__inline static void LED_Off (uint32_t led) { + + GPIO1->FIOPIN &= ~(led); /* Turn Off LED */ +} + +void lightshow() { + while (1) { + LED_On ((1<<29)); /* Turn on the LED. */ + LED_On ((1<<18)); /* Turn on the LED. */ + Delay (100); /* delay 100 Msec */ + LED_Off ((1<<29)); /* Turn on the LED. */ + Delay (100); /* delay 100 Msec */ + LED_Off ((1<<18)); /* Turn on the LED. */ + LED_On ((1<<29)); /* Turn on the LED. */ + Delay (100); /* delay 100 Msec */ + } +} + +/*---------------------------------------------------------------------------- + MAIN function + *----------------------------------------------------------------------------*/ +int main (void) { + + SystemInit(); /* setup clocks */ + + if (SysTick_Config(SystemFrequency / 1000)) { /* Setup SysTick Timer for 1 msec interrupts */ + while (1); /* Capture error */ + } + + LED_Config(); + + VCOM_Init(); // VCOM Initialization + + USB_Init(); // USB Initialization + + USB_Connect(TRUE); // USB Connect + //lightshow(); + + while (!USB_Configuration) ; // wait until USB is configured + + while (1) { // Loop forever + VCOM_Serial2Usb(); // read serial port and initiate USB event + VCOM_CheckSerialState(); + VCOM_Usb2Serial(); + } // end while +} +