定时器类型可分为:
1.基本定时器:定时中断,主模式触发DAC
2.通用定时器:拥有基本所有功能,输入捕获、输出比较,额外具有内外时钟选择
3.高级定时器:具备重复计数、互补输出、刹车输入
配置流程:
1.开启对应TIM外设时钟。
2.开启内部时钟。
3.定义结构体,利用定时器配置函数配置定时器基本参数。
4.定义定时器中断配置。
5.配置NVIC优先级分组。
6.定义NVIC结构体,初始化NVIC。
7.使能定时器。
8.查找启动md文件,命名中断函数名称
具体代码如下
void Timer_Init(void)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//使能时钟
TIM_InternalClockConfig(TIM3);//开启内部时钟
TIM_TimeBaseInitTypeDef TIM_TimebaseStruct;//定义结构体
TIM_TimebaseStruct.TIM_ClockDivision = TIM_CKD_DIV1;//一分频
TIM_TimebaseStruct.TIM_CounterMode = TIM_CounterMode_Up;//向上计数模式
TIM_TimebaseStruct.TIM_Period = 10000-1;//计数10000
TIM_TimebaseStruct.TIM_Prescaler = 7200-1;//预分频7200
TIM_TimebaseStruct.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit(TIM3,&TIM_TimebaseStruct);
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);//定时中断配置
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//NVIC分组优先级配置
NVIC_InitTypeDef NVIC_Structure;
NVIC_Structure.NVIC_IRQChannel = TIM3_IRQn;//TIM3中断
NVIC_Structure.NVIC_IRQChannelCmd = ENABLE;//使能
NVIC_Structure.NVIC_IRQChannelPreemptionPriority = 2;//抢占优先级
NVIC_Structure.NVIC_IRQChannelSubPriority = 1;//响应优先级
NVIC_Init(&NVIC_Structure);
TIM_Cmd(TIM3,ENABLE);//使能
}
void TIM3_IRQHandler(void)//中断执行函数
{
if(TIM_GetITStatus(TIM3,TIM_IT_Update) == SET)//如果中断标志位置为SET
{
count ++;//执行count++操作
TIM_ClearITPendingBit(TIM3,TIM_IT_Update);//清除中断标志位
}
}