STM32时钟配置
程序员文章站
2022-06-09 09:27:32
...
本文以外部高速时钟源HSE为例,介绍STM32F4时钟配置实现。
一、概述
STM32F4时钟树如下图所示:
上图(上图中的180Mhz改为168Mhz)中红色箭头线时钟传播路径,紫色框标注的是重要的时钟配置对象,包括:AHB bus、Core、memory 、DMA、APB peripheral 和 APB timer。下面介绍实现方法。
注:AHB最大允许时钟频率为168MHz,APB2最大为84MHz,APB1最大为42MHz。
二、配置步骤
- 在RCC中设置选择外部外部高速时钟源。HSE=8MHz;
- 配置PLL时钟。由图中可以看出:PLLCLK=HSE/M*N/P。设置M=8,倍频系数N=336,分频器系数P=2,PLLCLK=168MHz;
- 配置SYSCLK。选择SYSCLK=PLLCLK=168MHz;
- 配置HCLK。由上图可以看到,HCLK=SYSCLK/AHB PRESC。设置HCLK=PLLCLK=168MHz;此时AHB bus、Core、memory 、DMA的时钟为168MHz
- 配置SysTick时钟。RCC 向 Cortex 系统定时器 (SysTick) 馈送 8 分频的 AHB 时钟 (HCLK)。 SysTick 可使用
此时钟作为时钟源,也可使用 HCLK 作为时钟源,具体可在 SysTick 控制和状态寄存器中配置。 - 配置APB预分频器。APB预分频器不仅决定了APB外设的频率,还影响定时器的频率。
- STM32F405xx/07xx 和 STM32F415xx/17xx 的定时器时钟频率由硬件自动设置。分为两种情况:
1. 如果 APB 预分频器为 1,定时器时钟频率等于 APB 域的频率。
2. 否则,等于 APB 域的频率的两倍 (×2)。
三、代码清单
STM32F4时钟系统初始化是在system_stm32f4xx.c中完成的。首先
1、全部配置如下:
This file configures the system clock as follows:
*=============================================================================
*=============================================================================
* Supported STM32F40xxx/41xxx devices
*-----------------------------------------------------------------------------
* System Clock source | PLL (HSE)
*-----------------------------------------------------------------------------
* SYSCLK(Hz) | 168000000
*-----------------------------------------------------------------------------
* HCLK(Hz) | 168000000
*-----------------------------------------------------------------------------
* AHB Prescaler | 1
*-----------------------------------------------------------------------------
* APB1 Prescaler | 4
*-----------------------------------------------------------------------------
* APB2 Prescaler | 2
*-----------------------------------------------------------------------------
* HSE Frequency(Hz) | 8000000
*-----------------------------------------------------------------------------
* PLL_M | 8
*-----------------------------------------------------------------------------
* PLL_N | 336
*-----------------------------------------------------------------------------
* PLL_P | 2
*-----------------------------------------------------------------------------
* PLL_Q | 7
*-----------------------------------------------------------------------------
* PLLI2S_N | NA
*-----------------------------------------------------------------------------
* PLLI2S_R | NA
*-----------------------------------------------------------------------------
* I2S input clock | NA
*-----------------------------------------------------------------------------
* VDD(V) | 3.3
*-----------------------------------------------------------------------------
* Main regulator output voltage | Scale1 mode
*-----------------------------------------------------------------------------
* Flash Latency(WS) | 5
*-----------------------------------------------------------------------------
* Prefetch Buffer | ON
*-----------------------------------------------------------------------------
* Instruction cache | ON
*-----------------------------------------------------------------------------
* Data cache | ON
*-----------------------------------------------------------------------------
* Require 48MHz for USB OTG FS, | Disabled
* SDIO and RNG clock |
*-----------------------------------------------------------------------------
*=============================================================================
2、PLL配置
#if defined(STM32F40_41xxx) || defined(STM32F427_437xx) || defined(STM32F429_439xx) || defined(STM32F401xx) || defined(STM32F469_479xx)
/* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */
#define PLL_M 8
#elif defined(STM32F412xG) || defined(STM32F413_423xx) || defined (STM32F446xx)
#define PLL_M 8
#elif defined (STM32F410xx) || defined (STM32F411xE)
#if defined(USE_HSE_BYPASS)
#define PLL_M 8
#else /* !USE_HSE_BYPASS */
#define PLL_M 16
#endif /* USE_HSE_BYPASS */
#else
#endif /* STM32F40_41xxx || STM32F427_437xx || STM32F429_439xx || STM32F401xx || STM32F469_479xx */
/* USB OTG FS, SDIO and RNG Clock = PLL_VCO / PLLQ */
#define PLL_Q 7
上一篇: SpringBoot创建工程
下一篇: STM32F103 ADC实验