我的定时器启动后先进一次中断

michaelcheng   2010-9-3 12:36 楼主
大家好
我用的stm32单片机,我已经做了其他可能的排除,最好确定 定时器使能后先进入一次中断。
我感觉应该是有些标志位没有清除,希望各位大侠帮我看看。

void TIM_Configuration(void)
{
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;

  /* Time base configuration */
  TIM_TimeBaseStructure.TIM_Period = 6000;         
  TIM_TimeBaseStructure.TIM_Prescaler = 0;      
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;   
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
  
  /* Prescaler configuration */
  TIM_PrescalerConfig(TIM2, 36000-1, TIM_PSCReloadMode_Immediate);
  
TIM_ARRPreloadConfig(TIM2, ENABLE);
  
  //清中断,以免一启用中断后立即产生中断
  TIM_ClearFlag(TIM1, TIM_FLAG_Update);

  //清零脉冲计数器
  TIM_SetCounter(TIM2,0x0000);

  // TIM 中断使能  
  TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
  
  //TIM2 使能
  TIM_Cmd(TIM2, ENABLE);
}

回复评论 (6)

你确认在执行
TIM_Cmd(TIM2, ENABLE);
语句后cpu马上进入了中断函数?
允许后会开时计数,计数满值后就会进行中断
点赞  2010-9-4 17:57
                                 我确认,因为我做了,中断使能后马上禁止中断的实验,也进了中断,说明使能后直接进的中断。
点赞  2010-9-7 15:25
                                 把计数器清0,再开始计数
点赞  2010-9-7 22:06
先设置计时参数,使能中断,禁止计数。
再启动计数
点赞  2010-9-9 23:16
                                 我的也是 但是我是使能中断后直接进入中断服务程序的 还没有使能TIM。。。不知道为什么有人知道吗
点赞  2010-9-10 23:11
                                 mark
点赞  2010-9-13 09:22
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复