void UARTInit(uint32_t baudrate) { uint32_t Fdiv; volatile uint32_t regVal; UARTTxEmpty = 1; UARTCount = 0; NVIC_DisableIRQ(UART_IRQn); LPC_IOCON->PIO1_6 &= ~0x07; /* UART I/O config */ LPC_IOCON->PIO1_6 |= 0x01; /* UART RXD */ LPC_IOCON->PIO1_7 &= ~0x07; LPC_IOCON->PIO1_7 |= 0x01; /* UART TXD */ /* Enable UART clock */ LPC_SYSCON->SYSAHBCLKCTRL |= (1<<12); LPC_SYSCON->UARTCLKDIV = 0x1; /* divided by 1 */ LPC_UART->FDR = 0x00;/* Default */ LPC_UART->LCR = 0x83; /* 8 bits, no Parity, 1 Stop bit */ Fdiv = ((SystemCoreClock/LPC_SYSCON->UARTCLKDIV)/16)/baudrate ;/*baud rate */ LPC_UART->DLM = Fdiv / 256; LPC_UART->DLL = Fdiv % 256; LPC_UART->LCR = 0x03;/* DLAB = 0 */ LPC_UART->FCR = 0x07;/* Enable and reset TX and RX FIFO. */ /* Read to clear the line status. */ regVal = LPC_UART->LSR; regVal = LPC_UART->RBR; NVIC_DisableIRQ(UART_IRQn); LPC_UART->IER = 0; return; } |
void sendcharCom0(char data) { int timeout = 100000; while(!(LPC_UART->LSR&0x20)) //Wait until TX FIFO empty flag to load a value { timeout--; if(timeout == 0) break; } LPC_UART->THR = data; } |