<?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>LPCXpresso IDE中的主题 Re: Using UART on LPC12xx</title>
    <link>https://community.nxp.com/t5/LPCXpresso-IDE/Using-UART-on-LPC12xx/m-p/564241#M17482</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 Sat May 14 02:39:25 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Since LPC12xx is also M0, I would suggest you start with a working LPC11xx UART code like UART.c (see LPC11 samples) and just change a few pins there.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Receiving is done there a little bit different....&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;
/*****************************************************************************
 *&amp;nbsp;&amp;nbsp; uart.c:&amp;nbsp; UART API file for [COLOR=Red]NXP LPC11xx[/COLOR] Family Microprocessors
 *
 *&amp;nbsp;&amp;nbsp; Copyright(C) 2008, NXP Semiconductor
 *&amp;nbsp;&amp;nbsp; All rights reserved.
 *
 *&amp;nbsp;&amp;nbsp; History
 *&amp;nbsp;&amp;nbsp; 2009.12.07&amp;nbsp; ver 1.00&amp;nbsp;&amp;nbsp;&amp;nbsp; Preliminary version, first Release
 *
******************************************************************************/

#include "uart.h"

volatile uint32_t UARTStatus;
volatile uint8_t&amp;nbsp; UARTTxEmpty = 1;
volatile uint8_t&amp;nbsp; UARTBuffer[BUFSIZE];
volatile uint32_t UARTCount = 0;

/*****************************************************************************
** Function name:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART_IRQHandler
**
** Descriptions:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART interrupt handler
**
** parameters:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; None
** Returned value:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; None
** 
*****************************************************************************/
void UART_IRQHandler(void)
{
&amp;nbsp; uint8_t IIRValue, LSRValue;
&amp;nbsp; uint8_t Dummy = Dummy;

&amp;nbsp; IIRValue = LPC_UART-&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_UART-&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; UARTStatus = LSRValue;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dummy = LPC_UART-&amp;gt;RBR;&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; UARTBuffer[UARTCount++] = LPC_UART-&amp;gt;RBR;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (UARTCount == 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; UARTCount = 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; UARTBuffer[UARTCount++] = LPC_UART-&amp;gt;RBR;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (UARTCount == BUFSIZE)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UARTCount = 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; UARTStatus |= 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_UART-&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; UARTTxEmpty = 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; UARTTxEmpty = 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp; }
&amp;nbsp; return;
}

/*****************************************************************************
** Function name:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UARTInit
**
** Descriptions:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Initialize UART0 port, setup pin select,
**&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; clock, parity, stop bits, FIFO, etc.
**
** parameters:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART baudrate
** Returned value:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; None
** 
*****************************************************************************/
void UARTInit(uint32_t baudrate)
{
&amp;nbsp; uint32_t Fdiv;
&amp;nbsp; uint32_t regVal;

&amp;nbsp; UARTTxEmpty = 1;
&amp;nbsp; UARTCount = 0;
&amp;nbsp; 
&amp;nbsp; NVIC_DisableIRQ(UART_IRQn);

&amp;nbsp; LPC_IOCON-&amp;gt;PIO1_6 &amp;amp;= ~0x07;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&amp;nbsp; UART I/O config */
&amp;nbsp; LPC_IOCON-&amp;gt;PIO1_6 |= 0x01;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* UART RXD */
&amp;nbsp; LPC_IOCON-&amp;gt;PIO1_7 &amp;amp;= ~0x07;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp; LPC_IOCON-&amp;gt;PIO1_7 |= 0x01;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* UART TXD */
&amp;nbsp; /* Enable UART clock */
&amp;nbsp; LPC_SYSCON-&amp;gt;SYSAHBCLKCTRL |= (1&amp;lt;&amp;lt;12);
&amp;nbsp; LPC_SYSCON-&amp;gt;UARTCLKDIV = 0x1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* divided by 1 */

&amp;nbsp; LPC_UART-&amp;gt;LCR = 0x83;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* 8 bits, no Parity, 1 Stop bit */
&amp;nbsp; regVal = LPC_SYSCON-&amp;gt;UARTCLKDIV;

&amp;nbsp; Fdiv = (((SystemCoreClock*LPC_SYSCON-&amp;gt;SYSAHBCLKDIV)/regVal)/16)/baudrate ;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*baud rate */

&amp;nbsp; LPC_UART-&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; LPC_UART-&amp;gt;DLL = Fdiv % 256;
&amp;nbsp; LPC_UART-&amp;gt;LCR = 0x03;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* DLAB = 0 */
&amp;nbsp; LPC_UART-&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; /* Read to clear the line status. */
&amp;nbsp; regVal = LPC_UART-&amp;gt;LSR;

&amp;nbsp; /* Ensure a clean start, no data in either TX or RX FIFO. */
// CodeRed - added parentheses around comparison in operand of &amp;amp;
&amp;nbsp; while (( LPC_UART-&amp;gt;LSR &amp;amp; (LSR_THRE|LSR_TEMT)) != (LSR_THRE|LSR_TEMT) );
&amp;nbsp; while ( LPC_UART-&amp;gt;LSR &amp;amp; LSR_RDR )
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; regVal = LPC_UART-&amp;gt;RBR;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Dump data from RX FIFO */
&amp;nbsp; }
 
