美文网首页嵌牛IT观察
ISR处理时间为什么不能太长?

ISR处理时间为什么不能太长?

作者: szx_330d | 来源:发表于2018-12-17 10:14 被阅读0次

姓名:宋子璇

学号:16020199060

转载自:https://zhuanlan.zhihu.com/p/21704605

【嵌牛导读】:ISR处理时间太长的弊端

【嵌牛鼻子】:ISR

【嵌牛提问】:ISR处理时间为什么不能太长?

【嵌牛正文】:

我们都知道中断都具有自己的优先级,在STM32中,ST提供的库函数就可以通过软件的方式更改各个中断的优先级。高优先级的中断能抢占低优先级的ISR(中断服务例程)的执行,同等级的中断或者更低等级的中断只能在该中断执行之后再执行。

根据以上的解释可以看出,ISR时间太久。

1、可能引起低优先级的中断丢失。

当在ISR运行期间,低优先级的中断进入量大于一次,则会引发中断丢失。考虑这样一个情景,如果一个高优先级持续了1s,而按键的优先级低于该中断,则在这一秒钟无论按了多少次按钮,即使ISR运行结束,也最多只会执行一次按键ISR。

2、中断延时

同样若高优先级ISR运行时,有其他低优先级中断发生,则低优先级的中断只会在高优先级ISR执行完之后再开始执行。导致中断的不可预测的延时。

为了解决这个问题,可以做如下的改进

将一个ISR(中断服务例程)分割为两个部分一部分运行在ISR中,另一部分运行在任务代码中。运行在ISR中这部分代码主要处理给出中断的设备,并将服务请求送到对应的任务,让其余部分的代码在任务中执行。

这样做有2个原因。

1、可以减少ISR的处理时间。

2、在实际使用单片机的过程中,虽然使用了中断,但其并没有非常高的优先级。例如,针对按键的处理,人的反应是比较有限的,有些按键事件只需要在比较长的时间内做出反应就可以了,并不需要即时反应出来,此时中断只起到一个获取按键事件的作用,对于按键的处理可以放到任务中来处理。

相关文章

  • ISR处理时间为什么不能太长?

    姓名:宋子璇 学号:16020199060 转载自:https://zhuanlan.zhihu.com/p/21...

  • kafka基础知识

    为什么要用kafka: 1.缓冲和削峰2.解耦和扩展性3.异步通信4.健壮性5.冗余 什么是ISR和AR ISR:...

  • 棉花被子为什么不能晒太长时间

    如果我问你这个问题,你肯定会觉得我特二,心里想有太阳的话,晒一天,没太阳就不晒呗,这还用问! 当然这也不是不可以,...

  • [技术贴]解决Cisco CME 挂不断问题

    有时候由于运营商送到ISR上的挂断音信号衰减甚至送过来的就是不标准的挂断音,这样会导致ISR不能正常识别挂断音而导...

  • 为什么课总是上不完

    最近课总是上不完,为什么会上不完呢? 1、环节设置太多,每个环节都是学生写、讲,进行的时间太长。环节的处理没有轻重...

  • IDEA项目编译时间太长问题处理

    前言:在工作中,需要开发一个项目比较大 IDEA编译了非常长的时间 还是在编译的过程中,无法通过tomcat进行正...

  • 时间太长

    突然发现时间太长了,好想和你一下子就能到白头。不用在这样想你,害怕自己不能让你幸福,怕你会爱上别人。

  • 时间太长

    一直不喜欢我自己的工作,因为时间太长了,也不是太累,毕竟是自己的事情,所以,相对来说还是比较自由的。 但我还是不喜...

  • 面试题3

    30.ISR、OSR、AR 是什么? ISR:In-Sync Replicas 副本同步队列 OSR:Out-of...

  • 夜不能太长

    冬天正是昼短夜长的季节,农村里就有了猫冬的说法,可谓秋收冬藏。 在农村里,这是一年中最清闲的休养生息时候,也是最有...

网友评论

    本文标题:ISR处理时间为什么不能太长?

    本文链接:https://www.haomeiwen.com/subject/uflqkqtx.html