下面是切换到RCH的函数,后面关闭BGR了 
void PLLChangeToRCH(void) 
{                                  
         
        Sysctrl_SysClkSwitch(SysctrlClkRCH) ;        //< 时钟切换 RCH         
        Flash_WaitCycle(FlashWaitCycle0);                         //读时钟周期设置为0          
       Sysctrl_ClkSourceEnable(SysctrlClkPLL, FALSE); //关闭PLL         
        M0P_BGR->CR_f.BGR_EN = FALSE;   //关闭BGR                                                      
}    
 
下面这个是我初始化时候配置的PLL 
void SysClockCfg(void) 
{ 
    en_flash_waitcycle_t      enWaitCycle; 
    stc_sysctrl_pll_cfg_t     stcPLLCfg; 
     
    //结构体初始化清零 
    DDL_ZERO_STRUCT(stcPLLCfg); 
     
    enWaitCycle = FlashWaitCycle1; 
    Flash_WaitCycle(enWaitCycle);    
     
    stcPLLCfg.enInFreq    = SysctrlPllInFreq4_6MHz;     //RCH 4MHz    内部高速时钟 
    stcPLLCfg.enOutFreq   = SysctrlPllOutFreq36_48MHz;  //PLL 输出48MHz 
    stcPLLCfg.enPllClkSrc = SysctrlPllRch;              //输入时钟源选择RCH 
    stcPLLCfg.enPllMul    = SysctrlPllMul12;            //4MHz x 12 = 48MHz    倍频作用 
         
    Sysctrl_SetPLLFreq(&stcPLLCfg); 
         
    Sysctrl_SetPLLStableTime(SysctrlPllStableCycle16384); 
         
    Sysctrl_ClkSourceEnable(SysctrlClkPLL, TRUE); 
     
    Sysctrl_SysClkSwitch(SysctrlClkPLL);  ///< 时钟切换 
    SystemCoreClockUpdate(); 
} 
 
 
现在问题就很奇怪,当我把PLL配置取消掉,进入deepsleep有1uA,同样的硬件,当我配置PLL,延时5s后再调用PLLchanggeRCH(PLL时钟转为RCH),按照应用手册步骤来的,然后进入deepsleep就有26uA了,不知道这多出来的电流哪里来的?  感觉不像硬件。
 |