一TIM简介
对输入时钟进行计数,并在计数值达到设定值时触发中断。
1.16位计数器,预分频器,自动重装器组成的时基单元,在72MHz计数时钟下,可实现最大59.65s定时。
2. 定时器类型
高级定时器(TIM1,TIM8),连接APB2总线
通用定时器(TIM2-5),连接APB1总线
基本定时器(TIM6,TIM7),连接APB1总线
二、定时器结构
1. 时基单元
计数器:执行计数定时的寄存器,每来一个时钟,计数器+1。
预分频器:对计数器的时钟进行分频,使计数更加灵活。实际分频系数=预分频器值+1。
自动重装器:存储计数目标值。计数值=自动重装值时,产生中断信号。同时清空计数器,计数器自动开始下一次计数。
主模式触发ADC功能:将定时器的更新事件映射到TRGO位置。TRGO连接在DAC的触发转换引脚,触发DAC。
2. 通用定时器
计数器模式:
向上计数(自增),向下计数(自减)
中央对齐模式(先向上计数至重装值,中断,后向下计数至0,中断)。
内外时钟源选择:
①内部时钟(72MHz) ②TIMx_ETR外部时钟
通路:选择极性,预分频器——整形滤波——ETRF(触发控制器)/TRGI(从模式)
三、定时中断基本结构
由图可知, 配置定时中断
1. RCC开启时钟
2. 选择时基单元时钟源
3. 配置时基单元
4. 配置输出中断控制
四、代码部分
RCC开启时钟
RCC_APB1PeriphClockCmd (RCC_APB1Periph_TIM2,ENABLE );
选择时钟源
TIM_InternalClockConfig (TIM2);
配置时基单元
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
TIM_TimeBaseInitStruct.TIM_ClockDivision =TIM_CKD_DIV1;
TIM_TimeBaseInitStruct.TIM_CounterMode =TIM_CounterMode_Up;
TIM_TimeBaseInitStruct.TIM_Period =10000-1;
TIM_TimeBaseInitStruct.TIM_Prescaler =7200-1;
TIM_TimeBaseInitStruct.TIM_RepetitionCounter =0;
TIM_TimeBaseInit (TIM2,& TIM_TimeBaseInitStruct);
TIM_ClearFlag (TIM2,TIM_IT_Update);
TIM_ITConfig (TIM2,TIM_IT_Update,ENABLE );
配置NVIC NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitTypeDef NVIC_InitStruct;
NVIC_InitStruct.NVIC_IRQChannel =TIM2_IRQn;
NVIC_InitStruct.NVIC_IRQChannelCmd =ENABLE;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority =2;
NVIC_InitStruct.NVIC_IRQChannelSubPriority =1;
NVIC_Init (&NVIC_InitStruct);
TIM_Cmd (TIM2,ENABLE ); //开启定时器