TIM定时中断

一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. 通用定时器

6a304f27a92e4901ba5afeac9bd18ed3.jpg

 计数器模式:

向上计数(自增),向下计数(自减)

中央对齐模式(先向上计数至重装值,中断,后向下计数至0,中断)。

内外时钟源选择:

①内部时钟(72MHz)    ②TIMx_ETR外部时钟

通路:选择极性,预分频器——整形滤波——ETRF(触发控制器)/TRGI(从模式)

三、定时中断基本结构

b9fab9ef42264a27934f2b61f44599b7.png

由图可知, 配置定时中断

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 ); //开启定时器

 

 

 

 

 

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值