<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Receiving UART in LPC1768 in LPCXpresso IDE</title>
    <link>https://community.nxp.com/t5/LPCXpresso-IDE/Receiving-UART-in-LPC1768/m-p/542679#M7929</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by albertleng1978 on Sat Nov 10 06:32:39 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm working on a project in which the MCU LPC1768 will be connected to a host.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The host will send command message to UART1 of MCU LPC1768 and the MCU will reply with a predefined message. There are a series of command messages from the host. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The sequences are:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;1) From Host to MCU: "UART_On"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; From MCU to Host: "UART_On_Done"&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;2) From Host to MCU: "UART_Off"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; From MCU to Host: "UART_Off_Done"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;and etc...&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;What happens is that I send "UART_On" to the MCU and it replies with "UART_On_Done". Then, I send "UART_Off". The MCU will reply with "UART_On_Done" or "UART_On_DoneUART_On_Done".&amp;nbsp; What I want is like what I wrote above.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I wrote the code based on UART example of mcb1700.code.bundle.lpc17xx.keil.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;My main codes are as below. I also attach my source code. Please kindly help to see what's wrong and give me any suggestions. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Thank you soooo much!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;#include "lpc17xx.h"
#include "type.h"
#include "uart.h"
#include "string.h"
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;stdio.h&amp;gt;


extern volatile uint32_t UART1Count;
extern volatile uint8_t UART1Buffer[BUFSIZE];

uint8_t Dummy;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 

int main (void)
{

&amp;nbsp; SystemClockUpdate();
&amp;nbsp; UARTInit(1, 115200);&amp;nbsp;&amp;nbsp;&amp;nbsp; /* baud rate setting */

&amp;nbsp; while (1) 
&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Loop forever */
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( UART1Count != 0 )
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART1-&amp;gt;IER = IER_THRE | IER_RLS;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Disable RBR */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (strstr((const char *)UART1Buffer, "UART_On")) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UARTSend( 1, "UART_On_Done", 12);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART1Count = 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (strstr((const char *)UART1Buffer, "UART_Off")) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UARTSend( 1, "UART_Off_Done", 13);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART1Count = 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART1-&amp;gt;IER = IER_THRE | IER_RLS | IER_RBR;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Re-enable RBR */
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp; }
}&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
#include "lpc17xx.h"
#include "type.h"
#include "uart.h"

volatile uint32_t UART0Status, UART1Status;
volatile uint8_t UART0TxEmpty = 1, UART1TxEmpty = 1;
volatile uint8_t UART0Buffer[BUFSIZE], UART1Buffer[BUFSIZE];
volatile uint32_t UART0Count = 0, UART1Count = 0;

