当前位置:   article > 正文

STM32时钟配置_stm32的ahb时钟是多少

stm32的ahb时钟是多少

本文以外部高速时钟源HSE为例,介绍STM32F4时钟配置实现。

一、概述

STM32F4时钟树如下图所示:

上图(上图中的180Mhz改为168Mhz)中红色箭头线时钟传播路径,紫色框标注的是重要的时钟配置对象,包括:AHB bus、Core、memory 、DMA、APB peripheral 和 APB timer。下面介绍实现方法。

注:AHB最大允许时钟频率为168MHz,APB2最大为84MHz,APB1最大为42MHz。

二、配置步骤

  1. 在RCC中设置选择外部外部高速时钟源。HSE=8MHz;
  2. 配置PLL时钟。由图中可以看出:PLLCLK=HSE/M*N/P。设置M=8,倍频系数N=336,分频器系数P=2,PLLCLK=168MHz;
  3. 配置SYSCLK。选择SYSCLK=PLLCLK=168MHz;
  4. 配置HCLK。由上图可以看到,HCLK=SYSCLK/AHB PRESC。设置HCLK=PLLCLK=168MHz;此时AHB bus、Core、memory 、DMA的时钟为168MHz
  5. 配置SysTick时钟。RCC 向 Cortex 系统定时器 (SysTick) 馈送 8 分频的 AHB 时钟 (HCLK)。 SysTick 可使用
    此时钟作为时钟源,也可使用 HCLK 作为时钟源,具体可在 SysTick 控制和状态寄存器中配置。
  6. 配置APB预分频器。APB预分频器不仅决定了APB外设的频率,还影响定时器的频率。
  7. STM32F405xx/07xx 和 STM32F415xx/17xx 的定时器时钟频率由硬件自动设置。分为两种情况:
    1. 如果 APB 预分频器为 1,定时器时钟频率等于 APB 域的频率。
    2. 否则,等于 APB 域的频率的两倍 (×2)。

三、代码清单

STM32F4时钟系统初始化是在system_stm32f4xx.c中完成的。首先

1、全部配置如下:

  1. This file configures the system clock as follows:
  2. *=============================================================================
  3. *=============================================================================
  4. * Supported STM32F40xxx/41xxx devices
  5. *-----------------------------------------------------------------------------
  6. * System Clock source | PLL (HSE)
  7. *-----------------------------------------------------------------------------
  8. * SYSCLK(Hz) | 168000000
  9. *-----------------------------------------------------------------------------
  10. * HCLK(Hz) | 168000000
  11. *-----------------------------------------------------------------------------
  12. * AHB Prescaler | 1
  13. *-----------------------------------------------------------------------------
  14. * APB1 Prescaler | 4
  15. *-----------------------------------------------------------------------------
  16. * APB2 Prescaler | 2
  17. *-----------------------------------------------------------------------------
  18. * HSE Frequency(Hz) | 8000000
  19. *-----------------------------------------------------------------------------
  20. * PLL_M | 8
  21. *-----------------------------------------------------------------------------
  22. * PLL_N | 336
  23. *-----------------------------------------------------------------------------
  24. * PLL_P | 2
  25. *-----------------------------------------------------------------------------
  26. * PLL_Q | 7
  27. *-----------------------------------------------------------------------------
  28. * PLLI2S_N | NA
  29. *-----------------------------------------------------------------------------
  30. * PLLI2S_R | NA
  31. *-----------------------------------------------------------------------------
  32. * I2S input clock | NA
  33. *-----------------------------------------------------------------------------
  34. * VDD(V) | 3.3
  35. *-----------------------------------------------------------------------------
  36. * Main regulator output voltage | Scale1 mode
  37. *-----------------------------------------------------------------------------
  38. * Flash Latency(WS) | 5
  39. *-----------------------------------------------------------------------------
  40. * Prefetch Buffer | ON
  41. *-----------------------------------------------------------------------------
  42. * Instruction cache | ON
  43. *-----------------------------------------------------------------------------
  44. * Data cache | ON
  45. *-----------------------------------------------------------------------------
  46. * Require 48MHz for USB OTG FS, | Disabled
  47. * SDIO and RNG clock |
  48. *-----------------------------------------------------------------------------
  49. *=============================================================================

 2、PLL配置

  1. #if defined(STM32F40_41xxx) || defined(STM32F427_437xx) || defined(STM32F429_439xx) || defined(STM32F401xx) || defined(STM32F469_479xx)
  2. /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */
  3. #define PLL_M 8
  4. #elif defined(STM32F412xG) || defined(STM32F413_423xx) || defined (STM32F446xx)
  5. #define PLL_M 8
  6. #elif defined (STM32F410xx) || defined (STM32F411xE)
  7. #if defined(USE_HSE_BYPASS)
  8. #define PLL_M 8
  9. #else /* !USE_HSE_BYPASS */
  10. #define PLL_M 16
  11. #endif /* USE_HSE_BYPASS */
  12. #else
  13. #endif /* STM32F40_41xxx || STM32F427_437xx || STM32F429_439xx || STM32F401xx || STM32F469_479xx */
  14. /* USB OTG FS, SDIO and RNG Clock = PLL_VCO / PLLQ */
  15. #define PLL_Q 7

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/646715
推荐阅读
相关标签
  

闽ICP备14008679号