浅谈中断函数中调用延时函数存在的bug及解决方法

大家在学习开发过程中会发现一个问题,就是在使用中断函数时,绝大多数情况下是避免不了在中断函数里调用延时函数的,然而,就是这样导致了一些bug,困扰了我许久,我不知道大家有没有遇到过这种问题,如果有,那恭喜你,我已经帮你踩了坑,让我来给你讲讲吧。

为什么说这样会有问题呢,你不妨在你的代码中试试,你就会发现,当你的代码运行到中断函数中的延时函数时,它就卡死了,即整个程序都正常不了了,也相当于要重置你的程序,不过在重置后运行到刚才所谓的延时函数时,它将再一次卡死,这样是不行的。

我经过探索之后发现了问题所在,就是,那些比如按键触发等需要人为参与的中断,均会存在此问题,原因就是:人为操作时间如果短于延时时间,则程序在触发中断过程中,比如按下按键过程均视为中断触发,计时器在计时,延时时间已过,故程序在等待已超的计时器必然等不到,比如需计到2000,而触发中断过程后就已经记到2500,这样就会卡死。

那这样的中断就不能用延时了吗,可是延时功能又是不可或缺的呀,我将给你方法:定时器。

没错,解决方法就是定时器。既然你要避免人为操作时间导致计时器计过,那么我就再来一个级别更高的定时器中断,让它每隔一段时间计数一次,则你在要延时的地方加一个判断函数即可,即计数在增加,计到多少换算成延时时间。这样一来,是不是解决了。

只有亲身经历过这个问题 才能体会到我方法的巧妙之处,希望对你们有帮助。

下期出代码辅助理解!

 

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值