void BOARD_BootClockHSRUN(void) { SMC_SetPowerModeProtection(SMC, kSMC_AllowPowerModeAll); SMC_SetPowerModeHsrun(SMC); while (SMC_GetPowerModeState(SMC) != kSMC_PowerStateHsrun) { } CLOCK_SetSimSafeDivs(); CLOCK_InitOsc0(&g_defaultClockConfigHsrun.oscConfig); CLOCK_SetXtal0Freq(BOARD_XTAL0_CLK_HZ); CLOCK_BootToPeeMode(g_defaultClockConfigHsrun.mcgConfig.oscsel, kMCG_PllClkSelPll0, &g_defaultClockConfigHsrun.mcgConfig.pll0Config); CLOCK_SetInternalRefClkConfig(g_defaultClockConfigHsrun.mcgConfig.irclkEnableMode, g_defaultClockConfigHsrun.mcgConfig.ircs, g_defaultClockConfigHsrun.mcgConfig.fcrdiv); CLOCK_SetSimConfig(&g_defaultClockConfigHsrun.simConfig); SystemCoreClock = g_defaultClockConfigHsrun.coreClock; }
void BOARD_BootClockVLPR(void) { /* * Core clock: 4MHz */ const sim_clock_config_t simConfig = { .pllFllSel = 3U, /* PLLFLLSEL select IRC48MCLK. */ .pllFllDiv = 0U, /* PLLFLLSEL clock divider divisor. */ .pllFllFrac = 0U, /* PLLFLLSEL clock divider fraction. */ .er32kSrc = 2U, /* ERCLK32K selection, use RTC. */ .clkdiv1 = 0x03040000U, /* SIM_CLKDIV1. */ }; CLOCK_SetSimSafeDivs(); CLOCK_BootToBlpiMode(0U, kMCG_IrcFast, kMCG_IrclkEnable); CLOCK_SetSimConfig(&simConfig); SystemCoreClock = 4000000U; SMC_SetPowerModeProtection(SMC, kSMC_AllowPowerModeAll); SMC_SetPowerModeVlpr(SMC); while (SMC_GetPowerModeState(SMC) != kSMC_PowerStateVlpr) { } } void BOARD_BootClockRUN(void) { /* * Core clock: 72MHz */ const mcg_pll_config_t pll0Config = { .enableMode = 0U, .prdiv = 0x00U, .vdiv = 0x08U, }; const sim_clock_config_t simConfig = { .pllFllSel = 1U, /* PLLFLLSEL select PLL. */ .pllFllDiv = 0U, /* PLLFLLSEL clock divider divisor. */ .pllFllFrac = 0U, /* PLLFLLSEL clock divider fraction. */ .er32kSrc = 2U, /* ERCLK32K selection, use RTC. */ .clkdiv1 = 0x15051000U, /* SIM_CLKDIV1. */ }; CLOCK_SetSimSafeDivs(); BOARD_InitOsc0(); CLOCK_BootToPeeMode(kMCG_OscselOsc, kMCG_PllClkSelPll0, &pll0Config); CLOCK_SetInternalRefClkConfig(kMCG_IrclkEnable, kMCG_IrcSlow, 0); CLOCK_SetSimConfig(&simConfig); SystemCoreClock = 72000000U; } void BOARD_BootClockHSRUN(void) { /* * Core clock: 96MHz */ SMC_SetPowerModeProtection(SMC, kSMC_AllowPowerModeAll); SMC_SetPowerModeHsrun(SMC); while (SMC_GetPowerModeState(SMC) != kSMC_PowerStateHsrun) { } CLOCK_SetSimSafeDivs(); BOARD_InitOsc0(); const sim_clock_config_t simConfig = { .pllFllSel = 1U, /* PLLFLLSEL select PLL. */ .pllFllDiv = 0U, /* PLLFLLSEL clock divider divisor. */ .pllFllFrac = 0U, /* PLLFLLSEL clock divider fraction. */ .er32kSrc = 2U, /* ERCLK32K selection, use RTC. */ .clkdiv1 = 0x03030000U, /* SIM_CLKDIV1. */ }; const mcg_pll_config_t pll0Config = { .enableMode = 0U, .prdiv = 0x00U, .vdiv = 0x00U, }; CLOCK_BootToPeeMode(kMCG_OscselOsc, kMCG_PllClkSelPll0, &pll0Config); CLOCK_SetInternalRefClkConfig(kMCG_IrclkEnable, kMCG_IrcSlow, 0); CLOCK_SetSimConfig(&simConfig); SystemCoreClock = 96000000U; } void BOARD_InitOsc0(void) { const osc_config_t oscConfig = {.freq = BOARD_XTAL0_CLK_HZ, .capLoad = 0, .workMode = kOSC_ModeOscLowPower, .oscerConfig = { .enableMode = kOSC_ErClkEnable, #if (defined(FSL_FEATURE_OSC_HAS_EXT_REF_CLOCK_DIVIDER) && FSL_FEATURE_OSC_HAS_EXT_REF_CLOCK_DIVIDER) .erclkDiv = 0U, #endif }}; CLOCK_InitOsc0(&oscConfig); /* Passing the XTAL0 frequency to clock driver. */ CLOCK_SetXtal0Freq(BOARD_XTAL0_CLK_HZ); CLOCK_SetXtal32Freq(BOARD_XTAL32K_CLK_HZ); }