STM32时钟简介及系统时钟频率的更改方式 |
您所在的位置:网站首页 › stm32最高输出频率 › STM32时钟简介及系统时钟频率的更改方式 |
一.时钟源
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 |