• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

MCU的中断函数里面为什么不能用延时函数

Biggerpast 2020-01-17 浏览量:4975
如果在中断函数里面加了延时函数会有什么后果
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 因为中断函数的优先级比主函数要高很多,所以当中断产生的时候会优先执行中断,如果在中断里面加延时函数,会导致中断的时间过长,而主函数得不到有效的时间去执行,这样的话就会到系统的实时性得不保证,所以我们不仅要避免在中断里面加延时函数,更要避免中断任务的执行时间过长
    • 发布于 2020-01-20
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:6
  • 会使其他中断无法及时响应,导致系统失效。不过如果你只用一个中断,那就无所谓了,加延时只是降低执行效率而已。
    • 发布于2020-01-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 时效性,如果对这个没要求,那就是随便
    • 发布于2020-01-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 不是说完全不能用,而是尽量不要用。因为单片机主要用来做控制,实时性很重要,如果在中断中有延时函数,在延时期间,如果有低优先级的中断产生,MCU就得不到相应,实时性变得很差。如果只是用了一个中断,并在这个中断中有延时函数,这个就没有太大影响了。具体情况具体分析,比如有些设计main函数中只做等待,有且只有一个中断,所有操作都在中断中执行,此时中断中增加延时函数不会有任何影响。
    • 发布于2020-01-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 准确的说,是不建议中中断处理中进行延时,特别是长时间延迟处理。

    因为中断处理的要求是即时处理,尽快退出,加了延时就违背了这样的要求。

    如果是有多个中断处理的系统,中断处理延时了,则比它低优先级的中断在延时处理完之后都是无效的啦,这样会拖慢整个系统的执行效率。所以绝大多数情况下都不建议加。

    如果能忍受上面提到的劣势,其实加延时来处理是没有任何逻辑、程序语法方面的错误。

    • 发布于2020-01-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 中断里面延时会导致卡在中断里面一段时间,导致其它程序无法运行,中断处理函数应当尽可能快地退出


    • 发布于2020-01-19
    • 举报
    • 评论 0
    • 0
    • 0

  • 如果延时过大, 等下次中断进来延时还没结束那么就永远在中断里面死循环了
    • 发布于2020-02-02
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

MCU的中断函数里面为什么不能用延时函数