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;
} |