//****************************************************************************************** // Project : LPC1114 Sample Program // Program Name : // Programer : // Create date : Version 1.0 H24.09.24 // History : // Laungage : // ****************************************************************************************** // (1)Description // // ****************************************************************************************** #include "LPC11xx.h" // //Define function // void InitUART(void); void SendUART(unsigned char); void RecUART(unsigned char *); void SendUARTStr(unsigned char *); int main(void) { unsigned char IO_char; // ******************* // 1.Initialize // ******************* // (1)Define I/O Port LPC_IOCON->PIO1_6 = 0b01; LPC_IOCON->PIO1_7 = 0b01; // (2)Initialize UART InitUART(); // (3)Put Message SendUARTStr(" LPC1114 Connected OK> "); // ******************* // 2.Program Main // ******************* while(1){ RecUART(&IO_char); SendUART(IO_char); } } //****************************************************************************************** // Function Name : InitUART // Title : Initialized UART // Input : // Output : //****************************************************************************************** void InitUART(void) { uint32_t baudrate = (uint32_t)9600 ; uint32_t DL; LPC_SYSCON->SYSAHBCLKCTRL |= (1<<12); LPC_SYSCON->UARTCLKDIV = 0x01; //UART clock DL = (SystemCoreClock * LPC_SYSCON->SYSAHBCLKDIV) / (16 * baudrate * LPC_SYSCON->UARTCLKDIV); LPC_UART->LCR = 0b10000011; // 8-bit character length, DLAB enable ( DLAB = 1) LPC_UART->DLM = DL / 256; // Determines the baud rate of the UART (MSB Register) (Access DLAB = 1) LPC_UART->DLL = DL % 256; // Determines the baud rate of the UART (LSB Register) (Access DLAB = 1) LPC_UART->LCR = 0b00000011; // 8-bit character length , DLAB disable ( DLAB = 0) LPC_UART->FCR = 0b00000111; // FIFOEN:Active high enable for both UART Rx and TX FIFOs and U0FCR[7:1] access // RXFIFORES:Writing a logic 1 to U0FCR[1] will clear all bytes in UART Rx FIFO, reset the pointer logic. // TXFIFORES:Writing a logic 1 to U0FCR[2] will clear all bytes in UART TX FIFO, reset the pointer logic. } //****************************************************************************************** // Function Name : SendUARTStr // Title : Send UART Strings // Input : // Output : //****************************************************************************************** void SendUARTStr(unsigned char in_s[]) { unsigned char lp = 0; while(in_s[lp] != 0){ SendUART(in_s[lp]); lp++; } } //****************************************************************************************** // Function Name : SendUART // Title : Send UART // Input : // Output : //****************************************************************************************** void SendUART(unsigned char in_c) { while (!(LPC_UART->LSR & (1<<5))); //THRE: Transmitter Holding Register Empty. // 0: THR contains valid data, 1: THR is empty LPC_UART->THR = in_c; } //****************************************************************************************** // Function Name : RecUART // Title : Recive UART // Input : // Output : //****************************************************************************************** void RecUART(unsigned char *out_c) { while (!(LPC_UART->LSR & 0x01)); //RDR: Receiver Data Ready //0: RBR is empty, 1: U0RBR contains valid data *out_c = LPC_UART->RBR; }