&amp;nbsp; /* Enable the UART Interrupt */
&amp;nbsp; NVIC_EnableIRQ(UART_IRQn);


#if CONFIG_UART_ENABLE_TX_INTERRUPT==1
&amp;nbsp; LPC_UART-&amp;gt;IER = IER_RBR | IER_THRE | IER_RLS;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enable UART interrupt */
#else
&amp;nbsp; LPC_UART-&amp;gt;IER = IER_RBR | IER_RLS;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enable UART interrupt */
#endif
 return;
}

/*****************************************************************************
** Function name:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UARTSend
**
** Descriptions:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Send a block of data to the UART 0 port based
**&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; on the data length
**
** parameters:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; buffer pointer, and data length
** Returned value:&amp;nbsp;&amp;nbsp;&amp;nbsp; None
** 
*****************************************************************************/
void UARTSend(uint8_t *BufferPtr, uint32_t Length)
{
&amp;nbsp; 
&amp;nbsp; while ( Length != 0 )
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* THRE status, contain valid data */
#if CONFIG_UART_ENABLE_TX_INTERRUPT==1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Below flag is set inside the interrupt handler when THRE occurs. */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ( !(UARTTxEmpty &amp;amp; 0x01) );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART-&amp;gt;THR = *BufferPtr;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UARTTxEmpty = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* not empty in the THR until it shifts out */
#else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ( !(LPC_UART-&amp;gt;LSR &amp;amp; LSR_THRE) );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART-&amp;gt;THR = *BufferPtr;
#endif
&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; return;
}

/******************************************************************************
**&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Of File
******************************************************************************/

&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:44:09 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T23:44:09Z</dc:date>
    <item>
      <title>Using UART on LPC12xx</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Using-UART-on-LPC12xx/m-p/564240#M17481</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by tbutuza on Sat May 14 02:24:32 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I opened this thread to discuss about use UART on LPC12xx mcu.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Previously I used uart on LPC1769 without problems. Now I'd like to do this on LPC1227 but after several hours (days?) fighting, I did not have success.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I can send data on uart but receive is not working.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;After initializing uart I receive only one character, but no further receive is possible.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I tried it with interrupts and polling. I also tried Uart0 and Uart1.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;All 4 tests had the same result: Only one character can be received right after the initialization, and no more.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Similar code runs well on LPC1769 without problem. As I know the Uart&amp;nbsp; module is exactly the same in LPC1768 and LPC1227. Just the base&amp;nbsp; addresses are different.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I can send characters, it indicates that the power, clock are right.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Something wrong with the receiver side but what?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It is my code:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Initialization:&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;// =======================================
static void UART1Init (uint32_t baudrate) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t Fdiv;
&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t pclk;

