Lancaster University's (short term!) clone of mbed-src for micro:bit. This is a copy of the github branch https://github.com/lancaster-university/mbed-classic
Fork of mbed-src by
targets/cmsis/TARGET_Freescale/TARGET_KLXX/TARGET_KL26Z/system_MKL26Z4.c@585:a1ed5b41f74f, 2015-07-08 (annotated)
- Committer:
- mbed_official
- Date:
- Wed Jul 08 14:45:08 2015 +0100
- Revision:
- 585:a1ed5b41f74f
Synchronized with git revision 7a2b57896e0263b82f31ddc5a0ad2443615db184
Full URL: https://github.com/mbedmicro/mbed/commit/7a2b57896e0263b82f31ddc5a0ad2443615db184/
Add rtc_api.c
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mbed_official | 585:a1ed5b41f74f | 1 | /* |
mbed_official | 585:a1ed5b41f74f | 2 | ** ################################################################### |
mbed_official | 585:a1ed5b41f74f | 3 | ** Processors: MKL26Z128CAL4 |
mbed_official | 585:a1ed5b41f74f | 4 | ** MKL26Z128VFM4 |
mbed_official | 585:a1ed5b41f74f | 5 | ** MKL26Z64VFM4 |
mbed_official | 585:a1ed5b41f74f | 6 | ** MKL26Z32VM4 |
mbed_official | 585:a1ed5b41f74f | 7 | ** MKL26Z128VFT4 |
mbed_official | 585:a1ed5b41f74f | 8 | ** MKL26Z64VFT4 |
mbed_official | 585:a1ed5b41f74f | 9 | ** MKL26Z32VFT4 |
mbed_official | 585:a1ed5b41f74f | 10 | ** MKL26Z128VLH4 |
mbed_official | 585:a1ed5b41f74f | 11 | ** MKL26Z64VLH4 |
mbed_official | 585:a1ed5b41f74f | 12 | ** MKL26Z32VLH4 |
mbed_official | 585:a1ed5b41f74f | 13 | ** MKL26Z256VLH4 |
mbed_official | 585:a1ed5b41f74f | 14 | ** MKL26Z256VLL4 |
mbed_official | 585:a1ed5b41f74f | 15 | ** MKL26Z128VLL4 |
mbed_official | 585:a1ed5b41f74f | 16 | ** MKL26Z256VMC4 |
mbed_official | 585:a1ed5b41f74f | 17 | ** MKL26Z128VMC4 |
mbed_official | 585:a1ed5b41f74f | 18 | ** MKL26Z256VMP4 |
mbed_official | 585:a1ed5b41f74f | 19 | ** |
mbed_official | 585:a1ed5b41f74f | 20 | ** Compilers: Keil ARM C/C++ Compiler |
mbed_official | 585:a1ed5b41f74f | 21 | ** Freescale C/C++ for Embedded ARM |
mbed_official | 585:a1ed5b41f74f | 22 | ** GNU C Compiler |
mbed_official | 585:a1ed5b41f74f | 23 | ** GNU C Compiler - CodeSourcery Sourcery G++ |
mbed_official | 585:a1ed5b41f74f | 24 | ** IAR ANSI C/C++ Compiler for ARM |
mbed_official | 585:a1ed5b41f74f | 25 | ** |
mbed_official | 585:a1ed5b41f74f | 26 | ** Reference manuals: KL26P121M48SF4RM Rev. 3.2, October 2013 |
mbed_official | 585:a1ed5b41f74f | 27 | ** KL26P121M48SF4RM, Rev.2, Dec 2012 |
mbed_official | 585:a1ed5b41f74f | 28 | ** |
mbed_official | 585:a1ed5b41f74f | 29 | ** Version: rev. 1.7, 2015-01-13 |
mbed_official | 585:a1ed5b41f74f | 30 | ** Build: b150129 |
mbed_official | 585:a1ed5b41f74f | 31 | ** |
mbed_official | 585:a1ed5b41f74f | 32 | ** Abstract: |
mbed_official | 585:a1ed5b41f74f | 33 | ** Provides a system configuration function and a global variable that |
mbed_official | 585:a1ed5b41f74f | 34 | ** contains the system frequency. It configures the device and initializes |
mbed_official | 585:a1ed5b41f74f | 35 | ** the oscillator (PLL) that is part of the microcontroller device. |
mbed_official | 585:a1ed5b41f74f | 36 | ** |
mbed_official | 585:a1ed5b41f74f | 37 | ** Copyright (c) 2015 Freescale Semiconductor, Inc. |
mbed_official | 585:a1ed5b41f74f | 38 | ** All rights reserved. |
mbed_official | 585:a1ed5b41f74f | 39 | ** |
mbed_official | 585:a1ed5b41f74f | 40 | ** Redistribution and use in source and binary forms, with or without modification, |
mbed_official | 585:a1ed5b41f74f | 41 | ** are permitted provided that the following conditions are met: |
mbed_official | 585:a1ed5b41f74f | 42 | ** |
mbed_official | 585:a1ed5b41f74f | 43 | ** o Redistributions of source code must retain the above copyright notice, this list |
mbed_official | 585:a1ed5b41f74f | 44 | ** of conditions and the following disclaimer. |
mbed_official | 585:a1ed5b41f74f | 45 | ** |
mbed_official | 585:a1ed5b41f74f | 46 | ** o Redistributions in binary form must reproduce the above copyright notice, this |
mbed_official | 585:a1ed5b41f74f | 47 | ** list of conditions and the following disclaimer in the documentation and/or |
mbed_official | 585:a1ed5b41f74f | 48 | ** other materials provided with the distribution. |
mbed_official | 585:a1ed5b41f74f | 49 | ** |
mbed_official | 585:a1ed5b41f74f | 50 | ** o Neither the name of Freescale Semiconductor, Inc. nor the names of its |
mbed_official | 585:a1ed5b41f74f | 51 | ** contributors may be used to endorse or promote products derived from this |
mbed_official | 585:a1ed5b41f74f | 52 | ** software without specific prior written permission. |
mbed_official | 585:a1ed5b41f74f | 53 | ** |
mbed_official | 585:a1ed5b41f74f | 54 | ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND |
mbed_official | 585:a1ed5b41f74f | 55 | ** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
mbed_official | 585:a1ed5b41f74f | 56 | ** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
mbed_official | 585:a1ed5b41f74f | 57 | ** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR |
mbed_official | 585:a1ed5b41f74f | 58 | ** ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
mbed_official | 585:a1ed5b41f74f | 59 | ** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
mbed_official | 585:a1ed5b41f74f | 60 | ** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON |
mbed_official | 585:a1ed5b41f74f | 61 | ** ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
mbed_official | 585:a1ed5b41f74f | 62 | ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
mbed_official | 585:a1ed5b41f74f | 63 | ** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
mbed_official | 585:a1ed5b41f74f | 64 | ** |
mbed_official | 585:a1ed5b41f74f | 65 | ** http: www.freescale.com |
mbed_official | 585:a1ed5b41f74f | 66 | ** mail: support@freescale.com |
mbed_official | 585:a1ed5b41f74f | 67 | ** |
mbed_official | 585:a1ed5b41f74f | 68 | ** Revisions: |
mbed_official | 585:a1ed5b41f74f | 69 | ** - rev. 1.0 (2012-12-12) |
mbed_official | 585:a1ed5b41f74f | 70 | ** Initial version. |
mbed_official | 585:a1ed5b41f74f | 71 | ** - rev. 1.1 (2013-04-05) |
mbed_official | 585:a1ed5b41f74f | 72 | ** Changed start of doxygen comment. |
mbed_official | 585:a1ed5b41f74f | 73 | ** - rev. 1.2 (2013-04-12) |
mbed_official | 585:a1ed5b41f74f | 74 | ** SystemInit function fixed for clock configuration 1. |
mbed_official | 585:a1ed5b41f74f | 75 | ** Name of the interrupt num. 31 updated to reflect proper function. |
mbed_official | 585:a1ed5b41f74f | 76 | ** - rev. 1.3 (2014-05-27) |
mbed_official | 585:a1ed5b41f74f | 77 | ** Updated to Kinetis SDK support standard. |
mbed_official | 585:a1ed5b41f74f | 78 | ** MCG OSC clock select supported (MCG_C7[OSCSEL]). |
mbed_official | 585:a1ed5b41f74f | 79 | ** - rev. 1.4 (2014-07-25) |
mbed_official | 585:a1ed5b41f74f | 80 | ** System initialization updated: |
mbed_official | 585:a1ed5b41f74f | 81 | ** - Prefix added to the system initialization parameterization constants to avoid name conflicts.. |
mbed_official | 585:a1ed5b41f74f | 82 | ** - VLLSx wake-up recovery added. |
mbed_official | 585:a1ed5b41f74f | 83 | ** - Delay of 1 ms added to SystemInit() to ensure stable FLL output in FEI and FEE MCG modes. |
mbed_official | 585:a1ed5b41f74f | 84 | ** - rev. 1.5 (2014-08-28) |
mbed_official | 585:a1ed5b41f74f | 85 | ** Update of system files - default clock configuration changed, fix of OSC initialization. |
mbed_official | 585:a1ed5b41f74f | 86 | ** Update of startup files - possibility to override DefaultISR added. |
mbed_official | 585:a1ed5b41f74f | 87 | ** - rev. 1.6 (2014-10-14) |
mbed_official | 585:a1ed5b41f74f | 88 | ** Renamed interrupt vector LPTimer to LPTMR0 |
mbed_official | 585:a1ed5b41f74f | 89 | ** - rev. 1.7 (2015-01-13) |
mbed_official | 585:a1ed5b41f74f | 90 | ** Update of the copyright. |
mbed_official | 585:a1ed5b41f74f | 91 | ** |
mbed_official | 585:a1ed5b41f74f | 92 | ** ################################################################### |
mbed_official | 585:a1ed5b41f74f | 93 | */ |
mbed_official | 585:a1ed5b41f74f | 94 | |
mbed_official | 585:a1ed5b41f74f | 95 | /*! |
mbed_official | 585:a1ed5b41f74f | 96 | * @file MKL26Z4 |
mbed_official | 585:a1ed5b41f74f | 97 | * @version 1.7 |
mbed_official | 585:a1ed5b41f74f | 98 | * @date 2015-01-13 |
mbed_official | 585:a1ed5b41f74f | 99 | * @brief Device specific configuration file for MKL26Z4 (implementation file) |
mbed_official | 585:a1ed5b41f74f | 100 | * |
mbed_official | 585:a1ed5b41f74f | 101 | * Provides a system configuration function and a global variable that contains |
mbed_official | 585:a1ed5b41f74f | 102 | * the system frequency. It configures the device and initializes the oscillator |
mbed_official | 585:a1ed5b41f74f | 103 | * (PLL) that is part of the microcontroller device. |
mbed_official | 585:a1ed5b41f74f | 104 | */ |
mbed_official | 585:a1ed5b41f74f | 105 | |
mbed_official | 585:a1ed5b41f74f | 106 | #include <stdint.h> |
mbed_official | 585:a1ed5b41f74f | 107 | #include "MKL26Z4.h" |
mbed_official | 585:a1ed5b41f74f | 108 | |
mbed_official | 585:a1ed5b41f74f | 109 | |
mbed_official | 585:a1ed5b41f74f | 110 | |
mbed_official | 585:a1ed5b41f74f | 111 | /* ---------------------------------------------------------------------------- |
mbed_official | 585:a1ed5b41f74f | 112 | -- Core clock |
mbed_official | 585:a1ed5b41f74f | 113 | ---------------------------------------------------------------------------- */ |
mbed_official | 585:a1ed5b41f74f | 114 | |
mbed_official | 585:a1ed5b41f74f | 115 | uint32_t SystemCoreClock = DEFAULT_SYSTEM_CLOCK; |
mbed_official | 585:a1ed5b41f74f | 116 | |
mbed_official | 585:a1ed5b41f74f | 117 | /* ---------------------------------------------------------------------------- |
mbed_official | 585:a1ed5b41f74f | 118 | -- SystemInit() |
mbed_official | 585:a1ed5b41f74f | 119 | ---------------------------------------------------------------------------- */ |
mbed_official | 585:a1ed5b41f74f | 120 | |
mbed_official | 585:a1ed5b41f74f | 121 | void SystemInit (void) { |
mbed_official | 585:a1ed5b41f74f | 122 | |
mbed_official | 585:a1ed5b41f74f | 123 | #if (ACK_ISOLATION) |
mbed_official | 585:a1ed5b41f74f | 124 | if(PMC->REGSC & PMC_REGSC_ACKISO_MASK) { |
mbed_official | 585:a1ed5b41f74f | 125 | PMC->REGSC |= PMC_REGSC_ACKISO_MASK; /* VLLSx recovery */ |
mbed_official | 585:a1ed5b41f74f | 126 | } |
mbed_official | 585:a1ed5b41f74f | 127 | #endif |
mbed_official | 585:a1ed5b41f74f | 128 | |
mbed_official | 585:a1ed5b41f74f | 129 | /* Watchdog disable */ |
mbed_official | 585:a1ed5b41f74f | 130 | #if (DISABLE_WDOG) |
mbed_official | 585:a1ed5b41f74f | 131 | /* SIM_COPC: COPT=0,COPCLKS=0,COPW=0 */ |
mbed_official | 585:a1ed5b41f74f | 132 | SIM->COPC = (uint32_t)0x00u; |
mbed_official | 585:a1ed5b41f74f | 133 | #endif /* (DISABLE_WDOG) */ |
mbed_official | 585:a1ed5b41f74f | 134 | |
mbed_official | 585:a1ed5b41f74f | 135 | #ifdef CLOCK_SETUP |
mbed_official | 585:a1ed5b41f74f | 136 | /* RTC_CLKIN route */ |
mbed_official | 585:a1ed5b41f74f | 137 | #if (RTC_CLKIN_USED) |
mbed_official | 585:a1ed5b41f74f | 138 | /* SIM_SCGC5: PORTC=1 */ |
mbed_official | 585:a1ed5b41f74f | 139 | SIM->SCGC5 |= SIM_SCGC5_PORTC_MASK; |
mbed_official | 585:a1ed5b41f74f | 140 | /* PORTC_PCR1: ISF=0,MUX=1 */ |
mbed_official | 585:a1ed5b41f74f | 141 | PORTC->PCR[1] = (uint32_t)((PORTC->PCR[1] & (uint32_t)~(uint32_t)( |
mbed_official | 585:a1ed5b41f74f | 142 | PORT_PCR_ISF_MASK | |
mbed_official | 585:a1ed5b41f74f | 143 | PORT_PCR_MUX(0x06) |
mbed_official | 585:a1ed5b41f74f | 144 | )) | (uint32_t)( |
mbed_official | 585:a1ed5b41f74f | 145 | PORT_PCR_MUX(0x01) |
mbed_official | 585:a1ed5b41f74f | 146 | )); |
mbed_official | 585:a1ed5b41f74f | 147 | #endif /* (RTC_CLKIN_USED) */ |
mbed_official | 585:a1ed5b41f74f | 148 | |
mbed_official | 585:a1ed5b41f74f | 149 | /* Wake-up from VLLSx? */ |
mbed_official | 585:a1ed5b41f74f | 150 | if((RCM->SRS0 & RCM_SRS0_WAKEUP_MASK) != 0x00U) |
mbed_official | 585:a1ed5b41f74f | 151 | { |
mbed_official | 585:a1ed5b41f74f | 152 | /* VLLSx recovery */ |
mbed_official | 585:a1ed5b41f74f | 153 | if((PMC->REGSC & PMC_REGSC_ACKISO_MASK) != 0x00U) |
mbed_official | 585:a1ed5b41f74f | 154 | { |
mbed_official | 585:a1ed5b41f74f | 155 | PMC->REGSC |= PMC_REGSC_ACKISO_MASK; /* Release hold with ACKISO: Only has an effect if recovering from VLLSx.*/ |
mbed_official | 585:a1ed5b41f74f | 156 | } |
mbed_official | 585:a1ed5b41f74f | 157 | } |
mbed_official | 585:a1ed5b41f74f | 158 | |
mbed_official | 585:a1ed5b41f74f | 159 | /* Power mode protection initialization */ |
mbed_official | 585:a1ed5b41f74f | 160 | #ifdef SYSTEM_SMC_PMPROT_VALUE |
mbed_official | 585:a1ed5b41f74f | 161 | SMC->PMPROT = SYSTEM_SMC_PMPROT_VALUE; |
mbed_official | 585:a1ed5b41f74f | 162 | #endif |
mbed_official | 585:a1ed5b41f74f | 163 | |
mbed_official | 585:a1ed5b41f74f | 164 | /* System clock initialization */ |
mbed_official | 585:a1ed5b41f74f | 165 | /* Internal reference clock trim initialization */ |
mbed_official | 585:a1ed5b41f74f | 166 | #if defined(SLOW_TRIM_ADDRESS) |
mbed_official | 585:a1ed5b41f74f | 167 | if ( *((uint8_t*)SLOW_TRIM_ADDRESS) != 0xFFU) { /* Skip if non-volatile flash memory is erased */ |
mbed_official | 585:a1ed5b41f74f | 168 | MCG->C3 = *((uint8_t*)SLOW_TRIM_ADDRESS); |
mbed_official | 585:a1ed5b41f74f | 169 | #endif /* defined(SLOW_TRIM_ADDRESS) */ |
mbed_official | 585:a1ed5b41f74f | 170 | #if defined(SLOW_FINE_TRIM_ADDRESS) |
mbed_official | 585:a1ed5b41f74f | 171 | MCG->C4 = (MCG->C4 & ~(MCG_C4_SCFTRIM_MASK)) | ((*((uint8_t*) SLOW_FINE_TRIM_ADDRESS)) & MCG_C4_SCFTRIM_MASK); |
mbed_official | 585:a1ed5b41f74f | 172 | #endif |
mbed_official | 585:a1ed5b41f74f | 173 | #if defined(FAST_TRIM_ADDRESS) |
mbed_official | 585:a1ed5b41f74f | 174 | MCG->C4 = (MCG->C4 & ~(MCG_C4_FCTRIM_MASK)) |((*((uint8_t*) FAST_TRIM_ADDRESS)) & MCG_C4_FCTRIM_MASK); |
mbed_official | 585:a1ed5b41f74f | 175 | #endif |
mbed_official | 585:a1ed5b41f74f | 176 | #if defined(FAST_FINE_TRIM_ADDRESS) |
mbed_official | 585:a1ed5b41f74f | 177 | MCG->C2 = (MCG->C2 & ~(MCG_C2_FCFTRIM_MASK)) | ((*((uint8_t*)FAST_TRIM_ADDRESS)) & MCG_C2_FCFTRIM_MASK); |
mbed_official | 585:a1ed5b41f74f | 178 | #endif /* defined(FAST_FINE_TRIM_ADDRESS) */ |
mbed_official | 585:a1ed5b41f74f | 179 | #if defined(SLOW_TRIM_ADDRESS) |
mbed_official | 585:a1ed5b41f74f | 180 | } |
mbed_official | 585:a1ed5b41f74f | 181 | #endif /* defined(SLOW_TRIM_ADDRESS) */ |
mbed_official | 585:a1ed5b41f74f | 182 | |
mbed_official | 585:a1ed5b41f74f | 183 | /* Set system prescalers and clock sources */ |
mbed_official | 585:a1ed5b41f74f | 184 | SIM->CLKDIV1 = SYSTEM_SIM_CLKDIV1_VALUE; /* Set system prescalers */ |
mbed_official | 585:a1ed5b41f74f | 185 | SIM->SOPT1 = ((SIM->SOPT1) & (uint32_t)(~(SIM_SOPT1_OSC32KSEL_MASK))) | ((SYSTEM_SIM_SOPT1_VALUE) & (SIM_SOPT1_OSC32KSEL_MASK)); /* Set 32 kHz clock source (ERCLK32K) */ |
mbed_official | 585:a1ed5b41f74f | 186 | SIM->SOPT2 = ((SIM->SOPT2) & (uint32_t)(~( |
mbed_official | 585:a1ed5b41f74f | 187 | SIM_SOPT2_TPMSRC_MASK | |
mbed_official | 585:a1ed5b41f74f | 188 | SIM_SOPT2_UART0SRC_MASK | |
mbed_official | 585:a1ed5b41f74f | 189 | SIM_SOPT2_PLLFLLSEL_MASK | |
mbed_official | 585:a1ed5b41f74f | 190 | SIM_SOPT2_USBSRC_MASK |
mbed_official | 585:a1ed5b41f74f | 191 | ))) | ((SYSTEM_SIM_SOPT2_VALUE) & ( |
mbed_official | 585:a1ed5b41f74f | 192 | SIM_SOPT2_TPMSRC_MASK | |
mbed_official | 585:a1ed5b41f74f | 193 | SIM_SOPT2_UART0SRC_MASK | |
mbed_official | 585:a1ed5b41f74f | 194 | SIM_SOPT2_PLLFLLSEL_MASK | |
mbed_official | 585:a1ed5b41f74f | 195 | SIM_SOPT2_USBSRC_MASK |
mbed_official | 585:a1ed5b41f74f | 196 | )); /* Select TPM, LPUARTs, USB clock sources. */ |
mbed_official | 585:a1ed5b41f74f | 197 | #if ((MCG_MODE == MCG_MODE_FEI) || (MCG_MODE == MCG_MODE_FBI) || (MCG_MODE == MCG_MODE_BLPI)) |
mbed_official | 585:a1ed5b41f74f | 198 | /* Set MCG and OSC */ |
mbed_official | 585:a1ed5b41f74f | 199 | #if ((((SYSTEM_OSC0_CR_VALUE) & OSC_CR_ERCLKEN_MASK) != 0x00U) || (((SYSTEM_MCG_C5_VALUE) & MCG_C5_PLLCLKEN0_MASK) != 0x00U)) |
mbed_official | 585:a1ed5b41f74f | 200 | /* SIM_SCGC5: PORTA=1 */ |
mbed_official | 585:a1ed5b41f74f | 201 | SIM->SCGC5 |= SIM_SCGC5_PORTA_MASK; |
mbed_official | 585:a1ed5b41f74f | 202 | /* PORTA_PCR18: ISF=0,MUX=0 */ |
mbed_official | 585:a1ed5b41f74f | 203 | PORTA->PCR[18] &= (uint32_t)~(uint32_t)((PORT_PCR_ISF_MASK | PORT_PCR_MUX(0x07))); |
mbed_official | 585:a1ed5b41f74f | 204 | if (((SYSTEM_MCG_C2_VALUE) & MCG_C2_EREFS0_MASK) != 0x00U) { |
mbed_official | 585:a1ed5b41f74f | 205 | /* PORTA_PCR19: ISF=0,MUX=0 */ |
mbed_official | 585:a1ed5b41f74f | 206 | PORTA->PCR[19] &= (uint32_t)~(uint32_t)((PORT_PCR_ISF_MASK | PORT_PCR_MUX(0x07))); |
mbed_official | 585:a1ed5b41f74f | 207 | } |
mbed_official | 585:a1ed5b41f74f | 208 | #endif |
mbed_official | 585:a1ed5b41f74f | 209 | MCG->SC = SYSTEM_MCG_SC_VALUE; /* Set SC (fast clock internal reference divider) */ |
mbed_official | 585:a1ed5b41f74f | 210 | MCG->C1 = SYSTEM_MCG_C1_VALUE; /* Set C1 (clock source selection, FLL ext. reference divider, int. reference enable etc.) */ |
mbed_official | 585:a1ed5b41f74f | 211 | /* Check that the source of the FLL reference clock is the requested one. */ |
mbed_official | 585:a1ed5b41f74f | 212 | if (((SYSTEM_MCG_C1_VALUE) & MCG_C1_IREFS_MASK) != 0x00U) { |
mbed_official | 585:a1ed5b41f74f | 213 | while((MCG->S & MCG_S_IREFST_MASK) == 0x00U) { |
mbed_official | 585:a1ed5b41f74f | 214 | } |
mbed_official | 585:a1ed5b41f74f | 215 | } else { |
mbed_official | 585:a1ed5b41f74f | 216 | while((MCG->S & MCG_S_IREFST_MASK) != 0x00U) { |
mbed_official | 585:a1ed5b41f74f | 217 | } |
mbed_official | 585:a1ed5b41f74f | 218 | } |
mbed_official | 585:a1ed5b41f74f | 219 | MCG->C2 = (MCG->C2 & (uint8_t)(~(MCG_C2_FCFTRIM_MASK))) | (SYSTEM_MCG_C2_VALUE & (uint8_t)(~(MCG_C2_LP_MASK))); /* Set C2 (freq. range, ext. and int. reference selection etc. excluding trim bits; low power bit is set later) */ |
mbed_official | 585:a1ed5b41f74f | 220 | MCG->C4 = ((SYSTEM_MCG_C4_VALUE) & (uint8_t)(~(MCG_C4_FCTRIM_MASK | MCG_C4_SCFTRIM_MASK))) | (MCG->C4 & (MCG_C4_FCTRIM_MASK | MCG_C4_SCFTRIM_MASK)); /* Set C4 (FLL output; trim values not changed) */ |
mbed_official | 585:a1ed5b41f74f | 221 | OSC0->CR = SYSTEM_OSC0_CR_VALUE; /* Set OSC_CR (OSCERCLK enable, oscillator capacitor load) */ |
mbed_official | 585:a1ed5b41f74f | 222 | |
mbed_official | 585:a1ed5b41f74f | 223 | #else /* MCG_MODE */ |
mbed_official | 585:a1ed5b41f74f | 224 | /* Set MCG and OSC */ |
mbed_official | 585:a1ed5b41f74f | 225 | /* SIM_SCGC5: PORTA=1 */ |
mbed_official | 585:a1ed5b41f74f | 226 | SIM->SCGC5 |= SIM_SCGC5_PORTA_MASK; |
mbed_official | 585:a1ed5b41f74f | 227 | /* PORTA_PCR18: ISF=0,MUX=0 */ |
mbed_official | 585:a1ed5b41f74f | 228 | PORTA->PCR[18] &= (uint32_t)~(uint32_t)((PORT_PCR_ISF_MASK | PORT_PCR_MUX(0x07))); |
mbed_official | 585:a1ed5b41f74f | 229 | if (((SYSTEM_MCG_C2_VALUE) & MCG_C2_EREFS0_MASK) != 0x00U) { |
mbed_official | 585:a1ed5b41f74f | 230 | /* PORTA_PCR19: ISF=0,MUX=0 */ |
mbed_official | 585:a1ed5b41f74f | 231 | PORTA->PCR[19] &= (uint32_t)~(uint32_t)((PORT_PCR_ISF_MASK | PORT_PCR_MUX(0x07))); |
mbed_official | 585:a1ed5b41f74f | 232 | } |
mbed_official | 585:a1ed5b41f74f | 233 | MCG->SC = SYSTEM_MCG_SC_VALUE; /* Set SC (fast clock internal reference divider) */ |
mbed_official | 585:a1ed5b41f74f | 234 | MCG->C2 = (MCG->C2 & (uint8_t)(~(MCG_C2_FCFTRIM_MASK))) | (SYSTEM_MCG_C2_VALUE & (uint8_t)(~(MCG_C2_LP_MASK))); /* Set C2 (freq. range, ext. and int. reference selection etc. excluding trim bits; low power bit is set later) */ |
mbed_official | 585:a1ed5b41f74f | 235 | OSC0->CR = SYSTEM_OSC0_CR_VALUE; /* Set OSC_CR (OSCERCLK enable, oscillator capacitor load) */ |
mbed_official | 585:a1ed5b41f74f | 236 | #if (MCG_MODE == MCG_MODE_PEE) |
mbed_official | 585:a1ed5b41f74f | 237 | MCG->C1 = (SYSTEM_MCG_C1_VALUE) | MCG_C1_CLKS(0x02); /* Set C1 (clock source selection, FLL ext. reference divider, int. reference enable etc.) - PBE mode*/ |
mbed_official | 585:a1ed5b41f74f | 238 | #else |
mbed_official | 585:a1ed5b41f74f | 239 | MCG->C1 = SYSTEM_MCG_C1_VALUE; /* Set C1 (clock source selection, FLL ext. reference divider, int. reference enable etc.) */ |
mbed_official | 585:a1ed5b41f74f | 240 | #endif |
mbed_official | 585:a1ed5b41f74f | 241 | if (((SYSTEM_MCG_C2_VALUE) & MCG_C2_EREFS0_MASK) != 0x00U) { |
mbed_official | 585:a1ed5b41f74f | 242 | while((MCG->S & MCG_S_OSCINIT0_MASK) == 0x00U) { /* Check that the oscillator is running */ |
mbed_official | 585:a1ed5b41f74f | 243 | } |
mbed_official | 585:a1ed5b41f74f | 244 | } |
mbed_official | 585:a1ed5b41f74f | 245 | /* Check that the source of the FLL reference clock is the requested one. */ |
mbed_official | 585:a1ed5b41f74f | 246 | if (((SYSTEM_MCG_C1_VALUE) & MCG_C1_IREFS_MASK) != 0x00U) { |
mbed_official | 585:a1ed5b41f74f | 247 | while((MCG->S & MCG_S_IREFST_MASK) == 0x00U) { |
mbed_official | 585:a1ed5b41f74f | 248 | } |
mbed_official | 585:a1ed5b41f74f | 249 | } else { |
mbed_official | 585:a1ed5b41f74f | 250 | while((MCG->S & MCG_S_IREFST_MASK) != 0x00U) { |
mbed_official | 585:a1ed5b41f74f | 251 | } |
mbed_official | 585:a1ed5b41f74f | 252 | } |
mbed_official | 585:a1ed5b41f74f | 253 | MCG->C4 = ((SYSTEM_MCG_C4_VALUE) & (uint8_t)(~(MCG_C4_FCTRIM_MASK | MCG_C4_SCFTRIM_MASK))) | (MCG->C4 & (MCG_C4_FCTRIM_MASK | MCG_C4_SCFTRIM_MASK)); /* Set C4 (FLL output; trim values not changed) */ |
mbed_official | 585:a1ed5b41f74f | 254 | #endif /* MCG_MODE */ |
mbed_official | 585:a1ed5b41f74f | 255 | |
mbed_official | 585:a1ed5b41f74f | 256 | /* Common for all MCG modes */ |
mbed_official | 585:a1ed5b41f74f | 257 | |
mbed_official | 585:a1ed5b41f74f | 258 | /* PLL clock can be used to generate clock for some devices regardless of clock generator (MCGOUTCLK) mode. */ |
mbed_official | 585:a1ed5b41f74f | 259 | MCG->C5 = (SYSTEM_MCG_C5_VALUE) & (uint8_t)(~(MCG_C5_PLLCLKEN0_MASK)); /* Set C5 (PLL settings, PLL reference divider etc.) */ |
mbed_official | 585:a1ed5b41f74f | 260 | MCG->C6 = (SYSTEM_MCG_C6_VALUE) & (uint8_t)~(MCG_C6_PLLS_MASK); /* Set C6 (PLL select, VCO divider etc.) */ |
mbed_official | 585:a1ed5b41f74f | 261 | if ((SYSTEM_MCG_C5_VALUE) & MCG_C5_PLLCLKEN0_MASK) { |
mbed_official | 585:a1ed5b41f74f | 262 | MCG->C5 |= MCG_C5_PLLCLKEN0_MASK; /* PLL clock enable in mode other than PEE or PBE */ |
mbed_official | 585:a1ed5b41f74f | 263 | } |
mbed_official | 585:a1ed5b41f74f | 264 | |
mbed_official | 585:a1ed5b41f74f | 265 | /* BLPI and BLPE MCG mode specific */ |
mbed_official | 585:a1ed5b41f74f | 266 | #if ((MCG_MODE == MCG_MODE_BLPI) || (MCG_MODE == MCG_MODE_BLPE)) |
mbed_official | 585:a1ed5b41f74f | 267 | MCG->C2 |= (MCG_C2_LP_MASK); /* Disable FLL and PLL in bypass mode */ |
mbed_official | 585:a1ed5b41f74f | 268 | /* PEE and PBE MCG mode specific */ |
mbed_official | 585:a1ed5b41f74f | 269 | #elif ((MCG_MODE == MCG_MODE_PBE) || (MCG_MODE == MCG_MODE_PEE)) |
mbed_official | 585:a1ed5b41f74f | 270 | MCG->C6 |= (MCG_C6_PLLS_MASK); /* Set C6 (PLL select, VCO divider etc.) */ |
mbed_official | 585:a1ed5b41f74f | 271 | while((MCG->S & MCG_S_LOCK0_MASK) == 0x00U) { /* Wait until PLL is locked*/ |
mbed_official | 585:a1ed5b41f74f | 272 | } |
mbed_official | 585:a1ed5b41f74f | 273 | #if (MCG_MODE == MCG_MODE_PEE) |
mbed_official | 585:a1ed5b41f74f | 274 | MCG->C1 &= (uint8_t)~(MCG_C1_CLKS_MASK); |
mbed_official | 585:a1ed5b41f74f | 275 | #endif |
mbed_official | 585:a1ed5b41f74f | 276 | #endif |
mbed_official | 585:a1ed5b41f74f | 277 | |
mbed_official | 585:a1ed5b41f74f | 278 | /* Clock mode status check */ |
mbed_official | 585:a1ed5b41f74f | 279 | #if ((MCG_MODE == MCG_MODE_FEI) || (MCG_MODE == MCG_MODE_FEE)) |
mbed_official | 585:a1ed5b41f74f | 280 | while((MCG->S & MCG_S_CLKST_MASK) != 0x00U) { /* Wait until output of the FLL is selected */ |
mbed_official | 585:a1ed5b41f74f | 281 | } |
mbed_official | 585:a1ed5b41f74f | 282 | /* Use LPTMR to wait for 1ms for FLL clock stabilization */ |
mbed_official | 585:a1ed5b41f74f | 283 | SIM->SCGC5 |= SIM_SCGC5_LPTMR_MASK; /* Allow software control of LPMTR */ |
mbed_official | 585:a1ed5b41f74f | 284 | LPTMR0->CMR = LPTMR_CMR_COMPARE(0); /* Default 1 LPO tick */ |
mbed_official | 585:a1ed5b41f74f | 285 | LPTMR0->CSR = (LPTMR_CSR_TCF_MASK | LPTMR_CSR_TPS(0x00)); |
mbed_official | 585:a1ed5b41f74f | 286 | LPTMR0->PSR = (LPTMR_PSR_PCS(0x01) | LPTMR_PSR_PBYP_MASK); /* Clock source: LPO, Prescaler bypass enable */ |
mbed_official | 585:a1ed5b41f74f | 287 | LPTMR0->CSR = LPTMR_CSR_TEN_MASK; /* LPMTR enable */ |
mbed_official | 585:a1ed5b41f74f | 288 | while((LPTMR0->CSR & LPTMR_CSR_TCF_MASK) == 0u) { |
mbed_official | 585:a1ed5b41f74f | 289 | } |
mbed_official | 585:a1ed5b41f74f | 290 | LPTMR0->CSR = 0x00; /* Disable LPTMR */ |
mbed_official | 585:a1ed5b41f74f | 291 | SIM->SCGC5 &= (uint32_t)~(uint32_t)SIM_SCGC5_LPTMR_MASK; |
mbed_official | 585:a1ed5b41f74f | 292 | #elif ((MCG_MODE == MCG_MODE_FBI) || (MCG_MODE == MCG_MODE_BLPI)) |
mbed_official | 585:a1ed5b41f74f | 293 | while((MCG->S & MCG_S_CLKST_MASK) != 0x04U) { /* Wait until internal reference clock is selected as MCG output */ |
mbed_official | 585:a1ed5b41f74f | 294 | } |
mbed_official | 585:a1ed5b41f74f | 295 | #elif ((MCG_MODE == MCG_MODE_FBE) || (MCG_MODE == MCG_MODE_PBE) || (MCG_MODE == MCG_MODE_BLPE)) |
mbed_official | 585:a1ed5b41f74f | 296 | while((MCG->S & MCG_S_CLKST_MASK) != 0x08U) { /* Wait until external reference clock is selected as MCG output */ |
mbed_official | 585:a1ed5b41f74f | 297 | } |
mbed_official | 585:a1ed5b41f74f | 298 | #elif (MCG_MODE == MCG_MODE_PEE) |
mbed_official | 585:a1ed5b41f74f | 299 | while((MCG->S & MCG_S_CLKST_MASK) != 0x0CU) { /* Wait until output of the PLL is selected */ |
mbed_official | 585:a1ed5b41f74f | 300 | } |
mbed_official | 585:a1ed5b41f74f | 301 | #endif |
mbed_official | 585:a1ed5b41f74f | 302 | |
mbed_official | 585:a1ed5b41f74f | 303 | /* Very-low-power run mode enable */ |
mbed_official | 585:a1ed5b41f74f | 304 | #if (((SYSTEM_SMC_PMCTRL_VALUE) & SMC_PMCTRL_RUNM_MASK) == (0x02U << SMC_PMCTRL_RUNM_SHIFT)) |
mbed_official | 585:a1ed5b41f74f | 305 | SMC->PMCTRL = (uint8_t)((SYSTEM_SMC_PMCTRL_VALUE) & (SMC_PMCTRL_RUNM_MASK)); /* Enable VLPR mode */ |
mbed_official | 585:a1ed5b41f74f | 306 | while(SMC->PMSTAT != 0x04U) { /* Wait until the system is in VLPR mode */ |
mbed_official | 585:a1ed5b41f74f | 307 | } |
mbed_official | 585:a1ed5b41f74f | 308 | #endif |
mbed_official | 585:a1ed5b41f74f | 309 | |
mbed_official | 585:a1ed5b41f74f | 310 | /* PLL loss of lock interrupt request initialization */ |
mbed_official | 585:a1ed5b41f74f | 311 | if (((SYSTEM_MCG_C6_VALUE) & MCG_C6_LOLIE0_MASK) != 0U) { |
mbed_official | 585:a1ed5b41f74f | 312 | NVIC_EnableIRQ(MCG_IRQn); /* Enable PLL loss of lock interrupt request */ |
mbed_official | 585:a1ed5b41f74f | 313 | } |
mbed_official | 585:a1ed5b41f74f | 314 | #endif //#ifdef CLOCK_SETUP |
mbed_official | 585:a1ed5b41f74f | 315 | |
mbed_official | 585:a1ed5b41f74f | 316 | } |
mbed_official | 585:a1ed5b41f74f | 317 | |
mbed_official | 585:a1ed5b41f74f | 318 | /* ---------------------------------------------------------------------------- |
mbed_official | 585:a1ed5b41f74f | 319 | -- SystemCoreClockUpdate() |
mbed_official | 585:a1ed5b41f74f | 320 | ---------------------------------------------------------------------------- */ |
mbed_official | 585:a1ed5b41f74f | 321 | |
mbed_official | 585:a1ed5b41f74f | 322 | void SystemCoreClockUpdate (void) { |
mbed_official | 585:a1ed5b41f74f | 323 | |
mbed_official | 585:a1ed5b41f74f | 324 | uint32_t MCGOUTClock; /* Variable to store output clock frequency of the MCG module */ |
mbed_official | 585:a1ed5b41f74f | 325 | uint16_t Divider; |
mbed_official | 585:a1ed5b41f74f | 326 | |
mbed_official | 585:a1ed5b41f74f | 327 | if ((MCG->C1 & MCG_C1_CLKS_MASK) == 0x00U) { |
mbed_official | 585:a1ed5b41f74f | 328 | /* Output of FLL or PLL is selected */ |
mbed_official | 585:a1ed5b41f74f | 329 | if ((MCG->C6 & MCG_C6_PLLS_MASK) == 0x00U) { |
mbed_official | 585:a1ed5b41f74f | 330 | /* FLL is selected */ |
mbed_official | 585:a1ed5b41f74f | 331 | if ((MCG->C1 & MCG_C1_IREFS_MASK) == 0x00U) { |
mbed_official | 585:a1ed5b41f74f | 332 | /* External reference clock is selected */ |
mbed_official | 585:a1ed5b41f74f | 333 | MCGOUTClock = CPU_XTAL_CLK_HZ; /* System oscillator drives MCG clock */ |
mbed_official | 585:a1ed5b41f74f | 334 | if ((MCG->C2 & MCG_C2_RANGE0_MASK) != 0x00U) { |
mbed_official | 585:a1ed5b41f74f | 335 | switch (MCG->C1 & MCG_C1_FRDIV_MASK) { |
mbed_official | 585:a1ed5b41f74f | 336 | case 0x38U: |
mbed_official | 585:a1ed5b41f74f | 337 | Divider = 1536U; |
mbed_official | 585:a1ed5b41f74f | 338 | break; |
mbed_official | 585:a1ed5b41f74f | 339 | case 0x30U: |
mbed_official | 585:a1ed5b41f74f | 340 | Divider = 1280U; |
mbed_official | 585:a1ed5b41f74f | 341 | break; |
mbed_official | 585:a1ed5b41f74f | 342 | default: |
mbed_official | 585:a1ed5b41f74f | 343 | Divider = (uint16_t)(32LU << ((MCG->C1 & MCG_C1_FRDIV_MASK) >> MCG_C1_FRDIV_SHIFT)); |
mbed_official | 585:a1ed5b41f74f | 344 | break; |
mbed_official | 585:a1ed5b41f74f | 345 | } |
mbed_official | 585:a1ed5b41f74f | 346 | } else {/* ((MCG->C2 & MCG_C2_RANGE_MASK) != 0x00U) */ |
mbed_official | 585:a1ed5b41f74f | 347 | Divider = (uint16_t)(1LU << ((MCG->C1 & MCG_C1_FRDIV_MASK) >> MCG_C1_FRDIV_SHIFT)); |
mbed_official | 585:a1ed5b41f74f | 348 | } |
mbed_official | 585:a1ed5b41f74f | 349 | MCGOUTClock = (MCGOUTClock / Divider); /* Calculate the divided FLL reference clock */ |
mbed_official | 585:a1ed5b41f74f | 350 | } else { /* (!((MCG->C1 & MCG_C1_IREFS_MASK) == 0x00U)) */ |
mbed_official | 585:a1ed5b41f74f | 351 | MCGOUTClock = CPU_INT_SLOW_CLK_HZ; /* The slow internal reference clock is selected */ |
mbed_official | 585:a1ed5b41f74f | 352 | } /* (!((MCG->C1 & MCG_C1_IREFS_MASK) == 0x00U)) */ |
mbed_official | 585:a1ed5b41f74f | 353 | /* Select correct multiplier to calculate the MCG output clock */ |
mbed_official | 585:a1ed5b41f74f | 354 | switch (MCG->C4 & (MCG_C4_DMX32_MASK | MCG_C4_DRST_DRS_MASK)) { |
mbed_official | 585:a1ed5b41f74f | 355 | case 0x00U: |
mbed_official | 585:a1ed5b41f74f | 356 | MCGOUTClock *= 640U; |
mbed_official | 585:a1ed5b41f74f | 357 | break; |
mbed_official | 585:a1ed5b41f74f | 358 | case 0x20U: |
mbed_official | 585:a1ed5b41f74f | 359 | MCGOUTClock *= 1280U; |
mbed_official | 585:a1ed5b41f74f | 360 | break; |
mbed_official | 585:a1ed5b41f74f | 361 | case 0x40U: |
mbed_official | 585:a1ed5b41f74f | 362 | MCGOUTClock *= 1920U; |
mbed_official | 585:a1ed5b41f74f | 363 | break; |
mbed_official | 585:a1ed5b41f74f | 364 | case 0x60U: |
mbed_official | 585:a1ed5b41f74f | 365 | MCGOUTClock *= 2560U; |
mbed_official | 585:a1ed5b41f74f | 366 | break; |
mbed_official | 585:a1ed5b41f74f | 367 | case 0x80U: |
mbed_official | 585:a1ed5b41f74f | 368 | MCGOUTClock *= 732U; |
mbed_official | 585:a1ed5b41f74f | 369 | break; |
mbed_official | 585:a1ed5b41f74f | 370 | case 0xA0U: |
mbed_official | 585:a1ed5b41f74f | 371 | MCGOUTClock *= 1464U; |
mbed_official | 585:a1ed5b41f74f | 372 | break; |
mbed_official | 585:a1ed5b41f74f | 373 | case 0xC0U: |
mbed_official | 585:a1ed5b41f74f | 374 | MCGOUTClock *= 2197U; |
mbed_official | 585:a1ed5b41f74f | 375 | break; |
mbed_official | 585:a1ed5b41f74f | 376 | case 0xE0U: |
mbed_official | 585:a1ed5b41f74f | 377 | MCGOUTClock *= 2929U; |
mbed_official | 585:a1ed5b41f74f | 378 | break; |
mbed_official | 585:a1ed5b41f74f | 379 | default: |
mbed_official | 585:a1ed5b41f74f | 380 | break; |
mbed_official | 585:a1ed5b41f74f | 381 | } |
mbed_official | 585:a1ed5b41f74f | 382 | } else { /* (!((MCG->C6 & MCG_C6_PLLS_MASK) == 0x00U)) */ |
mbed_official | 585:a1ed5b41f74f | 383 | /* PLL is selected */ |
mbed_official | 585:a1ed5b41f74f | 384 | Divider = (((uint16_t)MCG->C5 & MCG_C5_PRDIV0_MASK) + 0x01U); |
mbed_official | 585:a1ed5b41f74f | 385 | MCGOUTClock = (uint32_t)(CPU_XTAL_CLK_HZ / Divider); /* Calculate the PLL reference clock */ |
mbed_official | 585:a1ed5b41f74f | 386 | Divider = (((uint16_t)MCG->C6 & MCG_C6_VDIV0_MASK) + 24U); |
mbed_official | 585:a1ed5b41f74f | 387 | MCGOUTClock *= Divider; /* Calculate the MCG output clock */ |
mbed_official | 585:a1ed5b41f74f | 388 | } /* (!((MCG->C6 & MCG_C6_PLLS_MASK) == 0x00U)) */ |
mbed_official | 585:a1ed5b41f74f | 389 | } else if ((MCG->C1 & MCG_C1_CLKS_MASK) == 0x40U) { |
mbed_official | 585:a1ed5b41f74f | 390 | /* Internal reference clock is selected */ |
mbed_official | 585:a1ed5b41f74f | 391 | if ((MCG->C2 & MCG_C2_IRCS_MASK) == 0x00U) { |
mbed_official | 585:a1ed5b41f74f | 392 | MCGOUTClock = CPU_INT_SLOW_CLK_HZ; /* Slow internal reference clock selected */ |
mbed_official | 585:a1ed5b41f74f | 393 | } else { /* (!((MCG->C2 & MCG_C2_IRCS_MASK) == 0x00U)) */ |
mbed_official | 585:a1ed5b41f74f | 394 | Divider = (uint16_t)(0x01LU << ((MCG->SC & MCG_SC_FCRDIV_MASK) >> MCG_SC_FCRDIV_SHIFT)); |
mbed_official | 585:a1ed5b41f74f | 395 | MCGOUTClock = (uint32_t) (CPU_INT_FAST_CLK_HZ / Divider); /* Fast internal reference clock selected */ |
mbed_official | 585:a1ed5b41f74f | 396 | } /* (!((MCG->C2 & MCG_C2_IRCS_MASK) == 0x00U)) */ |
mbed_official | 585:a1ed5b41f74f | 397 | } else if ((MCG->C1 & MCG_C1_CLKS_MASK) == 0x80U) { |
mbed_official | 585:a1ed5b41f74f | 398 | /* External reference clock is selected */ |
mbed_official | 585:a1ed5b41f74f | 399 | MCGOUTClock = CPU_XTAL_CLK_HZ; /* System oscillator drives MCG clock */ |
mbed_official | 585:a1ed5b41f74f | 400 | } else { /* (!((MCG->C1 & MCG_C1_CLKS_MASK) == 0x80U)) */ |
mbed_official | 585:a1ed5b41f74f | 401 | /* Reserved value */ |
mbed_official | 585:a1ed5b41f74f | 402 | return; |
mbed_official | 585:a1ed5b41f74f | 403 | } /* (!((MCG->C1 & MCG_C1_CLKS_MASK) == 0x80U)) */ |
mbed_official | 585:a1ed5b41f74f | 404 | SystemCoreClock = (MCGOUTClock / (0x01U + ((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV1_MASK) >> SIM_CLKDIV1_OUTDIV1_SHIFT))); |
mbed_official | 585:a1ed5b41f74f | 405 | |
mbed_official | 585:a1ed5b41f74f | 406 | } |