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

本文介绍了STM32的5种时钟源,包括HSE、HSI、LSE、LSI和PLL,并详细讲解了系统时钟的工作原理。重点讲述了如何通过修改启动文件中的SystemInit函数和SetSysClock函数来调整系统时钟频率,以实现从72MHz更改为36MHz的过程,涉及到RCC寄存器配置和条件编译的使用。
摘要由CSDN通过智能技术生成

一.时钟源

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函数中配置。如图:

STM32F103系列微控制器的系统时钟频率可以通过配置其内部的时钟系统更改。这个内部时钟系统包括时钟源、PLL(相位锁环)、分频器等组件,其目的是生成内部总线时钟(如HCLK)、外设时钟(如PCLK)等。 以下是通过软件配置STM32F103系统时钟的一般步骤: 1. 选择时钟源:STM32F103可以使用内部高速时钟(HSI)、外部高速时钟(HSE)或内部低速时钟(LSI/LSE)作为系统时钟源。首先,你需要选择一个时钟源并启动它。 2. 配置PLL:如果需要,可以通过配置PLL参数来调整时钟频率。这通常包括设置PLL的乘法因子和除法因子,以生成所需频率的时钟信号。 3. 设置AHB、APB总线分频器:系统时钟通过分频器可以分配给AHB总线(用于高速外设)、APB1总线(用于低速外设)和APB2总线(用于高速外设)。根据需要调整这些分频器的值来确保外设时钟在安全的频率范围内工作。 4. 选择并使能系统时钟源:最后,将系统时钟切换到你配置好的时钟源(内部时钟或PLL输出)。 5. 确认更新系统时钟:在寄存器中设置相关位,以确认时钟源的切换和分频器的更新。 这里是一个简单的代码示例,展示了如何通过代码更改STM32F103的系统时钟频率(以RCC库函数为例): ```c #include "stm32f10x.h" void RCC_Configuration(void) { // 1. 使能HSE (外部高速时钟) RCC_HSExternalClockCmd(RCC_HSExternalClockEnabled); // 2. 配置PLL参数(以8MHz HSE为例) // 假设我们想要得到72MHz的系统时钟 RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); // 3. 使能PLL RCC_PLLCmd(ENABLE); // 等待PLL稳定 while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); // 4. 设置AHB、APB1和APB2的分频器 // 假设我们不改变默认的分频器值,APB2分频器为1,APB1分频器为2 // 设置系统时钟源为PLL RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); // 等待直到PLL成为系统时钟源 while (RCC_GetSYSCLKSource() != 0x08); } int main(void) { // 配置RCC时钟系统 RCC_Configuration(); // 其他初始化代码 // ... while (1) { // 应用代码 } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值