zoukankan      html  css  js  c++  java
  • STM32学习笔记——高级定时器TIM1更新中断配置

    stm32高级定时器TIM1,更新中断初始化配置和普通定时器差别不大,需要注意的是结构IM_TimeBaseInitTypeDef中TIM_RepetitionCounter配置问题。TIM_RepetitionCounte是用来配置重复计数,就是重复溢出多少次才给你来一个溢出中断,只有高级定时器需要配置。下面是官方库中对它的注释:




    它对应的寄存器叫TIM1_RCR.如果这个值不配置,上电的时候寄存器值可是随机的,本来1秒中断一次,可能变成N 秒中断一次。下图是stm32参考手册中对该寄存器的详细解释:



    总结一下高级定时器溢出中断配置的步骤:

    1,时钟使能

    2,配置预分频、自动重装值和重复计数值

    3,清除中断标志位(否则会先进一次中断)

    4,使能TIM中断,选择中断源

    5,设置中断优先级

    6,使能TIMx外设

    下面附上我用库函数写的TIM1溢出中断配置程序代码:

    //arr:自动重装值。
    //psc:时钟预分频数
    void Timer1_Init(u16 arr,u16 psc)
    {
      TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
      NVIC_InitTypeDef NVIC_InitStructure;
    
      RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); //时钟使能
    
      TIM_TimeBaseStructure.TIM_Period = arr; //设置自动重装载寄存器周期值
      TIM_TimeBaseStructure.TIM_Prescaler =(psc-1);//设置预分频值
      TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割
      TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上计数模式
      TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;//重复计数设置
      TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); //参数初始化
      TIM_ClearFlag(TIM1, TIM_FLAG_Update);//清中断标志位
    
      TIM_ITConfig(      //使能或者失能指定的TIM中断
        TIM1,            //TIM1
        TIM_IT_Update  | //TIM 更新中断源
        TIM_IT_Trigger,  //TIM 触发中断源 
        ENABLE  	     //使能
        );
    	
      //设置优先级
      NVIC_InitStructure.NVIC_IRQChannel = TIM1_UP_IRQn;  
      NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//先占优先级0级
      NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;  	   //从优先级0级
      NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
      NVIC_Init(&NVIC_InitStructure); 
    
      TIM_Cmd(TIM1, ENABLE);  //使能TIMx外设
    }

    void TIM1_UP_IRQHandler(void) 
    { 	    	  	     
    	if (TIM_GetITStatus(TIM1, TIM_IT_Update) != RESET)//检查指定的TIM中断发生与否:TIM 中断源 
    	{
    		TIM_ClearITPendingBit(TIM1, TIM_IT_Update);//清除TIMx的中断待处理位:TIM 中断源 
    /***************在此处添加中断执行内容******************/
    
    	}	     
    } 
  • 相关阅读:
    HDU 5744
    HDU 5815
    POJ 1269
    HDU 5742
    HDU 4609
    fzu 1150 Farmer Bill's Problem
    fzu 1002 HangOver
    fzu 1001 Duplicate Pair
    fzu 1150 Farmer Bill's Problem
    fzu 1182 Argus 优先队列
  • 原文地址:https://www.cnblogs.com/yucen/p/9343584.html
Copyright © 2011-2022 走看看