关闭定时器中断要考虑好多情况
1)关闭定时器时,定时器是否在处在工作状态
2)关闭定时器时,定时器是否正好进入中断,造成关闭程序出现断层,进而无法实现完整关闭程序,此时可以使用高一级别的外部中断强制进入外部中断服务函数进行关闭程序
3)关闭定时器时,关闭定时器的程序是否在定时器服务函数里面?还是在总函数里面?还是在外部中断服务函数里面?是需要考量的?
4)关闭定时器时,定时器的中断触发时间是否太紧凑?定时器的中断总次数是否太小?都会影响关闭定时器程序运行的连续性。
以下为关闭程序:
首先打开时钟,然后才能进行关闭操作。
RCC->APB1ENR|=1<<1; //TIM3时钟使能
TIM3->ARR=arr; //设定计数器自动重装值//刚好1ms
TIM3->PSC=psc; //预分频器7200,得到10Khz的计数时钟
TIM3->DIER|=1<<0; //允许更新中断
关闭定时器:TIM3->CR1 &= ~(0x01);
开启定时器:TIM3->CR1 |= 0x01;
MY_NVIC_Init(1,0,TIM3_IRQChannel,2);//抢占1,子优先级0,组