stm32定時器初始化后自動進入一次中斷問題


今天在調試定時器時,定時器3出現了自動停止工作的問題,中斷設置是每過一秒,進一次中斷,相應標志位+1,然后每次都是在標志位=4時停止工作,但是有時候又能正常工作,暫時未解決。

在調試時,發現一個有趣的現象,本次項目我同時配置了定時器4,初始化后是DISABLE未使能狀態,但是開始運行,定時器還是會進一次中斷,相應的標志位+1,后面不能繼續增加。

 

motor_run_time這個標志位在程序啟動后會進一次中斷導致+1,而我的定時器並未使能。

 

我的相關代碼是

初始化部分代碼:
    TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE); //允許定時器4更新中斷
    TIM_Cmd(TIM4, DISABLE); //關閉定時器4

//定時器4中斷服務函數
void TIM4_IRQHandler(void)
{

    if (TIM_GetITStatus(TIM4, TIM_IT_Update)  != RESET) //溢出中斷
    {
        motor_run_time++;
    }

    TIM_ClearITPendingBit(TIM4, TIM_IT_Update); //清除中斷標志位
}

 

在參考http://www.51hei.com/bbs/dpj-40940-1.html后,我對代碼進行了一些調整,解決了這個自動進一次中斷的問題

增加部分:    TIM_ClearITPendingBit(TIM4, TIM_IT_Update); //清除中斷標志位   
    TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE); //允許定時器4更新中斷
    TIM_Cmd(TIM4, DISABLE); //關閉定時器4

//定時器4中斷服務函數
void TIM4_IRQHandler(void)
{

    if (TIM_GetITStatus(TIM4, TIM_IT_Update)  != RESET) //溢出中斷
    {
        motor_run_time++;
    }

    TIM_ClearITPendingBit(TIM4, TIM_IT_Update); //清除中斷標志位

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM