added prescaler for 16 bit pwm in LPC1347 target

Fork of mbed-dev by mbed official

Committer:
<>
Date:
Fri Sep 02 15:07:44 2016 +0100
Revision:
144:ef7eb2e8f9f7
Parent:
50:a417edff4437
This updates the lib to the mbed lib v125

Who changed what in which revision?

UserRevisionLine numberNew contents of line
<> 144:ef7eb2e8f9f7 1 /***************************************************************************//**
<> 144:ef7eb2e8f9f7 2 * @file em_system.c
<> 144:ef7eb2e8f9f7 3 * @brief System Peripheral API
<> 144:ef7eb2e8f9f7 4 * @version 4.2.1
<> 144:ef7eb2e8f9f7 5 *******************************************************************************
<> 144:ef7eb2e8f9f7 6 * @section License
<> 144:ef7eb2e8f9f7 7 * <b>(C) Copyright 2015 Silicon Labs, http://www.silabs.com</b>
<> 144:ef7eb2e8f9f7 8 *******************************************************************************
<> 144:ef7eb2e8f9f7 9 *
<> 144:ef7eb2e8f9f7 10 * Permission is granted to anyone to use this software for any purpose,
<> 144:ef7eb2e8f9f7 11 * including commercial applications, and to alter it and redistribute it
<> 144:ef7eb2e8f9f7 12 * freely, subject to the following restrictions:
<> 144:ef7eb2e8f9f7 13 *
<> 144:ef7eb2e8f9f7 14 * 1. The origin of this software must not be misrepresented; you must not
<> 144:ef7eb2e8f9f7 15 * claim that you wrote the original software.
<> 144:ef7eb2e8f9f7 16 * 2. Altered source versions must be plainly marked as such, and must not be
<> 144:ef7eb2e8f9f7 17 * misrepresented as being the original software.
<> 144:ef7eb2e8f9f7 18 * 3. This notice may not be removed or altered from any source distribution.
<> 144:ef7eb2e8f9f7 19 *
<> 144:ef7eb2e8f9f7 20 * DISCLAIMER OF WARRANTY/LIMITATION OF REMEDIES: Silicon Labs has no
<> 144:ef7eb2e8f9f7 21 * obligation to support this Software. Silicon Labs is providing the
<> 144:ef7eb2e8f9f7 22 * Software "AS IS", with no express or implied warranties of any kind,
<> 144:ef7eb2e8f9f7 23 * including, but not limited to, any implied warranties of merchantability
<> 144:ef7eb2e8f9f7 24 * or fitness for any particular purpose or warranties against infringement
<> 144:ef7eb2e8f9f7 25 * of any proprietary rights of a third party.
<> 144:ef7eb2e8f9f7 26 *
<> 144:ef7eb2e8f9f7 27 * Silicon Labs will not be liable for any consequential, incidental, or
<> 144:ef7eb2e8f9f7 28 * special damages, or any other relief, or for any claim by any third party,
<> 144:ef7eb2e8f9f7 29 * arising from your use of this Software.
<> 144:ef7eb2e8f9f7 30 *
<> 144:ef7eb2e8f9f7 31 ******************************************************************************/
<> 144:ef7eb2e8f9f7 32
<> 144:ef7eb2e8f9f7 33 #include "em_system.h"
<> 144:ef7eb2e8f9f7 34 #include "em_assert.h"
<> 144:ef7eb2e8f9f7 35
<> 144:ef7eb2e8f9f7 36 /***************************************************************************//**
<> 144:ef7eb2e8f9f7 37 * @addtogroup EM_Library
<> 144:ef7eb2e8f9f7 38 * @{
<> 144:ef7eb2e8f9f7 39 ******************************************************************************/
<> 144:ef7eb2e8f9f7 40
<> 144:ef7eb2e8f9f7 41 /***************************************************************************//**
<> 144:ef7eb2e8f9f7 42 * @addtogroup SYSTEM
<> 144:ef7eb2e8f9f7 43 * @brief System Peripheral API
<> 144:ef7eb2e8f9f7 44 * @{
<> 144:ef7eb2e8f9f7 45 ******************************************************************************/
<> 144:ef7eb2e8f9f7 46
<> 144:ef7eb2e8f9f7 47 /*******************************************************************************
<> 144:ef7eb2e8f9f7 48 ************************** GLOBAL FUNCTIONS *******************************
<> 144:ef7eb2e8f9f7 49 ******************************************************************************/
<> 144:ef7eb2e8f9f7 50
<> 144:ef7eb2e8f9f7 51 /***************************************************************************//**
<> 144:ef7eb2e8f9f7 52 * @brief
<> 144:ef7eb2e8f9f7 53 * Get chip major/minor revision.
<> 144:ef7eb2e8f9f7 54 *
<> 144:ef7eb2e8f9f7 55 * @param[out] rev
<> 144:ef7eb2e8f9f7 56 * Location to place chip revision info.
<> 144:ef7eb2e8f9f7 57 ******************************************************************************/
<> 144:ef7eb2e8f9f7 58 void SYSTEM_ChipRevisionGet(SYSTEM_ChipRevision_TypeDef *rev)
<> 144:ef7eb2e8f9f7 59 {
<> 144:ef7eb2e8f9f7 60 uint8_t tmp;
<> 144:ef7eb2e8f9f7 61
<> 144:ef7eb2e8f9f7 62 EFM_ASSERT(rev);
<> 144:ef7eb2e8f9f7 63
<> 144:ef7eb2e8f9f7 64 /* CHIP FAMILY bit [5:2] */
<> 144:ef7eb2e8f9f7 65 tmp = (((ROMTABLE->PID1 & _ROMTABLE_PID1_FAMILYMSB_MASK) >> _ROMTABLE_PID1_FAMILYMSB_SHIFT) << 2);
<> 144:ef7eb2e8f9f7 66 /* CHIP FAMILY bit [1:0] */
<> 144:ef7eb2e8f9f7 67 tmp |= ((ROMTABLE->PID0 & _ROMTABLE_PID0_FAMILYLSB_MASK) >> _ROMTABLE_PID0_FAMILYLSB_SHIFT);
<> 144:ef7eb2e8f9f7 68 rev->family = tmp;
<> 144:ef7eb2e8f9f7 69
<> 144:ef7eb2e8f9f7 70 /* CHIP MAJOR bit [3:0] */
<> 144:ef7eb2e8f9f7 71 rev->major = (ROMTABLE->PID0 & _ROMTABLE_PID0_REVMAJOR_MASK) >> _ROMTABLE_PID0_REVMAJOR_SHIFT;
<> 144:ef7eb2e8f9f7 72
<> 144:ef7eb2e8f9f7 73 /* CHIP MINOR bit [7:4] */
<> 144:ef7eb2e8f9f7 74 tmp = (((ROMTABLE->PID2 & _ROMTABLE_PID2_REVMINORMSB_MASK) >> _ROMTABLE_PID2_REVMINORMSB_SHIFT) << 4);
<> 144:ef7eb2e8f9f7 75 /* CHIP MINOR bit [3:0] */
<> 144:ef7eb2e8f9f7 76 tmp |= ((ROMTABLE->PID3 & _ROMTABLE_PID3_REVMINORLSB_MASK) >> _ROMTABLE_PID3_REVMINORLSB_SHIFT);
<> 144:ef7eb2e8f9f7 77 rev->minor = tmp;
<> 144:ef7eb2e8f9f7 78 }
<> 144:ef7eb2e8f9f7 79
<> 144:ef7eb2e8f9f7 80
<> 144:ef7eb2e8f9f7 81 #if defined(CALIBRATE)
<> 144:ef7eb2e8f9f7 82 /***************************************************************************//**
<> 144:ef7eb2e8f9f7 83 * @brief
<> 144:ef7eb2e8f9f7 84 * Get factory calibration value for a given peripheral register.
<> 144:ef7eb2e8f9f7 85 *
<> 144:ef7eb2e8f9f7 86 * @param[in] regAddress
<> 144:ef7eb2e8f9f7 87 * Address of register to get a calibration value for.
<> 144:ef7eb2e8f9f7 88 *
<> 144:ef7eb2e8f9f7 89 * @return
<> 144:ef7eb2e8f9f7 90 * Calibration value for the requested register.
<> 144:ef7eb2e8f9f7 91 ******************************************************************************/
<> 144:ef7eb2e8f9f7 92 uint32_t SYSTEM_GetCalibrationValue(volatile uint32_t *regAddress)
<> 144:ef7eb2e8f9f7 93 {
<> 144:ef7eb2e8f9f7 94 int regCount;
<> 144:ef7eb2e8f9f7 95 CALIBRATE_TypeDef *p;
<> 144:ef7eb2e8f9f7 96
<> 144:ef7eb2e8f9f7 97 regCount = 1;
<> 144:ef7eb2e8f9f7 98 p = CALIBRATE;
<> 144:ef7eb2e8f9f7 99
<> 144:ef7eb2e8f9f7 100 for (;; )
<> 144:ef7eb2e8f9f7 101 {
<> 144:ef7eb2e8f9f7 102 if ((regCount > CALIBRATE_MAX_REGISTERS) ||
<> 144:ef7eb2e8f9f7 103 (p->VALUE == 0xFFFFFFFF))
<> 144:ef7eb2e8f9f7 104 {
<> 144:ef7eb2e8f9f7 105 EFM_ASSERT(false);
<> 144:ef7eb2e8f9f7 106 return 0; /* End of device calibration table reached. */
<> 144:ef7eb2e8f9f7 107 }
<> 144:ef7eb2e8f9f7 108
<> 144:ef7eb2e8f9f7 109 if (p->ADDRESS == (uint32_t)regAddress)
<> 144:ef7eb2e8f9f7 110 {
<> 144:ef7eb2e8f9f7 111 return p->VALUE; /* Calibration value found ! */
<> 144:ef7eb2e8f9f7 112 }
<> 144:ef7eb2e8f9f7 113
<> 144:ef7eb2e8f9f7 114 p++;
<> 144:ef7eb2e8f9f7 115 regCount++;
<> 144:ef7eb2e8f9f7 116 }
<> 144:ef7eb2e8f9f7 117 }
<> 144:ef7eb2e8f9f7 118 #endif /* defined (CALIBRATE) */
<> 144:ef7eb2e8f9f7 119
<> 144:ef7eb2e8f9f7 120 /** @} (end addtogroup SYSTEM) */
<> 144:ef7eb2e8f9f7 121 /** @} (end addtogroup EM_Library) */