1 /* 2 * Copyright (c) 2006-2021, RT-Thread Development Team 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Change Logs: 7 * Date Author Notes 8 * 2022-03-28 shelton first version 9 */ 10 11 #include "board.h" 12 system_clock_config(void)13void system_clock_config(void) 14 { 15 /* enable pwc periph clock */ 16 crm_periph_clock_enable(CRM_PWC_PERIPH_CLOCK, TRUE); 17 18 /* config ldo voltage */ 19 pwc_ldo_output_voltage_set(PWC_LDO_OUTPUT_1V3); 20 21 /* set the flash clock divider */ 22 flash_clock_divider_set(FLASH_CLOCK_DIV_3); 23 24 /* reset crm */ 25 crm_reset(); 26 27 crm_clock_source_enable(CRM_CLOCK_SOURCE_HEXT, TRUE); 28 29 /* wait till hext is ready */ 30 while(crm_hext_stable_wait() == ERROR) 31 { 32 } 33 34 /* config pll clock resource */ 35 crm_pll_config(CRM_PLL_SOURCE_HEXT, 144, 1, CRM_PLL_FR_4); 36 37 /* enable pll */ 38 crm_clock_source_enable(CRM_CLOCK_SOURCE_PLL, TRUE); 39 40 /* wait till pll is ready */ 41 while(crm_flag_get(CRM_PLL_STABLE_FLAG) != SET) 42 { 43 } 44 45 /* config ahbclk */ 46 crm_ahb_div_set(CRM_AHB_DIV_1); 47 48 /* config apb2clk */ 49 crm_apb2_div_set(CRM_APB2_DIV_2); 50 51 /* config apb1clk */ 52 crm_apb1_div_set(CRM_APB1_DIV_2); 53 54 /* enable auto step mode */ 55 crm_auto_step_mode_enable(TRUE); 56 57 /* select pll as system clock source */ 58 crm_sysclk_switch(CRM_SCLK_PLL); 59 60 /* wait till pll is used as system clock source */ 61 while(crm_sysclk_switch_status_get() != CRM_SCLK_PLL) 62 { 63 } 64 65 /* disable auto step mode */ 66 crm_auto_step_mode_enable(FALSE); 67 68 /* update system_core_clock global variable */ 69 system_core_clock_update(); 70 } 71