[LPC1K-SM EVM] 시리얼 포트 테스트
LPC1K UART의 특징으로 저렴한 MCU임에도 불구하고 16byte의 FIFO가 있어 UART통신에 있어 편리하고 고속으로 처리할 수 있다. 그리고 RS-485/EIA-485 9-bit모드를 지원하고 하드웨어 흐름제어도 지원한다고 한다.
LPC1113 UART초기화 함수
1Byte 전송함수
1Byte 수신함수
LPC1K UART테스트 예제 코드
LPC1K UART의 특징으로 저렴한 MCU임에도 불구하고 16byte의 FIFO가 있어 UART통신에 있어 편리하고 고속으로 처리할 수 있다. 그리고 RS-485/EIA-485 9-bit모드를 지원하고 하드웨어 흐름제어도 지원한다고 한다.
LPC1113 UART초기화 함수
//------------------------------------------------------------------------------
// Serial Prot0 Utility Fuction Routine
void U0_Init(unsigned long baud)
{
NVIC_DisableIRQ(UART_IRQn);
//UART 클럭 초기화
LPC_SYSCON->SYSAHBCLKCTRL |= (1<<12); // UART=1
// Enable UART peripheral clock
LPC_SYSCON->UARTCLKDIV = 0x01; // DIV=1
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 */
U0_SetBaud(baud);
}
// Serial Prot0 Utility Fuction Routine
void U0_Init(unsigned long baud)
{
NVIC_DisableIRQ(UART_IRQn);
//UART 클럭 초기화
LPC_SYSCON->SYSAHBCLKCTRL |= (1<<12); // UART=1
// Enable UART peripheral clock
LPC_SYSCON->UARTCLKDIV = 0x01; // DIV=1
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 */
U0_SetBaud(baud);
}
1Byte 전송함수
void U0_PutByte(unsigned char Data)
{
while ( !(LPC_UART->LSR & LSR_THRE) );
LPC_UART->THR = Data;
}
{
while ( !(LPC_UART->LSR & LSR_THRE) );
LPC_UART->THR = Data;
}
1Byte 수신함수
unsigned char U0_GetByte(void)
{
while (!(LPC_UART->LSR & LSR_RDR));
return LPC_UART->RBR;
}
{
while (!(LPC_UART->LSR & LSR_RDR));
return LPC_UART->RBR;
}
LPC1K UART테스트 예제 코드
int main()
{
SystemInit();
U0_Init(BAUD_115200);
DebugPrint("LPC1K UART Test\r\n");
Led1Init();
Led1On();
Led2Init();
Led2Off();
while(1)
{
switch(U0_GetByte())
{
case '0':
Led1Off();
DebugPrint("LED OFF\r\n");
break;
case '1':
Led1On();
DebugPrint("LED ON\r\n");
break;
}
}
return 0;
}
{
SystemInit();
U0_Init(BAUD_115200);
DebugPrint("LPC1K UART Test\r\n");
Led1Init();
Led1On();
Led2Init();
Led2Off();
while(1)
{
switch(U0_GetByte())
{
case '0':
Led1Off();
DebugPrint("LED OFF\r\n");
break;
case '1':
Led1On();
DebugPrint("LED ON\r\n");
break;
}
}
return 0;
}
반응형