void UART0_IRQHandler (void) 
{
&amp;nbsp; uint8_t IIRValue, LSRValue;
&amp;nbsp; uint8_t Dummy = Dummy;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp; IIRValue = LPC_UART0-&amp;gt;IIR;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp; IIRValue &amp;gt;&amp;gt;= 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* skip pending bit in IIR */
&amp;nbsp; IIRValue &amp;amp;= 0x07;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* check bit 1~3, interrupt identification */
&amp;nbsp; if ( IIRValue == IIR_RLS )&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Receive Line Status */
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; LSRValue = LPC_UART0-&amp;gt;LSR;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Receive Line Status */
&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( LSRValue &amp;amp; (LSR_OE|LSR_PE|LSR_FE|LSR_RXFE|LSR_BI) )
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART0Status = LSRValue;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dummy = LPC_UART0-&amp;gt;RBR;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( LSRValue &amp;amp; LSR_RDR )&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Receive Data Ready */&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART0Buffer[UART0Count] = LPC_UART0-&amp;gt;RBR;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART0Count++;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( UART0Count == BUFSIZE )
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART0Count = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* buffer overflow */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp; }
&amp;nbsp; else if ( IIRValue == IIR_RDA )&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Receive Data Available */
&amp;nbsp; {

&amp;nbsp;&amp;nbsp;&amp;nbsp; UART0Buffer[UART0Count] = LPC_UART0-&amp;gt;RBR;
&amp;nbsp;&amp;nbsp;&amp;nbsp; UART0Count++;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( UART0Count == BUFSIZE )
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART0Count = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* buffer overflow */
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp; }
&amp;nbsp; else if ( IIRValue == IIR_CTI )&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Character timeout indicator */
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Character Time-out indicator */
&amp;nbsp;&amp;nbsp;&amp;nbsp; UART0Status |= 0x100;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Bit 9 as the CTI error */
&amp;nbsp; }
&amp;nbsp; else if ( IIRValue == IIR_THRE )&amp;nbsp;&amp;nbsp;&amp;nbsp; /* THRE, transmit holding register empty */
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* THRE interrupt */
&amp;nbsp;&amp;nbsp;&amp;nbsp; LSRValue = LPC_UART0-&amp;gt;LSR;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Check status in the LSR to see if
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; valid data in U0THR or not */
&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( LSRValue &amp;amp; LSR_THRE )
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART0TxEmpty = 1;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; else
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART0TxEmpty = 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
}
void UART1_IRQHandler (void) 
{
&amp;nbsp; uint8_t IIRValue, LSRValue;
&amp;nbsp; uint8_t Dummy = Dummy;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp; IIRValue = LPC_UART1-&amp;gt;IIR;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp; IIRValue &amp;gt;&amp;gt;= 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* skip pending bit in IIR */
&amp;nbsp; IIRValue &amp;amp;= 0x07;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* check bit 1~3, interrupt identification */
&amp;nbsp; if ( IIRValue == IIR_RLS )&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Receive Line Status */
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; LSRValue = LPC_UART1-&amp;gt;LSR;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Receive Line Status */
&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( LSRValue &amp;amp; (LSR_OE|LSR_PE|LSR_FE|LSR_RXFE|LSR_BI) )
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* There are errors or break interrupt */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Read LSR will clear the interrupt */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART1Status = LSRValue;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dummy = LPC_UART1-&amp;gt;RBR;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Dummy read on RX to clear 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; interrupt, then bail out */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( LSRValue &amp;amp; LSR_RDR )&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Receive Data Ready */&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* If no error on RLS, normal ready, save into the data buffer. */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Note: read RBR will clear the interrupt */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART1Buffer[UART1Count] = LPC_UART1-&amp;gt;RBR;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART1Count++;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( UART1Count == BUFSIZE )
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART1Count = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* buffer overflow */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp; }
&amp;nbsp; else if ( IIRValue == IIR_RDA )&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Receive Data Available */
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Receive Data Available */
&amp;nbsp;&amp;nbsp;&amp;nbsp; UART1Buffer[UART1Count] = LPC_UART1-&amp;gt;RBR;
&amp;nbsp;&amp;nbsp;&amp;nbsp; UART1Count++;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( UART1Count == BUFSIZE )
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART1Count = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* buffer overflow */
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp; }
&amp;nbsp; else if ( IIRValue == IIR_CTI )&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Character timeout indicator */
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Character Time-out indicator */
&amp;nbsp;&amp;nbsp;&amp;nbsp; UART1Status |= 0x100;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Bit 9 as the CTI error */
&amp;nbsp; }
&amp;nbsp; else if ( IIRValue == IIR_THRE )&amp;nbsp;&amp;nbsp;&amp;nbsp; /* THRE, transmit holding register empty */
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* THRE interrupt */
&amp;nbsp;&amp;nbsp;&amp;nbsp; LSRValue = LPC_UART1-&amp;gt;LSR;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Check status in the LSR to see if
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; valid data in U0THR or not */
&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( LSRValue &amp;amp; LSR_THRE )
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART1TxEmpty = 1;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; else
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART1TxEmpty = 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp; }

}


