<?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 LPC11U24 Receive complete interrupt not working with Board_system() library! in LPC Microcontrollers</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U24-Receive-complete-interrupt-not-working-with-Board/m-p/531451#M10203</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by mahendra_ms on Mon Dec 07 23:31:32 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello community and NXP&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm new comers at NXP cortex chip, but i'm very well familiar with ARM architectures (with ARM7(LPC2148))&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;before facing this problem I've load the example code provided by community for UART which seems good with my &lt;/SPAN&gt;&lt;STRONG&gt;LPCXpresso &lt;/STRONG&gt;&lt;STRONG&gt;board&lt;/STRONG&gt;&lt;SPAN&gt; , as I'm able to transmit and receive the data through UART with my desires baud rate&amp;nbsp; &lt;SPAN class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;&lt;LI-EMOJI id="lia_slightly-smiling-face" title=":slightly_smiling_face:"&gt;&lt;/LI-EMOJI&gt;&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Right now I'm doing Reverse Engineering with one project which use&lt;/SPAN&gt;&lt;STRONG&gt; LPC11u24&lt;/STRONG&gt;&lt;SPAN&gt;, and I've add&lt;/SPAN&gt;&lt;STRONG&gt; UART&lt;/STRONG&gt;&lt;SPAN&gt; code which is being provided by community.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;my transition section working good but I'm not able to receive string in its &lt;/SPAN&gt;&lt;STRONG&gt;RXC isr&lt;/STRONG&gt;&lt;SPAN&gt;(tx section is working by polling of &lt;/SPAN&gt;&lt;STRONG&gt;THRE&lt;/STRONG&gt;&lt;SPAN&gt; while rx has ISR as per community ex. code) &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;instead of using chip library I'm using Board library here!&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Here is my code&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;
int main(void)
{
bool LCD_initialized = false;
uint32_t CurrentDisplay = DISPLAY_DEFAULT_MESSAGE;
uint8_t LCDmessagebuffer[160];
uint32_t LCDScrollCount = 0;
uint32_t i, NDEFmessagelen;
extern uint8_t defaultstring[];
uint8_t Buttons = 0;

Setup(); 
}


