added prescaler for 16 bit pwm in LPC1347 target

Fork of mbed-dev by mbed official

Committer:
mbed_official
Date:
Tue May 03 00:15:16 2016 +0100
Revision:
121:7f86b4238bec
Synchronized with git revision 9cef243de23875778f461bbe9a8c1bc47e65212b

Full URL: https://github.com/mbedmicro/mbed/commit/9cef243de23875778f461bbe9a8c1bc47e65212b/

Switch to KSDK 2.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 121:7f86b4238bec 1 /*
mbed_official 121:7f86b4238bec 2 ** ###################################################################
mbed_official 121:7f86b4238bec 3 ** Processors: MKL27Z32VDA4
mbed_official 121:7f86b4238bec 4 ** MKL27Z32VFM4
mbed_official 121:7f86b4238bec 5 ** MKL27Z32VFT4
mbed_official 121:7f86b4238bec 6 ** MKL27Z32VLH4
mbed_official 121:7f86b4238bec 7 ** MKL27Z32VMP4
mbed_official 121:7f86b4238bec 8 ** MKL27Z64VDA4
mbed_official 121:7f86b4238bec 9 ** MKL27Z64VFM4
mbed_official 121:7f86b4238bec 10 ** MKL27Z64VFT4
mbed_official 121:7f86b4238bec 11 ** MKL27Z64VLH4
mbed_official 121:7f86b4238bec 12 ** MKL27Z64VMP4
mbed_official 121:7f86b4238bec 13 **
mbed_official 121:7f86b4238bec 14 ** Compilers: Keil ARM C/C++ Compiler
mbed_official 121:7f86b4238bec 15 ** Freescale C/C++ for Embedded ARM
mbed_official 121:7f86b4238bec 16 ** GNU C Compiler
mbed_official 121:7f86b4238bec 17 ** IAR ANSI C/C++ Compiler for ARM
mbed_official 121:7f86b4238bec 18 **
mbed_official 121:7f86b4238bec 19 ** Reference manual: KL27P64M48SF2RM, Rev. 1, Sep 2014
mbed_official 121:7f86b4238bec 20 ** Version: rev. 1.4, 2014-09-22
mbed_official 121:7f86b4238bec 21 ** Build: b151217
mbed_official 121:7f86b4238bec 22 **
mbed_official 121:7f86b4238bec 23 ** Abstract:
mbed_official 121:7f86b4238bec 24 ** Provides a system configuration function and a global variable that
mbed_official 121:7f86b4238bec 25 ** contains the system frequency. It configures the device and initializes
mbed_official 121:7f86b4238bec 26 ** the oscillator (PLL) that is part of the microcontroller device.
mbed_official 121:7f86b4238bec 27 **
mbed_official 121:7f86b4238bec 28 ** Copyright (c) 2015 Freescale Semiconductor, Inc.
mbed_official 121:7f86b4238bec 29 ** All rights reserved.
mbed_official 121:7f86b4238bec 30 **
mbed_official 121:7f86b4238bec 31 ** Redistribution and use in source and binary forms, with or without modification,
mbed_official 121:7f86b4238bec 32 ** are permitted provided that the following conditions are met:
mbed_official 121:7f86b4238bec 33 **
mbed_official 121:7f86b4238bec 34 ** o Redistributions of source code must retain the above copyright notice, this list
mbed_official 121:7f86b4238bec 35 ** of conditions and the following disclaimer.
mbed_official 121:7f86b4238bec 36 **
mbed_official 121:7f86b4238bec 37 ** o Redistributions in binary form must reproduce the above copyright notice, this
mbed_official 121:7f86b4238bec 38 ** list of conditions and the following disclaimer in the documentation and/or
mbed_official 121:7f86b4238bec 39 ** other materials provided with the distribution.
mbed_official 121:7f86b4238bec 40 **
mbed_official 121:7f86b4238bec 41 ** o Neither the name of Freescale Semiconductor, Inc. nor the names of its
mbed_official 121:7f86b4238bec 42 ** contributors may be used to endorse or promote products derived from this
mbed_official 121:7f86b4238bec 43 ** software without specific prior written permission.
mbed_official 121:7f86b4238bec 44 **
mbed_official 121:7f86b4238bec 45 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
mbed_official 121:7f86b4238bec 46 ** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
mbed_official 121:7f86b4238bec 47 ** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 121:7f86b4238bec 48 ** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
mbed_official 121:7f86b4238bec 49 ** ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
mbed_official 121:7f86b4238bec 50 ** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
mbed_official 121:7f86b4238bec 51 ** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
mbed_official 121:7f86b4238bec 52 ** ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
mbed_official 121:7f86b4238bec 53 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
mbed_official 121:7f86b4238bec 54 ** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 121:7f86b4238bec 55 **
mbed_official 121:7f86b4238bec 56 ** http: www.freescale.com
mbed_official 121:7f86b4238bec 57 ** mail: support@freescale.com
mbed_official 121:7f86b4238bec 58 **
mbed_official 121:7f86b4238bec 59 ** Revisions:
mbed_official 121:7f86b4238bec 60 ** - rev. 1.0 (2014-05-12)
mbed_official 121:7f86b4238bec 61 ** Initial version.
mbed_official 121:7f86b4238bec 62 ** - rev. 1.1 (2014-07-10)
mbed_official 121:7f86b4238bec 63 ** UART0 - UART0 module renamed to UART2.
mbed_official 121:7f86b4238bec 64 ** - rev. 1.2 (2014-08-12)
mbed_official 121:7f86b4238bec 65 ** CRC - CRC register renamed to DATA.
mbed_official 121:7f86b4238bec 66 ** - rev. 1.3 (2014-09-02)
mbed_official 121:7f86b4238bec 67 ** USB - USB0_CTL0 was renamed to USB0_OTGCTL register.
mbed_official 121:7f86b4238bec 68 ** USB - USB0_CTL1 was renamed to USB0_CTL register.
mbed_official 121:7f86b4238bec 69 ** USB - Two new bitfields (STOP_ACK_DLY_EN, AHB_DLY_EN) was added to the USB0_KEEP_ALIVE_CTRL register.
mbed_official 121:7f86b4238bec 70 ** - rev. 1.4 (2014-09-22)
mbed_official 121:7f86b4238bec 71 ** FLEXIO - Offsets of the SHIFTBUFBIS registers were interchanged with offsets of the SHIFTBUFBBS registers.
mbed_official 121:7f86b4238bec 72 ** SIM - Changed bitfield value MCGIRCLK to LIRC_CLK of bitfield CLKOUTSEL in SOPT2 register.
mbed_official 121:7f86b4238bec 73 ** SIM - Removed bitfield DIEID in SDID register.
mbed_official 121:7f86b4238bec 74 ** UART2 - Removed ED register.
mbed_official 121:7f86b4238bec 75 ** UART2 - Removed MODEM register.
mbed_official 121:7f86b4238bec 76 ** UART2 - Removed IR register.
mbed_official 121:7f86b4238bec 77 ** UART2 - Removed PFIFO register.
mbed_official 121:7f86b4238bec 78 ** UART2 - Removed CFIFO register.
mbed_official 121:7f86b4238bec 79 ** UART2 - Removed SFIFO register.
mbed_official 121:7f86b4238bec 80 ** UART2 - Removed TWFIFO register.
mbed_official 121:7f86b4238bec 81 ** UART2 - Removed TCFIFO register.
mbed_official 121:7f86b4238bec 82 ** UART2 - Removed RWFIFO register.
mbed_official 121:7f86b4238bec 83 ** UART2 - Removed RCFIFO register.
mbed_official 121:7f86b4238bec 84 ** USB - Removed bitfield REG_EN in CLK_RECOVER_IRC_EN register.
mbed_official 121:7f86b4238bec 85 ** USB - Renamed USBEN bitfield of USB0_CTL was renamed to USBENSOFEN.
mbed_official 121:7f86b4238bec 86 **
mbed_official 121:7f86b4238bec 87 ** ###################################################################
mbed_official 121:7f86b4238bec 88 */
mbed_official 121:7f86b4238bec 89
mbed_official 121:7f86b4238bec 90 /*!
mbed_official 121:7f86b4238bec 91 * @file MKL27Z644
mbed_official 121:7f86b4238bec 92 * @version 1.4
mbed_official 121:7f86b4238bec 93 * @date 2014-09-22
mbed_official 121:7f86b4238bec 94 * @brief Device specific configuration file for MKL27Z644 (implementation file)
mbed_official 121:7f86b4238bec 95 *
mbed_official 121:7f86b4238bec 96 * Provides a system configuration function and a global variable that contains
mbed_official 121:7f86b4238bec 97 * the system frequency. It configures the device and initializes the oscillator
mbed_official 121:7f86b4238bec 98 * (PLL) that is part of the microcontroller device.
mbed_official 121:7f86b4238bec 99 */
mbed_official 121:7f86b4238bec 100
mbed_official 121:7f86b4238bec 101 #include <stdint.h>
mbed_official 121:7f86b4238bec 102 #include "fsl_device_registers.h"
mbed_official 121:7f86b4238bec 103
mbed_official 121:7f86b4238bec 104
mbed_official 121:7f86b4238bec 105
mbed_official 121:7f86b4238bec 106 /* ----------------------------------------------------------------------------
mbed_official 121:7f86b4238bec 107 -- Core clock
mbed_official 121:7f86b4238bec 108 ---------------------------------------------------------------------------- */
mbed_official 121:7f86b4238bec 109
mbed_official 121:7f86b4238bec 110 uint32_t SystemCoreClock = DEFAULT_SYSTEM_CLOCK;
mbed_official 121:7f86b4238bec 111
mbed_official 121:7f86b4238bec 112 /* ----------------------------------------------------------------------------
mbed_official 121:7f86b4238bec 113 -- SystemInit()
mbed_official 121:7f86b4238bec 114 ---------------------------------------------------------------------------- */
mbed_official 121:7f86b4238bec 115
mbed_official 121:7f86b4238bec 116 void SystemInit (void) {
mbed_official 121:7f86b4238bec 117
mbed_official 121:7f86b4238bec 118 #if (ACK_ISOLATION)
mbed_official 121:7f86b4238bec 119 if(PMC->REGSC & PMC_REGSC_ACKISO_MASK) {
mbed_official 121:7f86b4238bec 120 PMC->REGSC |= PMC_REGSC_ACKISO_MASK; /* VLLSx recovery */
mbed_official 121:7f86b4238bec 121 }
mbed_official 121:7f86b4238bec 122 #endif
mbed_official 121:7f86b4238bec 123 #if (DISABLE_WDOG)
mbed_official 121:7f86b4238bec 124 /* SIM->COPC: ?=0,COPCLKSEL=0,COPDBGEN=0,COPSTPEN=0,COPT=0,COPCLKS=0,COPW=0 */
mbed_official 121:7f86b4238bec 125 SIM->COPC = (uint32_t)0x00u;
mbed_official 121:7f86b4238bec 126 #endif /* (DISABLE_WDOG) */
mbed_official 121:7f86b4238bec 127
mbed_official 121:7f86b4238bec 128 }
mbed_official 121:7f86b4238bec 129
mbed_official 121:7f86b4238bec 130 /* ----------------------------------------------------------------------------
mbed_official 121:7f86b4238bec 131 -- SystemCoreClockUpdate()
mbed_official 121:7f86b4238bec 132 ---------------------------------------------------------------------------- */
mbed_official 121:7f86b4238bec 133
mbed_official 121:7f86b4238bec 134 void SystemCoreClockUpdate (void) {
mbed_official 121:7f86b4238bec 135
mbed_official 121:7f86b4238bec 136 uint32_t MCGOUTClock; /* Variable to store output clock frequency of the MCG module */
mbed_official 121:7f86b4238bec 137 uint16_t Divider;
mbed_official 121:7f86b4238bec 138
mbed_official 121:7f86b4238bec 139 if ((MCG->S & MCG_S_CLKST_MASK) == 0x00U) {
mbed_official 121:7f86b4238bec 140 /* High internal reference clock is selected */
mbed_official 121:7f86b4238bec 141 MCGOUTClock = CPU_INT_FAST_CLK_HZ; /* Fast internal reference clock selected */
mbed_official 121:7f86b4238bec 142 } else if ((MCG->S & MCG_S_CLKST_MASK) == 0x04U) {
mbed_official 121:7f86b4238bec 143 /* Internal reference clock is selected */
mbed_official 121:7f86b4238bec 144 Divider = (uint16_t)(0x01LU << ((MCG->SC & MCG_SC_FCRDIV_MASK) >> MCG_SC_FCRDIV_SHIFT));
mbed_official 121:7f86b4238bec 145 MCGOUTClock = (uint32_t) (CPU_INT_SLOW_CLK_HZ / Divider); /* Slow internal reference clock 8MHz selected */
mbed_official 121:7f86b4238bec 146 } else if ((MCG->S & MCG_S_CLKST_MASK) == 0x08U) {
mbed_official 121:7f86b4238bec 147 /* External reference clock is selected */
mbed_official 121:7f86b4238bec 148 MCGOUTClock = CPU_XTAL_CLK_HZ;
mbed_official 121:7f86b4238bec 149 } else {
mbed_official 121:7f86b4238bec 150 /* Reserved value */
mbed_official 121:7f86b4238bec 151 return;
mbed_official 121:7f86b4238bec 152 } /* (!((MCG->S & MCG_S_CLKST_MASK) == 0x08U)) */
mbed_official 121:7f86b4238bec 153 SystemCoreClock = (MCGOUTClock / (0x01U + ((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV1_MASK) >> SIM_CLKDIV1_OUTDIV1_SHIFT)));
mbed_official 121:7f86b4238bec 154
mbed_official 121:7f86b4238bec 155 }