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