void Setup()
{

 HAL_BSP_BoardInit();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Board init funtion&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
// Setup Pins on the micro-controller
SystemCoreClockUpdate();

/* NVIC is installed inside UARTInit file. */
&amp;nbsp;&amp;nbsp;&amp;nbsp; UARTInit(4800);
&amp;nbsp;&amp;nbsp;&amp;nbsp; #if AUTOBAUD_ENABLE
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_USART-&amp;gt;ACR = 0x01&amp;lt;&amp;lt;2;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Auto Restart, UART mode 0 */
LPC_USART-&amp;gt;ACR |= (0x01&amp;lt;&amp;lt;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; /* Start */
&amp;nbsp;&amp;nbsp;&amp;nbsp; while(!UARTAutoBaud );
UARTAutoBaud = 0;
UARTSend((uint8_t *)"Auto Baud detected\r\n\r\n", 22);

#endif
#if MODEM_TEST
&amp;nbsp; ModemInit();
#endif

&amp;nbsp; print_string("smart meter Reading\r\n");&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Sending Hello string


&amp;nbsp; // never leave this function
&amp;nbsp; while (1) {
&amp;nbsp; __WFE();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp; return 0;
}

//**********************************************************************************************************
/* Set up and initialize hardware prior to call to main */
void Board_SystemInit(void)
{
/* Setup system clocking and muxing */
SystemSetupMuxing();
SystemSetupClocking();
//SetPowerProfile();
}


/* Sets up system pin muxing */
STATIC void SystemSetupMuxing(void)
{
LPC_SYSCTL-&amp;gt;SYSAHBCLKCTRL |= (1&amp;lt;&amp;lt;16);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Enable clock FOR IO config. block
LPC_IOCON-&amp;gt;PIO0[0] = IOCON_FUNC0 | IOCON_MODE_INACT | IOCON_DIGMODE_EN; // RESET pin
LPC_IOCON-&amp;gt;PIO0[1] = IOCON_FUNC0 | IOCON_MODE_INACT | IOCON_DIGMODE_EN;// ISP pin
LPC_IOCON-&amp;gt;PIO0[3] = IOCON_FUNC0 | IOCON_MODE_PULLDOWN | IOCON_DIGMODE_EN; // GPIO ... will be VBUS when USB enabled
LPC_IOCON-&amp;gt;PIO0[4] = IOCON_FUNC1 | IOCON_DIGMODE_EN;// I2C standard mode
LPC_IOCON-&amp;gt;PIO0[5] = IOCON_FUNC1 | IOCON_DIGMODE_EN;&amp;nbsp;&amp;nbsp;&amp;nbsp; // I2C standard mode
LPC_IOCON-&amp;gt;PIO0[6] = IOCON_FUNC0 | IOCON_MODE_PULLUP | IOCON_DIGMODE_EN;&amp;nbsp; // GPIO ... will be USB_CONNECT when USB enabled
LPC_IOCON-&amp;gt;PIO0[7] = IOCON_FUNC0 | IOCON_OPENDRAIN_EN | IOCON_MODE_INACT | IOCON_DIGMODE_EN; // RED LED
LPC_IOCON-&amp;gt;PIO0[8] = IOCON_FUNC0 | IOCON_OPENDRAIN_EN | IOCON_MODE_INACT | IOCON_DIGMODE_EN; // GREEN LED
LPC_IOCON-&amp;gt;PIO0[9] = IOCON_FUNC0 | IOCON_OPENDRAIN_EN | IOCON_MODE_INACT | IOCON_DIGMODE_EN; // BLUE LED

LPC_IOCON-&amp;gt;PIO0[12] = IOCON_FUNC1 | IOCON_MODE_PULLUP | IOCON_DIGMODE_EN;&amp;nbsp; // SW1
LPC_IOCON-&amp;gt;PIO0[13] = IOCON_FUNC1 | IOCON_MODE_PULLUP | IOCON_DIGMODE_EN;&amp;nbsp; // SW2
LPC_IOCON-&amp;gt;PIO0[14] = IOCON_FUNC1 | IOCON_MODE_PULLUP | IOCON_DIGMODE_EN;&amp;nbsp; // SW3
LPC_IOCON-&amp;gt;PIO0[16] = IOCON_FUNC1 | IOCON_ADMODE_EN&amp;nbsp;&amp;nbsp; | IOCON_MODE_INACT | IOCON_FILT_DIS;&amp;nbsp; // Reference voltage: AD5
LPC_IOCON-&amp;gt;PIO0[23] = IOCON_FUNC0 | IOCON_DIGMODE_EN&amp;nbsp; | IOCON_MODE_INACT;&amp;nbsp; // VCC_SW
LPC_IOCON-&amp;gt;PIO1[19] = IOCON_FUNC0 | IOCON_MODE_PULLUP | IOCON_DIGMODE_EN&amp;nbsp; | IOCON_MODE_INACT;&amp;nbsp; // FD input
}


/* Setup system clocking */
STATIC void SystemSetupClocking(void)
{

#ifdef WDO
Chip_SYSCTL_PowerUp(SYSCTL_POWERDOWN_WDTOSC_PD);

LPC_SYSCTL-&amp;gt;SYSAHBCLKCTRL |= (1&amp;lt;&amp;lt;15);&amp;nbsp; // enable clock to WDT block

Chip_Clock_SetWDTOSC(WDTLFO_OSC_4_60, 2);

LPC_WWDT-&amp;gt;CLKSEL |= (1&amp;lt;&amp;lt;0);&amp;nbsp; // select watchdog oscillator

Chip_Clock_SetMainClockSource(SYSCTL_MAINCLKSRC_WDTOSC);

//#else&amp;nbsp; /* the IRC is enabled by default */
//Chip_Clock_SetSysClockDiv(1);
#endif

Chip_FMC_SetFLASHAccess(FLASHTIM_20MHZ_CPU);
SystemCoreClockUpdate();
}

void SetPowerProfile(void)
{
static uint32_t command[4], result[3];

rom = (ROM **)0x1FFF1FF8;
#ifdef WDO&amp;nbsp; /* the WDO is running at 4.6 MHz but is divided by two */
/****Call the set_power routine ****/
command[0] = 3;/* Current freq in MHz&amp;nbsp; */
command[1] = PARAM_LOW_CURRENT;/* Use the designated low current power mode&amp;nbsp; */
command[2] = 3;/* Change the set_power&amp;nbsp; */

#elif defined (IRC_4MHZ) /* the IRC is running at 4 MHz */
/****Call the set_power routine ****/
command[0] = 4;/* Current freq in MHz&amp;nbsp; */
command[1] = PARAM_LOW_CURRENT;/* Use the designated low current power mode&amp;nbsp; */
command[2] = 4;/* Change the set_power&amp;nbsp; */

#elif&amp;nbsp; defined(IRC_12MHZ) /* the IRC is running at 12 MHz */
/****Call the set_power routine ****/
command[0] = 12;/* Current freq in MHz&amp;nbsp; */
command[1] = PARAM_LOW_CURRENT;/* Use the designated low current power mode&amp;nbsp; */
command[2] = 12;/* Change the set_power&amp;nbsp; */
#endif

(*rom)-&amp;gt;pPWRD-&amp;gt;set_power(command, result);/*Apply new power profile&amp;nbsp; */
}


//*****************************************UART.c*********************************************************************************

/*****************************************************************************
** Function name:UARTInit
**
** Descriptions:Initialize UART0 port, setup pin select,
**clock, parity, stop bits, FIFO, etc.
**
** parameters:UART baudrate
** Returned value:None
**
*****************************************************************************/
void UARTInit(uint32_t baudrate)
{
#if !AUTOBAUD_ENABLE
&amp;nbsp; uint32_t Fdiv;
#endif
&amp;nbsp; volatile uint32_t regVal;
&amp;nbsp; UARTTxEmpty = 1;
&amp;nbsp; UARTCount = 0;

&amp;nbsp; NVIC_DisableIRQ(UART_IRQn);
&amp;nbsp; /* Select only one location from below. */
#if 1
&amp;nbsp; LPC_IOCON-&amp;gt;PIO0_18 &amp;amp;= ~0x07;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&amp;nbsp; UART I/O config */
&amp;nbsp; LPC_IOCON-&amp;gt;PIO0_18 |= 0x01;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* UART RXD */
&amp;nbsp; LPC_IOCON-&amp;gt;PIO0_19 &amp;amp;= ~0x07;
&amp;nbsp; LPC_IOCON-&amp;gt;PIO0_19 |= 0x01;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* UART TXD */
#endif
#if 0
&amp;nbsp; LPC_IOCON-&amp;gt;PIO1_14 &amp;amp;= ~0x07;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&amp;nbsp; UART I/O config */
&amp;nbsp; LPC_IOCON-&amp;gt;PIO1_14 |= 0x03;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* UART RXD */
&amp;nbsp; LPC_IOCON-&amp;gt;PIO1_13 &amp;amp;= ~0x07;
&amp;nbsp; LPC_IOCON-&amp;gt;PIO1_13 |= 0x03;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* UART TXD */
#endif
#if 0
&amp;nbsp; LPC_IOCON-&amp;gt;PIO1_17 &amp;amp;= ~0x07;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&amp;nbsp; UART I/O config */
&amp;nbsp; LPC_IOCON-&amp;gt;PIO1_17 |= 0x02;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* UART RXD */
&amp;nbsp; LPC_IOCON-&amp;gt;PIO1_18 &amp;amp;= ~0x07;
&amp;nbsp; LPC_IOCON-&amp;gt;PIO1_18 |= 0x02;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* UART TXD */
#endif
#if 0
&amp;nbsp; LPC_IOCON-&amp;gt;PIO1_26 &amp;amp;= ~0x07;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&amp;nbsp; UART I/O config */
&amp;nbsp; LPC_IOCON-&amp;gt;PIO1_26 |= 0x02;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* UART RXD */
&amp;nbsp; LPC_IOCON-&amp;gt;PIO1_27 &amp;amp;= ~0x07;
&amp;nbsp; LPC_IOCON-&amp;gt;PIO1_27 |= 0x02;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* UART TXD */
#endif

&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_USART-&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; /* 8 bits, no Parity, 1 Stop bit */
#if !AUTOBAUD_ENABLE
#if FDR_CALIBRATION
if ( uart_set_divisors(SystemCoreClock/LPC_SYSCON-&amp;gt;UARTCLKDIV, baudrate) != TRUE )
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Fdiv = ((SystemCoreClock/LPC_SYSCON-&amp;gt;UARTCLKDIV)/16)/baudrate ;/*baud rate */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_USART-&amp;gt;DLM = Fdiv / 256;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_USART-&amp;gt;DLL = Fdiv % 256;
&amp;nbsp; LPC_USART-&amp;gt;FDR = 0x10;/* Default */
}
#else
&amp;nbsp;&amp;nbsp;&amp;nbsp; Fdiv = ((SystemCoreClock/LPC_SYSCON-&amp;gt;UARTCLKDIV)/16)/baudrate ;/*baud rate */
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_USART-&amp;gt;DLM = Fdiv / 256;
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_USART-&amp;gt;DLL = Fdiv % 256;
LPC_USART-&amp;gt;FDR = 0x10;/* Default */
#endif
#endif
&amp;nbsp; LPC_USART-&amp;gt;LCR = 0x03;/* DLAB = 0 */
&amp;nbsp; LPC_USART-&amp;gt;FCR = 0x07;/* Enable and reset TX and RX FIFO. */

&amp;nbsp; /* Read to clear the line status. */
&amp;nbsp; regVal = LPC_USART-&amp;gt;LSR;

&amp;nbsp; /* Ensure a clean start, no data in either TX or RX FIFO. */
&amp;nbsp; while (( LPC_USART-&amp;gt;LSR &amp;amp; (LSR_THRE|LSR_TEMT)) != (LSR_THRE|LSR_TEMT) );
&amp;nbsp; while ( LPC_USART-&amp;gt;LSR &amp;amp; LSR_RDR )
&amp;nbsp; {
regVal = LPC_USART-&amp;gt;RBR;/* Dump data from RX FIFO */
&amp;nbsp; }

&amp;nbsp; /* Enable the UART Interrupt */
&amp;nbsp; NVIC_EnableIRQ(UART_IRQn);

#if TX_INTERRUPT
&amp;nbsp; LPC_USART-&amp;gt;IER = IER_RBR | IER_THRE | IER_RLS;/* Enable UART interrupt */
#else
&amp;nbsp; LPC_USART-&amp;gt;IER = IER_RBR | IER_RLS;/* Enable UART interrupt */
#endif
#if AUTOBAUD_ENABLE
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_USART-&amp;gt;IER |= IER_ABEO | IER_ABTO;
#endif
&amp;nbsp; return;
}

/*****************************************************************************
** Function name:UART_IRQHandler
**
** Descriptions:UART interrupt handler
**
** parameters:None
** Returned value:None
**
**
*****************************************************************************/
void UART_IRQHandler(void)
{
&amp;nbsp; uint8_t IIRValue, LSRValue;
&amp;nbsp; uint8_t Dummy = Dummy;

&amp;nbsp; IIRValue = LPC_USART-&amp;gt;IIR;
&amp;nbsp; IIRValue &amp;gt;&amp;gt;= 1;/* skip pending bit in IIR */
&amp;nbsp; IIRValue &amp;amp;= 0x07;/* check bit 1~3, interrupt identification */
&amp;nbsp; if (IIRValue == IIR_RLS)/* Receive Line Status */&amp;nbsp;&amp;nbsp;&amp;nbsp; //(if interrupt is Available for line status)
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; LSRValue = LPC_USART-&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_USART-&amp;gt;RBR;/* Dummy read on RX to clear 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)/* Receive Data Ready */
&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_USART-&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;/* buffer overflow */
&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)/* Receive Data Available *****************///(Receive complete interrupt)
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Receive Data Available */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data[count]=LPC_USART-&amp;gt;RBR;
 if( data[count]=='\n')
 {
 data[count]=NULL;
 count=0;
 print_string(data);
 print_string("\r\n");
 }
 else
 {
 count++;
 }
&amp;nbsp; }
&amp;nbsp; else if (IIRValue == IIR_CTI)/* Character timeout indicator */
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Character Time-out indicator */
&amp;nbsp;&amp;nbsp;&amp;nbsp; UARTStatus |= 0x100;/* Bit 9 as the CTI error */
&amp;nbsp; }
&amp;nbsp; else if (IIRValue == IIR_THRE)/* THRE, transmit holding register empty *************///(interrupt for transmit buff Empty)
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* THRE interrupt */
&amp;nbsp;&amp;nbsp;&amp;nbsp; LSRValue = LPC_USART-&amp;gt;LSR;/* Check status in the LSR to see if
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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //if tx buffer is Empty then set the flag!
&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; }
#if AUTOBAUD_ENABLE
&amp;nbsp; if (LPC_USART-&amp;gt;IIR &amp;amp; IIR_ABEO) /* End of Auto baud */
&amp;nbsp; {
LPC_USART-&amp;gt;IER &amp;amp;= ~IIR_ABEO;
/* clear bit ABEOInt in the IIR by set ABEOIntClr in the ACR register */
LPC_USART-&amp;gt;ACR |= IIR_ABEO;
UARTAutoBaud = 1;
&amp;nbsp; }
&amp;nbsp; else if (LPC_USART-&amp;gt;IIR &amp;amp; IIR_ABTO)/* Auto baud time out */
&amp;nbsp; {
LPC_USART-&amp;gt;IER &amp;amp;= ~IIR_ABTO;
AutoBaudTimeout = 1;
/* clear bit ABTOInt in the IIR by set ABTOIntClr in the ACR register */
LPC_USART-&amp;gt;ACR |= IIR_ABTO;
&amp;nbsp; }
#endif
&amp;nbsp; return;
}
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;All help and comments welcome &lt;SPAN class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;&lt;LI-EMOJI id="lia_slightly-smiling-face" title=":slightly_smiling_face:"&gt;&lt;/LI-EMOJI&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks and Regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Mahendra Sondagar&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 19:32:33 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T19:32:33Z</dc:date>
    <item>
      <title>LPC11U24 Receive complete interrupt not working with Board_system() library!</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U24-Receive-complete-interrupt-not-working-with-Board/m-p/531451#M10203</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by mahendra_ms on Mon Dec 07 23:31:32 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello community and NXP&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm new comers at NXP cortex chip, but i'm very well familiar with ARM architectures (with ARM7(LPC2148))&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;before facing this problem I've load the example code provided by community for UART which seems good with my &lt;/SPAN&gt;&lt;STRONG&gt;LPCXpresso &lt;/STRONG&gt;&lt;STRONG&gt;board&lt;/STRONG&gt;&lt;SPAN&gt; , as I'm able to transmit and receive the data through UART with my desires baud rate&amp;nbsp; &lt;SPAN class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;&lt;LI-EMOJI id="lia_slightly-smiling-face" title=":slightly_smiling_face:"&gt;&lt;/LI-EMOJI&gt;&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Right now I'm doing Reverse Engineering with one project which use&lt;/SPAN&gt;&lt;STRONG&gt; LPC11u24&lt;/STRONG&gt;&lt;SPAN&gt;, and I've add&lt;/SPAN&gt;&lt;STRONG&gt; UART&lt;/STRONG&gt;&lt;SPAN&gt; code which is being provided by community.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;my transition section working good but I'm not able to receive string in its &lt;/SPAN&gt;&lt;STRONG&gt;RXC isr&lt;/STRONG&gt;&lt;SPAN&gt;(tx section is working by polling of &lt;/SPAN&gt;&lt;STRONG&gt;THRE&lt;/STRONG&gt;&lt;SPAN&gt; while rx has ISR as per community ex. code) &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;instead of using chip library I'm using Board library here!&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Here is my code&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;
