stm32定时器初始化
时间: 2023-09-16 11:13:05 浏览: 124
以下是 STM32 定时器初始化的代码示例:
```c
/* 定时器初始化函数 */
void TIM_Init(TIM_TypeDef* TIMx, uint16_t prescaler, uint16_t period) {
/* 使能定时器时钟 */
if (TIMx == TIM1) RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
else if (TIMx == TIM2) RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
else if (TIMx == TIM3) RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
else if (TIMx == TIM4) RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
/* 初始化定时器 */
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_TimeBaseStructure.TIM_Period = period - 1; // 自动重装载值
TIM_TimeBaseStructure.TIM_Prescaler = prescaler - 1; // 分频系数
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; // 向上计数模式
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; // 时钟分割
TIM_TimeBaseInit(TIMx, &TIM_TimeBaseStructure);
/* 使能定时器 */
TIM_Cmd(TIMx, ENABLE);
}
```
其中,`TIMx` 表示要初始化的定时器,可以是 `TIM1`、`TIM2`、`TIM3` 或 `TIM4`。`prescaler` 表示分频系数,`period` 表示自动重装载值。在函数内部,根据 `TIMx` 的不同,调用不同的使能定时器时钟的函数。然后,初始化定时器的各个参数,并使能定时器。
阅读全文