打印

急请教:关于TIM3定时中断的疑问

[复制链接]
2250|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lzh8430|  楼主 | 2011-11-24 09:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我现在想达到的目的是:定时中断时间依次递减,比如先是几次1s中断,然后是几次500ms中断,再是几次250ms中断, 再来个125ms的中断。并且这三个中断能够连续 进行,就是说1s中断响应结束后,马上开始500ms的定时。
不知如何操作定时器。我现在是这样:
定时器初始化:
void Timer_Init(uint16_t arr,uint16_t psc)   
{
  //RCC->APB1ENR|=1<<1; //TIM3时钟使能
  TIM3->ARR=arr;         
  TIM3->PSC=psc;           
  TIM3->DIER|=1<<0;        
  TIM3->DIER|=1<<6;      
  TIM3->CR1|=0x01;        
}

主函中这样:
  Timer_Init(10000,7199);
  Delay(0x7a1200);  //延时1s
  Delay(0x7a1200);
  Delay(0x7a1200);
  Delay(0x7a1200);

  TIM3->ARR=5000;
  Delay(0x7a1200);

  TIM3->ARR=2500;
  Delay(0x7a1200);

中断函数是:
void TIM3_IRQHandler(void)
{
  if(TIM3->SR&0x0001) //更新溢出中断
    temp++;
  TIM3->SR &= ~(1<<0);  //清除中断标志位
}
请指点:现在出现了个问题 就是改变预设值ARR时,不同的时间切换中间会有个叫长时间的暂留,
我该怎样才能直接迅速进行时间的切换,多谢指点
沙发
lzh8430|  楼主 | 2011-11-24 10:35 | 只看该作者
自己先顶一下

使用特权

评论回复
板凳
airwill| | 2011-11-24 11:41 | 只看该作者
是主程序修改 ARR 的时间没有凑准.
把 修改 ARR 的代码放在 定时中断里.
免得主程序里凑时间. 并且高效准确.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

81

帖子

1

粉丝