mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Committer:
mbed_official
Date:
Wed Apr 02 21:00:08 2014 +0100
Revision:
146:f64d43ff0c18
Synchronized with git revision d537c51d26da35e031d537f7fc90380fc74cb207

Full URL: https://github.com/mbedmicro/mbed/commit/d537c51d26da35e031d537f7fc90380fc74cb207/

target K64F

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 146:f64d43ff0c18 1 /*
mbed_official 146:f64d43ff0c18 2 ** ###################################################################
mbed_official 146:f64d43ff0c18 3 ** Processor: MK64FN1M0VMD12
mbed_official 146:f64d43ff0c18 4 ** Compilers: ARM Compiler
mbed_official 146:f64d43ff0c18 5 ** Freescale C/C++ for Embedded ARM
mbed_official 146:f64d43ff0c18 6 ** GNU C Compiler
mbed_official 146:f64d43ff0c18 7 ** GNU C Compiler - CodeSourcery Sourcery G++
mbed_official 146:f64d43ff0c18 8 ** IAR ANSI C/C++ Compiler for ARM
mbed_official 146:f64d43ff0c18 9 **
mbed_official 146:f64d43ff0c18 10 ** Reference manual: K64P144M120SF5RM, Rev.1, July 2013
mbed_official 146:f64d43ff0c18 11 ** Version: rev. 2.1, 2013-10-29
mbed_official 146:f64d43ff0c18 12 **
mbed_official 146:f64d43ff0c18 13 ** Abstract:
mbed_official 146:f64d43ff0c18 14 ** Provides a system configuration function and a global variable that
mbed_official 146:f64d43ff0c18 15 ** contains the system frequency. It configures the device and initializes
mbed_official 146:f64d43ff0c18 16 ** the oscillator (PLL) that is part of the microcontroller device.
mbed_official 146:f64d43ff0c18 17 **
mbed_official 146:f64d43ff0c18 18 ** Copyright: 2013 Freescale, Inc. All Rights Reserved.
mbed_official 146:f64d43ff0c18 19 **
mbed_official 146:f64d43ff0c18 20 ** http: www.freescale.com
mbed_official 146:f64d43ff0c18 21 ** mail: support@freescale.com
mbed_official 146:f64d43ff0c18 22 **
mbed_official 146:f64d43ff0c18 23 ** Revisions:
mbed_official 146:f64d43ff0c18 24 ** - rev. 1.0 (2013-08-12)
mbed_official 146:f64d43ff0c18 25 ** Initial version.
mbed_official 146:f64d43ff0c18 26 ** - rev. 2.0 (2013-10-29)
mbed_official 146:f64d43ff0c18 27 ** Register accessor macros added to the memory map.
mbed_official 146:f64d43ff0c18 28 ** Symbols for Processor Expert memory map compatibility added to the memory map.
mbed_official 146:f64d43ff0c18 29 ** Startup file for gcc has been updated according to CMSIS 3.2.
mbed_official 146:f64d43ff0c18 30 ** System initialization updated.
mbed_official 146:f64d43ff0c18 31 ** MCG - registers updated.
mbed_official 146:f64d43ff0c18 32 ** PORTA, PORTB, PORTC, PORTE - registers for digital filter removed.
mbed_official 146:f64d43ff0c18 33 ** - rev. 2.1 (2013-10-29)
mbed_official 146:f64d43ff0c18 34 ** Definition of BITBAND macros updated to support peripherals with 32-bit acces disabled.
mbed_official 146:f64d43ff0c18 35 **
mbed_official 146:f64d43ff0c18 36 ** ###################################################################
mbed_official 146:f64d43ff0c18 37 */
mbed_official 146:f64d43ff0c18 38
mbed_official 146:f64d43ff0c18 39 /*!
mbed_official 146:f64d43ff0c18 40 * @file MK64F12
mbed_official 146:f64d43ff0c18 41 * @version 2.1
mbed_official 146:f64d43ff0c18 42 * @date 2013-10-29
mbed_official 146:f64d43ff0c18 43 * @brief Device specific configuration file for MK64F12 (implementation file)
mbed_official 146:f64d43ff0c18 44 *
mbed_official 146:f64d43ff0c18 45 * Provides a system configuration function and a global variable that contains
mbed_official 146:f64d43ff0c18 46 * the system frequency. It configures the device and initializes the oscillator
mbed_official 146:f64d43ff0c18 47 * (PLL) that is part of the microcontroller device.
mbed_official 146:f64d43ff0c18 48 */
mbed_official 146:f64d43ff0c18 49
mbed_official 146:f64d43ff0c18 50 #include <stdint.h>
mbed_official 146:f64d43ff0c18 51 #include "MK64F12.h"
mbed_official 146:f64d43ff0c18 52
mbed_official 146:f64d43ff0c18 53 #define DISABLE_WDOG 1
mbed_official 146:f64d43ff0c18 54
mbed_official 146:f64d43ff0c18 55 #ifndef CLOCK_SETUP
mbed_official 146:f64d43ff0c18 56 #define CLOCK_SETUP 4
mbed_official 146:f64d43ff0c18 57 #endif
mbed_official 146:f64d43ff0c18 58 /* Predefined clock setups
mbed_official 146:f64d43ff0c18 59 0 ... Multipurpose Clock Generator (MCG) in FLL Engaged Internal (FEI) mode
mbed_official 146:f64d43ff0c18 60 Default part configuration.
mbed_official 146:f64d43ff0c18 61 Reference clock source for MCG module is the slow internal clock source 32.768kHz
mbed_official 146:f64d43ff0c18 62 Core clock = 20.97MHz, BusClock = 20.97MHz
mbed_official 146:f64d43ff0c18 63 1 ... Multipurpose Clock Generator (MCG) in PLL Engaged External (PEE) mode
mbed_official 146:f64d43ff0c18 64 Maximum achievable clock frequency configuration.
mbed_official 146:f64d43ff0c18 65 Reference clock source for MCG module is an external clock source 50MHz
mbed_official 146:f64d43ff0c18 66 Core clock = 120MHz, BusClock = 60MHz
mbed_official 146:f64d43ff0c18 67 2 ... Multipurpose Clock Generator (MCG) in Bypassed Low Power Internal (BLPI) mode
mbed_official 146:f64d43ff0c18 68 Core clock/Bus clock derived directly from an fast internal clock 4MHz with no multiplication
mbed_official 146:f64d43ff0c18 69 The clock settings is ready for Very Low Power Run mode.
mbed_official 146:f64d43ff0c18 70 Core clock = 4MHz, BusClock = 4MHz
mbed_official 146:f64d43ff0c18 71 3 ... Multipurpose Clock Generator (MCG) in Bypassed Low Power External (BLPE) mode
mbed_official 146:f64d43ff0c18 72 Core clock/Bus clock derived directly from the RTC oscillator clock source 32.768kHz
mbed_official 146:f64d43ff0c18 73 The clock settings is ready for Very Low Power Run mode.
mbed_official 146:f64d43ff0c18 74 Core clock = 32.768kHz, BusClock = 32.768kHz
mbed_official 146:f64d43ff0c18 75 4 ... Multipurpose Clock Generator (MCG) in PLL Engaged External (PEE) mode
mbed_official 146:f64d43ff0c18 76 USB clock setup
mbed_official 146:f64d43ff0c18 77 USB clock divider is set for USB to receive 48MHz input clock.
mbed_official 146:f64d43ff0c18 78 Reference clock source for MCG module is an external clock source 50MHz
mbed_official 146:f64d43ff0c18 79 USB clock divider is set for USB to receive 48MHz input clock.
mbed_official 146:f64d43ff0c18 80 Core clock = 120MHz, BusClock = 60MHz
mbed_official 146:f64d43ff0c18 81 */
mbed_official 146:f64d43ff0c18 82
mbed_official 146:f64d43ff0c18 83 /*----------------------------------------------------------------------------
mbed_official 146:f64d43ff0c18 84 Define clock source values
mbed_official 146:f64d43ff0c18 85 *----------------------------------------------------------------------------*/
mbed_official 146:f64d43ff0c18 86 #if (CLOCK_SETUP == 0)
mbed_official 146:f64d43ff0c18 87 #define CPU_XTAL_CLK_HZ 50000000u /* Value of the external crystal or oscillator clock frequency in Hz */
mbed_official 146:f64d43ff0c18 88 #define CPU_XTAL32k_CLK_HZ 32768u /* Value of the external 32k crystal or oscillator clock frequency in Hz */
mbed_official 146:f64d43ff0c18 89 #define CPU_INT_SLOW_CLK_HZ 32768u /* Value of the slow internal oscillator clock frequency in Hz */
mbed_official 146:f64d43ff0c18 90 #define CPU_INT_FAST_CLK_HZ 4000000u /* Value of the fast internal oscillator clock frequency in Hz */
mbed_official 146:f64d43ff0c18 91 #define DEFAULT_SYSTEM_CLOCK 20485760u /* Default System clock value */
mbed_official 146:f64d43ff0c18 92 #elif (CLOCK_SETUP == 1)
mbed_official 146:f64d43ff0c18 93 #define CPU_XTAL_CLK_HZ 50000000u /* Value of the external crystal or oscillator clock frequency in Hz */
mbed_official 146:f64d43ff0c18 94 #define CPU_XTAL32k_CLK_HZ 32768u /* Value of the external 32k crystal or oscillator clock frequency in Hz */
mbed_official 146:f64d43ff0c18 95 #define CPU_INT_SLOW_CLK_HZ 32768u /* Value of the slow internal oscillator clock frequency in Hz */
mbed_official 146:f64d43ff0c18 96 #define CPU_INT_FAST_CLK_HZ 4000000u /* Value of the fast internal oscillator clock frequency in Hz */
mbed_official 146:f64d43ff0c18 97 #define DEFAULT_SYSTEM_CLOCK 120000000u /* Default System clock value */
mbed_official 146:f64d43ff0c18 98 #elif (CLOCK_SETUP == 2)
mbed_official 146:f64d43ff0c18 99 #define CPU_XTAL_CLK_HZ 50000000u /* Value of the external crystal or oscillator clock frequency in Hz */
mbed_official 146:f64d43ff0c18 100 #define CPU_XTAL32k_CLK_HZ 32768u /* Value of the external 32k crystal or oscillator clock frequency in Hz */
mbed_official 146:f64d43ff0c18 101 #define CPU_INT_SLOW_CLK_HZ 32768u /* Value of the slow internal oscillator clock frequency in Hz */
mbed_official 146:f64d43ff0c18 102 #define CPU_INT_FAST_CLK_HZ 4000000u /* Value of the fast internal oscillator clock frequency in Hz */
mbed_official 146:f64d43ff0c18 103 #define DEFAULT_SYSTEM_CLOCK 4000000u /* Default System clock value */
mbed_official 146:f64d43ff0c18 104 #elif (CLOCK_SETUP == 3)
mbed_official 146:f64d43ff0c18 105 #define CPU_XTAL_CLK_HZ 50000000u /* Value of the external crystal or oscillator clock frequency in Hz */
mbed_official 146:f64d43ff0c18 106 #define CPU_XTAL32k_CLK_HZ 32768u /* Value of the external 32k crystal or oscillator clock frequency in Hz */
mbed_official 146:f64d43ff0c18 107 #define CPU_INT_SLOW_CLK_HZ 32768u /* Value of the slow internal oscillator clock frequency in Hz */
mbed_official 146:f64d43ff0c18 108 #define CPU_INT_FAST_CLK_HZ 4000000u /* Value of the fast internal oscillator clock frequency in Hz */
mbed_official 146:f64d43ff0c18 109 #define DEFAULT_SYSTEM_CLOCK 32768u /* Default System clock value */
mbed_official 146:f64d43ff0c18 110 #elif (CLOCK_SETUP == 4)
mbed_official 146:f64d43ff0c18 111 #define CPU_XTAL_CLK_HZ 50000000u /* Value of the external crystal or oscillator clock frequency in Hz */
mbed_official 146:f64d43ff0c18 112 #define CPU_XTAL32k_CLK_HZ 32768u /* Value of the external 32k crystal or oscillator clock frequency in Hz */
mbed_official 146:f64d43ff0c18 113 #define CPU_INT_SLOW_CLK_HZ 32768u /* Value of the slow internal oscillator clock frequency in Hz */
mbed_official 146:f64d43ff0c18 114 #define CPU_INT_FAST_CLK_HZ 4000000u /* Value of the fast internal oscillator clock frequency in Hz */
mbed_official 146:f64d43ff0c18 115 #define DEFAULT_SYSTEM_CLOCK 120000000u /* Default System clock value */
mbed_official 146:f64d43ff0c18 116 #endif /* (CLOCK_SETUP == 4) */
mbed_official 146:f64d43ff0c18 117
mbed_official 146:f64d43ff0c18 118
mbed_official 146:f64d43ff0c18 119 /* ----------------------------------------------------------------------------
mbed_official 146:f64d43ff0c18 120 -- Core clock
mbed_official 146:f64d43ff0c18 121 ---------------------------------------------------------------------------- */
mbed_official 146:f64d43ff0c18 122
mbed_official 146:f64d43ff0c18 123 uint32_t SystemCoreClock = DEFAULT_SYSTEM_CLOCK;
mbed_official 146:f64d43ff0c18 124
mbed_official 146:f64d43ff0c18 125 /* ----------------------------------------------------------------------------
mbed_official 146:f64d43ff0c18 126 -- SystemInit()
mbed_official 146:f64d43ff0c18 127 ---------------------------------------------------------------------------- */
mbed_official 146:f64d43ff0c18 128
mbed_official 146:f64d43ff0c18 129 void SystemInit (void) {
mbed_official 146:f64d43ff0c18 130 #if ((__FPU_PRESENT == 1) && (__FPU_USED == 1))
mbed_official 146:f64d43ff0c18 131 SCB->CPACR |= ((3UL << 10*2) | (3UL << 11*2)); /* set CP10, CP11 Full Access */
mbed_official 146:f64d43ff0c18 132 #endif /* ((__FPU_PRESENT == 1) && (__FPU_USED == 1)) */
mbed_official 146:f64d43ff0c18 133 #if (DISABLE_WDOG)
mbed_official 146:f64d43ff0c18 134 /* Disable the WDOG module */
mbed_official 146:f64d43ff0c18 135 /* WDOG->UNLOCK: WDOGUNLOCK=0xC520 */
mbed_official 146:f64d43ff0c18 136 WDOG->UNLOCK = WDOG_UNLOCK_WDOGUNLOCK(0xC520); /* Key 1 */
mbed_official 146:f64d43ff0c18 137 /* WDOG->UNLOCK: WDOGUNLOCK=0xD928 */
mbed_official 146:f64d43ff0c18 138 WDOG->UNLOCK = WDOG_UNLOCK_WDOGUNLOCK(0xD928); /* Key 2 */
mbed_official 146:f64d43ff0c18 139 /* WDOG->STCTRLH: ?=0,DISTESTWDOG=0,BYTESEL=0,TESTSEL=0,TESTWDOG=0,?=0,?=1,WAITEN=1,STOPEN=1,DBGEN=0,ALLOWUPDATE=1,WINEN=0,IRQRSTEN=0,CLKSRC=1,WDOGEN=0 */
mbed_official 146:f64d43ff0c18 140 WDOG->STCTRLH = WDOG_STCTRLH_BYTESEL(0x00) |
mbed_official 146:f64d43ff0c18 141 WDOG_STCTRLH_WAITEN_MASK |
mbed_official 146:f64d43ff0c18 142 WDOG_STCTRLH_STOPEN_MASK |
mbed_official 146:f64d43ff0c18 143 WDOG_STCTRLH_ALLOWUPDATE_MASK |
mbed_official 146:f64d43ff0c18 144 WDOG_STCTRLH_CLKSRC_MASK |
mbed_official 146:f64d43ff0c18 145 0x0100U;
mbed_official 146:f64d43ff0c18 146 #endif /* (DISABLE_WDOG) */
mbed_official 146:f64d43ff0c18 147
mbed_official 146:f64d43ff0c18 148 /*
mbed_official 146:f64d43ff0c18 149 * Release hold with ACKISO: Only has an effect if recovering from VLLSx.
mbed_official 146:f64d43ff0c18 150 * if ACKISO is set you must clear ackiso before initializing the PLL
mbed_official 146:f64d43ff0c18 151 * if osc enabled in low power modes - enable it first before ack
mbed_official 146:f64d43ff0c18 152 */
mbed_official 146:f64d43ff0c18 153 if (PMC->REGSC & PMC_REGSC_ACKISO_MASK)
mbed_official 146:f64d43ff0c18 154 {
mbed_official 146:f64d43ff0c18 155 PMC->REGSC |= PMC_REGSC_ACKISO_MASK;
mbed_official 146:f64d43ff0c18 156 }
mbed_official 146:f64d43ff0c18 157
mbed_official 146:f64d43ff0c18 158 #if (CLOCK_SETUP == 0)
mbed_official 146:f64d43ff0c18 159 /* SIM->CLKDIV1: OUTDIV1=0,OUTDIV2=0,OUTDIV3=1,OUTDIV4=1,?=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0 */
mbed_official 146:f64d43ff0c18 160 SIM->CLKDIV1 = SIM_CLKDIV1_OUTDIV1(0x00) |
mbed_official 146:f64d43ff0c18 161 SIM_CLKDIV1_OUTDIV2(0x00) |
mbed_official 146:f64d43ff0c18 162 SIM_CLKDIV1_OUTDIV3(0x01) |
mbed_official 146:f64d43ff0c18 163 SIM_CLKDIV1_OUTDIV4(0x01); /* Update system prescalers */
mbed_official 146:f64d43ff0c18 164 /* SIM->SOPT2: PLLFLLSEL=0 */
mbed_official 146:f64d43ff0c18 165 SIM->SOPT2 &= (uint32_t)~(uint32_t)(SIM_SOPT2_PLLFLLSEL_MASK); /* Select FLL as a clock source for various peripherals */
mbed_official 146:f64d43ff0c18 166 /* SIM->SOPT1: OSC32KSEL=3 */
mbed_official 146:f64d43ff0c18 167 SIM->SOPT1 |= SIM_SOPT1_OSC32KSEL(0x03); /* LPO 1kHz oscillator drives 32 kHz clock for various peripherals */
mbed_official 146:f64d43ff0c18 168 /* Switch to FEI Mode */
mbed_official 146:f64d43ff0c18 169 /* MCG->C1: CLKS=0,FRDIV=0,IREFS=1,IRCLKEN=1,IREFSTEN=0 */
mbed_official 146:f64d43ff0c18 170 MCG->C1 = MCG_C1_CLKS(0x00) |
mbed_official 146:f64d43ff0c18 171 MCG_C1_FRDIV(0x00) |
mbed_official 146:f64d43ff0c18 172 MCG_C1_IREFS_MASK |
mbed_official 146:f64d43ff0c18 173 MCG_C1_IRCLKEN_MASK;
mbed_official 146:f64d43ff0c18 174 /* MCG->C2: LOCRE0=0,?=0,RANGE0=0,HGO0=0,EREFS0=0,LP=0,IRCS=0 */
mbed_official 146:f64d43ff0c18 175 MCG->C2 = MCG_C2_RANGE0(0x00);
mbed_official 146:f64d43ff0c18 176 /* MCG->C4: DMX32=0,DRST_DRS=0 */
mbed_official 146:f64d43ff0c18 177 MCG->C4 &= (uint8_t)~(uint8_t)((MCG_C4_DMX32_MASK | MCG_C4_DRST_DRS(0x03)));
mbed_official 146:f64d43ff0c18 178 /* OSC->CR: ERCLKEN=1,?=0,EREFSTEN=0,?=0,SC2P=0,SC4P=0,SC8P=0,SC16P=0 */
mbed_official 146:f64d43ff0c18 179 OSC->CR = OSC_CR_ERCLKEN_MASK;
mbed_official 146:f64d43ff0c18 180 /* MCG->C7: OSCSEL=0 */
mbed_official 146:f64d43ff0c18 181 MCG->C7 &= (uint8_t)~(uint8_t)(MCG_C7_OSCSEL_MASK);
mbed_official 146:f64d43ff0c18 182 /* MCG->C5: ?=0,PLLCLKEN0=0,PLLSTEN0=0,PRDIV0=0 */
mbed_official 146:f64d43ff0c18 183 MCG->C5 = MCG_C5_PRDIV0(0x00);
mbed_official 146:f64d43ff0c18 184 /* MCG->C6: LOLIE0=0,PLLS=0,CME0=0,VDIV0=0 */
mbed_official 146:f64d43ff0c18 185 MCG->C6 = MCG_C6_VDIV0(0x00);
mbed_official 146:f64d43ff0c18 186 while((MCG->S & MCG_S_IREFST_MASK) == 0x00U) { /* Check that the source of the FLL reference clock is the internal reference clock. */
mbed_official 146:f64d43ff0c18 187 }
mbed_official 146:f64d43ff0c18 188 while((MCG->S & 0x0CU) != 0x00U) { /* Wait until output of the FLL is selected */
mbed_official 146:f64d43ff0c18 189 }
mbed_official 146:f64d43ff0c18 190 #elif (CLOCK_SETUP == 1) || (CLOCK_SETUP == 4)
mbed_official 146:f64d43ff0c18 191 /* SIM->SCGC5: PORTA=1 */
mbed_official 146:f64d43ff0c18 192 SIM->SCGC5 |= SIM_SCGC5_PORTA_MASK; /* Enable clock gate for ports to enable pin routing */
mbed_official 146:f64d43ff0c18 193 /* SIM->CLKDIV1: OUTDIV1=0,OUTDIV2=1,OUTDIV3=1,OUTDIV4=4,?=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0 */
mbed_official 146:f64d43ff0c18 194 SIM->CLKDIV1 = SIM_CLKDIV1_OUTDIV1(0x00) |
mbed_official 146:f64d43ff0c18 195 SIM_CLKDIV1_OUTDIV2(0x01) |
mbed_official 146:f64d43ff0c18 196 SIM_CLKDIV1_OUTDIV3(0x02) |
mbed_official 146:f64d43ff0c18 197 SIM_CLKDIV1_OUTDIV4(0x04); /* Update system prescalers */
mbed_official 146:f64d43ff0c18 198 /* SIM->SOPT2: PLLFLLSEL=1 */
mbed_official 146:f64d43ff0c18 199 SIM->SOPT2 |= SIM_SOPT2_PLLFLLSEL_MASK; /* Select PLL as a clock source for various peripherals */
mbed_official 146:f64d43ff0c18 200 /* SIM->SOPT1: OSC32KSEL=3 */
mbed_official 146:f64d43ff0c18 201 SIM->SOPT1 |= SIM_SOPT1_OSC32KSEL(0x03); /* LPO 1kHz oscillator drives 32 kHz clock for various peripherals */
mbed_official 146:f64d43ff0c18 202 /* PORTA->PCR[18]: ISF=0,MUX=0 */
mbed_official 146:f64d43ff0c18 203 PORTA->PCR[18] &= (uint32_t)~(uint32_t)((PORT_PCR_ISF_MASK | PORT_PCR_MUX(0x07)));
mbed_official 146:f64d43ff0c18 204 /* Switch to FBE Mode */
mbed_official 146:f64d43ff0c18 205 /* MCG->C2: LOCRE0=0,?=0,RANGE0=2,HGO0=0,EREFS0=0,LP=0,IRCS=0 */
mbed_official 146:f64d43ff0c18 206 MCG->C2 = MCG_C2_RANGE0(0x02);
mbed_official 146:f64d43ff0c18 207 /* OSC->CR: ERCLKEN=1,?=0,EREFSTEN=0,?=0,SC2P=0,SC4P=0,SC8P=0,SC16P=0 */
mbed_official 146:f64d43ff0c18 208 OSC->CR = OSC_CR_ERCLKEN_MASK;
mbed_official 146:f64d43ff0c18 209 /* MCG->C7: OSCSEL=0 */
mbed_official 146:f64d43ff0c18 210 MCG->C7 &= (uint8_t)~(uint8_t)(MCG_C7_OSCSEL_MASK);
mbed_official 146:f64d43ff0c18 211 /* MCG->C1: CLKS=2,FRDIV=5,IREFS=0,IRCLKEN=1,IREFSTEN=0 */
mbed_official 146:f64d43ff0c18 212 MCG->C1 = (MCG_C1_CLKS(0x02) | MCG_C1_FRDIV(0x07) | MCG_C1_IRCLKEN_MASK);
mbed_official 146:f64d43ff0c18 213 /* MCG->C4: DMX32=0,DRST_DRS=0 */
mbed_official 146:f64d43ff0c18 214 MCG->C4 &= (uint8_t)~(uint8_t)((MCG_C4_DMX32_MASK | MCG_C4_DRST_DRS(0x03)));
mbed_official 146:f64d43ff0c18 215 /* MCG->C5: ?=0,PLLCLKEN0=0,PLLSTEN0=0,PRDIV0=0x13 */
mbed_official 146:f64d43ff0c18 216 MCG->C5 = MCG_C5_PRDIV0(0x13);
mbed_official 146:f64d43ff0c18 217 /* MCG->C6: LOLIE0=0,PLLS=0,CME0=0,VDIV0=0x18 */
mbed_official 146:f64d43ff0c18 218 MCG->C6 = MCG_C6_VDIV0(0x18);
mbed_official 146:f64d43ff0c18 219 while((MCG->S & MCG_S_IREFST_MASK) != 0x00U) { /* Check that the source of the FLL reference clock is the external reference clock. */
mbed_official 146:f64d43ff0c18 220 }
mbed_official 146:f64d43ff0c18 221 while((MCG->S & 0x0CU) != 0x08U) { /* Wait until external reference clock is selected as MCG output */
mbed_official 146:f64d43ff0c18 222 }
mbed_official 146:f64d43ff0c18 223 /* Switch to PBE Mode */
mbed_official 146:f64d43ff0c18 224 /* MCG->C6: LOLIE0=0,PLLS=1,CME0=0,VDIV0=0x18 */
mbed_official 146:f64d43ff0c18 225 MCG->C6 = (MCG_C6_PLLS_MASK | MCG_C6_VDIV0(0x18));
mbed_official 146:f64d43ff0c18 226 while((MCG->S & 0x0CU) != 0x08U) { /* Wait until external reference clock is selected as MCG output */
mbed_official 146:f64d43ff0c18 227 }
mbed_official 146:f64d43ff0c18 228 while((MCG->S & MCG_S_LOCK0_MASK) == 0x00U) { /* Wait until locked */
mbed_official 146:f64d43ff0c18 229 }
mbed_official 146:f64d43ff0c18 230 /* Switch to PEE Mode */
mbed_official 146:f64d43ff0c18 231 /* MCG->C1: CLKS=0,FRDIV=5,IREFS=0,IRCLKEN=1,IREFSTEN=0 */
mbed_official 146:f64d43ff0c18 232 MCG->C1 = (MCG_C1_CLKS(0x00) | MCG_C1_FRDIV(0x05) | MCG_C1_IRCLKEN_MASK);
mbed_official 146:f64d43ff0c18 233 while((MCG->S & 0x0CU) != 0x0CU) { /* Wait until output of the PLL is selected */
mbed_official 146:f64d43ff0c18 234 }
mbed_official 146:f64d43ff0c18 235 #if (CLOCK_SETUP == 4)
mbed_official 146:f64d43ff0c18 236 /* Set USB input clock to 48MHz */
mbed_official 146:f64d43ff0c18 237 /* SIM->CLKDIV2: USBDIV=4,USBFRAC=1 */
mbed_official 146:f64d43ff0c18 238 SIM->CLKDIV2 = (uint32_t)((SIM->CLKDIV2 & (uint32_t)~(uint32_t)(
mbed_official 146:f64d43ff0c18 239 SIM_CLKDIV2_USBDIV(0x03)
mbed_official 146:f64d43ff0c18 240 )) | (uint32_t)(
mbed_official 146:f64d43ff0c18 241 SIM_CLKDIV2_USBDIV(0x04) |
mbed_official 146:f64d43ff0c18 242 SIM_CLKDIV2_USBFRAC_MASK
mbed_official 146:f64d43ff0c18 243 ));
mbed_official 146:f64d43ff0c18 244 #endif
mbed_official 146:f64d43ff0c18 245 #elif (CLOCK_SETUP == 2)
mbed_official 146:f64d43ff0c18 246 /* SIM->CLKDIV1: OUTDIV1=0,OUTDIV2=0,OUTDIV3=0,OUTDIV4=4,?=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0 */
mbed_official 146:f64d43ff0c18 247 SIM->CLKDIV1 = SIM_CLKDIV1_OUTDIV1(0x00) |
mbed_official 146:f64d43ff0c18 248 SIM_CLKDIV1_OUTDIV2(0x00) |
mbed_official 146:f64d43ff0c18 249 SIM_CLKDIV1_OUTDIV3(0x00) |
mbed_official 146:f64d43ff0c18 250 SIM_CLKDIV1_OUTDIV4(0x04); /* Update system prescalers */
mbed_official 146:f64d43ff0c18 251 /* SIM->SOPT2: PLLFLLSEL=0 */
mbed_official 146:f64d43ff0c18 252 SIM->SOPT2 &= (uint32_t)~(uint32_t)(SIM_SOPT2_PLLFLLSEL_MASK); /* Select FLL as a clock source for various peripherals */
mbed_official 146:f64d43ff0c18 253 /* SIM->SOPT1: OSC32KSEL=3 */
mbed_official 146:f64d43ff0c18 254 SIM->SOPT1 |= SIM_SOPT1_OSC32KSEL(0x03); /* LPO 1kHz oscillator drives 32 kHz clock for various peripherals */
mbed_official 146:f64d43ff0c18 255 /* MCG->SC: FCRDIV=0 */
mbed_official 146:f64d43ff0c18 256 MCG->SC &= (uint8_t)~(uint8_t)(MCG_SC_FCRDIV(0x07));
mbed_official 146:f64d43ff0c18 257 /* Switch to FBI Mode */
mbed_official 146:f64d43ff0c18 258 /* MCG->C1: CLKS=1,FRDIV=0,IREFS=1,IRCLKEN=1,IREFSTEN=0 */
mbed_official 146:f64d43ff0c18 259 MCG->C1 = MCG_C1_CLKS(0x01) |
mbed_official 146:f64d43ff0c18 260 MCG_C1_FRDIV(0x00) |
mbed_official 146:f64d43ff0c18 261 MCG_C1_IREFS_MASK |
mbed_official 146:f64d43ff0c18 262 MCG_C1_IRCLKEN_MASK;
mbed_official 146:f64d43ff0c18 263 /* MCG->C2: LOCRE0=0,?=0,RANGE0=0,HGO0=0,EREFS0=0,LP=0,IRCS=1 */
mbed_official 146:f64d43ff0c18 264 MCG->C2 = (MCG_C2_RANGE0(0x00) | MCG_C2_IRCS_MASK);
mbed_official 146:f64d43ff0c18 265 /* MCG->C4: DMX32=0,DRST_DRS=0 */
mbed_official 146:f64d43ff0c18 266 MCG->C4 &= (uint8_t)~(uint8_t)((MCG_C4_DMX32_MASK | MCG_C4_DRST_DRS(0x03)));
mbed_official 146:f64d43ff0c18 267 /* OSC->CR: ERCLKEN=1,?=0,EREFSTEN=0,?=0,SC2P=0,SC4P=0,SC8P=0,SC16P=0 */
mbed_official 146:f64d43ff0c18 268 OSC->CR = OSC_CR_ERCLKEN_MASK;
mbed_official 146:f64d43ff0c18 269 /* MCG->C7: OSCSEL=0 */
mbed_official 146:f64d43ff0c18 270 MCG->C7 &= (uint8_t)~(uint8_t)(MCG_C7_OSCSEL_MASK);
mbed_official 146:f64d43ff0c18 271 /* MCG->C5: ?=0,PLLCLKEN0=0,PLLSTEN0=0,PRDIV0=0 */
mbed_official 146:f64d43ff0c18 272 MCG->C5 = MCG_C5_PRDIV0(0x00);
mbed_official 146:f64d43ff0c18 273 /* MCG->C6: LOLIE0=0,PLLS=0,CME0=0,VDIV0=0 */
mbed_official 146:f64d43ff0c18 274 MCG->C6 = MCG_C6_VDIV0(0x00);
mbed_official 146:f64d43ff0c18 275 while((MCG->S & MCG_S_IREFST_MASK) == 0x00U) { /* Check that the source of the FLL reference clock is the internal reference clock. */
mbed_official 146:f64d43ff0c18 276 }
mbed_official 146:f64d43ff0c18 277 while((MCG->S & 0x0CU) != 0x04U) { /* Wait until internal reference clock is selected as MCG output */
mbed_official 146:f64d43ff0c18 278 }
mbed_official 146:f64d43ff0c18 279 /* Switch to BLPI Mode */
mbed_official 146:f64d43ff0c18 280 /* MCG->C2: LOCRE0=0,?=0,RANGE0=0,HGO0=0,EREFS0=0,LP=1,IRCS=1 */
mbed_official 146:f64d43ff0c18 281 MCG->C2 = (MCG_C2_RANGE0(0x00) | MCG_C2_LP_MASK | MCG_C2_IRCS_MASK);
mbed_official 146:f64d43ff0c18 282 while((MCG->S & MCG_S_IREFST_MASK) == 0x00U) { /* Check that the source of the FLL reference clock is the internal reference clock. */
mbed_official 146:f64d43ff0c18 283 }
mbed_official 146:f64d43ff0c18 284 while((MCG->S & MCG_S_IRCST_MASK) == 0x00U) { /* Check that the fast external reference clock is selected. */
mbed_official 146:f64d43ff0c18 285 }
mbed_official 146:f64d43ff0c18 286 #elif (CLOCK_SETUP == 3)
mbed_official 146:f64d43ff0c18 287 /* SIM->SCGC6: RTC=1 */
mbed_official 146:f64d43ff0c18 288 SIM->SCGC6 |= SIM_SCGC6_RTC_MASK;
mbed_official 146:f64d43ff0c18 289 if ((RTC->CR & RTC_CR_OSCE_MASK) == 0u) { /* Only if the OSCILLATOR is not already enabled */
mbed_official 146:f64d43ff0c18 290 /* RTC->CR: SC2P=0,SC4P=0,SC8P=0,SC16P=0 */
mbed_official 146:f64d43ff0c18 291 RTC->CR &= (uint32_t)~(uint32_t)(
mbed_official 146:f64d43ff0c18 292 RTC_CR_SC2P_MASK |
mbed_official 146:f64d43ff0c18 293 RTC_CR_SC4P_MASK |
mbed_official 146:f64d43ff0c18 294 RTC_CR_SC8P_MASK |
mbed_official 146:f64d43ff0c18 295 RTC_CR_SC16P_MASK
mbed_official 146:f64d43ff0c18 296 );
mbed_official 146:f64d43ff0c18 297 /* RTC->CR: OSCE=1 */
mbed_official 146:f64d43ff0c18 298 RTC->CR |= RTC_CR_OSCE_MASK;
mbed_official 146:f64d43ff0c18 299 /* RTC->CR: CLKO=0 */
mbed_official 146:f64d43ff0c18 300 RTC->CR &= (uint32_t)~(uint32_t)(RTC_CR_CLKO_MASK);
mbed_official 146:f64d43ff0c18 301 }
mbed_official 146:f64d43ff0c18 302 /* SIM->CLKDIV1: OUTDIV1=0,OUTDIV2=0,OUTDIV3=0,OUTDIV4=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0,?=0 */
mbed_official 146:f64d43ff0c18 303 SIM->CLKDIV1 = SIM_CLKDIV1_OUTDIV1(0x00) |
mbed_official 146:f64d43ff0c18 304 SIM_CLKDIV1_OUTDIV2(0x00) |
mbed_official 146:f64d43ff0c18 305 SIM_CLKDIV1_OUTDIV3(0x00) |
mbed_official 146:f64d43ff0c18 306 SIM_CLKDIV1_OUTDIV4(0x00); /* Update system prescalers */
mbed_official 146:f64d43ff0c18 307 /* SIM->SOPT1: OSC32KSEL=2 */
mbed_official 146:f64d43ff0c18 308 SIM->SOPT1 = (uint32_t)((SIM->SOPT1 & (uint32_t)~(uint32_t)(
mbed_official 146:f64d43ff0c18 309 SIM_SOPT1_OSC32KSEL(0x01)
mbed_official 146:f64d43ff0c18 310 )) | (uint32_t)(
mbed_official 146:f64d43ff0c18 311 SIM_SOPT1_OSC32KSEL(0x02)
mbed_official 146:f64d43ff0c18 312 )); /* System oscillator drives 32 kHz clock for various peripherals */
mbed_official 146:f64d43ff0c18 313 /* Switch to FBE Mode */
mbed_official 146:f64d43ff0c18 314 /* MCG->C2: LOCRE0=0,?=0,RANGE0=0,HGO0=0,EREFS0=0,LP=0,IRCS=0 */
mbed_official 146:f64d43ff0c18 315 MCG->C2 = MCG_C2_RANGE0(0x00);
mbed_official 146:f64d43ff0c18 316 /* OSC->CR: ERCLKEN=1,?=0,EREFSTEN=0,?=0,SC2P=0,SC4P=0,SC8P=0,SC16P=0 */
mbed_official 146:f64d43ff0c18 317 OSC->CR = OSC_CR_ERCLKEN_MASK;
mbed_official 146:f64d43ff0c18 318 /* MCG->C7: OSCSEL=1 */
mbed_official 146:f64d43ff0c18 319 MCG->C7 |= MCG_C7_OSCSEL_MASK;
mbed_official 146:f64d43ff0c18 320 /* MCG->C1: CLKS=2,FRDIV=0,IREFS=0,IRCLKEN=1,IREFSTEN=0 */
mbed_official 146:f64d43ff0c18 321 MCG->C1 = (MCG_C1_CLKS(0x02) | MCG_C1_FRDIV(0x00) | MCG_C1_IRCLKEN_MASK);
mbed_official 146:f64d43ff0c18 322 /* MCG->C4: DMX32=0,DRST_DRS=0 */
mbed_official 146:f64d43ff0c18 323 MCG->C4 &= (uint8_t)~(uint8_t)((MCG_C4_DMX32_MASK | MCG_C4_DRST_DRS(0x03)));
mbed_official 146:f64d43ff0c18 324 /* MCG->C5: ?=0,PLLCLKEN0=0,PLLSTEN0=0,PRDIV0=0 */
mbed_official 146:f64d43ff0c18 325 MCG->C5 = MCG_C5_PRDIV0(0x00);
mbed_official 146:f64d43ff0c18 326 /* MCG->C6: LOLIE0=0,PLLS=0,CME0=0,VDIV0=0 */
mbed_official 146:f64d43ff0c18 327 MCG->C6 = MCG_C6_VDIV0(0x00);
mbed_official 146:f64d43ff0c18 328 while((MCG->S & MCG_S_IREFST_MASK) != 0x00U) { /* Check that the source of the FLL reference clock is the external reference clock. */
mbed_official 146:f64d43ff0c18 329 }
mbed_official 146:f64d43ff0c18 330 while((MCG->S & 0x0CU) != 0x08U) { /* Wait until external reference clock is selected as MCG output */
mbed_official 146:f64d43ff0c18 331 }
mbed_official 146:f64d43ff0c18 332 /* Switch to BLPE Mode */
mbed_official 146:f64d43ff0c18 333 /* MCG->C2: LOCRE0=0,?=0,RANGE0=0,HGO0=0,EREFS0=0,LP=1,IRCS=0 */
mbed_official 146:f64d43ff0c18 334 MCG->C2 = (MCG_C2_RANGE0(0x00) | MCG_C2_LP_MASK);
mbed_official 146:f64d43ff0c18 335 while((MCG->S & 0x0CU) != 0x08U) { /* Wait until external reference clock is selected as MCG output */
mbed_official 146:f64d43ff0c18 336 }
mbed_official 146:f64d43ff0c18 337 #endif
mbed_official 146:f64d43ff0c18 338 }
mbed_official 146:f64d43ff0c18 339
mbed_official 146:f64d43ff0c18 340 /* ----------------------------------------------------------------------------
mbed_official 146:f64d43ff0c18 341 -- SystemCoreClockUpdate()
mbed_official 146:f64d43ff0c18 342 ---------------------------------------------------------------------------- */
mbed_official 146:f64d43ff0c18 343
mbed_official 146:f64d43ff0c18 344 void SystemCoreClockUpdate (void) {
mbed_official 146:f64d43ff0c18 345 uint32_t MCGOUTClock; /* Variable to store output clock frequency of the MCG module */
mbed_official 146:f64d43ff0c18 346 uint8_t Divider;
mbed_official 146:f64d43ff0c18 347
mbed_official 146:f64d43ff0c18 348 if ((MCG->C1 & MCG_C1_CLKS_MASK) == 0x0u) {
mbed_official 146:f64d43ff0c18 349 /* Output of FLL or PLL is selected */
mbed_official 146:f64d43ff0c18 350 if ((MCG->C6 & MCG_C6_PLLS_MASK) == 0x0u) {
mbed_official 146:f64d43ff0c18 351 /* FLL is selected */
mbed_official 146:f64d43ff0c18 352 if ((MCG->C1 & MCG_C1_IREFS_MASK) == 0x0u) {
mbed_official 146:f64d43ff0c18 353 /* External reference clock is selected */
mbed_official 146:f64d43ff0c18 354 if ((MCG->C7 & MCG_C7_OSCSEL_MASK) == 0x0u) {
mbed_official 146:f64d43ff0c18 355 MCGOUTClock = CPU_XTAL_CLK_HZ; /* System oscillator drives MCG clock */
mbed_official 146:f64d43ff0c18 356 } else { /* (!((MCG->C7 & MCG_C7_OSCSEL_MASK) == 0x0u)) */
mbed_official 146:f64d43ff0c18 357 MCGOUTClock = CPU_XTAL32k_CLK_HZ; /* RTC 32 kHz oscillator drives MCG clock */
mbed_official 146:f64d43ff0c18 358 } /* (!((MCG->C7 & MCG_C7_OSCSEL_MASK) == 0x0u)) */
mbed_official 146:f64d43ff0c18 359 Divider = (uint8_t)(1u << ((MCG->C1 & MCG_C1_FRDIV_MASK) >> MCG_C1_FRDIV_SHIFT));
mbed_official 146:f64d43ff0c18 360 MCGOUTClock = (MCGOUTClock / Divider); /* Calculate the divided FLL reference clock */
mbed_official 146:f64d43ff0c18 361 if ((MCG->C2 & MCG_C2_RANGE0_MASK) != 0x0u) {
mbed_official 146:f64d43ff0c18 362 MCGOUTClock /= 32u; /* If high range is enabled, additional 32 divider is active */
mbed_official 146:f64d43ff0c18 363 } /* ((MCG->C2 & MCG_C2_RANGE0_MASK) != 0x0u) */
mbed_official 146:f64d43ff0c18 364 } else { /* (!((MCG->C1 & MCG_C1_IREFS_MASK) == 0x0u)) */
mbed_official 146:f64d43ff0c18 365 MCGOUTClock = CPU_INT_SLOW_CLK_HZ; /* The slow internal reference clock is selected */
mbed_official 146:f64d43ff0c18 366 } /* (!((MCG->C1 & MCG_C1_IREFS_MASK) == 0x0u)) */
mbed_official 146:f64d43ff0c18 367 /* Select correct multiplier to calculate the MCG output clock */
mbed_official 146:f64d43ff0c18 368 switch (MCG->C4 & (MCG_C4_DMX32_MASK | MCG_C4_DRST_DRS_MASK)) {
mbed_official 146:f64d43ff0c18 369 case 0x0u:
mbed_official 146:f64d43ff0c18 370 MCGOUTClock *= 640u;
mbed_official 146:f64d43ff0c18 371 break;
mbed_official 146:f64d43ff0c18 372 case 0x20u:
mbed_official 146:f64d43ff0c18 373 MCGOUTClock *= 1280u;
mbed_official 146:f64d43ff0c18 374 break;
mbed_official 146:f64d43ff0c18 375 case 0x40u:
mbed_official 146:f64d43ff0c18 376 MCGOUTClock *= 1920u;
mbed_official 146:f64d43ff0c18 377 break;
mbed_official 146:f64d43ff0c18 378 case 0x60u:
mbed_official 146:f64d43ff0c18 379 MCGOUTClock *= 2560u;
mbed_official 146:f64d43ff0c18 380 break;
mbed_official 146:f64d43ff0c18 381 case 0x80u:
mbed_official 146:f64d43ff0c18 382 MCGOUTClock *= 732u;
mbed_official 146:f64d43ff0c18 383 break;
mbed_official 146:f64d43ff0c18 384 case 0xA0u:
mbed_official 146:f64d43ff0c18 385 MCGOUTClock *= 1464u;
mbed_official 146:f64d43ff0c18 386 break;
mbed_official 146:f64d43ff0c18 387 case 0xC0u:
mbed_official 146:f64d43ff0c18 388 MCGOUTClock *= 2197u;
mbed_official 146:f64d43ff0c18 389 break;
mbed_official 146:f64d43ff0c18 390 case 0xE0u:
mbed_official 146:f64d43ff0c18 391 MCGOUTClock *= 2929u;
mbed_official 146:f64d43ff0c18 392 break;
mbed_official 146:f64d43ff0c18 393 default:
mbed_official 146:f64d43ff0c18 394 break;
mbed_official 146:f64d43ff0c18 395 }
mbed_official 146:f64d43ff0c18 396 } else { /* (!((MCG->C6 & MCG_C6_PLLS_MASK) == 0x0u)) */
mbed_official 146:f64d43ff0c18 397 /* PLL is selected */
mbed_official 146:f64d43ff0c18 398 Divider = (1u + (MCG->C5 & MCG_C5_PRDIV0_MASK));
mbed_official 146:f64d43ff0c18 399 MCGOUTClock = (uint32_t)(CPU_XTAL_CLK_HZ / Divider); /* Calculate the PLL reference clock */
mbed_official 146:f64d43ff0c18 400 Divider = ((MCG->C6 & MCG_C6_VDIV0_MASK) + 24u);
mbed_official 146:f64d43ff0c18 401 MCGOUTClock *= Divider; /* Calculate the MCG output clock */
mbed_official 146:f64d43ff0c18 402 } /* (!((MCG->C6 & MCG_C6_PLLS_MASK) == 0x0u)) */
mbed_official 146:f64d43ff0c18 403 } else if ((MCG->C1 & MCG_C1_CLKS_MASK) == 0x40u) {
mbed_official 146:f64d43ff0c18 404 /* Internal reference clock is selected */
mbed_official 146:f64d43ff0c18 405 if ((MCG->C2 & MCG_C2_IRCS_MASK) == 0x0u) {
mbed_official 146:f64d43ff0c18 406 MCGOUTClock = CPU_INT_SLOW_CLK_HZ; /* Slow internal reference clock selected */
mbed_official 146:f64d43ff0c18 407 } else { /* (!((MCG->C2 & MCG_C2_IRCS_MASK) == 0x0u)) */
mbed_official 146:f64d43ff0c18 408 MCGOUTClock = CPU_INT_FAST_CLK_HZ / (1 << ((MCG->SC & MCG_SC_FCRDIV_MASK) >> MCG_SC_FCRDIV_SHIFT)); /* Fast internal reference clock selected */
mbed_official 146:f64d43ff0c18 409 } /* (!((MCG->C2 & MCG_C2_IRCS_MASK) == 0x0u)) */
mbed_official 146:f64d43ff0c18 410 } else if ((MCG->C1 & MCG_C1_CLKS_MASK) == 0x80u) {
mbed_official 146:f64d43ff0c18 411 /* External reference clock is selected */
mbed_official 146:f64d43ff0c18 412 if ((MCG->C7 & MCG_C7_OSCSEL_MASK) == 0x0u) {
mbed_official 146:f64d43ff0c18 413 MCGOUTClock = CPU_XTAL_CLK_HZ; /* System oscillator drives MCG clock */
mbed_official 146:f64d43ff0c18 414 } else { /* (!((MCG->C7 & MCG_C7_OSCSEL_MASK) == 0x0u)) */
mbed_official 146:f64d43ff0c18 415 MCGOUTClock = CPU_XTAL32k_CLK_HZ; /* RTC 32 kHz oscillator drives MCG clock */
mbed_official 146:f64d43ff0c18 416 } /* (!((MCG->C7 & MCG_C7_OSCSEL_MASK) == 0x0u)) */
mbed_official 146:f64d43ff0c18 417 } else { /* (!((MCG->C1 & MCG_C1_CLKS_MASK) == 0x80u)) */
mbed_official 146:f64d43ff0c18 418 /* Reserved value */
mbed_official 146:f64d43ff0c18 419 return;
mbed_official 146:f64d43ff0c18 420 } /* (!((MCG->C1 & MCG_C1_CLKS_MASK) == 0x80u)) */
mbed_official 146:f64d43ff0c18 421 SystemCoreClock = (MCGOUTClock / (1u + ((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV1_MASK) >> SIM_CLKDIV1_OUTDIV1_SHIFT)));
mbed_official 146:f64d43ff0c18 422 }