uint32_t UARTInit( uint32_t PortNum, uint32_t baudrate )
{
&amp;nbsp; uint32_t Fdiv;
&amp;nbsp; uint32_t pclkdiv, pclk;

&amp;nbsp; if ( PortNum == 0 )
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_PINCON-&amp;gt;PINSEL0 &amp;amp;= ~0x000000F0;
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_PINCON-&amp;gt;PINSEL0 |= 0x00000050;&amp;nbsp; /* RxD0 is P0.3 and TxD0 is P0.2 */
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* By default, the PCLKSELx value is zero, thus, the PCLK for
&amp;nbsp;&amp;nbsp;&amp;nbsp; all the peripherals is 1/4 of the SystemFrequency. */
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Bit 6~7 is for UART0 */
&amp;nbsp;&amp;nbsp;&amp;nbsp; pclkdiv = (LPC_SC-&amp;gt;PCLKSEL0 &amp;gt;&amp;gt; 6) &amp;amp; 0x03;
&amp;nbsp;&amp;nbsp;&amp;nbsp; switch ( pclkdiv )
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 0x00:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; default:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pclk = SystemFrequency/4;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 0x01:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pclk = SystemFrequency;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 0x02:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pclk = SystemFrequency/2;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 0x03:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pclk = SystemFrequency/8;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }

&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART0-&amp;gt;LCR = 0x83;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* 8 bits, no Parity, 1 Stop bit */
&amp;nbsp;&amp;nbsp;&amp;nbsp; Fdiv = ( pclk / 16 ) / baudrate ;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*baud rate */
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART0-&amp;gt;DLM = Fdiv / 256;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART0-&amp;gt;DLL = Fdiv % 256;
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART0-&amp;gt;LCR = 0x03;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* DLAB = 0 */
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART0-&amp;gt;FCR = 0x07;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enable and reset TX and RX FIFO. */

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NVIC_EnableIRQ(UART0_IRQn);

&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART0-&amp;gt;IER = IER_RBR | IER_THRE | IER_RLS;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enable UART0 interrupt */
&amp;nbsp;&amp;nbsp;&amp;nbsp; return (TRUE);
&amp;nbsp; }
&amp;nbsp; else if ( PortNum == 1 )
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_PINCON-&amp;gt;PINSEL4 &amp;amp;= ~0x0000000F;
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_PINCON-&amp;gt;PINSEL4 |= 0x0000000A;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enable RxD1 P2.1, TxD1 P2.0 */
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* By default, the PCLKSELx value is zero, thus, the PCLK for
&amp;nbsp;&amp;nbsp;&amp;nbsp; all the peripherals is 1/4 of the SystemFrequency. */
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Bit 8,9 are for UART1 */
&amp;nbsp;&amp;nbsp;&amp;nbsp; pclkdiv = (LPC_SC-&amp;gt;PCLKSEL0 &amp;gt;&amp;gt; 8) &amp;amp; 0x03;
&amp;nbsp;&amp;nbsp;&amp;nbsp; switch ( pclkdiv )
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 0x00:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; default:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pclk = SystemFrequency/4;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 0x01:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pclk = SystemFrequency;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 0x02:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pclk = SystemFrequency/2;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 0x03:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pclk = SystemFrequency/8;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }

&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART1-&amp;gt;LCR = 0x83;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* 8 bits, no Parity, 1 Stop bit */
&amp;nbsp;&amp;nbsp;&amp;nbsp; Fdiv = ( pclk / 16 ) / baudrate ;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*baud rate */
&amp;nbsp;&amp;nbsp; LPC_UART1-&amp;gt;DLM = Fdiv / 256;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; LPC_UART1-&amp;gt;DLL = Fdiv % 256;
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART1-&amp;gt;LCR = 0x03;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* DLAB = 0 */
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART1-&amp;gt;FCR = 0x07;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enable and reset TX and RX FIFO. */

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NVIC_EnableIRQ(UART1_IRQn);

