A program for LPC11U68 UART1 testing

Dependencies:   mbed-src

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 
00003 DigitalOut greenLed(LED_GREEN);
00004 DigitalOut redLed(LED_RED);
00005 
00006 Serial pc(USBTX, USBRX);
00007 Serial uart1(P1_8, P1_2);
00008 
00009 uint8_t buffer[256];
00010 uint16_t bufferIndex = 0;
00011 uint8_t data;
00012 uint32_t ledToggleTime;
00013 
00014 int main()
00015 {
00016     pc.baud(115200);
00017     pc.printf("\r\n\r\nProgram started\r\nType some text and press ENTER ...\r\n");
00018     
00019     memset(buffer, 0, sizeof(buffer));
00020     redLed = 1;
00021     ledToggleTime = 0;
00022     
00023     uart1.baud(115200);
00024     pc.printf("Type text > "); // show the prompt
00025     
00026     for(;;)
00027     {
00028         while (uart1.readable() > 0)
00029         {
00030             pc.printf("\r\nreadable(): %d\r\n", uart1.readable());
00031             
00032             data = uart1.getc();
00033             pc.printf("\r\n<<< [%02X]\r\n", data);
00034         }
00035         
00036         while (pc.readable() > 0)
00037         {
00038             if (bufferIndex < sizeof(buffer))
00039             {
00040                 redLed = 1; // turn off the red led
00041                 data = pc.getc();
00042                 
00043                 // wait for ENTER
00044                 if ((data == 0x0d) || (data == 0x0a))
00045                 {
00046                     if (bufferIndex > 0)
00047                     {
00048                         pc.printf("\r\nGot it: %s\r\n", buffer);
00049                         
00050                         pc.printf("\r\n>>> %s\r\n", buffer);
00051                         uart1.printf("%s", buffer);
00052                         
00053                         memset(buffer, 0, sizeof(buffer));
00054                         bufferIndex = 0;
00055                     }
00056                     
00057                     pc.printf("\r\nType text > "); // show the prompt
00058                 }
00059                 else
00060                 {
00061                     buffer[bufferIndex++] = data;
00062                     pc.putc(data);
00063                 }
00064             }
00065             else
00066             {
00067                 redLed = 0; // turn on the red led
00068             }
00069         }
00070 
00071         // toggle green led every 500 ms        
00072         if ((us_ticker_read() - ledToggleTime)/1000 >= 500)
00073         {
00074             ledToggleTime = us_ticker_read();
00075             greenLed = !greenLed;
00076         }
00077     }
00078 }