创建系统初始化文件
文件内容如下:
#include "bsp_system_clock.h"
/**
* @brief 系统时钟初始化
*
* @return true 初始化成功
* @return false 初始化失败
*/
bool bsp_system_clock_config(void){
rcu_deinit();
rcu_osci_on(RCU_HXTAL);
if(rcu_osci_stab_wait(RCU_HXTAL) != SUCCESS){
init_irc16:
rcu_deinit();
rcu_osci_on(RCU_IRC16M);
if(rcu_osci_stab_wait(RCU_IRC16M) != SUCCESS){
return false;
}
rcu_pll_config(RCU_PLLSRC_IRC16M,16,480,2,10);
}
else{
switch (HXTAL_VALUE){
case (uint32_t)(800000):
rcu_pll_config(RCU_PLLSRC_HXTAL,8,480,2,10);
break;
case (uint32_t)(16000000):
rcu_pll_config(RCU_PLLSRC_HXTAL,16,480,2,10);
break;
case (uint32_t)(25000000):
rcu_pll_config(RCU_PLLSRC_HXTAL,25,480,2,10);
break;
default:
goto init_irc16;
break;
}
}
rcu_ahb_clock_config(RCU_AHB_CKSYS_DIV1);
rcu_apb1_clock_config(RCU_APB1_CKAHB_DIV4);
rcu_apb2_clock_config(RCU_APB2_CKAHB_DIV2);
rcu_osci_on(RCU_PLL_CK);
if(rcu_osci_stab_wait(RCU_PLL_CK) != SUCCESS){//等待时钟稳定
while(1){;}
}
rcu_system_clock_source_config(RCU_CKSYSSRC_PLLP);//配置内核时钟源为PLL倍频出来的
while(0U == (RCU_CFG0 & RCU_SCSS_PLLP)){
;
}
rcu_clock_freq_get(CK_SYS);
rcu_clock_freq_get(CK_AHB);
rcu_clock_freq_get(CK_APB1);
rcu_clock_freq_get(CK_APB2);
SysTick_Config(SystemCoreClock/1000);
NVIC_SetPriority(SysTick_IRQn, 0x00U);
rcu_periph_clock_enable(RCU_GPIOA);
rcu_periph_clock_enable(RCU_GPIOH);
return true;
}
配置文件修改如下:
————————————————
版权声明:本文为CSDN博主「yang_arvin」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yang_arvin/article/details/151231495
|
|