STM32时钟简介及系统时钟频率的更改方式

您所在的位置:网站首页 stm32最高输出频率 STM32时钟简介及系统时钟频率的更改方式

STM32时钟简介及系统时钟频率的更改方式

2023-09-23 06:46| 来源: 网络整理| 查看: 265

一.时钟源

STM32有5个时钟源,分别是:

1.HSE:High_Speed_Extenal 外部高速时钟,焊接在芯片外部,精确度较高,是系统时钟的主要来源。

2.HSI :High_Speed_Inernal内部高速时钟,在芯片内部,精度不高。

3.LSE:Low_Speed_Extenal外部低速时钟,接频率为32.768kHz的石英晶体。主要为RTC时钟服务。

4.LSI:Low_Speed_Inernal内部低速时钟,提供低功耗时钟,大小为40kHz,主要用于驱动独立看门狗。

5.PLL:Phase-locked loop锁相环时钟,其时钟源由HSE和HSI提供。

二.系统时钟

1.系统时钟(SYSCLK):时钟源由PLL、HSE、HSI提供。其中,系统时钟主要由HSE--->选择器--->选择器--->PLL这一条线路来提供。

PS:这也是为什么PLL被称作时钟源的原因,因为相对于系统来说,PLL可以为系统时钟提供时钟来源。 

2.系统时钟分为3路:第一路为HCLK,最大频率为72MHz;第二路挂载在APB1总线下,最大频率为36MHz;第三路挂载在APB2总线下,最大频率为72MHz。

三.修改系统时钟的方法

1.观察启动文件,发现在执行SystemInit函数后,才会执行main函数,而系统时钟就是在SystemInit函数中配置。如图:

2.利用鼠标右键点击SystemInit,选择Go To Definition Of 'SystemInit' ,可以跳转到void SystemInit()函数,里面都是RCC寄存器的配置。如图:

3.重点观察SystemInit()函数中的这个函数,SetSysClock()函数(PS:SetSysClock意为设置系统时钟),同样利用Go To Definition Of 'SetSysClock'跳转到SetSysClock函数内部。

4.在SetSysClock函数内部是一堆条件编译,系统时钟设为72MHz的原因是因为我们宏定义了SYSCLK_FREQ_72MHz,从而执行了编译条件 'defined SYSCLK_FREQ_72MHz'使得执行了SetSysClockTo72(); 从而设置了系统时钟72MHz。如图:

所以,我们改变系统时钟为36MHz的方法是将宏定义defined SYSCLK_FREQ_72MHz改为defined SYSCLK_FREQ_36MHz。

改变流程:右键选中SYSCLK_FREQ_72MHz,点击,选择Go To Definition Of 'SYSCLK_FREQ_72MHz'点击跳转,跳转后,将代码

#define SYSCLK_FREQ_72MHz 72000000//将此行注释

注释掉,将 /* #define SYSCLK_FREQ_36MHz  36000000 */ 此段注释抹去,重新编译,即将系统时钟改变为36MHz。

/* #define SYSCLK_FREQ_36MHz 36000000 */ 将此段注释抹去

流程如图:

选中SYSCLK_FREQ_72MHz,跳转到宏定义:

更改注释:

更改完成:

 声明:文章原创不易,转载引用请声明出处。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3