&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART1-&amp;gt;IER = IER_RBR | IER_THRE | IER_RLS;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enable UART1 interrupt */
&amp;nbsp;&amp;nbsp;&amp;nbsp; return (TRUE);
&amp;nbsp; }
&amp;nbsp; return( FALSE ); 
}

void UARTSend( uint32_t portNum, uint8_t *BufferPtr, uint32_t Length )
{
&amp;nbsp; if ( portNum == 0 )
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; while ( Length != 0 )
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* THRE status, contain valid data */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ( !(UART0TxEmpty &amp;amp; 0x01) );&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART0-&amp;gt;THR = *BufferPtr;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART0TxEmpty = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* not empty in the THR until it shifts out */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BufferPtr++;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Length--;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp; }
&amp;nbsp; else
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; while ( Length != 0 )
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* THRE status, contain valid data */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ( !(UART1TxEmpty &amp;amp; 0x01) );&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART1-&amp;gt;THR = *BufferPtr;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART1TxEmpty = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* not empty in the THR until it shifts out */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BufferPtr++;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Length--;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp; }
&amp;nbsp; return;
}
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 23:20:18 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T23:20:18Z</dc:date>
    <item>
      <title>Receiving UART in LPC1768</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Receiving-UART-in-LPC1768/m-p/542679#M7929</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by albertleng1978 on Sat Nov 10 06:32:39 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm working on a project in which the MCU LPC1768 will be connected to a host.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The host will send command message to UART1 of MCU LPC1768 and the MCU will reply with a predefined message. There are a series of command messages from the host. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The sequences are:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;1) From Host to MCU: "UART_On"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; From MCU to Host: "UART_On_Done"&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;2) From Host to MCU: "UART_Off"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; From MCU to Host: "UART_Off_Done"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;and etc...&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;What happens is that I send "UART_On" to the MCU and it replies with "UART_On_Done". Then, I send "UART_Off". The MCU will reply with "UART_On_Done" or "UART_On_DoneUART_On_Done".&amp;nbsp; What I want is like what I wrote above.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I wrote the code based on UART example of mcb1700.code.bundle.lpc17xx.keil.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;My main codes are as below. I also attach my source code. Please kindly help to see what's wrong and give me any suggestions. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Thank you soooo much!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;#include "lpc17xx.h"
#include "type.h"
#include "uart.h"
#include "string.h"
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;stdio.h&amp;gt;


extern volatile uint32_t UART1Count;
extern volatile uint8_t UART1Buffer[BUFSIZE];

uint8_t Dummy;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 

int main (void)
{

&amp;nbsp; SystemClockUpdate();
&amp;nbsp; UARTInit(1, 115200);&amp;nbsp;&amp;nbsp;&amp;nbsp; /* baud rate setting */

&amp;nbsp; while (1) 
&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Loop forever */
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( UART1Count != 0 )
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART1-&amp;gt;IER = IER_THRE | IER_RLS;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Disable RBR */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (strstr((const char *)UART1Buffer, "UART_On")) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UARTSend( 1, "UART_On_Done", 12);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART1Count = 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (strstr((const char *)UART1Buffer, "UART_Off")) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UARTSend( 1, "UART_Off_Done", 13);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART1Count = 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART1-&amp;gt;IER = IER_THRE | IER_RLS | IER_RBR;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Re-enable RBR */
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp; }
}&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
#include "lpc17xx.h"
#include "type.h"
#include "uart.h"

volatile uint32_t UART0Status, UART1Status;
volatile uint8_t UART0TxEmpty = 1, UART1TxEmpty = 1;
volatile uint8_t UART0Buffer[BUFSIZE], UART1Buffer[BUFSIZE];
volatile uint32_t UART0Count = 0, UART1Count = 0;

