打印

请教HSI输入PLL后,系统时钟精度降低的问题

[复制链接]
2980|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
EAMCU|  楼主 | 2010-11-24 18:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
直接用HSI作为系统时钟,使用TIM3 预分频为3,翻转模式,ARR为998M/4/2/100=10kHz,频率输出很准,误差在1%以内,和手册上说的HSI在1%范围内很吻合

采用HSI/2的16倍频作为系统时钟,修改分频参数,但是最后输出不了整10k,输出变成了11.2kHz左右,请问HSI输入PLL后,再分频,精度会严重下降么?
沙发
EAMCU|  楼主 | 2010-11-24 18:49 | 只看该作者
这样看来,系统时钟很可能工作在72MHz。
贴我的RCC设置。
void RCC_Configuration(void)  
{  
       
        FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);          //开启FLASH的预取功能  
        FLASH_SetLatency(FLASH_Latency_2);      //FLASH延迟2个周期  
     
        RCC_HCLKConfig(RCC_SYSCLK_Div1);        //配置HCLK,PCLK2,PCLK1,PLL  
        RCC_PCLK2Config(RCC_HCLK_Div1);  
        RCC_PCLK1Config(RCC_HCLK_Div2);  
         
        RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_16);  
        RCC_PLLCmd(ENABLE);                          //启动PLL  
        while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET)  
                {}                                          //等待PLL启动完成  
        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);  //配置系统时钟
         
        while(RCC_GetSYSCLKSource() !=0x08)         //检查是否将PLL作为系统时钟  
                {}
        RCC_HSEConfig(RCC_HSE_Bypass);  
}
发现一个问题,语句RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_16)中无论如何修改第二个参数即倍频比,都不会影响系统时钟;
为什么呢?
库版本3.3

使用特权

评论回复
板凳
EAMCU|  楼主 | 2010-11-25 10:50 | 只看该作者
已找到问题。
RCC的设置中,需要先完成以下设置:
        RCC_DeInit();
    RCC_HSICmd(ENABLE);
    while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET)
                  {}
问题解决,但是有点疑惑。
因为不是说stm32启动后默认就是HSI启动么?而且当它稳定了才会开始执行具体程序么?

使用特权

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

本版积分规则

38

主题

396

帖子

2

粉丝