Simon Ford
/
serial_baudrate_dividers
Program to dump out dividers for a UART, after it being set up
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 #include "mbed.h" 00002 00003 DigitalOut myled(LED1); 00004 00005 Serial s(p9, p10); 00006 00007 int main() { 00008 00009 // setup the baudrate to 4800 00010 s.baud(4800); 00011 00012 // extract the resulting divider values that were setup 00013 00014 LPC_UART3->LCR |= (1 << 7); // set LCR[DLAB] to get access to dividers 00015 int dlm = LPC_UART3->DLM; 00016 int dll = LPC_UART3->DLL; 00017 int div = LPC_UART3->FDR & 0xF; 00018 int mul = LPC_UART3->FDR >> 4; 00019 LPC_UART3->LCR &= ~(1 << 7); // clear LCR[DLAB] 00020 00021 int pclk = 96000000; 00022 00023 // from LPC1768 User Manual, 14.4.12 : 00024 float baudrate = pclk / (16.0 * (float)(256 * dlm + dll) * (1.0 + ((float)div / (float)mul))); 00025 00026 printf("dlm = %d, dll = %d, div = %d, mul = %d\n", dlm, dll, div, mul); 00027 printf("baudrate = %f\n", baudrate); 00028 }
Generated on Sat Jul 16 2022 00:29:04 by 1.7.2