stm32L152系统时钟无法倍频到32M

2019-10-15 19:49发布

每次都死在同一个地方,代码如下,不倍频没有错误,一倍频就出现错误,麻烦大家帮忙看看啊
void Clock_Init(void)

{
  u8 i;
  RCC_DeInit  ( );                                                        
  RCC_HSEConfig(RCC_HSE_OFF);
  RCC_HSICmd(ENABLE);   
  while(RCC_GetFlagStatus  ( RCC_FLAG_HSIRDY) == RESET )        
  {
   }  
         FLASH_PrefetchBufferCmd(ENABLE);         
         FLASH_SetLatency(FLASH_Latency_1);         
         RCC_PLLConfig (RCC_PLLSource_HSI,RCC_PLLMul_4,RCC_PLLDiv_2);                         
         RCC_HCLKConfig(RCC_SYSCLK_Div1);                              //AHB =  SYSCLK       32M
         RCC_PCLK2Config(RCC_HCLK_Div1) ;                          
         RCC_PCLK1Config(RCC_HCLK_Div1);                             
         RCC_PLLCmd(ENABLE);
         while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)            //PLL
        {
        }
        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK) ;                   
       while(RCC_GetSYSCLKSource()!= 0x0C)                        //每次都死在这里
        {

        }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
14条回答
秋扫落叶
2019-10-16 07:28
回复【2楼】正点原子:
---------------------------------
整体程序如下
void Clock_Init(void)
{
u8 i;
    RCC_DeInit  ( );                                      
    RCC_HSEConfig(RCC_HSE_OFF); //关闭HSE时钟
    RCC_HSICmd(ENABLE);                                             //时能HSI时钟
    while(RCC_GetFlagStatus  ( RCC_FLAG_HSIRDY) == RESET )          //等待HSI时钟稳定
    {
    }  
    FLASH_PrefetchBufferCmd(ENABLE);                                //开启FLASH预读缓冲功能,加速FLASH的读取
    FLASH_SetLatency(FLASH_Latency_1);                              //FLASH时序延迟1个周期,等待总线同步操作
    RCC_PLLConfig(RCC_PLLSource_HSI,RCC_PLLMul_4,RCC_PLLDiv_2);     //HSI作为PLL时钟4倍频,2分频
    RCC_HCLKConfig(RCC_SYSCLK_Div1);                                //AHB =  SYSCLK       16M
    RCC_PCLK2Config(RCC_HCLK_Div1) ;                                //APB2=16M
    RCC_PCLK1Config(RCC_HCLK_Div1);                                 //APB1=16M
    RCC_PLLCmd(ENABLE);                                           //只能PLL时钟
    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)            //PLL稳定
    {
     }
   RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK) ;                    //选用PLL时钟为系统时钟32M
 i=RCC_GetSYSCLKSource();
    while(RCC_GetSYSCLKSource()!= 0x0C)//while(RCC_GetSYSCLKSource()!= 0x0C)//  //等待时钟稳定
    {

    }   
}

一周热门 更多>