打印
[STM32L1]

STM32L152的时钟每次都死里面

[复制链接]
2221|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
s284630173|  楼主 | 2015-1-29 14:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
时钟内部时钟倍频到32Mhz,有个MSI时钟一直没弄个明白怎么设置,希望大神能帮帮我!
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)                        //每次都死在这里
        {

        }
}
沙发
s284630173|  楼主 | 2015-1-29 15:00 | 只看该作者
顶一下!希望用L系列的人大家一起讨论讨论

使用特权

评论回复
板凳
海盗爱飞鱼| | 2015-10-2 14:39 | 只看该作者
求外部时钟HSE的配置函数void RCC_Configuration(void)
{
  ErrorStatus HSEStartUpStatus;                    //定义外部高速晶体启动状态枚举变量
  RCC_DeInit();                                    //复位RCC外部设备寄存器到默认值
  RCC_HSEConfig(RCC_HSE_ON);                       //打开外部高速晶振  
  HSEStartUpStatus = RCC_WaitForHSEStartUp();      //等待外部高速时钟准备好
// while(RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET);
    if(HSEStartUpStatus == SUCCESS)                  //外部高速时钟已经准别好
  {
    FLASH_PrefetchBufferCmd(ENABLE); //开启FLASH预读缓冲功能,加速FLASH的读取。所有程序中必须的用法.位置:RCC初始化子函数里面,时钟起振之后
    FLASH_SetLatency(FLASH_Latency_1);                    //flash操作的延时
             
    RCC_HCLKConfig(RCC_SYSCLK_Div1);               //配置AHB(HCLK)时钟等于==SYSCLK  可能没有使能?  问题!!!!!
    RCC_PCLK2Config(RCC_HCLK_Div1);                //配置APB2(PCLK2)钟==AHB时钟
    RCC_PCLK1Config(RCC_HCLK_Div2);                //配置APB1(PCLK1)钟==AHB1/2时钟
         
    RCC_PLLConfig( RCC_PLLSource_HSE,RCC_PLLMul_12, RCC_PLLDiv_3);  //配置PLL时钟 == 外部高速晶体时钟 * 4 = 32MHz
    RCC_PLLCmd(ENABLE);                                   //使能PLL时钟
   
    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)    //等待PLL时钟就绪
    {
    }
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);            //配置系统时钟 = PLL时钟 CFGR->SW  PLL
    while(RCC_GetSYSCLKSource() != 0x0C)                  //检查PLL时钟是否作为系统时钟
    {
    }
     
  }
  

使用特权

评论回复
地板
海盗爱飞鱼| | 2015-10-2 14:39 | 只看该作者
海盗爱飞鱼 发表于 2015-10-2 14:39
求外部时钟HSE的配置函数void RCC_Configuration(void)
{
  ErrorStatus HSEStartUpStatus;                ...

这样配置应该没有问题啊  怎么调试的时候不行呢?

使用特权

评论回复
5
lglour1978| | 2016-3-2 14:11 | 只看该作者
我也遇到同样的问题,楼上的二位有解吗?

使用特权

评论回复
6
hzj8300| | 2016-3-2 17:32 | 只看该作者
RCC_WaitForHSEStartUp();这里面的等待时间参数调大点

使用特权

评论回复
7
kongyu11| | 2025-6-16 14:53 | 只看该作者

使用特权

评论回复
8
duo点| | 2025-6-16 16:08 | 只看该作者
晶振本身损坏或连接不正确?

使用特权

评论回复
9
flycamelaaa| | 2025-6-16 16:13 | 只看该作者
HSE未起振?

使用特权

评论回复
10
elephant00| | 2025-6-16 16:17 | 只看该作者
PLL 配置不当?

使用特权

评论回复
11
海滨消消| | 2025-6-16 16:22 | 只看该作者
在唤醒后重新初始化时钟。

使用特权

评论回复
12
powerantone| | 2025-6-16 16:46 | 只看该作者
晶振电路是否正确连接。

使用特权

评论回复
13
stormwind123| | 2025-6-16 19:00 | 只看该作者
用示波器测量晶振引脚是否有波形输出。

使用特权

评论回复
14
七毛钱| | 2025-6-16 19:46 | 只看该作者
可能晶振引脚虚焊或短路,晶振无法起振,导致时钟源失效。

使用特权

评论回复
15
probedog| | 2025-6-16 20:23 | 只看该作者
检查 RCC_CR 寄存器中 HSERDY 标志位是否置位。

使用特权

评论回复
16
classroom| | 2025-6-16 20:23 | 只看该作者
建议在代码中添加超时机制,避免因 HSE 启动失败导致死机

使用特权

评论回复
17
jcky001| | 2025-6-16 21:00 | 只看该作者
LSE 可能出现故障了。

使用特权

评论回复
18
豌豆爹| | 2025-6-16 21:25 | 只看该作者
RCC_CR 寄存器中 CSSON 位是否置位。

使用特权

评论回复
19
onlycook| | 2025-6-16 22:00 | 只看该作者
时钟分频器配置错误?

使用特权

评论回复
20
海滨消消| | 2025-6-16 22:00 | 只看该作者
HSE 故障时可能系统未自动切换到 HSI,导致死机。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

23

帖子

0

粉丝