【7】、STM32F767——————>STM32时钟系统

本文深入解析STM32F7的时钟树结构,包括HSI、HSE、LSI、LSE、PLL等时钟源及其用途。重点介绍了如何通过配置HSE、PLL参数实现216MHz系统频率,以及AHB、APB1、APB2总线时钟的分配。适合初学者理解STM32F7的时钟系统。
  1. STM32F7时钟树概述
    1. 系统框图
    2. 简述:STM32系列有5个时钟源,分别为HSI、HSE、LSI、LSE、PLL。
    3. 高速时钟:HSI、HSE、PLL; 低速时钟:LSE、LSI
    4. 时钟源用途:
      1. LSI是低速内部时钟,RC振荡器,频率为32Khz左右,用于IWDG独立看门狗、LPTime低功耗定时器时钟、RTC时钟; 
      2. LSE低速外部时钟,32.768KHz的石英晶体,用于RTC时钟
      3. HSE高速外部时钟,石英晶体/陶瓷谐振器/外部时钟源,频率范围为4MHz~26MHz,开发板接的是25MHz,软件里面把默认的8Mhz改为25Mhz; 
      4. HSI高速内部时钟,RC振荡器,频率固定为16MHz。可做系统时钟或用作PLL输入; 
      5. PLL锁相环倍频输出 ; 有三个PLL输出 
        1. 主PLL由HSE或者HSI提供两个时钟信号,并具有两个不同的输出时钟;
          1. 第1个用于系统主时钟,最高频率为216Mhz; 
          2. 第2个用于USB时钟,48MHz; 
        2. 专用PLL(PLLI2S)用于生成精确时钟,在I2S、SAI、SPDIFRX上实现高品质音频性能
        3. 专用PLL(PLLSAI)用于为SAI接口生成时钟,用于LCD_TFT和可供USB、SDMMC、RNG选择的48Mhz时钟
      6. 系统时钟设置:
        1. 例如:选用外部晶振25Mhz,设置系统频率为216Mhz;分频器M=25; 倍频器倍频系数N=432; 分频器分频系数P=2;公式如下:PLL = 25MHz *N/(M*P) = 216MHz; 
  2. STM32F7时钟初始化配置
    1. 参阅正点原子:4.8手把手教你入门STM32CubeMX图形配置工具-P143
    2. 野火STM32:第15章 RCC—使用 HSE/HSI 配置时钟 - P135
  3. 时钟树解剖
    1. 系统配置函数SystemClock_Config();
    2. 外部晶振频率25MHz
    3. HCLK = SYSCLK=PLLCLK = 216 MHz, PCLK2=HCLK/2 =108 MHz, PCLK1=HCLK/4 = 54
      MHz
    4. HSE经过25M分频(VCO时钟必须在1~2MhZ),然后再经过432倍频,再经过2分频得到216MHz系统频率; 
  4. 例程:
    1. //时钟设置函数
      //Fvco=Fs*(plln/pllm);
      //Fsys=Fvco/pllp=Fs*(plln/(pllm*pllp));
      //Fusb=Fvco/pllq=Fs*(plln/(pllm*pllq));
      
      //Fvco:VCO频率
      //Fsys:系统时钟频率
      //Fusb:USB,SDIO,RNG等的时钟频率
      //Fs:PLL输入时钟频率,可以是HSI,HSE等. 
      //plln:主PLL倍频系数(PLL倍频),取值范围:64~432.
      //pllm:主PLL和音频PLL分频系数(PLL之前的分频),取值范围:2~63.
      //pllp:系统时钟的主PLL分频系数(PLL之后的分频),取值范围:2,4,6,8.(仅限这4个值!)
      //pllq:USB/SDIO/随机数产生器等的主PLL分频系数(PLL之后的分频),取值范围:2~15.
      
      //外部晶振为25M的时候,推荐值:plln=432,pllm=25,pllp=2,pllq=9.
      //得到:Fvco=25*(432/25)=432Mhz
      //     Fsys=432/2=216Mhz
      //     Fusb=432/9=48Mhz
      //返回值:0,成功;1,失败
      void Stm32_Clock_Init(u32 plln,u32 pllm,u32 pllp,u32 pllq)
      {
          HAL_StatusTypeDef ret = HAL_OK;
          RCC_OscInitTypeDef RCC_OscInitStructure; 
          RCC_ClkInitTypeDef RCC_ClkInitStructure;
      	
          __HAL_RCC_PWR_CLK_ENABLE(); //使能PWR时钟
       
          __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);//设置调压器输出电压级别,以便在器件未以最大频率工作
            
          RCC_OscInitStructure.OscillatorType=RCC_OSCILLATORTYPE_HSE;    //时钟源为HSE
          RCC_OscInitStructure.HSEState=RCC_HSE_ON;                      //打开HSE
          RCC_OscInitStructure.PLL.PLLState=RCC_PLL_ON;				   //打开PLL
          RCC_OscInitStructure.PLL.PLLSource=RCC_PLLSOURCE_HSE;          //PLL时钟源选择HSE
          RCC_OscInitStructure.PLL.PLLM=pllm;	//主PLL和音频PLL分频系数(PLL之前的分频)
          RCC_OscInitStructure.PLL.PLLN=plln; //主PLL倍频系数(PLL倍频)
          RCC_OscInitStructure.PLL.PLLP=pllp; //系统时钟的主PLL分频系数(PLL之后的分频)
          RCC_OscInitStructure.PLL.PLLQ=pllq; //USB/SDIO/随机数产生器等的主PLL分频系数(PLL之后的分频)
          ret=HAL_RCC_OscConfig(&RCC_OscInitStructure);//初始化
          if(ret!=HAL_OK) while(1);
          
          ret=HAL_PWREx_EnableOverDrive(); //开启Over-Driver功能
          if(ret!=HAL_OK) while(1);
          
          //选中PLL作为系统时钟源并且配置HCLK,PCLK1和PCLK2
          RCC_ClkInitStructure.ClockType=(RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2);
          RCC_ClkInitStructure.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK;//设置系统时钟时钟源为PLL
          RCC_ClkInitStructure.AHBCLKDivider=RCC_SYSCLK_DIV1;//AHB分频系数为1
          RCC_ClkInitStructure.APB1CLKDivider=RCC_HCLK_DIV4;//APB1分频系数为4
          RCC_ClkInitStructure.APB2CLKDivider=RCC_HCLK_DIV2;//APB2分频系数为2
          
          ret=HAL_RCC_ClockConfig(&RCC_ClkInitStructure,FLASH_LATENCY_7);//同时设置FLASH延时周期为7WS,也就是8个CPU周期。
          if(ret!=HAL_OK) while(1);
      }
      

       

  5. 总结:核心系统时钟的设置,如上述所示; 至少其它相应外设的时钟,用到哪个再详细分析; 

参考资料:《正点原子STM32F7开发指南-HAL库版本_V1.1 P118》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值