打印
[STM32L1]

STM32L152的时钟每次都死里面

[复制链接]
1831|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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();这里面的等待时间参数调大点

使用特权

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

本版积分规则

3

主题

23

帖子

0

粉丝