stm32F103定时器时钟频率
时间: 2025-01-06 19:40:18 浏览: 186
### STM32F103 定时器时钟频率配置
#### 一、定时器概述
STM32F103系列微控制器中的定时器分为三种类型:高级定时器(TIM1 和 TIM8),通用定时器(TIM2 至 TIM7),以及基本定时器(TIM6 和 TIM7)[^3]。
#### 二、时钟源选择
对于高级控制定时器TIM1和TIM8而言,其时钟源可以选择APB2定时器时钟经过可编程预分频后的输出。而其他类型的定时器则通常由APB1总线提供时钟信号。具体来说,在STM32CubeMX工具中可以通过设置参数来指定所需的时钟输入路径及其除法因子[^1]。
#### 三、使能定时器外设时钟
为了操作某个特定的定时器之前,必须先通过RCC(Reset and Clock Control)模块激活该设备对应的时钟供应线路。例如要启动TIM3,则需执行如下C语言代码片段:
```c
// 启用TIM3所在的APB1总线上电平与时钟供给
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
```
这段程序会开启连接至TIM3的电源并允许访问此硬件资源[^2]。
#### 四、设定预分配系数(PSC)
每一个计数器都有自己的预分配寄存器用于调整实际工作周期长度。假设希望得到精确到毫秒级的时间间隔测量功能,那么可以按照下面的方式初始化PSC成员变量:
```c
TIM_TimeBaseStructure.TIM_Period = 999; // 自动重装载值为999 (ARR), 即每满1000次溢出一次
TIM_TimeBaseStructure.TIM_Prescaler = 7199; // PSC=7199意味着系统主频被分成72MHz/(7199+1)=约等于1kHz
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
```
这里`TIM_Prescaler`决定了内部振荡次数与外部可见脉冲之间的比例关系;当它加上1之后再乘以`TIM_Period + 1`就构成了完整的延时期间单位数量。
#### 五、计算最终频率
如果已知系统的AHB/APB总线速度(比如本案例中提到的是72 MHz),并且已经设置了合适的预分配数值,就可以很容易地算出目标定时器的实际运行速率了。以上面的例子为例,由于选择了72 MHz作为基础频率,并且将预分配值定为7199,因此每次中断触发之间大约相隔一秒时间。
阅读全文
相关推荐


















