stm32f103c8t6定时器1秒
时间: 2025-03-05 15:47:01 浏览: 39
### 配置 STM32F103C8T6 定时器实现 1 秒延时
为了使 STM32F103C8T6 单片机能够通过定时器实现每秒钟触发一次事件,可以采用通用定时器来完成此任务。STM32F103C8T6 提供了多个不同类型的定时器,其中包含了通用定时器 TIM2 至 TIM5[^1]。
对于设定为 72 MHz 主频的 STM32F103C8T6 而言,在配置定时器周期(Period)以及预分频系数(Prescaler)时需考虑这些参数:
- **TIM_Period**: 设定为 `7200 - 1` 表示计数值达到 7200 后溢出并重新开始计数;
- **TIM_Prescaler**: 设置成 `100 - 1` 则意味着输入频率被除以 100;因此实际用于计数的有效频率变为 \( \frac{72MHz}{100} = 720kHz\) 或者说每次递增所需时间为约 1.39 μs (即 \( \frac{1}{720,000}\))。
当上述两个参数组合起来工作时,整个过程大约花费 1 秒钟才能让定时器发生一次溢出中断[^3]。具体计算如下所示:
\[ T_{total}=N\times(T_{prescaler})=(7200)\times(1/720k)=1\text{s} \]
下面是一段基于 HAL 库编写用来初始化 TIM2 并设置其自动重装载值和预分配比例的例子代码:
```c
#include "main.h"
// 声明全局变量
TIM_HandleTypeDef htim2;
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_TIM2_Init(void);
int main(void){
// 初始化硬件资源
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_TIM2_Init();
// 开启定时器更新中断
HAL_TIM_Base_Start_IT(&htim2);
while (1){}
}
static void MX_TIM2_Init(void){
__HAL_RCC_TIM2_CLK_ENABLE()
htim2.Instance = TIM2;
htim2.Init.Prescaler = 7200 - 1; /* Prescaler value */
htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
htim2.Init.Period = 100
阅读全文
相关推荐


