&amp;nbsp;&amp;nbsp;&amp;nbsp; // Assign txd, rxd lines to pins.
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_IOCON-&amp;gt;PIO0_8 = 0x02;
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_IOCON-&amp;gt;PIO0_9 = 0x02;

&amp;nbsp;&amp;nbsp;&amp;nbsp; // SYSAHBCLKCTRL&amp;nbsp; 12. bit should be set to 1.

&amp;nbsp;&amp;nbsp;&amp;nbsp; pclk = UART_INPUT_FREQ;

&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;&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;&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; //LPC_UART1-&amp;gt;IER = IER_RBR | IER_THRE | IER_RLS;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Enable UART0 interrupt
&amp;nbsp;&amp;nbsp;&amp;nbsp; //LPC_UART0-&amp;gt;IER = IER_RBR;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Enable UART0 interrupt (Only the receive data available interrupt is enabled.)

&amp;nbsp;&amp;nbsp;&amp;nbsp; //NVIC_EnableIRQ (UART1_IRQn);
}&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;SPAN&gt;The content of the main function:&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char lsrValue;

&amp;nbsp;&amp;nbsp;&amp;nbsp; UART0RcvSignal = 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ledState = 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp; counter = 0;

&amp;nbsp;&amp;nbsp;&amp;nbsp; // Disable watchdog
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_WDT-&amp;gt;MOD = 0x00;
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_WDT-&amp;gt;FEED = 0xAA;
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_WDT-&amp;gt;FEED = 0x55;

//&amp;nbsp;&amp;nbsp;&amp;nbsp; UART0Init (9600);
&amp;nbsp;&amp;nbsp;&amp;nbsp; UART1Init (9600);

&amp;nbsp;&amp;nbsp;&amp;nbsp; // enable all interrupts (Is this necessary ???)
&amp;nbsp;&amp;nbsp;&amp;nbsp; //__asm volatile ("cpsie i");

&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_GPIO0-&amp;gt;DIR = LEDPIN;

&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_GPIO0-&amp;gt;OUT = LEDPIN;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Initially the led is on.

&amp;nbsp;&amp;nbsp;&amp;nbsp; // Enter an infinite loop
&amp;nbsp;&amp;nbsp;&amp;nbsp; while (1) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; counter++;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (counter &amp;gt;= COUNTER_MAX) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; counter = 0;
&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;THR = 'A';
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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; if (lsrValue &amp;amp; 0x01) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART0RcvSignal = 1;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART0RcvData = LPC_UART1-&amp;gt;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; if (UART0RcvSignal) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Echo back the character
&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;THR = (UART0RcvData + 1);

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Blink the led
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (ledState) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ledState = 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; LPC_GPIO0-&amp;gt;OUT = LEDPIN;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ledState = 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; LPC_GPIO0-&amp;gt;OUT = 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; UART0RcvSignal = 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;SPAN&gt;As you see it is a polling-based program.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;It sends characters periodiccaly. When a character received, it echoes (received + 1) and blinks the led.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Led blinks only once and character echoed only immediatelly after the initialization.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Subsequent receive is not possible, apparently the receiver part of the uart freezes.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;What did I wrong?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Did I forget something?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:44:08 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Using-UART-on-LPC12xx/m-p/564240#M17481</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:44:08Z</dc:date>
    </item>
    <item>
      <title>Re: Using UART on LPC12xx</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Using-UART-on-LPC12xx/m-p/564241#M17482</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 Sat May 14 02:39:25 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Since LPC12xx is also M0, I would suggest you start with a working LPC11xx UART code like UART.c (see LPC11 samples) and just change a few pins there.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Receiving is done there a little bit different....&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;
/*****************************************************************************
 *&amp;nbsp;&amp;nbsp; uart.c:&amp;nbsp; UART API file for [COLOR=Red]NXP LPC11xx[/COLOR] Family Microprocessors
 *
 *&amp;nbsp;&amp;nbsp; Copyright(C) 2008, NXP Semiconductor
 *&amp;nbsp;&amp;nbsp; All rights reserved.
 *
 *&amp;nbsp;&amp;nbsp; History
 *&amp;nbsp;&amp;nbsp; 2009.12.07&amp;nbsp; ver 1.00&amp;nbsp;&amp;nbsp;&amp;nbsp; Preliminary version, first Release
 *
******************************************************************************/

