stm32f103系统时钟频率怎么更改
时间: 2024-09-09 10:08:01 浏览: 49
STM32F103单片机系统时钟部分归纳
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) {
// 应用代码
}
}
```
阅读全文