zoukankan      html  css  js  c++  java
  • 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); //清除中断标志位

    }

  • 相关阅读:
    php截取字符串
    PHP数据类型转换(字符转数字,数字转字符)
    php数组添加元素的方法
    更改jdk后,eclipse运行jsp出错
    U盘启动装完系统后 一拔下优盘 就不能进入系统
    SVN回滚版本
    在JSP中如何使用JavaBean
    Python使用numpy实现BP神经网络
    神经网络测试结果很差,该怎么做
    神经网络测试结果很差,该怎么做
  • 原文地址:https://www.cnblogs.com/hexia7935/p/14601041.html
Copyright © 2011-2022 走看看