void BOARD_InitBootClocks(void)
{
/*!< Set up the clock sources */
/*!< Set up FRO */
POWER_DisablePD(kPDRUNCFG_PD_FRO_OUT); /*!< Ensure FRO is on */
POWER_DisablePD(kPDRUNCFG_PD_FRO); /*!< Ensure FRO is on */
CLOCK_SetFroOscFreq(kCLOCK_FroOscOut30M); /*!< Set up FRO freq */
CLOCK_SetFroOutClkSrc(kCLOCK_FroSrcFroOsc); /*!< Set FRO clock source */
POWER_DisablePD(kPDRUNCFG_PD_SYSOSC); /*!< Ensure Main osc is on */
CLOCK_Select(kEXT_Clk_From_SysOsc); /*!<select external clock source to sys_osc */
clock_sys_pll_t config;
config.src = kCLOCK_SysPllSrcFroDiv; /*!< select FRO_div for SYSPLL */
config.targetFreq = 30000000U; /*!< set pll target freq */
CLOCK_InitSystemPll(&config); /*!< set parameters */
CLOCK_SetMainClkSrc(kCLOCK_MainClkSrcFro); /*!< select fro for main clock */
CLOCK_Select(kCLKOUT_From_Fro); /*!< select FRO for CLKOUT */
CLOCK_Select(kSCT_Clk_From_Fro); /*!< select FRO for SCT */
CLOCK_Select(kADC_Clk_From_Fro); /*!< select FRO for ADC */
CLOCK_Select(kUART0_Clk_From_Fro_Div); /*!< select FRO_DIV for UART0 */
CLOCK_Select(kI2C0_Clk_From_Fro_Div); /*!< select FRO_DIV for I2C0 */
CLOCK_Select(kI2C1_Clk_From_Fro_Div); /*!< select FRO_DIV for I2C1 */
CLOCK_SetCoreSysClkDiv(1U);
CLOCK_SetClkDivider(kCLOCK_DivClkOut, 1U); /*!< set CLOCKOUT div */
CLOCK_SetClkDivider(kCLOCK_DivSctClk, 1U); /*!< set SCT clock div */
CLOCK_SetClkDivider(kCLOCK_DivAdcClk, 10U); /*!< set ADC clock div */
/*!< Set SystemCoreClock variable. */
SystemCoreClock = BOARD_BOOTCLOCKRUN_CORE_CLOCK;
}
Why the function:
CLOCK_SetFroOutClkSrc(kCLOCK_FroSrcFroOsc); /*!< Set FRO clock source */
somethimes ended up in a Hard Fault? It works perfectly in 50% of cases.
Hello @senge-esca
For better help you, please describe your question more detail?
How to reproduce your issue?
What about your project?
When hard fault?
BR
Alice