aboutsummaryrefslogtreecommitdiff
path: root/lib/chibios-contrib/ext/mcux-sdk/devices/K32L2B21A/system_K32L2B21A.c
diff options
context:
space:
mode:
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.c121
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
57uint32_t SystemCoreClock = DEFAULT_SYSTEM_CLOCK;
58
59/* ----------------------------------------------------------------------------
60 -- SystemInit()
61 ---------------------------------------------------------------------------- */
62
63void 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
84void 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}