#include "uart.h"

volatile uint32_t UARTStatus;
volatile uint8_t&amp;nbsp; UARTTxEmpty = 1;
volatile uint8_t&amp;nbsp; UARTBuffer[BUFSIZE];
volatile uint32_t UARTCount = 0;

/*****************************************************************************
** Function name:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART_IRQHandler
**
** Descriptions:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART interrupt handler
**
** parameters:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; None
** Returned value:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; None
** 
*****************************************************************************/
void UART_IRQHandler(void)
{
&amp;nbsp; uint8_t IIRValue, LSRValue;
&amp;nbsp; uint8_t Dummy = Dummy;

&amp;nbsp; IIRValue = LPC_UART-&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_UART-&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; UARTStatus = LSRValue;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dummy = LPC_UART-&amp;gt;RBR;&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; UARTBuffer[UARTCount++] = LPC_UART-&amp;gt;RBR;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (UARTCount == 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; UARTCount = 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; UARTBuffer[UARTCount++] = LPC_UART-&amp;gt;RBR;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (UARTCount == BUFSIZE)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UARTCount = 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; UARTStatus |= 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_UART-&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; UARTTxEmpty = 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; UARTTxEmpty = 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp; }
&amp;nbsp; return;
}

/*****************************************************************************
** Function name:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UARTInit
**
** Descriptions:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Initialize UART0 port, setup pin select,
**&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; clock, parity, stop bits, FIFO, etc.
**
** parameters:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART baudrate
** Returned value:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; None
** 
*****************************************************************************/
void UARTInit(uint32_t baudrate)
{
&amp;nbsp; uint32_t Fdiv;
&amp;nbsp; uint32_t regVal;

&amp;nbsp; UARTTxEmpty = 1;
&amp;nbsp; UARTCount = 0;
&amp;nbsp; 
&amp;nbsp; NVIC_DisableIRQ(UART_IRQn);

&amp;nbsp; LPC_IOCON-&amp;gt;PIO1_6 &amp;amp;= ~0x07;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&amp;nbsp; UART I/O config */
&amp;nbsp; LPC_IOCON-&amp;gt;PIO1_6 |= 0x01;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* UART RXD */
&amp;nbsp; LPC_IOCON-&amp;gt;PIO1_7 &amp;amp;= ~0x07;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp; LPC_IOCON-&amp;gt;PIO1_7 |= 0x01;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* UART TXD */
&amp;nbsp; /* Enable UART clock */
&amp;nbsp; LPC_SYSCON-&amp;gt;SYSAHBCLKCTRL |= (1&amp;lt;&amp;lt;12);
&amp;nbsp; LPC_SYSCON-&amp;gt;UARTCLKDIV = 0x1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* divided by 1 */

&amp;nbsp; LPC_UART-&amp;gt;LCR = 0x83;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* 8 bits, no Parity, 1 Stop bit */
&amp;nbsp; regVal = LPC_SYSCON-&amp;gt;UARTCLKDIV;

&amp;nbsp; Fdiv = (((SystemCoreClock*LPC_SYSCON-&amp;gt;SYSAHBCLKDIV)/regVal)/16)/baudrate ;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*baud rate */

&amp;nbsp; LPC_UART-&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; LPC_UART-&amp;gt;DLL = Fdiv % 256;
&amp;nbsp; LPC_UART-&amp;gt;LCR = 0x03;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* DLAB = 0 */
&amp;nbsp; LPC_UART-&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; /* Read to clear the line status. */
&amp;nbsp; regVal = LPC_UART-&amp;gt;LSR;

&amp;nbsp; /* Ensure a clean start, no data in either TX or RX FIFO. */
// CodeRed - added parentheses around comparison in operand of &amp;amp;
&amp;nbsp; while (( LPC_UART-&amp;gt;LSR &amp;amp; (LSR_THRE|LSR_TEMT)) != (LSR_THRE|LSR_TEMT) );
&amp;nbsp; while ( LPC_UART-&amp;gt;LSR &amp;amp; LSR_RDR )
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; regVal = LPC_UART-&amp;gt;RBR;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Dump data from RX FIFO */
&amp;nbsp; }
 
