///<请注意根据外部晶振配置宏——[SYSTEM_XTH],如果使用PLL,XTH必须在 4 - 24MHz 范围
void App_SystemClkInit_PLL48M_byXTH(void)
{
stc_sysctrl_pll_cfg_t stcPLLCfg;
///< 切换时钟前(根据外部高速晶振)设置XTH频率范围,配置晶振参数,使能目标时钟,此处为SYSTEM_XTH = 24MHz
Sysctrl_SetXTHFreq(SysctrlXthFreq16_24MHz);
Sysctrl_XTHDriverCfg(SysctrlXtalDriver3);///<晶振驱动能力需要根据实际晶振匹配电路布局以及所选器件的参数去调整
Sysctrl_SetXTHStableTime(SysctrlXthStableCycle16384);
Sysctrl_ClkSourceEnable(SysctrlClkXTH, TRUE);
delay1ms(10);
stcPLLCfg.enInFreq = SysctrlPllInFreq20_24MHz; //XTH 24MHz
stcPLLCfg.enOutFreq = SysctrlPllOutFreq36_48MHz; //PLL 输出
stcPLLCfg.enPllClkSrc = SysctrlPllXthXtal; //输入时钟源选择XTH晶振
stcPLLCfg.enPllMul = SysctrlPllMul2; //24MHz x 2 = 48MHz
Sysctrl_SetPLLFreq(&stcPLLCfg);
///< 当使用的时钟源HCLK大于24M:设置FLASH 读等待周期为1 cycle(默认值也为1 cycle)
Flash_WaitCycle(FlashWaitCycle1);
///< 使能PLL
Sysctrl_ClkSourceEnable(SysctrlClkPLL, TRUE);
///< 时钟切换到PLL
Sysctrl_SysClkSwitch(SysctrlClkPLL);
}
|