STM32的时钟系统体系结构

一、STM32 5个时钟源:HSIHSELSILSEPLL

     ①HSI振荡器(RC振荡器)时钟是高速内部时钟,一般很少使用,因为精度没有外部高速时钟(晶振)那么高

   ②HSE是高速外部时钟接石英/陶瓷谐振器,或接外部时钟源,频率范围为4MHz~26MHz,M4开发板是8M         

        ③LSI是低速内部时钟,RC振荡器,频率为32kHz提供低功耗时钟。主要供独立看门狗和自动唤醒单元使用。

   ④LSE是低速外部时钟,接频率为32.768kHz的石英晶体。用于驱动 RTC 时钟 (RTCCLK)

   ⑤PLL为锁相环倍频输出(倍频时钟)。STM32F4有两个PLL:

    1、主PLL(PLL)HSE或者HSI提供时钟信号,并具有两个不同的输出时钟。

            第一个输出PLLP用于生成高速的系统时钟(最高168MHz

            第二个输出PLLQ用于生成USBOTG FS的时钟(48MHz),随机数发生器的时钟和SDIO时钟。

    2、专用PLL(PLLI2S)用于生成精确时钟,从而在I2S接口实现高品质音频性能。

------------------------------------------------------------------------------------------------------------------------------------------------------

二、系统时钟SYSCLK可来源于三个时钟源:
        ①、HSI振荡器时钟

        ②、HSE振荡器时钟

        ③、PLL时钟

------------------------------------------------------------------------------------------------------------------------------------------------------

三、时钟树

STM32的时钟系统体系结构

STM32的时钟系统体系结构

------------------------------------------------------------------------------------------------------------------------------------------------------

四、开发板与系统时钟频率不匹配,如何修改?

1.查看汇编文件 startup_stm32f40_41xxx.s的第177行

Reset_Handler    PROC // 复位中断执行

EXPORT  Reset_Handler             [WEAK] // 复位中断执行

IMPORT  SystemInit // 系统时钟初始化的入口

IMPORT  __main

 

       LDR     R0, =SystemInit  // 系统时钟初始化

       BLX     R0

       LDR     R0, =__main  // 启动main

       BX      R0

       ENDP

 

2.查看system_stm32f4xx.c的第252行开始

PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N

PLL_VCO  = (8000000 / 8) * 336

 

计算公式:SYSCLK = PLL_VCO / PLL_P = 336*1000000 / 2 == 168000000 == 168000KHz == 168MHz

------------------------------------------------------------------------------------------------------------------------------------------------------

修改:system_stm32f4xx.c第254行

#define PLL_M      25

修改为:

#define PLL_M      8

修改 stm32f4xx.h第127行

#if !defined  (HSE_VALUE)

#define HSE_VALUE    ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */

修改为:

#if !defined  (HSE_VALUE)

#define HSE_VALUE    ((uint32_t)8000000) /*!< Value of the External oscillator in Hz *

(如遇到无法修改:权限问题:)点击名字那里能看到路径,找到.h修改权限

STM32的时钟系统体系结构

----------------------------------------------------------------------------------------------------------------------------------

根据文档了解我们的开发板的总线时钟频率:

系统时钟频率:标准频率为168MHz

AHB时钟频率:168MHz

APB1时钟频率:42MHz

APB2时钟频率:84MHz

 

超频:提高cpu运行的时钟频率。

调节PLL_N为432;

降频:降低CPU运行的时钟频率。

调节PLL_N为168;