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 18:57
回复【5楼】秋扫落叶:
---------------------------------
按照 这个方法修改  
使用keil U4,用Jlink对STM32板子在线仿真后,全速运行后死机,停止运行后弹出“Could not stop Cortex-M device!Please check the JTAG cable ”,硬件的情况网上有其他的,我的问题是编译器设置的问题,对Option中的c/c++中进行1级程序优化选择、勾选“Optimize for time”(这个应该和网上谈到晶振设置过大原因类是吧)、勾选“One ELF Section per Function”;勾选Option中ASM的“Thumb Mode”(不是Cortex-M3包含了Thumb指令集的呢?)。解决是这样解决的,反正出问题的时候都是设置了c/c++和asm.

发现i=i=RCC_GetSYSCLKSource();可以运行过去,但是查看变量时,i没有值,运行
while(RCC_GetSYSCLKSource()!= 0x0C)//while(RCC_GetSYSCLKSource()!= 0x0C)//  //等待时钟稳定 
    { 

    }    
提示Cannot access Memory,程序一直也出不去~

一周热门 更多>