Suga koubou
/
Serial_AutoBaud
test of UART Auto-baud for LPC1768
Diff: main.cpp
- Revision:
- 0:9b76444f1d41
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Mar 26 02:35:06 2015 +0000 @@ -0,0 +1,40 @@ +#include "mbed.h" + +DigitalOut myled(LED1); +Serial pc(USBTX, USBRX); + +Serial ser(p28, p27); +LPC_UART1_TypeDef *uart = (LPC_UART1_TypeDef*)LPC_UART2; + +int main() { + int fdiv, baud; + + pc.baud(115200); + pc.printf("Auto-baud start...\r\n"); + myled = 1; + + uart->LCR |= (1<<7); + uart->DLL = 0; + uart->DLM = 0; + uart->LCR &= ~(1<<7); + uart->FDR = 0x10; +// uart->ACR = (1<<9)|(1<<8)|(1<<2)|(1<<0); // Auto-baud start, mode 0 + uart->ACR = (1<<9)|(1<<8)|(1<<2)|(1<<1)|(1<<0); // Auto-baud start, mode 1 + while (uart->ACR & (1<<0)); + + uart->LCR |= (1<<7); + fdiv = uart->DLM * 256 + uart->DLL; + uart->LCR &= ~(1<<7); + baud = SystemCoreClock / (16 * fdiv); + pc.printf("Baudrate: %d\r\n", baud); + + myled = 0; + for (;;) { + if (pc.readable()) { + ser.putc(pc.getc()); + } + if (ser.readable()) { + pc.putc(ser.getc()); + } + } +}