Content originally posted in LPCWare by sinhapra on Mon Aug 25 07:13:08 MST 2014
Working on serial interface in LPC4078.
I am facing a problem in enabling UART1 or UART2 interrupts. Thinking that this is a common problem, may be someone has solution.
LPC4078 Project is using RTX as an OS, RL-CAN driver and serial port to communicate.
RL-CAN driver is able to use NVIC_EnableIRQ(CAN) because that is getting initialize under "Privilage " mode of OS and when I call CAN init first or if I move NVIC_EnableIRQ(UART2) where CAN is initializing its interrupt it works fine.
But if i try to enable UART2 interrupt elsewhere it doesn't work and it generates "HardFault"exception. I also want to use USB lib but I am not able to use it because it doesn't work either.
below serial init function()
{
uint32 DLreload;
uint32 ss1;
TxBuffer.in =0;
TxBuffer.out =0;
RxBuffer.in =0;
RxBuffer.out =0;
DLreload = ((SERIAL_PCLK / 16UL) + (baudrate-1)) / baudrate;
setbit(LPC_SC->PCONP,4);/*power UART2 */
/* Enable TxD1 */
LPC_IOCON->P0_15=1;
/* Enable RxD1 */
LPC_IOCON->P0_16=1;
/* Enable DTR1 */
LPC_IOCON->P0_20=1;
NVIC_EnableIRQ (UART1_IRQn);
LPC_UART1->FDR = 0; /* Fractional divider not used */
LPC_UART1->LCR = 0x83; /* 8 bits, no Parity, 1 Stop bit */
LPC_UART1->IER = 0; /* Disable UART1 Interrupts */
LPC_UART1->DLL = DLreload;
LPC_UART1->DLM = (DLreload >> 8);
LPC_UART1->LCR = 0x03; /* DLAB = 0 */
CLR_DTR(); /*DTR is active low*/
LPC_UART1->IER = 3; /* Enable UART1 RX and THRE Interrupts */
// Create CanTask
m_SerialTaskTID = os_tsk_create(SerialTask, OS_TASK_PRI_SERIAL);
}
Please guide and let me know if i am doing something wrong here..