智能车制作

标题: 定时器中断问题~~ [打印本页]

作者: 黎明sunshine    时间: 2012-9-6 21:31
标题: 定时器中断问题~~
void pit0_isr(void)
{  
DisableInterrupts;                   //关总中断
  
  if((PIT_TFLG(0)&PIT_TFLG_TIF_MASK)!=0)  //PIT_TFLG 定时器中断标志
  {  
light_change(Light_Run_PORT, Light_Run1);//改变指示灯1状态
PIT_TFLG(0)|=PIT_TFLG_TIF_MASK;       //清标志
  }
  enable_pit_interrupt(0);
  EnableInterrupts;           //开总中断


}

这是个中断定时器历程
为什么关闭了总中断又打开?
一直这样循环??

作者: xc229876115    时间: 2012-9-6 22:57
进入定时器中断后,关闭总中断时为了防止新的中断,当定时器中断执行完毕后才允许新的中断
作者: 月光疾风    时间: 2012-9-7 00:37
为了执行定时中断服务程序时,不被别的中断打断,关闭全局中断,执行完了定时中断再恢复全局
作者: Nelson90    时间: 2012-9-17 10:07
做个记号,下次好找!
作者: 夏唯夕    时间: 2012-12-31 20:14
额。。
作者: zhangxxxww    时间: 2013-4-20 20:57
月光疾风 发表于 2012-9-7 00:37
为了执行定时中断服务程序时,不被别的中断打断,关闭全局中断,执行完了定时中断再恢复全局

这个我怎么感觉老有点问题,就是先关中断就不会进入中断,我做过实验,发光二极管不闪

作者: zhangxxxww    时间: 2013-4-20 21:00
月光疾风 发表于 2012-9-7 00:37
为了执行定时中断服务程序时,不被别的中断打断,关闭全局中断,执行完了定时中断再恢复全局

我做过实验,先关中断后程序小灯就不亮了





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2