&amp;nbsp; /* Enable the UART Interrupt */
&amp;nbsp; NVIC_EnableIRQ(UART_IRQn);


#if CONFIG_UART_ENABLE_TX_INTERRUPT==1
&amp;nbsp; LPC_UART-&amp;gt;IER = IER_RBR | IER_THRE | IER_RLS;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enable UART interrupt */
#else
&amp;nbsp; LPC_UART-&amp;gt;IER = IER_RBR | IER_RLS;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enable UART interrupt */
#endif
 return;
}

/*****************************************************************************
** Function name:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UARTSend
**
** Descriptions:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Send a block of data to the UART 0 port based
**&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; on the data length
**
** parameters:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; buffer pointer, and data length
** Returned value:&amp;nbsp;&amp;nbsp;&amp;nbsp; None
** 
*****************************************************************************/
void UARTSend(uint8_t *BufferPtr, uint32_t Length)
{
&amp;nbsp; 
&amp;nbsp; while ( Length != 0 )
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* THRE status, contain valid data */
#if CONFIG_UART_ENABLE_TX_INTERRUPT==1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Below flag is set inside the interrupt handler when THRE occurs. */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ( !(UARTTxEmpty &amp;amp; 0x01) );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART-&amp;gt;THR = *BufferPtr;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UARTTxEmpty = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* not empty in the THR until it shifts out */
#else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ( !(LPC_UART-&amp;gt;LSR &amp;amp; LSR_THRE) );
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_UART-&amp;gt;THR = *BufferPtr;
#endif
&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; return;
}

/******************************************************************************
**&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Of File
******************************************************************************/

&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:44:09 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Using-UART-on-LPC12xx/m-p/564241#M17482</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:44:09Z</dc:date>
    </item>
    <item>
      <title>Re: Using UART on LPC12xx</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Using-UART-on-LPC12xx/m-p/564242#M17483</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by adwiens on Sat Dec 24 14:15:45 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I apologize for resurrecting a dead thread, but it looks like a solution to this problem was never posted&amp;nbsp; :confused:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I am having a similar problem with the LPC1227 where I can send but not receive with the UART.&amp;nbsp; Did you ever find a solution to the problem?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I've been trying to figure this out for a whole day and I feel like this right now &lt;/SPAN&gt;&lt;A href="http://" rel="nofollow noopener noreferrer" target="_blank"&gt;http://xkcd.com/979/&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class="lia-unicode-emoji" title=":disappointed_face:"&gt;&lt;LI-EMOJI id="lia_disappointed-face" title=":disappointed_face:"&gt;&lt;/LI-EMOJI&gt;&lt;/SPAN&gt;&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;/**
 * @briefInitializes UART.
 * @param[in]setThe desired settings for UART.
 * @return0 on error, else 1.
 * @remarkImplements the fractional bit rate algorithm outlined in NXP manual.
 * @remarkFor NXP122x, Bit length must be in the range 5-8.
 */
