Program to dump out dividers for a UART, after it being set up

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

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 }