stm32f405基本定时器TIM2和TIM3初始化代码
时间: 2023-08-20 21:07:34 浏览: 195
好的,以下是基本定时器TIM2和TIM3的初始化代码:
1. TIM2初始化代码:
```c
void TIM2_Init(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); // 使能TIM2时钟
TIM_TimeBaseInitStruct.TIM_Prescaler = 72 - 1; // 预分频器,定时器时钟为72MHz/72=1MHz
TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up; // 向上计数模式
TIM_TimeBaseInitStruct.TIM_Period = 1000 - 1; // 自动重装载值,定时1ms
TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStruct); // 初始化TIM2定时器
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); // 允许更新中断
TIM_Cmd(TIM2, ENABLE); // 使能TIM2定时器
}
```
2. TIM3初始化代码:
```c
void TIM3_Init(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); // 使能TIM3时钟
TIM_TimeBaseInitStruct.TIM_Prescaler = 72 - 1; // 预分频器,定时器时钟为72MHz/72=1MHz
TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up; // 向上计数模式
TIM_TimeBaseInitStruct.TIM_Period = 5000 - 1; // 自动重装载值,定时5ms
TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStruct); // 初始化TIM3定时器
TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE); // 允许更新中断
TIM_Cmd(TIM3, ENABLE); // 使能TIM3定时器
}
```
以上代码中,我们使用了STM32F405的72MHz内部时钟作为定时器的时钟源,并通过预分频器将其分频为1MHz。定时器的计数模式为向上计数,自动重装载值为1000和5000分别表示1ms和5ms的定时时间。TIM_ITConfig函数用于使能定时器的更新中断,TIM_Cmd函数用于使能定时器。
希望这些代码对你有帮助!
阅读全文