int init_uart(uart_settings set){
double pclk = MainClock / PCLK_DIVIDER_VALUE;// Calculate peripheral clock
uint8_t divaddval, mulval, dlm = 0, dll = 0;// Register fields

UART_settings = set;

// PART A: Calculate register values

double frest = INITIAL_FREST;
double dlest = pclk / (16.0 * ((double)(set.bit_rate)));
uint16_t dlest_int = ((uint16_t)dlest);
uint8_t isodd = FALSE, offset = 0;

if(((double)dlest_int) != dlest){// If dlest is not an integer...
do {
// Try FRest values between (INITIAL_FREST - FREST_RANGE) and (INITIAL_FREST + FREST_RANGE); 1.1-1.9 by default.
if(isodd){
frest = (INITIAL_FREST) + (offset++) * (UART0_BITRATE_ALGO_STEP_SIZE);
isodd = FALSE;
}
else{
frest = (INITIAL_FREST) - (offset) * (UART0_BITRATE_ALGO_STEP_SIZE);
isodd = TRUE;
}

dlest_int = (uint16_t)(pclk / (16.0 * ((double)(set.bit_rate)) * frest));

if(dlest_int == 0)
goto cfg_error;

frest = pclk / (16.0 * ((double)(set.bit_rate)) * ((double)dlest_int));
} while ((frest &amp;lt;= (INITIAL_FREST - FREST_RANGE) || frest &amp;gt;= (INITIAL_FREST + FREST_RANGE)) &amp;amp;&amp;amp; (offset &amp;lt;= FREST_RANGE / UART0_BITRATE_ALGO_STEP_SIZE));

// Get LUT index
int i = find_uart_lut_index(frest);

// Look up fractional values in LUT
divaddval = uart_divaddval_lut&lt;I&gt;;
mulval = uart_mulval_lut&lt;I&gt;;
dlm = (dlest_int&amp;gt;&amp;gt;8);
dll = (dlest_int);
}
else {// dlest was an integer; no need for fractional division.
divaddval = 0;
mulval = 1;
dll = 1;
}

// PART B: Set registers
// Different registers for each UART.
switch(set.uart_port){
case UART0:
ENABLE_UART0;// UART0 MUST BE ENABLED FOR REGISTERS TO ACCEPT VALUES!!!!!&amp;nbsp; It took me FOREVER to figure this out...
SET_UART0_DLAB;
(LPC_UART0 -&amp;gt; DLL) = dll;
(LPC_UART0 -&amp;gt; DLM) = dlm;
CLEAR_UART0_DLAB;
(LPC_UART0 -&amp;gt; FDR) = ((mulval &amp;lt;&amp;lt; MULVAL_OFFSET) | divaddval);
(LPC_UART0 -&amp;gt; LCR) = (set.payload_length - 5) | (set.stop_bit &amp;lt;&amp;lt; 2) | (set.parity != 0) | (set.parity != 0 ? set.parity - 1 : 0x0);// Sets UART parameters
(LPC_UART0 -&amp;gt; FCR) = (1 &amp;lt;&amp;lt; UART0_FIFOEN_BIT);// Enable FIFO
//(LPC_UART0 -&amp;gt; IER) = (1&amp;lt;&amp;lt;UART0_RBRIE_BIT);// Enable receive interrupt
break;
case UART1:
ENABLE_UART1;
SET_UART1_DLAB;
(LPC_UART1 -&amp;gt; DLL) = dll;
(LPC_UART1 -&amp;gt; DLM) = dlm;
CLEAR_UART1_DLAB;
(LPC_UART1 -&amp;gt; FDR) = ((mulval &amp;lt;&amp;lt; MULVAL_OFFSET) | divaddval);
(LPC_UART1 -&amp;gt; LCR) = (set.payload_length - 5) | (set.stop_bit &amp;lt;&amp;lt; 2) | (set.parity != 0) | (set.parity != 0 ? set.parity - 1 : 0x0);// Sets UART parameters
(LPC_UART1 -&amp;gt; FCR) = (1&amp;lt;&amp;lt;UART1_FIFOEN_BIT)|(1&amp;lt;&amp;lt;UART1_RX_RESET_BIT)|(1&amp;lt;&amp;lt;UART1_TX_RESET_BIT);// Enable FIFO + clear RX &amp;amp; TX FIFOs
(LPC_UART1 -&amp;gt; IER) = (1&amp;lt;&amp;lt;UART1_RBRIE_BIT);// Enable receive interrupt
break;
}

return 1;// Exit normally.

cfg_error:// Error handler.
return 0;
}&lt;/I&gt;&lt;/I&gt;&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;To read the RX buffer I'm just doing:&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;char s = LPC_UART1 -&amp;gt; RBR;&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Any help would be greatly appreciated!&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:44:09 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Using-UART-on-LPC12xx/m-p/564242#M17483</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:44:09Z</dc:date>
    </item>
    <item>
      <title>Re: Using UART on LPC12xx</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Using-UART-on-LPC12xx/m-p/564243#M17484</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by adwiens on Fri Dec 30 01:44:55 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Anybody?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:44:10 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Using-UART-on-LPC12xx/m-p/564243#M17484</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:44:10Z</dc:date>
    </item>
    <item>
      <title>Re: Using UART on LPC12xx</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Using-UART-on-LPC12xx/m-p/564244#M17485</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by adwiens on Fri Dec 30 02:18:32 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;UART0 appears to receive characters but UART1 does not.&amp;nbsp; Is there some kind of trick to setting up UART1 that's different from UART0?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:44:11 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Using-UART-on-LPC12xx/m-p/564244#M17485</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:44:11Z</dc:date>
    </item>
    <item>
      <title>Re: Using UART on LPC12xx</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Using-UART-on-LPC12xx/m-p/564245#M17486</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by NXP_Europe on Fri Dec 30 06:10:57 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello adwiens,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;How did you visualize the output of the UARTx?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Apparently it seems to work. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I used the software provided on de NXP LPCXpresso website. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;A href="http://"&gt;http://ics.nxp.com/support/lpcxpresso/&lt;/A&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Example projects LPC1200 Series&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:44:11 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Using-UART-on-LPC12xx/m-p/564245#M17486</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:44:11Z</dc:date>
    </item>
    <item>
      <title>Re: Using UART on LPC12xx</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Using-UART-on-LPC12xx/m-p/564246#M17487</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by adwiens on Fri Dec 30 15:33:20 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I am not sure why, but I tried adding&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;LPC_IOCON-&amp;gt;PIO0_8 &amp;amp;= ~(0x07);&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;to clear the bottom three bits of the IOCON register before&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;LPC_IOCON-&amp;gt;PIO0_8 |= (0x02);&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;and my code works now.&amp;nbsp; I am puzzled by it because when I remove&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;LPC_IOCON-&amp;gt;PIO0_8 &amp;amp;= ~(0x07);&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;now it still works.&amp;nbsp; :confused:&amp;nbsp; Maybe the bottom three bits got "stuck" at some value and did not reset to zero?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:44:12 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Using-UART-on-LPC12xx/m-p/564246#M17487</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:44:12Z</dc:date>
    </item>
    <item>
      <title>Re: Using UART on LPC12xx</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Using-UART-on-LPC12xx/m-p/564247#M17488</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by NXP_Europe on Fri Dec 30 17:23:17 MST 2011&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello adwiens,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;the first two lines (0x...02) are explained in User Manual UM10441. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: &lt;/STRONG&gt;&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;[LEFT]2:0 FUNC Selects pin function. 000&lt;BR /&gt;0x0 Selects function PIO0_8.&lt;BR /&gt;0x1 Reserved. Do not use.&lt;BR /&gt;0x2 Select function RXD1.&lt;BR /&gt;0x3 Select function CT32B1_CAP2.[/LEFT]&lt;BR /&gt;0x4 Select function CT32B1_MAT2.&lt;BR /&gt; &lt;BR /&gt; &lt;BR /&gt;&lt;/SPAN&gt;&lt;HR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;But your last line (0x...000) would suggest that a standard IO-function is choosen...&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:44:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Using-UART-on-LPC12xx/m-p/564247#M17488</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:44:13Z</dc:date>
    </item>
    <item>
      <title>Re: Using UART on LPC12xx</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Using-UART-on-LPC12xx/m-p/564248#M17489</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Chevin on Mon Dec 07 06:46:29 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I had the same problem and it took me some hours to sort it out. Just replace&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_IOCON-&amp;gt;PIO0_8 = 0x02;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;with&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_IOCON-&amp;gt;PIO0_8 |= 0x02;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Background: If you clear the reserved Bit 7, then the UART1 receiver will stop working. UART0 seems not to be affected by this problem.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm glad that it works now for me.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Bye, Eike&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:44:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Using-UART-on-LPC12xx/m-p/564248#M17489</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:44:13Z</dc:date>
    </item>
  </channel>
</rss>