int main(void)
{
bool LCD_initialized = false;
uint32_t CurrentDisplay = DISPLAY_DEFAULT_MESSAGE;
uint8_t LCDmessagebuffer[160];
uint32_t LCDScrollCount = 0;
uint32_t i, NDEFmessagelen;
extern uint8_t defaultstring[];
uint8_t Buttons = 0;

Setup(); 
}


void Setup()
{

 HAL_BSP_BoardInit();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Board init funtion&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
// Setup Pins on the micro-controller
SystemCoreClockUpdate();

/* NVIC is installed inside UARTInit file. */
&amp;nbsp;&amp;nbsp;&amp;nbsp; UARTInit(4800);
&amp;nbsp;&amp;nbsp;&amp;nbsp; #if AUTOBAUD_ENABLE
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_USART-&amp;gt;ACR = 0x01&amp;lt;&amp;lt;2;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Auto Restart, UART mode 0 */
LPC_USART-&amp;gt;ACR |= (0x01&amp;lt;&amp;lt;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; /* Start */
&amp;nbsp;&amp;nbsp;&amp;nbsp; while(!UARTAutoBaud );
UARTAutoBaud = 0;
UARTSend((uint8_t *)"Auto Baud detected\r\n\r\n", 22);

#endif
#if MODEM_TEST
&amp;nbsp; ModemInit();
#endif

&amp;nbsp; print_string("smart meter Reading\r\n");&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Sending Hello string


&amp;nbsp; // never leave this function
&amp;nbsp; while (1) {
&amp;nbsp; __WFE();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp; return 0;
}

//**********************************************************************************************************
/* Set up and initialize hardware prior to call to main */
void Board_SystemInit(void)
{
/* Setup system clocking and muxing */
SystemSetupMuxing();
SystemSetupClocking();
//SetPowerProfile();
}


/* Sets up system pin muxing */
STATIC void SystemSetupMuxing(void)
{
LPC_SYSCTL-&amp;gt;SYSAHBCLKCTRL |= (1&amp;lt;&amp;lt;16);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Enable clock FOR IO config. block
LPC_IOCON-&amp;gt;PIO0[0] = IOCON_FUNC0 | IOCON_MODE_INACT | IOCON_DIGMODE_EN; // RESET pin
LPC_IOCON-&amp;gt;PIO0[1] = IOCON_FUNC0 | IOCON_MODE_INACT | IOCON_DIGMODE_EN;// ISP pin
LPC_IOCON-&amp;gt;PIO0[3] = IOCON_FUNC0 | IOCON_MODE_PULLDOWN | IOCON_DIGMODE_EN; // GPIO ... will be VBUS when USB enabled
LPC_IOCON-&amp;gt;PIO0[4] = IOCON_FUNC1 | IOCON_DIGMODE_EN;// I2C standard mode
LPC_IOCON-&amp;gt;PIO0[5] = IOCON_FUNC1 | IOCON_DIGMODE_EN;&amp;nbsp;&amp;nbsp;&amp;nbsp; // I2C standard mode
LPC_IOCON-&amp;gt;PIO0[6] = IOCON_FUNC0 | IOCON_MODE_PULLUP | IOCON_DIGMODE_EN;&amp;nbsp; // GPIO ... will be USB_CONNECT when USB enabled
LPC_IOCON-&amp;gt;PIO0[7] = IOCON_FUNC0 | IOCON_OPENDRAIN_EN | IOCON_MODE_INACT | IOCON_DIGMODE_EN; // RED LED
LPC_IOCON-&amp;gt;PIO0[8] = IOCON_FUNC0 | IOCON_OPENDRAIN_EN | IOCON_MODE_INACT | IOCON_DIGMODE_EN; // GREEN LED
LPC_IOCON-&amp;gt;PIO0[9] = IOCON_FUNC0 | IOCON_OPENDRAIN_EN | IOCON_MODE_INACT | IOCON_DIGMODE_EN; // BLUE LED

LPC_IOCON-&amp;gt;PIO0[12] = IOCON_FUNC1 | IOCON_MODE_PULLUP | IOCON_DIGMODE_EN;&amp;nbsp; // SW1
LPC_IOCON-&amp;gt;PIO0[13] = IOCON_FUNC1 | IOCON_MODE_PULLUP | IOCON_DIGMODE_EN;&amp;nbsp; // SW2
LPC_IOCON-&amp;gt;PIO0[14] = IOCON_FUNC1 | IOCON_MODE_PULLUP | IOCON_DIGMODE_EN;&amp;nbsp; // SW3
LPC_IOCON-&amp;gt;PIO0[16] = IOCON_FUNC1 | IOCON_ADMODE_EN&amp;nbsp;&amp;nbsp; | IOCON_MODE_INACT | IOCON_FILT_DIS;&amp;nbsp; // Reference voltage: AD5
LPC_IOCON-&amp;gt;PIO0[23] = IOCON_FUNC0 | IOCON_DIGMODE_EN&amp;nbsp; | IOCON_MODE_INACT;&amp;nbsp; // VCC_SW
LPC_IOCON-&amp;gt;PIO1[19] = IOCON_FUNC0 | IOCON_MODE_PULLUP | IOCON_DIGMODE_EN&amp;nbsp; | IOCON_MODE_INACT;&amp;nbsp; // FD input
}


/* Setup system clocking */
STATIC void SystemSetupClocking(void)
{

#ifdef WDO
Chip_SYSCTL_PowerUp(SYSCTL_POWERDOWN_WDTOSC_PD);

LPC_SYSCTL-&amp;gt;SYSAHBCLKCTRL |= (1&amp;lt;&amp;lt;15);&amp;nbsp; // enable clock to WDT block

Chip_Clock_SetWDTOSC(WDTLFO_OSC_4_60, 2);

LPC_WWDT-&amp;gt;CLKSEL |= (1&amp;lt;&amp;lt;0);&amp;nbsp; // select watchdog oscillator

Chip_Clock_SetMainClockSource(SYSCTL_MAINCLKSRC_WDTOSC);

//#else&amp;nbsp; /* the IRC is enabled by default */
//Chip_Clock_SetSysClockDiv(1);
#endif

Chip_FMC_SetFLASHAccess(FLASHTIM_20MHZ_CPU);
SystemCoreClockUpdate();
}

void SetPowerProfile(void)
{
static uint32_t command[4], result[3];

rom = (ROM **)0x1FFF1FF8;
#ifdef WDO&amp;nbsp; /* the WDO is running at 4.6 MHz but is divided by two */
/****Call the set_power routine ****/
command[0] = 3;/* Current freq in MHz&amp;nbsp; */
command[1] = PARAM_LOW_CURRENT;/* Use the designated low current power mode&amp;nbsp; */
command[2] = 3;/* Change the set_power&amp;nbsp; */

#elif defined (IRC_4MHZ) /* the IRC is running at 4 MHz */
/****Call the set_power routine ****/
command[0] = 4;/* Current freq in MHz&amp;nbsp; */
command[1] = PARAM_LOW_CURRENT;/* Use the designated low current power mode&amp;nbsp; */
command[2] = 4;/* Change the set_power&amp;nbsp; */

#elif&amp;nbsp; defined(IRC_12MHZ) /* the IRC is running at 12 MHz */
/****Call the set_power routine ****/
command[0] = 12;/* Current freq in MHz&amp;nbsp; */
command[1] = PARAM_LOW_CURRENT;/* Use the designated low current power mode&amp;nbsp; */
command[2] = 12;/* Change the set_power&amp;nbsp; */
#endif

(*rom)-&amp;gt;pPWRD-&amp;gt;set_power(command, result);/*Apply new power profile&amp;nbsp; */
}


//*****************************************UART.c*********************************************************************************

/*****************************************************************************
** Function name:UARTInit
**
** Descriptions:Initialize UART0 port, setup pin select,
**clock, parity, stop bits, FIFO, etc.
**
** parameters:UART baudrate
** Returned value:None
**
*****************************************************************************/
void UARTInit(uint32_t baudrate)
{
#if !AUTOBAUD_ENABLE
&amp;nbsp; uint32_t Fdiv;
#endif
&amp;nbsp; volatile uint32_t regVal;
&amp;nbsp; UARTTxEmpty = 1;
&amp;nbsp; UARTCount = 0;

&amp;nbsp; NVIC_DisableIRQ(UART_IRQn);
&amp;nbsp; /* Select only one location from below. */
#if 1
&amp;nbsp; LPC_IOCON-&amp;gt;PIO0_18 &amp;amp;= ~0x07;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&amp;nbsp; UART I/O config */
&amp;nbsp; LPC_IOCON-&amp;gt;PIO0_18 |= 0x01;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* UART RXD */
&amp;nbsp; LPC_IOCON-&amp;gt;PIO0_19 &amp;amp;= ~0x07;
&amp;nbsp; LPC_IOCON-&amp;gt;PIO0_19 |= 0x01;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* UART TXD */
#endif
#if 0
&amp;nbsp; LPC_IOCON-&amp;gt;PIO1_14 &amp;amp;= ~0x07;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&amp;nbsp; UART I/O config */
&amp;nbsp; LPC_IOCON-&amp;gt;PIO1_14 |= 0x03;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* UART RXD */
&amp;nbsp; LPC_IOCON-&amp;gt;PIO1_13 &amp;amp;= ~0x07;
&amp;nbsp; LPC_IOCON-&amp;gt;PIO1_13 |= 0x03;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* UART TXD */
#endif
#if 0
&amp;nbsp; LPC_IOCON-&amp;gt;PIO1_17 &amp;amp;= ~0x07;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&amp;nbsp; UART I/O config */
&amp;nbsp; LPC_IOCON-&amp;gt;PIO1_17 |= 0x02;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* UART RXD */
&amp;nbsp; LPC_IOCON-&amp;gt;PIO1_18 &amp;amp;= ~0x07;
&amp;nbsp; LPC_IOCON-&amp;gt;PIO1_18 |= 0x02;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* UART TXD */
#endif
#if 0
&amp;nbsp; LPC_IOCON-&amp;gt;PIO1_26 &amp;amp;= ~0x07;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&amp;nbsp; UART I/O config */
&amp;nbsp; LPC_IOCON-&amp;gt;PIO1_26 |= 0x02;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* UART RXD */
&amp;nbsp; LPC_IOCON-&amp;gt;PIO1_27 &amp;amp;= ~0x07;
&amp;nbsp; LPC_IOCON-&amp;gt;PIO1_27 |= 0x02;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* UART TXD */
#endif

&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_USART-&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; /* 8 bits, no Parity, 1 Stop bit */
#if !AUTOBAUD_ENABLE
#if FDR_CALIBRATION
if ( uart_set_divisors(SystemCoreClock/LPC_SYSCON-&amp;gt;UARTCLKDIV, baudrate) != TRUE )
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Fdiv = ((SystemCoreClock/LPC_SYSCON-&amp;gt;UARTCLKDIV)/16)/baudrate ;/*baud rate */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_USART-&amp;gt;DLM = Fdiv / 256;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_USART-&amp;gt;DLL = Fdiv % 256;
&amp;nbsp; LPC_USART-&amp;gt;FDR = 0x10;/* Default */
}
#else
&amp;nbsp;&amp;nbsp;&amp;nbsp; Fdiv = ((SystemCoreClock/LPC_SYSCON-&amp;gt;UARTCLKDIV)/16)/baudrate ;/*baud rate */
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_USART-&amp;gt;DLM = Fdiv / 256;
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_USART-&amp;gt;DLL = Fdiv % 256;
LPC_USART-&amp;gt;FDR = 0x10;/* Default */
#endif
#endif
&amp;nbsp; LPC_USART-&amp;gt;LCR = 0x03;/* DLAB = 0 */
&amp;nbsp; LPC_USART-&amp;gt;FCR = 0x07;/* Enable and reset TX and RX FIFO. */

&amp;nbsp; /* Read to clear the line status. */
&amp;nbsp; regVal = LPC_USART-&amp;gt;LSR;

&amp;nbsp; /* Ensure a clean start, no data in either TX or RX FIFO. */
&amp;nbsp; while (( LPC_USART-&amp;gt;LSR &amp;amp; (LSR_THRE|LSR_TEMT)) != (LSR_THRE|LSR_TEMT) );
&amp;nbsp; while ( LPC_USART-&amp;gt;LSR &amp;amp; LSR_RDR )
&amp;nbsp; {
regVal = LPC_USART-&amp;gt;RBR;/* Dump data from RX FIFO */
&amp;nbsp; }

&amp;nbsp; /* Enable the UART Interrupt */
&amp;nbsp; NVIC_EnableIRQ(UART_IRQn);

#if TX_INTERRUPT
&amp;nbsp; LPC_USART-&amp;gt;IER = IER_RBR | IER_THRE | IER_RLS;/* Enable UART interrupt */
#else
&amp;nbsp; LPC_USART-&amp;gt;IER = IER_RBR | IER_RLS;/* Enable UART interrupt */
#endif
#if AUTOBAUD_ENABLE
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_USART-&amp;gt;IER |= IER_ABEO | IER_ABTO;
#endif
&amp;nbsp; return;
}

/*****************************************************************************
** Function name:UART_IRQHandler
**
** Descriptions:UART interrupt handler
**
** parameters:None
** Returned value:None
**
**
*****************************************************************************/
void UART_IRQHandler(void)
{
&amp;nbsp; uint8_t IIRValue, LSRValue;
&amp;nbsp; uint8_t Dummy = Dummy;

&amp;nbsp; IIRValue = LPC_USART-&amp;gt;IIR;
&amp;nbsp; IIRValue &amp;gt;&amp;gt;= 1;/* skip pending bit in IIR */
&amp;nbsp; IIRValue &amp;amp;= 0x07;/* check bit 1~3, interrupt identification */
&amp;nbsp; if (IIRValue == IIR_RLS)/* Receive Line Status */&amp;nbsp;&amp;nbsp;&amp;nbsp; //(if interrupt is Available for line status)
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; LSRValue = LPC_USART-&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_USART-&amp;gt;RBR;/* Dummy read on RX to clear 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)/* Receive Data Ready */
&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_USART-&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;/* buffer overflow */
&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)/* Receive Data Available *****************///(Receive complete interrupt)
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Receive Data Available */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data[count]=LPC_USART-&amp;gt;RBR;
 if( data[count]=='\n')
 {
 data[count]=NULL;
 count=0;
 print_string(data);
 print_string("\r\n");
 }
 else
 {
 count++;
 }
&amp;nbsp; }
&amp;nbsp; else if (IIRValue == IIR_CTI)/* Character timeout indicator */
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Character Time-out indicator */
&amp;nbsp;&amp;nbsp;&amp;nbsp; UARTStatus |= 0x100;/* Bit 9 as the CTI error */
&amp;nbsp; }
&amp;nbsp; else if (IIRValue == IIR_THRE)/* THRE, transmit holding register empty *************///(interrupt for transmit buff Empty)
&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* THRE interrupt */
&amp;nbsp;&amp;nbsp;&amp;nbsp; LSRValue = LPC_USART-&amp;gt;LSR;/* Check status in the LSR to see if
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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //if tx buffer is Empty then set the flag!
&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; }
#if AUTOBAUD_ENABLE
&amp;nbsp; if (LPC_USART-&amp;gt;IIR &amp;amp; IIR_ABEO) /* End of Auto baud */
&amp;nbsp; {
LPC_USART-&amp;gt;IER &amp;amp;= ~IIR_ABEO;
/* clear bit ABEOInt in the IIR by set ABEOIntClr in the ACR register */
LPC_USART-&amp;gt;ACR |= IIR_ABEO;
UARTAutoBaud = 1;
&amp;nbsp; }
&amp;nbsp; else if (LPC_USART-&amp;gt;IIR &amp;amp; IIR_ABTO)/* Auto baud time out */
&amp;nbsp; {
LPC_USART-&amp;gt;IER &amp;amp;= ~IIR_ABTO;
AutoBaudTimeout = 1;
/* clear bit ABTOInt in the IIR by set ABTOIntClr in the ACR register */
LPC_USART-&amp;gt;ACR |= IIR_ABTO;
&amp;nbsp; }
#endif
&amp;nbsp; return;
}
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;All help and comments welcome &lt;SPAN class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;&lt;LI-EMOJI id="lia_slightly-smiling-face" title=":slightly_smiling_face:"&gt;&lt;/LI-EMOJI&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks and Regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Mahendra Sondagar&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 19:32:33 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC11U24-Receive-complete-interrupt-not-working-with-Board/m-p/531451#M10203</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T19:32:33Z</dc:date>
    </item>
  </channel>
</rss>