void UART0_IRQHandler (void) 
{
&amp;nbsp; uint8_t IIRValue, LSRValue;
&amp;nbsp; uint8_t Dummy = Dummy;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp; IIRValue = LPC_UART0-&amp;gt;IIR;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp; IIRValue &amp;gt;&amp;gt;= 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* skip pending bit in IIR */
&amp;nbsp; IIRValue &amp;amp;= 0x07;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* check bit 1~3, interrupt identification */
&amp;nbsp; if ( IIRValue == IIR_RLS )&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Receive Line Status */
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; LSRValue = LPC_UART0-&amp;gt;LSR;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Receive Line Status */
&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( LSRValue &amp;amp; (LSR_OE|LSR_PE|LSR_FE|LSR_RXFE|LSR_BI) )
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART0Status = LSRValue;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dummy = LPC_UART0-&amp;gt;RBR;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( LSRValue &amp;amp; LSR_RDR )&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Receive Data Ready */&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART0Buffer[UART0Count] = LPC_UART0-&amp;gt;RBR;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART0Count++;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( UART0Count == BUFSIZE )
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART0Count = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* buffer overflow */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp; }
&amp;nbsp; else if ( IIRValue == IIR_RDA )&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Receive Data Available */
&amp;nbsp; {

&amp;nbsp;&amp;nbsp;&amp;nbsp; UART0Buffer[UART0Count] = LPC_UART0-&amp;gt;RBR;
&amp;nbsp;&amp;nbsp;&amp;nbsp; UART0Count++;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( UART0Count == BUFSIZE )
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART0Count = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* buffer overflow */
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp; }
&amp;nbsp; else if ( IIRValue == IIR_CTI )&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Character timeout indicator */
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Character Time-out indicator */
&amp;nbsp;&amp;nbsp;&amp;nbsp; UART0Status |= 0x100;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Bit 9 as the CTI error */
&amp;nbsp; }
&amp;nbsp; else if ( IIRValue == IIR_THRE )&amp;nbsp;&amp;nbsp;&amp;nbsp; /* THRE, transmit holding register empty */
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* THRE interrupt */
&amp;nbsp;&amp;nbsp;&amp;nbsp; LSRValue = LPC_UART0-&amp;gt;LSR;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Check status in the LSR to see if
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; valid data in U0THR or not */
&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( LSRValue &amp;amp; LSR_THRE )
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART0TxEmpty = 1;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; else
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART0TxEmpty = 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
}
void UART1_IRQHandler (void) 
{
&amp;nbsp; uint8_t IIRValue, LSRValue;
&amp;nbsp; uint8_t Dummy = Dummy;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp; IIRValue = LPC_UART1-&amp;gt;IIR;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp; IIRValue &amp;gt;&amp;gt;= 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* skip pending bit in IIR */
&amp;nbsp; IIRValue &amp;amp;= 0x07;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* check bit 1~3, interrupt identification */
&amp;nbsp; if ( IIRValue == IIR_RLS )&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Receive Line Status */
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; LSRValue = LPC_UART1-&amp;gt;LSR;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Receive Line Status */
&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( LSRValue &amp;amp; (LSR_OE|LSR_PE|LSR_FE|LSR_RXFE|LSR_BI) )
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* There are errors or break interrupt */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Read LSR will clear the interrupt */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART1Status = LSRValue;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dummy = LPC_UART1-&amp;gt;RBR;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Dummy read on RX to clear 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; interrupt, then bail out */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( LSRValue &amp;amp; LSR_RDR )&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Receive Data Ready */&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* If no error on RLS, normal ready, save into the data buffer. */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Note: read RBR will clear the interrupt */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART1Buffer[UART1Count] = LPC_UART1-&amp;gt;RBR;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART1Count++;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( UART1Count == BUFSIZE )
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART1Count = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* buffer overflow */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp; }
&amp;nbsp; else if ( IIRValue == IIR_RDA )&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Receive Data Available */
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Receive Data Available */
&amp;nbsp;&amp;nbsp;&amp;nbsp; UART1Buffer[UART1Count] = LPC_UART1-&amp;gt;RBR;
&amp;nbsp;&amp;nbsp;&amp;nbsp; UART1Count++;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( UART1Count == BUFSIZE )
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART1Count = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* buffer overflow */
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp; }
&amp;nbsp; else if ( IIRValue == IIR_CTI )&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Character timeout indicator */
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Character Time-out indicator */
&amp;nbsp;&amp;nbsp;&amp;nbsp; UART1Status |= 0x100;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Bit 9 as the CTI error */
&amp;nbsp; }
&amp;nbsp; else if ( IIRValue == IIR_THRE )&amp;nbsp;&amp;nbsp;&amp;nbsp; /* THRE, transmit holding register empty */
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* THRE interrupt */
&amp;nbsp;&amp;nbsp;&amp;nbsp; LSRValue = LPC_UART1-&amp;gt;LSR;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Check status in the LSR to see if
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; valid data in U0THR or not */
&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( LSRValue &amp;amp; LSR_THRE )
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART1TxEmpty = 1;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; else
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART1TxEmpty = 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp; }

}


