zoukankan      html  css  js  c++  java
  • STM32F4时钟配置库函数详解

       在STM32中,所有的应用都是基于时钟,所以时钟的配置就尤为重要了,而不能仅仅只知道使用默认时钟。

      STM32F4的时钟树如上图所示,HSE为外部接入的一个8M的时钟,然后再给PLL提供输入时钟,经过分频倍频后产生PLLCLK时钟,为SYSCLK提供基础时钟来源。

    配置的步骤:

    1. 将RCC寄存器重新设置为默认值
    2. 打开外部高速时钟晶振HSE
    3. 等待HSE时钟晶振工作
    4. 设置AHB时钟也就是HCLK时钟
    5. 设置高速APB1时钟也就是PCLK1
    6. 设置低速APB2时钟也就是PCLK2
    7. 设置PLL
    8. 打开PLL
    9. 等待PLL工作
    10. 设置系统时钟
    11. 判断系统时钟是否为PLL时钟

    重点设置为PLL的配置:

    void RCC_PLLConfig( uint32_t RCC_PLLSource, 
                                uint32_t PLLM, 
                                uint32_t PLLN, 
                                uint32_t PLLP,
                                uint32_t PLLQ)

    RCC_PLLSource为选择的输入时钟源,在这里为HSE 

    PLLM:VCO输入时钟分频因子,取值2-63 经分频后输入时钟范围要在1-2M内

    PLLN:VCO输出时钟倍频因子,取值192-432经倍频后输出时钟范围要在192-432

    PLLP:SYSCLK时钟分频因子,取值2、4、6、8

    PLLQ:OTG、FS、SDIO、RNG时钟分频因子,取值4-15,分频后最高48M

    PLL_VCO输出时钟 = (RCC_PLLSource/PLLM)*PLLN

    SYSCLK = ((RCC_PLLSource/PLLM)*PLLN)/PLLP

    OTG、FS、SDIO、RNG Clock = ((RCC_PLLSource/PLLM)*PLLN)/PLLN

    所以要将系统时钟配置成120M则应设置参数(RCC_PLLSource_HSE,8,240,2,2);

    在这里RCC_PLLConfig   (RCC_PLLSource_HSE,8,240,2,2);

    SYSClock = 8/8*240/2 = 120M

    void RCC_ClockConfig(void)
    {
        RCC_DeInit();
        RCC_HSEConfig( RCC_HSE_ON );
      
      if(SUCCESS == RCC_WaitForHSEStartUp())    
        {
           RCC_HCLKConfig  (RCC_SYSCLK_Div1); 
               RCC_PCLK1Config (RCC_HCLK_Div1);      
               RCC_PCLK2Config (RCC_HCLK_Div1);        
               RCC_PLLConfig   (RCC_PLLSource_HSE,8,240,2,2);
               //SYSClock = 8/8*240/2 = 120M
            
          RCC_PLLCmd(ENABLE);
    
            while(RCC_GetFlagStatus ( RCC_FLAG_PLLRDY) == RESET )
            {
            
            }
        
            RCC_SYSCLKConfig  ( RCC_SYSCLKSource_PLLCLK );
            
            while(RCC_GetSYSCLKSource() != 0x08)
            {
                
            }
            
        }
    
    
    }

     时钟信号可由PA8和PC9引脚输出查看。

  • 相关阅读:
    顺序容器
    forward_list
    array
    第十一章 关联容器
    C++数组
    C++标准库算法
    第十章 泛型算法
    第九章 顺序容器
    操作系统概述
    文件输入输出
  • 原文地址:https://www.cnblogs.com/wangshucai/p/8581198.html
Copyright © 2011-2022 走看看