added prescaler for 16 bit pwm in LPC1347 target

Fork of mbed-dev by mbed official

Revision:
50:a417edff4437
Parent:
0:9b334a45a8ff
Child:
144:ef7eb2e8f9f7
diff -r 57ac6e3cdfd3 -r a417edff4437 targets/hal/TARGET_Silicon_Labs/TARGET_EFM32/emlib/src/em_leuart.c
--- a/targets/hal/TARGET_Silicon_Labs/TARGET_EFM32/emlib/src/em_leuart.c	Wed Jan 13 12:45:11 2016 +0000
+++ b/targets/hal/TARGET_Silicon_Labs/TARGET_EFM32/emlib/src/em_leuart.c	Fri Jan 15 07:45:16 2016 +0000
@@ -2,10 +2,10 @@
  * @file em_leuart.c
  * @brief Low Energy Universal Asynchronous Receiver/Transmitter (LEUART)
  *   Peripheral API
- * @version 3.20.12
+ * @version 4.2.1
  *******************************************************************************
  * @section License
- * <b>(C) Copyright 2014 Silicon Labs, http://www.silabs.com</b>
+ * <b>(C) Copyright 2015 Silicon Labs, http://www.silabs.com</b>
  *******************************************************************************
  *
  * Permission is granted to anyone to use this software for any purpose,
@@ -31,7 +31,6 @@
  *
  ******************************************************************************/
 
-
 #include "em_leuart.h"
 #if defined(LEUART_COUNT) && (LEUART_COUNT > 0)
 
@@ -64,7 +63,7 @@
 #elif (LEUART_COUNT == 2)
 #define LEUART_REF_VALID(ref)    (((ref) == LEUART0) || ((ref) == LEUART1))
 #else
-#error Undefined number of low energy UARTs (LEUART).
+#error "Undefined number of low energy UARTs (LEUART)."
 #endif
 
 /** @endcond */
@@ -174,8 +173,7 @@
    * where a is 'refFreq' and b is 'divisor', referring to variable names.
    */
 
-  divisor = 256 + clkdiv;
-
+  divisor   = 256 + clkdiv;
   quotient  = refFreq / divisor;
   remainder = refFreq % divisor;
 
@@ -470,17 +468,17 @@
   LEUART_FreezeEnable(leuart, true);
 
   /* Configure databits and stopbits */
-  leuart->CTRL = (leuart->CTRL & ~(_LEUART_CTRL_PARITY_MASK |
-                                   _LEUART_CTRL_STOPBITS_MASK)) |
-                 (uint32_t)(init->databits) |
-                 (uint32_t)(init->parity) |
-                 (uint32_t)(init->stopbits);
+  leuart->CTRL = (leuart->CTRL & ~(_LEUART_CTRL_PARITY_MASK
+                                   | _LEUART_CTRL_STOPBITS_MASK))
+                 | (uint32_t)(init->databits)
+                 | (uint32_t)(init->parity)
+                 | (uint32_t)(init->stopbits);
 
   /* Configure baudrate */
   LEUART_BaudrateSet(leuart, init->refFreq, init->baudrate);
 
   /* Finally enable (as specified) */
-  leuart->CMD = (uint32_t)(init->enable);
+  leuart->CMD = (uint32_t)init->enable;
 
   /* Unfreeze registers, pass new settings on to LEUART */
   LEUART_FreezeEnable(leuart, false);
@@ -503,8 +501,8 @@
   LEUART_FreezeEnable(leuart, true);
 
   /* Make sure disabled first, before resetting other registers */
-  leuart->CMD = LEUART_CMD_RXDIS | LEUART_CMD_TXDIS | LEUART_CMD_RXBLOCKDIS |
-                LEUART_CMD_CLEARTX | LEUART_CMD_CLEARRX;
+  leuart->CMD = LEUART_CMD_RXDIS | LEUART_CMD_TXDIS | LEUART_CMD_RXBLOCKDIS
+                | LEUART_CMD_CLEARTX | LEUART_CMD_CLEARRX;
   leuart->CTRL       = _LEUART_CTRL_RESETVALUE;
   leuart->CLKDIV     = _LEUART_CLKDIV_RESETVALUE;
   leuart->STARTFRAME = _LEUART_STARTFRAME_RESETVALUE;
@@ -512,7 +510,12 @@
   leuart->IEN        = _LEUART_IEN_RESETVALUE;
   leuart->IFC        = _LEUART_IFC_MASK;
   leuart->PULSECTRL  = _LEUART_PULSECTRL_RESETVALUE;
+#if defined(_LEUART_ROUTEPEN_MASK)
+  leuart->ROUTEPEN   = _LEUART_ROUTEPEN_RESETVALUE;
+  leuart->ROUTELOC0  = _LEUART_ROUTELOC0_RESETVALUE;
+#else
   leuart->ROUTE      = _LEUART_ROUTE_RESETVALUE;
+#endif
 
   /* Unfreeze registers, pass new settings on to LEUART */
   LEUART_FreezeEnable(leuart, false);
@@ -545,7 +548,7 @@
   while (!(leuart->STATUS & LEUART_STATUS_RXDATAV))
     ;
 
-  return (uint8_t)(leuart->RXDATA);
+  return (uint8_t)leuart->RXDATA;
 }
 
 
@@ -571,7 +574,7 @@
   while (!(leuart->STATUS & LEUART_STATUS_RXDATAV))
     ;
 
-  return (uint16_t)(leuart->RXDATAX);
+  return (uint16_t)leuart->RXDATAX;
 }
 
 
@@ -628,7 +631,7 @@
  * @param[in] data
  *   Data to transmit with extended control. Least significant bits contains
  *   frame bits, and additional control bits are available as documented in
- *   the EFM32 reference manual (set to 0 if not used).
+ *   the reference manual (set to 0 if not used).
  ******************************************************************************/
 void LEUART_TxExt(LEUART_TypeDef *leuart, uint16_t data)
 {