STM32配置时钟系统流程详解(固件库/外设标准库)

前提:STM32F10x系列固件库(标准外设库)

前言:

       固件库帮我们写好了 ‘时钟系统(/时钟树)的配置函数’ ,该函数也不需要我们去调用,只要正确包含了STM32的启动文件(.s文件)就行。.s启动文件调用执行了时钟配置函数,先于main函数执行(.s启动文件执行完才到main函数执行)。

       库的时钟配置函数的默认配置是:HSE为8MHz,系统时钟是72MHz。如果有HSE,就把HSE作为时钟源,没有HSE就把HSI作为时钟源。配置函数中会检测有无HSE。

       大多情况下,默认配置的时钟系统就满足我们的使用了,并不需要更改。如果需要更改的话,后面有教程。

       本文先讲解固件库是怎么配置时钟系统的,再讲一下,怎么去更改固件库的默认的时钟配置。

注意:STM32F103x的固件库的默认配置是:HSE是8MHz,系统时钟是72MHz。

正文:

一、固件库的时钟配置过程分析:

1、在main之前,执行SystemInit(),完成对系统时钟的配置。

2、SystemInit()函数

 

 

 3、SetSysClock()函数

 

 

4、SetSysClockTo72()函数

 

 

5、默认的外部晶振频率

总结以上的时钟配置流程: 

库的系统时钟函数先是使能HSI,并把HSI作为时钟源(复位后,HSI自然就是时钟源了);

然后启动HSE,

     如果HSE起振成功,那就切换,时钟源由HSI切换为HSE;

     如果HSE起振失败,那就啥也不做(上一步已经把HSI设置时钟源了,就算HSE不起振也没事);

二、修改时钟配置

1、需求:我的主板的晶振原来是8MHz的,现在更换为16NHz了,但我还是希望系统时钟保持为原来的72MHz。

(1)、把库中的HSE_VALUE由默认的8M改为16M

(2)、改HSE相关的分频系数

至此,完成时钟配置的修改。 

 

2、需求:我的主板没有外部晶振,我想启动HSI作为时钟源,并把系统时钟配置为72MHz。

答:啥也不用做,固件库中,系统时钟默认就是72MHz。另外,固件库的时钟配置函数中,第一步就把HSI启动了。随后的一系列复位操作后,HSI就是时钟源了。之后的HSE启动如果成功,才会把HSE设置为时钟源,你的主板没有HSE,HSE自然启动不成功,那就还是保持着HSI作为时钟源。

物联沃分享整理
物联沃-IOTWORD物联网 » STM32配置时钟系统流程详解(固件库/外设标准库)

发表评论