uint32_t UARTInit( uint32_t PortNum, uint32_t baudrate )
{
&amp;nbsp; uint32_t Fdiv;
&amp;nbsp; uint32_t pclkdiv, pclk;

&amp;nbsp; if ( PortNum == 0 )
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_PINCON-&amp;gt;PINSEL0 &amp;amp;= ~0x000000F0;
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_PINCON-&amp;gt;PINSEL0 |= 0x00000050;&amp;nbsp; /* RxD0 is P0.3 and TxD0 is P0.2 */
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* By default, the PCLKSELx value is zero, thus, the PCLK for
&amp;nbsp;&amp;nbsp;&amp;nbsp; all the peripherals is 1/4 of the SystemFrequency. */
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Bit 6~7 is for UART0 */
&amp;nbsp;&amp;nbsp;&amp;nbsp; pclkdiv = (LPC_SC-&amp;gt;PCLKSEL0 &amp;gt;&amp;gt; 6) &amp;amp; 0x03;
&amp;nbsp;&amp;nbsp;&amp;nbsp; switch ( pclkdiv )
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 0x00:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; default:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pclk = SystemFrequency/4;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 0x01:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pclk = SystemFrequency;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 0x02:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pclk = SystemFrequency/2;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 0x03:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pclk = SystemFrequency/8;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }

&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART0-&amp;gt;LCR = 0x83;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* 8 bits, no Parity, 1 Stop bit */
&amp;nbsp;&amp;nbsp;&amp;nbsp; Fdiv = ( pclk / 16 ) / baudrate ;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*baud rate */
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART0-&amp;gt;DLM = Fdiv / 256;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART0-&amp;gt;DLL = Fdiv % 256;
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART0-&amp;gt;LCR = 0x03;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* DLAB = 0 */
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART0-&amp;gt;FCR = 0x07;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enable and reset TX and RX FIFO. */

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NVIC_EnableIRQ(UART0_IRQn);

&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART0-&amp;gt;IER = IER_RBR | IER_THRE | IER_RLS;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enable UART0 interrupt */
&amp;nbsp;&amp;nbsp;&amp;nbsp; return (TRUE);
&amp;nbsp; }
&amp;nbsp; else if ( PortNum == 1 )
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_PINCON-&amp;gt;PINSEL4 &amp;amp;= ~0x0000000F;
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_PINCON-&amp;gt;PINSEL4 |= 0x0000000A;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enable RxD1 P2.1, TxD1 P2.0 */
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* By default, the PCLKSELx value is zero, thus, the PCLK for
&amp;nbsp;&amp;nbsp;&amp;nbsp; all the peripherals is 1/4 of the SystemFrequency. */
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Bit 8,9 are for UART1 */
&amp;nbsp;&amp;nbsp;&amp;nbsp; pclkdiv = (LPC_SC-&amp;gt;PCLKSEL0 &amp;gt;&amp;gt; 8) &amp;amp; 0x03;
&amp;nbsp;&amp;nbsp;&amp;nbsp; switch ( pclkdiv )
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 0x00:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; default:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pclk = SystemFrequency/4;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 0x01:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pclk = SystemFrequency;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 0x02:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pclk = SystemFrequency/2;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 0x03:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pclk = SystemFrequency/8;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }

&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART1-&amp;gt;LCR = 0x83;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* 8 bits, no Parity, 1 Stop bit */
&amp;nbsp;&amp;nbsp;&amp;nbsp; Fdiv = ( pclk / 16 ) / baudrate ;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*baud rate */
&amp;nbsp;&amp;nbsp; LPC_UART1-&amp;gt;DLM = Fdiv / 256;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; LPC_UART1-&amp;gt;DLL = Fdiv % 256;
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART1-&amp;gt;LCR = 0x03;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* DLAB = 0 */
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART1-&amp;gt;FCR = 0x07;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enable and reset TX and RX FIFO. */

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NVIC_EnableIRQ(UART1_IRQn);

&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART1-&amp;gt;IER = IER_RBR | IER_THRE | IER_RLS;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enable UART1 interrupt */
&amp;nbsp;&amp;nbsp;&amp;nbsp; return (TRUE);
&amp;nbsp; }
&amp;nbsp; return( FALSE ); 
}

void UARTSend( uint32_t portNum, uint8_t *BufferPtr, uint32_t Length )
{
&amp;nbsp; if ( portNum == 0 )
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; while ( Length != 0 )
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* THRE status, contain valid data */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ( !(UART0TxEmpty &amp;amp; 0x01) );&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART0-&amp;gt;THR = *BufferPtr;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART0TxEmpty = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* not empty in the THR until it shifts out */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BufferPtr++;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Length--;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp; }
&amp;nbsp; else
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; while ( Length != 0 )
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* THRE status, contain valid data */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ( !(UART1TxEmpty &amp;amp; 0x01) );&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART1-&amp;gt;THR = *BufferPtr;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART1TxEmpty = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* not empty in the THR until it shifts out */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BufferPtr++;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Length--;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp; }
&amp;nbsp; return;
}
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:20:18 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Receiving-UART-in-LPC1768/m-p/542679#M7929</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:20:18Z</dc:date>
    </item>
    <item>
      <title>Re: Receiving UART in LPC1768</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Receiving-UART-in-LPC1768/m-p/542680#M7930</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by albertleng1978 on Sun Nov 11 07:39:34 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi help anyone? Thanks again.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:20:19 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Receiving-UART-in-LPC1768/m-p/542680#M7930</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:20:19Z</dc:date>
    </item>
    <item>
      <title>Re: Receiving UART in LPC1768</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Receiving-UART-in-LPC1768/m-p/542681#M7931</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Ex-Zero on Sun Nov 11 07:51:45 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;This is a LPCXpresso forum ;)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;You can find a Keil Discussion Forum here: &lt;/SPAN&gt;&lt;A href="http://"&gt;http://www.keil.com/forum/threads.asp&lt;/A&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:20:19 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Receiving-UART-in-LPC1768/m-p/542681#M7931</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:20:19Z</dc:date>
    </item>
    <item>
      <title>Re: Receiving UART in LPC1768</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Receiving-UART-in-LPC1768/m-p/542682#M7932</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by albertleng1978 on Sun Nov 11 20:26:26 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for pointing that out.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I thought both LPCXpresso and Keil use the same code.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:20:20 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Receiving-UART-in-LPC1768/m-p/542682#M7932</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:20:20Z</dc:date>
    </item>
    <item>
      <title>Re: Receiving UART in LPC1768</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Receiving-UART-in-LPC1768/m-p/542683#M7933</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by fjrg76 on Mon Nov 12 23:33:58 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Have you ever tried to debug and set a breakpoint just before the strstr() function?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:20:21 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Receiving-UART-in-LPC1768/m-p/542683#M7933</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:20:21Z</dc:date>
    </item>
  </channel>
</rss>

