These are the examples provided for [[/users/frank26080115/libraries/LPC1700CMSIS_Lib/]] Note, the entire "program" is not compilable!

Committer:
frank26080115
Date:
Sun Mar 20 05:38:56 2011 +0000
Revision:
0:bf7b9fba3924

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
frank26080115 0:bf7b9fba3924 1 /*----------------------------------------------------------------------------
frank26080115 0:bf7b9fba3924 2 * Name: vcomdemo.c
frank26080115 0:bf7b9fba3924 3 * Purpose: USB virtual COM port Demo
frank26080115 0:bf7b9fba3924 4 * Version: V1.20
frank26080115 0:bf7b9fba3924 5 *----------------------------------------------------------------------------
frank26080115 0:bf7b9fba3924 6 * This software is supplied "AS IS" without any warranties, express,
frank26080115 0:bf7b9fba3924 7 * implied or statutory, including but not limited to the implied
frank26080115 0:bf7b9fba3924 8 * warranties of fitness for purpose, satisfactory quality and
frank26080115 0:bf7b9fba3924 9 * noninfringement. Keil extends you a royalty-free right to reproduce
frank26080115 0:bf7b9fba3924 10 * and distribute executable files created using this software for use
frank26080115 0:bf7b9fba3924 11 * on NXP Semiconductors LPC microcontroller devices only. Nothing else
frank26080115 0:bf7b9fba3924 12 * gives you the right to use this software.
frank26080115 0:bf7b9fba3924 13 *
frank26080115 0:bf7b9fba3924 14 * Copyright (c) 2009 Keil - An ARM Company. All rights reserved.
frank26080115 0:bf7b9fba3924 15 *---------------------------------------------------------------------------*/
frank26080115 0:bf7b9fba3924 16
frank26080115 0:bf7b9fba3924 17 #include "LPC17xx.h"
frank26080115 0:bf7b9fba3924 18 #include "lpc_types.h"
frank26080115 0:bf7b9fba3924 19
frank26080115 0:bf7b9fba3924 20 #include "usb.h"
frank26080115 0:bf7b9fba3924 21 #include "usbcfg.h"
frank26080115 0:bf7b9fba3924 22 #include "usbhw.h"
frank26080115 0:bf7b9fba3924 23 #include "usbcore.h"
frank26080115 0:bf7b9fba3924 24 #include "cdc.h"
frank26080115 0:bf7b9fba3924 25 #include "cdcuser.h"
frank26080115 0:bf7b9fba3924 26 #include "serial.h"
frank26080115 0:bf7b9fba3924 27 #include "vcomdemo.h"
frank26080115 0:bf7b9fba3924 28
frank26080115 0:bf7b9fba3924 29 /* Example group ----------------------------------------------------------- */
frank26080115 0:bf7b9fba3924 30 /** @defgroup USBDEV_USBCDC USBCDC
frank26080115 0:bf7b9fba3924 31 * @ingroup USBDEV_Examples
frank26080115 0:bf7b9fba3924 32 * @{
frank26080115 0:bf7b9fba3924 33 */
frank26080115 0:bf7b9fba3924 34
frank26080115 0:bf7b9fba3924 35 /*----------------------------------------------------------------------------
frank26080115 0:bf7b9fba3924 36 Initialises the VCOM port.
frank26080115 0:bf7b9fba3924 37 Call this function before using VCOM_putchar or VCOM_getchar
frank26080115 0:bf7b9fba3924 38 *---------------------------------------------------------------------------*/
frank26080115 0:bf7b9fba3924 39 void VCOM_Init(void) {
frank26080115 0:bf7b9fba3924 40 #if PORT_NUM
frank26080115 0:bf7b9fba3924 41 CDC_Init (1);
frank26080115 0:bf7b9fba3924 42 #else
frank26080115 0:bf7b9fba3924 43 CDC_Init (0);
frank26080115 0:bf7b9fba3924 44 #endif
frank26080115 0:bf7b9fba3924 45 }
frank26080115 0:bf7b9fba3924 46
frank26080115 0:bf7b9fba3924 47
frank26080115 0:bf7b9fba3924 48 /*----------------------------------------------------------------------------
frank26080115 0:bf7b9fba3924 49 Reads character from serial port buffer and writes to USB buffer
frank26080115 0:bf7b9fba3924 50 *---------------------------------------------------------------------------*/
frank26080115 0:bf7b9fba3924 51 void VCOM_Serial2Usb(void) {
frank26080115 0:bf7b9fba3924 52 static char serBuf [USB_CDC_BUFSIZE];
frank26080115 0:bf7b9fba3924 53 int numBytesRead, numAvailByte;
frank26080115 0:bf7b9fba3924 54
frank26080115 0:bf7b9fba3924 55 ser_AvailChar (&numAvailByte);
frank26080115 0:bf7b9fba3924 56 if (numAvailByte > 0) {
frank26080115 0:bf7b9fba3924 57 if (CDC_DepInEmpty) {
frank26080115 0:bf7b9fba3924 58 numBytesRead = ser_Read (&serBuf[0], &numAvailByte);
frank26080115 0:bf7b9fba3924 59
frank26080115 0:bf7b9fba3924 60 CDC_DepInEmpty = 0;
frank26080115 0:bf7b9fba3924 61 USB_WriteEP (CDC_DEP_IN, (unsigned char *)&serBuf[0], numBytesRead);
frank26080115 0:bf7b9fba3924 62 }
frank26080115 0:bf7b9fba3924 63 }
frank26080115 0:bf7b9fba3924 64
frank26080115 0:bf7b9fba3924 65 }
frank26080115 0:bf7b9fba3924 66
frank26080115 0:bf7b9fba3924 67 /*----------------------------------------------------------------------------
frank26080115 0:bf7b9fba3924 68 Reads character from USB buffer and writes to serial port buffer
frank26080115 0:bf7b9fba3924 69 *---------------------------------------------------------------------------*/
frank26080115 0:bf7b9fba3924 70 void VCOM_Usb2Serial(void) {
frank26080115 0:bf7b9fba3924 71 static char serBuf [32];
frank26080115 0:bf7b9fba3924 72 int numBytesToRead, numBytesRead, numAvailByte;
frank26080115 0:bf7b9fba3924 73
frank26080115 0:bf7b9fba3924 74 CDC_OutBufAvailChar (&numAvailByte);
frank26080115 0:bf7b9fba3924 75 if (numAvailByte > 0) {
frank26080115 0:bf7b9fba3924 76 numBytesToRead = numAvailByte > 32 ? 32 : numAvailByte;
frank26080115 0:bf7b9fba3924 77 numBytesRead = CDC_RdOutBuf (&serBuf[0], &numBytesToRead);
frank26080115 0:bf7b9fba3924 78 #if PORT_NUM
frank26080115 0:bf7b9fba3924 79 ser_Write (1, &serBuf[0], &numBytesRead);
frank26080115 0:bf7b9fba3924 80 #else
frank26080115 0:bf7b9fba3924 81 ser_Write (0, &serBuf[0], &numBytesRead);
frank26080115 0:bf7b9fba3924 82 #endif
frank26080115 0:bf7b9fba3924 83 }
frank26080115 0:bf7b9fba3924 84
frank26080115 0:bf7b9fba3924 85 }
frank26080115 0:bf7b9fba3924 86
frank26080115 0:bf7b9fba3924 87
frank26080115 0:bf7b9fba3924 88 /*----------------------------------------------------------------------------
frank26080115 0:bf7b9fba3924 89 checks the serial state and initiates notification
frank26080115 0:bf7b9fba3924 90 *---------------------------------------------------------------------------*/
frank26080115 0:bf7b9fba3924 91 void VCOM_CheckSerialState (void) {
frank26080115 0:bf7b9fba3924 92 unsigned short temp;
frank26080115 0:bf7b9fba3924 93 static unsigned short serialState;
frank26080115 0:bf7b9fba3924 94
frank26080115 0:bf7b9fba3924 95 temp = CDC_GetSerialState();
frank26080115 0:bf7b9fba3924 96 if (serialState != temp) {
frank26080115 0:bf7b9fba3924 97 serialState = temp;
frank26080115 0:bf7b9fba3924 98 CDC_NotificationIn(); // send SERIAL_STATE notification
frank26080115 0:bf7b9fba3924 99 }
frank26080115 0:bf7b9fba3924 100 }
frank26080115 0:bf7b9fba3924 101
frank26080115 0:bf7b9fba3924 102 /*----------------------------------------------------------------------------
frank26080115 0:bf7b9fba3924 103 Main Program
frank26080115 0:bf7b9fba3924 104 *---------------------------------------------------------------------------*/
frank26080115 0:bf7b9fba3924 105 int main (void) {
frank26080115 0:bf7b9fba3924 106
frank26080115 0:bf7b9fba3924 107 VCOM_Init(); // VCOM Initialization
frank26080115 0:bf7b9fba3924 108
frank26080115 0:bf7b9fba3924 109 USB_Init(); // USB Initialization
frank26080115 0:bf7b9fba3924 110 USB_Connect(TRUE); // USB Connect
frank26080115 0:bf7b9fba3924 111
frank26080115 0:bf7b9fba3924 112 while (!USB_Configuration) ; // wait until USB is configured
frank26080115 0:bf7b9fba3924 113
frank26080115 0:bf7b9fba3924 114 while (1) { // Loop forever
frank26080115 0:bf7b9fba3924 115 VCOM_Serial2Usb(); // read serial port and initiate USB event
frank26080115 0:bf7b9fba3924 116 VCOM_CheckSerialState();
frank26080115 0:bf7b9fba3924 117 VCOM_Usb2Serial();
frank26080115 0:bf7b9fba3924 118 } // end while
frank26080115 0:bf7b9fba3924 119 } // end main ()
frank26080115 0:bf7b9fba3924 120
frank26080115 0:bf7b9fba3924 121 /*
frank26080115 0:bf7b9fba3924 122 * @}
frank26080115 0:bf7b9fba3924 123 */