我现在想达到的目的是:定时中断时间依次递减,比如先是几次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时,不同的时间切换中间会有个叫长时间的暂留,
我该怎样才能直接迅速进行时间的切换,多谢指点 |