STM32F1时钟系统

前言:从学校毕业出来差不多一年多了,第一份工作历经周折多次换岗,功夫不负有心人,终于算从事了一份自己目前所喜欢的工作:mcu软件助理工程师。在边工作,边学习的鞭策下希望用文字来记录自己的一些学习心得,或许能帮助到需要帮助的人,也让自己对学习的东西有所总结。

这篇博客主要是讲解我学习STM32F1时钟系统部分知识的一些总结。

一、STM32F10xx时钟系统框图及说明(此图摘自正点原子)

STM32F1时钟系统

二、对框图的一些理解

①5个时钟源:HSE(高速外部时钟)、HSI(高速内部时钟)、LSE(低速外部时钟)、LSI(低速内部时钟)、PLL(锁相环倍频输出)

②IWDGCLK(独立看门狗时钟):来自LSI(低速内部时钟),约40KHz。

③RTCCLK(RTC实时时钟):项目中一般是使用LSE(低速外部时钟),32.768KHz。

④USBCLK(USB时钟):来自PLLCLK,有一个预分频器USB Prescaler,最终48MHz。

⑤一般情况下PLLCLK = SYSCLK(系统时钟);HCLK = SYSCLK;PCLK1 = SYSCLK \ 2;PCLK2 = SYSCLK。

三、额外讲解

时钟的初始化在SystemInit()函数中,此函数在System_stm32f10xx.c源文件中定义,在启动文件中有调用,如果需要修改配置,可在源文件中改,一般情况下不做修改,直接使用就好了,重在理解其原理。