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