關閉定時器中斷要考慮好多情況
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,組