OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6575|回复: 14

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

[复制链接]

2

主题

11

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2015-3-2
在线时间
0 小时
发表于 2015-3-2 13:44:43 | 显示全部楼层 |阅读模式
5金钱
每次都死在同一个地方,代码如下,不倍频没有错误,一倍频就出现错误,麻烦大家帮忙看看啊
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)                        //每次都死在这里
        {

        }
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-3-2 19:46:25 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2015-3-2
在线时间
0 小时
 楼主| 发表于 2015-3-4 10:16:44 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
 while(RCC_GetSYSCLKSource()!= 0x0C)                        //每次都死在这里
        {

        }
回复

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2015-3-2
在线时间
0 小时
 楼主| 发表于 2015-3-4 10:29:54 | 显示全部楼层
回复【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)//  //等待时钟稳定
    {

    }   
}
回复

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2015-3-2
在线时间
0 小时
 楼主| 发表于 2015-3-4 10:34:54 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
运行到 i=RCC_GetSYSCLKSource();时,点击step over运行,函数死在了里面,停止点击step,程序提示错误如下:
出现 Debuger-Cortex-M Error
Could not stopCortex-M device! laese check the JTAG cable.
回复

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2015-3-2
在线时间
0 小时
 楼主| 发表于 2015-3-4 10:48:46 | 显示全部楼层
回复【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,程序一直也出不去~
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4480
金钱
4480
注册时间
2013-4-22
在线时间
337 小时
发表于 2015-3-4 11:19:28 | 显示全部楼层
很明显你这个库函数的值不能是0x0c
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4480
金钱
4480
注册时间
2013-4-22
在线时间
337 小时
发表于 2015-3-4 11:20:15 | 显示全部楼层
while(RCC_GetSYSCLKSource()!= 0x0C)改成 while(RCC_GetSYSCLKSource()!= 0x08)试试
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4480
金钱
4480
注册时间
2013-4-22
在线时间
337 小时
发表于 2015-3-4 11:20:55 | 显示全部楼层
或者0x00或者0x04都是可以的
回复

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2015-3-2
在线时间
0 小时
 楼主| 发表于 2015-3-4 11:52:54 | 显示全部楼层
回复【9楼】三叶草:
---------------------------------
0x00: MSI used as system clock
  *              - 0x04: HSI used as system clock  
  *              - 0x08: HSE used as system clock
  *              - 0x0C: LL used as system clock
i=RCC_GetSYSCLKSource();  i通过观察i=0x00,但是0x00 是MSI时钟作为系统时钟啊,我要的是32M的PLL时钟
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4480
金钱
4480
注册时间
2013-4-22
在线时间
337 小时
发表于 2015-3-4 11:59:01 | 显示全部楼层
/**
  * @brief  Returns the clock source used as system clock.
  * @param  None
  * @retval The clock source used as system clock. The returned value can
  *   be one of the following:
  *     - 0x00: HSI used as system clock
  *     - 0x04: HSE used as system clock
  *     - 0x08: LL used as system clock
  */
我的库是这样的
回复

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2015-3-2
在线时间
0 小时
 楼主| 发表于 2015-3-4 12:01:47 | 显示全部楼层
回复【11楼】三叶草:
---------------------------------
你的那个是stm32f系列的  我的这个是stm32L152RB系列的,咱俩的不一样,我是从f103转到L152的,时钟这就是不能倍频到32M,使用内部的16M完全没有问题,研究了好久,都不知道什么原因,应该是这个时钟MSI的问题,不知道应该怎么设置
回复

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2015-3-2
在线时间
0 小时
 楼主| 发表于 2015-3-6 17:52:46 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥有时间帮我看一下吧,真找不出原因了~
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-3-6 22:20:44 | 显示全部楼层
回复【13楼】秋扫落叶:
---------------------------------
没玩过32L系列的
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

8

主题

74

帖子

0

精华

初级会员

Rank: 2

积分
176
金钱
176
注册时间
2016-6-29
在线时间
34 小时
发表于 2017-1-3 20:29:21 | 显示全部楼层
兄弟,有没有弄好啊,我现在也是用L152RBT6,也是用内部晶振,但是不清楚怎么配置,弄好了能否发个配置代码过来,万分感谢,好人一生平安,本人qq邮箱773464872@qq.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-29 05:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表