diff options
Diffstat (limited to 'lib/chibios-contrib/ext/mcux-sdk/devices/K32L2B21A/system_K32L2B21A.c')
-rw-r--r-- | lib/chibios-contrib/ext/mcux-sdk/devices/K32L2B21A/system_K32L2B21A.c | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/lib/chibios-contrib/ext/mcux-sdk/devices/K32L2B21A/system_K32L2B21A.c b/lib/chibios-contrib/ext/mcux-sdk/devices/K32L2B21A/system_K32L2B21A.c new file mode 100644 index 000000000..c85b82aea --- /dev/null +++ b/lib/chibios-contrib/ext/mcux-sdk/devices/K32L2B21A/system_K32L2B21A.c | |||
@@ -0,0 +1,121 @@ | |||
1 | /* | ||
2 | ** ################################################################### | ||
3 | ** Processors: K32L2B21VFM0A | ||
4 | ** K32L2B21VFT0A | ||
5 | ** K32L2B21VLH0A | ||
6 | ** K32L2B21VMP0A | ||
7 | ** | ||
8 | ** Compilers: Freescale C/C++ for Embedded ARM | ||
9 | ** GNU C Compiler | ||
10 | ** IAR ANSI C/C++ Compiler for ARM | ||
11 | ** Keil ARM C/C++ Compiler | ||
12 | ** MCUXpresso Compiler | ||
13 | ** | ||
14 | ** Reference manual: K32L2B3xRM, Rev.0, July 2019 | ||
15 | ** Version: rev. 1.0, 2019-07-30 | ||
16 | ** Build: b190925 | ||
17 | ** | ||
18 | ** Abstract: | ||
19 | ** Provides a system configuration function and a global variable that | ||
20 | ** contains the system frequency. It configures the device and initializes | ||
21 | ** the oscillator (PLL) that is part of the microcontroller device. | ||
22 | ** | ||
23 | ** Copyright 2016 Freescale Semiconductor, Inc. | ||
24 | ** Copyright 2016-2019 NXP | ||
25 | ** All rights reserved. | ||
26 | ** | ||
27 | ** SPDX-License-Identifier: BSD-3-Clause | ||
28 | ** | ||
29 | ** http: www.nxp.com | ||
30 | ** mail: [email protected] | ||
31 | ** | ||
32 | ** Revisions: | ||
33 | ** - rev. 1.0 (2019-07-30) | ||
34 | ** Initial version. | ||
35 | ** | ||
36 | ** ################################################################### | ||
37 | */ | ||
38 | |||
39 | /*! | ||
40 | * @file K32L2B21A | ||
41 | * @version 1.0 | ||
42 | * @date 2019-07-30 | ||
43 | * @brief Device specific configuration file for K32L2B21A (implementation file) | ||
44 | * | ||
45 | * Provides a system configuration function and a global variable that contains | ||
46 | * the system frequency. It configures the device and initializes the oscillator | ||
47 | * (PLL) that is part of the microcontroller device. | ||
48 | */ | ||
49 | |||
50 | #include <stdint.h> | ||
51 | #include "fsl_device_registers.h" | ||
52 | |||
53 | /* ---------------------------------------------------------------------------- | ||
54 | -- Core clock | ||
55 | ---------------------------------------------------------------------------- */ | ||
56 | |||
57 | uint32_t SystemCoreClock = DEFAULT_SYSTEM_CLOCK; | ||
58 | |||
59 | /* ---------------------------------------------------------------------------- | ||
60 | -- SystemInit() | ||
61 | ---------------------------------------------------------------------------- */ | ||
62 | |||
63 | void SystemInit(void) | ||
64 | { | ||
65 | #if (ACK_ISOLATION) | ||
66 | if ((PMC->REGSC & PMC_REGSC_ACKISO_MASK) != 0U) | ||
67 | { | ||
68 | PMC->REGSC |= PMC_REGSC_ACKISO_MASK; /* VLLSx recovery */ | ||
69 | } | ||
70 | #endif | ||
71 | |||
72 | #if (DISABLE_WDOG) | ||
73 | /* SIM->COPC: ?=0,COPCLKSEL=0,COPDBGEN=0,COPSTPEN=0,COPT=0,COPCLKS=0,COPW=0 */ | ||
74 | SIM->COPC = (uint32_t)0x00u; | ||
75 | #endif /* (DISABLE_WDOG) */ | ||
76 | |||
77 | SystemInitHook(); | ||
78 | } | ||
79 | |||
80 | /* ---------------------------------------------------------------------------- | ||
81 | -- SystemCoreClockUpdate() | ||
82 | ---------------------------------------------------------------------------- */ | ||
83 | |||
84 | void SystemCoreClockUpdate(void) | ||
85 | { | ||
86 | uint32_t MCGOUTClock; /* Variable to store output clock frequency of the MCG module */ | ||
87 | uint16_t Divider; | ||
88 | |||
89 | if ((MCG->S & MCG_S_CLKST_MASK) == 0x00U) | ||
90 | { | ||
91 | /* High internal reference clock is selected */ | ||
92 | MCGOUTClock = CPU_INT_FAST_CLK_HZ; /* Fast internal reference clock selected */ | ||
93 | } | ||
94 | else if ((MCG->S & MCG_S_CLKST_MASK) == 0x04U) | ||
95 | { | ||
96 | /* Internal reference clock is selected */ | ||
97 | Divider = (uint16_t)(0x01LU << ((MCG->SC & MCG_SC_FCRDIV_MASK) >> MCG_SC_FCRDIV_SHIFT)); | ||
98 | MCGOUTClock = (uint32_t)(CPU_INT_SLOW_CLK_HZ / Divider); /* Slow internal reference clock 8MHz selected */ | ||
99 | } | ||
100 | else if ((MCG->S & MCG_S_CLKST_MASK) == 0x08U) | ||
101 | { | ||
102 | /* External reference clock is selected */ | ||
103 | MCGOUTClock = CPU_XTAL_CLK_HZ; | ||
104 | } | ||
105 | else | ||
106 | { | ||
107 | /* Reserved value */ | ||
108 | return; | ||
109 | } /* (!((MCG->S & MCG_S_CLKST_MASK) == 0x08U)) */ | ||
110 | SystemCoreClock = | ||
111 | (MCGOUTClock / (0x01U + ((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV1_MASK) >> SIM_CLKDIV1_OUTDIV1_SHIFT))); | ||
112 | } | ||
113 | |||
114 | /* ---------------------------------------------------------------------------- | ||
115 | -- SystemInitHook() | ||
116 | ---------------------------------------------------------------------------- */ | ||
117 | |||
118 | __attribute__((weak)) void SystemInitHook(void) | ||
119 | { | ||
120 | /* Void implementation of the weak function. */ | ||
121 | } | ||