您的位置:首页 > 其它

STM32通用定时器配置

2016-10-01 22:10 218 查看
这里主要介绍通用定时器的配置,主要针对TIM2来说明,其他的类似。整个配置过程主要由三部分组成:

1、定时器参数配置,打开对应时钟,设置定时时间,计数方式,清除标志位。

      需要注意的是掌握如何设置定时的时间,设置时间=((1+TIM_Period )/ 72M)* TIM_Period 

     例如需要设置1s,((1+35999)/ 72M)*2000 = 1000ms=1s

void Timer_Configuration(void)

{

    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);

TIM_DeInit(TIM2);
TIM_TimeBaseStructure.TIM_Period = 2000;
TIM_TimeBaseStructure.TIM_Prescaler =35999; 
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; 
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

TIM_ClearFlag(TIM2, TIM_IT_Update);
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE );

TIM_Cmd(TIM2, ENABLE);  //使能TIM2外设

}

2、设置中断优先级

void Timer_NVIC_Configuration(void)

{

  NVIC_InitTypeDef NVIC_InitStructure; 

  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);           //抢占式优先级别设置为无抢占优先级

  NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;          //指定中断源

  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;        //指定响应优先级别1

  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
       //使能外部中断通道

  NVIC_Init(&NVIC_InitStructure);

   

}

3、编写定时器中断处理函数

void TIM2_IRQHandler(void)

{

  if(TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) 

    {
   TIM_ClearITPendingBit(TIM2, TIM_IT_Update);

        //添加中断处理程序  
count++;
   if(count>=60)
  count=0;
printf("count=%d\n", count);
 

     }

}

4、实物图

      
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息