精华内容
下载资源
问答
  • msp430的中断优先级和中断嵌套(及容易理解错误的说明) (2011-06-09 09:18:35) 转载 标签: 杂谈 分类:MCU单片机 msp430的中断优先级和中断嵌套 MSP430的中断优先级按所在的向量的...

    转载于半岛鱼的学习博客

    msp430的中断优先级和中断嵌套(及容易理解错误的说明)

    (2011-06-09 09:18:35)
    标签:

    杂谈

    分类: MCU单片机

    msp430的中断优先级和中断嵌套

     

       MSP430的中断优先级按所在的向量的大小排列,中断向量地址越高优先级就越大,但是默认的MSP430是不能中断嵌套的,要想在执行某一中断时能够响应更高优先级的中断,需要在低优先级的中断程序中手动打开全局中断便能位,因为在进入中断服务子程序时全局中断便能位被清零,即禁止响应其它中断。

       msp430的指令中,DINTEINT分别指关和开所有中断,也就是包涵P1IEP2IEWDTIETAIETBIEADC12IE、串口中断允许的所有中断允许位为“0”和为“1”

     

    当同时有多个中断来的时候才有优先级的考虑(优先级顺序可查看向量表)
    有中断响应以后自动关闭总中断,这个时候即使来更高优先级的中断都不会响应
    要中断嵌套的话,就必须在中断中打开总中断
    msp430的指令中,DINTEINT分别指关和开所有中断,也就是包涵P1IEP2IEWDTIETAIETBIEADC12IE、串口中断允许的所有中断允许位为0和为1

    实现中断嵌套需要注意以下几点:
    1430默认的是关闭中断嵌套的,除非你在一个中断程序中再次开总中断EINT

    2)当进入中断程序时,只要不在中断中再次开中断,则总中断是关闭的,此时来中断不管是比当前中断的优先级高还是低都不执行;

    3若在中断A中开了总中断,则可以响应后来的中断B(不管B的优先级比A高还是低),B执行完再继续执行A注意:进入中断B后总中断同样也会关闭,如 果B中断程序执行时需响应中断C,则此时也要开总中断,若不需响应中断,则不用开中断,B执行完后跳出中断程序进入A程序时,总中断会自动打开;

    4)若在中断中开了总中断,后来的中断同时有多个,则会按优先级来执行,即中断优先级只有在多个中断同时到来时才起做用!中断服务不执行抢先原则。

    5)对于单源中断,只要响应中断,系统硬件自动清中断标志位,对于TA/TB定时器的比较/捕获中断,只要访问TAIV/TBIV,标志位倍被自动清除;

    对于多源中断(多个中断源共用一个中断向量)要手动清标志位,比如P1/P2口中断,要手工清除相应的标志,如果在这种中断用"EINT();"开中断,而在打开中断前没有清标志,就会 有相同的中断不断嵌入,而导致堆栈溢出引起复位,所以在这类中断中必须先清标志再打开中断开关.

     

    特别注意:

    正是这段说明容易让人上当。

    MSP430中断的优先级与其它CPU的中断的优先级的概念不是一回事。
    1、当同时有多个中断来的时候才有优先级。其实这个时候很少发生。
    2、有中断响应以后自动关闭总中断。这时候,谁也别想再中断了,哪怕你是天王老子。
    3、你打开总中断,同样晕菜,谁都可以打扰你的,烦不烦。

    转载于:https://www.cnblogs.com/juju/archive/2012/04/26/2471319.html

    展开全文
  • msp430的中断优先级和中断嵌套

    千次阅读 2012-09-29 21:33:27
    MSP430 的中断优先级按所在的向量的大小排列,中断向量地址越高优先级就越大,但是默认的 MSP430 是不能中断嵌套的,要想在执行某一中断时能够响应更高优先级的中断,需要在低优先级的中断程序中手动打开全局中断便...


    MSP430 的中断优先级按所在的向量的大小排列,中断向量地址越高优先级就越大,但是默认的 MSP430 是不能中断嵌套的,要想在执行某一中断时能够响应更高优先级的中断,需要在低优先级的中断程序中手动打开全局中断便能位,因为在进入中断服务子程序时全局中断便能位被清零,即禁止响应其它中断。

    msp430 的指令中,DINT 和 EINT 分别指关和开所有中断,也就是包涵 P1IE、P2IE、WDTIE、TAIE、TBIE、ADC12IE、串口中断允许的所有中断允许位为 “0” 和为 “1”。

    当同时有多个中断来的时候才有优先级的考虑(优先级顺序可查看向量表)有中断响应以后自动关闭总中断,这个时候即使来更高优先级的中断都不会响应要中断嵌套的话,就必须在中断中打开总中断.


    实现中断嵌套需要注意以下几点:


    1)430 默认的是关闭中断嵌套的,除非你在一个中断程序中再次开总中断 EINT;

    2)当进入中断程序时,只要不在中断中再次开中断,则总中断是关闭的,此时来中断不管是比当前中断的优先级高还是低都不执行;

    3)若在中断 A 中开了总中断,则可以响应后来的中断 B(不管 B 的优先级比 A 高还是低),B 执行完再继续执行 A。注意:进入中断 B 后总中断同样也会关闭,如 果 B 中断程序执行时需响应中断 C,则此时也要开总中断,若不需响应中断,则不用开中断,B 执行完后跳出中断程序进入 A 程序时,总中断会自动打开;

    4)若在中断中开了总中断,后来的中断同时有多个,则会按优先级来执行,即中断优先级只有在多个中断同时到来时才起做用!中断服务不执行抢先原则

    5)对于单源中断,只要响应中断,系统硬件自动清中断标志位,对于 TA/TB 定时器的比较/捕获中断,只要访问TAIV/TBIV,标志位被自动清除;

    对于多源中断(多个中断源共用一个中断向量)要手动清标志位,比如 P1/P2 口中断,要手工清除相应的标志,如果在这种中断用 "EINT();" 开中断,而在打开中断前没有清标志,就会 有相同的中断不断嵌入,而导致堆栈溢出引起复位,所以在这类中断中必须先清标志再打开中断开关.



    展开全文
  • msp430的中断优先级和中断嵌套 MSP430的中断优先级按所在的向量的大小排列,中断向量地址越高优先级就越大,但是默认的MSP430是不能中断嵌套的,要想在执行某一中断时能够响应更高优先级的中断,需要在低优先级...

    msp430的中断优先级和中断嵌套

     

       MSP430的中断优先级按所在的向量的大小排列,中断向量地址越高优先级就越大,但是默认的MSP430是不能中断嵌套的,要想在执行某一中断时能够响应更高优先级的中断,需要在低优先级的中断程序中手动打开全局中断便能位,因为在进入中断服务子程序时全局中断便能位被清零,即禁止响应其它中断。

       msp430的指令中,DINTEINT分别指关和开所有中断,也就是包涵P1IEP2IEWDTIETAIETBIEADC12IE、串口中断允许的所有中断允许位为“0”和为“1”

     

    当同时有多个中断来的时候才有优先级的考虑(优先级顺序可查看向量表)
    有中断响应以后自动关闭总中断,这个时候即使来更高优先级的中断都不会响应
    要中断嵌套的话,就必须在中断中打开总中断
    msp430的指令中,DINTEINT分别指关和开所有中断,也就是包涵P1IEP2IEWDTIETAIETBIEADC12IE、串口中断允许的所有中断允许位为0和为1

    实现中断嵌套需要注意以下几点:
    1430默认的是关闭中断嵌套的,除非你在一个中断程序中再次开总中断EINT

    2)当进入中断程序时,只要不在中断中再次开中断,则总中断是关闭的,此时来中断不管是比当前中断的优先级高还是低都不执行;

    3若在中断A中开了总中断,则可以响应后来的中断B(不管B的优先级比A高还是低),B执行完再继续执行A注意:进入中断B后总中断同样也会关闭,如 果B中断程序执行时需响应中断C,则此时也要开总中断,若不需响应中断,则不用开中断,B执行完后跳出中断程序进入A程序时,总中断会自动打开;

    4)若在中断中开了总中断,后来的中断同时有多个,则会按优先级来执行,即中断优先级只有在多个中断同时到来时才起做用!中断服务不执行抢先原则。

    5)对于单源中断,只要响应中断,系统硬件自动清中断标志位,对于TA/TB定时器的比较/捕获中断,只要访问TAIV/TBIV,标志位倍被自动清除;

    对于多源中断(多个中断源共用一个中断向量)要手动清标志位,比如P1/P2口中断,要手工清除相应的标志,如果在这种中断用"EINT();"开中断,而在打开中断前没有清标志,就会 有相同的中断不断嵌入,而导致堆栈溢出引起复位,所以在这类中断中必须先清标志再打开中断开关.

     

    特别注意:

    正是这段说明容易上当。

    MSP430中断的优先级与其它CPU的中断的优先级的概念不是一回事。
    1、当同时有多个中断来的时候才有优先级。其实这个时候很少发生。
    2、有中断响应以后自动关闭总中断。这时候,谁也别想再中断了,哪怕你是天王老子。
    3、你打开总中断,同样晕菜,谁都可以打扰你的,烦不烦。

    展开全文
  • 说最基本的,老的51单片机(80C51系列)有5个中断源,2个优先级,可以实现二级中断服务嵌套。现在很多扩展的51单片机已经有4个优先级(或更多)更多的中断源了。
  • 说最基本的,老的51单片机(80C51系列)有5个中断源,2个优先级,可以实现二级中断服务嵌套。现在很多扩展的51单片机已经有4个优先级(或更多)更多的中断源了。
  • 51中断优先级中断嵌套

    千次阅读 多人点赞 2017-12-28 16:47:26
    基本型80C51系列单片机有5个中断源,2个优先级,可以实现二级...中断的优先级有:查询优先级和执行优先级。查询优先级datasheet上默认的查询优先级(IP寄存器不做设置,上电复位后为00H):外部中断0 > 定时/计数器0

    基本型80C51系列单片机有5个中断源,2个优先级,每个中断源可通过软件设置为高优先级或低优先级中断,可以实现二级中断服务嵌套。

    中断的优先级

    在说到中断之前,我先来定义一下优先级,明白了什么是优先级,后面的阐述就容易明白了。中断的优先级有:查询优先级和执行优先级。

    查询优先级

    datasheet上默认的查询优先级(IP寄存器不做设置,上电复位后为00H):

    外部中断0 > 定时/计数器0 > 外部中断1 > 定时/计数器1 > 串行中断

    首先查询优先级是不可以更改和设置的,是指多个中断源同时产生中断信号时,中断仲裁器选择对哪个中断源优先处理的顺序,而与是否发生中断服务程序的嵌套毫不相干。当CPU查询各个中断标志位的时候,会依照上述5个查询优先级顺序依次查询,当数个中断同时请求的时候,会优先查询到高优查询先级的中断标志位,但并不代表高查询优先级的中断可以打断已经并且正在执行的低查询优先级的中断服务。

    执行优先级。

    中断的执行优先级就是你对IP寄存器的设置了。在2个优先级的情况下,某位为1,则相应的中断源为高优先级;为0,则为低优先级。

    中断的优先原则

    1、CPU同时接收到几个中断时,首先响应优先级最高的中断请求;
    2、当同一优先级的几个中断源同时向CPU请求中断时,CPU通过内部硬件查询逻辑电路,按查询优先级判定优先响应哪一个中断请求。
    3、正在进行的中断过程不能被新的同级或低执行优优先级的中断请求所中断;
    4、正在进行的低执行优先级中断服务,能被高执行优优先级中断请求中断,除非正在执行的低优先级中断服务程序设置了禁止CPU中断某些高优先级的中断。

    例:当计数器0中断和外部中断1(按查询优先级,计数器0中断>外部中断1)同时到达时,会进入计时器0的中断服务函数;但是在外部中断1的中断服务函数正在服务的情况下,这时候任何中断都是打断不了它的,包括查询优先级比它高的外部中断0计数器0中断。

    例:同一执行优先级中的中断申请不止一个时,则有一个中断优先权排队问题。同一执行优先级的中断优先权排队,由中断系统硬件确定的查询优先级决定的。

    例:设置IP = 0x10,即设置串口中断为最高优先级,则串口中断可以打断任何其他的中断服务函数实现嵌套,且只有串口中断能打断其他中断的服务函数。若串口中断没有触发,则其他几个中断之间还是保持逻辑优先级,相互之间无法嵌套。

    中断嵌套

    当一个中断正在执行的时候,如果事先设置了中断优先级寄存器IP,那么当一个更高优先级的中断到来的时候会发生中断嵌套,如果没有设置则不会发生任何嵌套;
    如果有同一个优先级的中断触发,它并不是在“不断的申请”,而是将它相应的中断标志位置即IE寄存器的某位置位,当CPU执行完当前中断之后,按照查询优先级重新去查询各个中断标志位,进入相应中断。
    要记住,没有设置IP时,单片机会按照查询优先级来排队进入服务。如果要想让某个中断优先响应, 则要设置IP,更改执行优先级(或者说物理优先级)。要注意的是,当设置了IP后,当低执行优先级中断在运行时,如果有高执行优先级的中断产生,则会嵌套调用进入高执行优先级的中断。
    如果你是用C语言写的程序,并在中断服务时 using 了寄存组,要注意,两个不同执行优先级的中断服务程序不要 using 同一组寄存器。

    看两个问题,如下:
    1 在各个中断都是低优先级的时候,如果定时器0的溢出进入中断。在这个中断处理的过程中,外部中断0也被触发了,那么是不是要发生中断嵌套?
    2 如果定时器0发生中断的时候,进入中断处理程序,这个时候外部中断1条件触发条件满足了。因为定时器0自然优先级比外部中断1高,那么定时器0的中断处理程序继续执行。假设定时器中断处理程序执行的过程中,外部中断1的触发。条件消失了,那么等定时器0的中断处理完后,程序还是会进入外部中断1处理程序吗?

    答案1:在IP事先设置了外部中断0的优先级的情况下,CUP会中止定时器0的中断服务,进入外部中断0服务程序,执行完以后再回到定时器0中断服务程序。否则不会。
    答案2:肯定会进入中断的;外部中断1的触发条件满足后会置位外部1的中断标志,即使后来外部中断1的触发条件消失了,也不会清除已置位的中断标志,所以等定时器0的中断处理完后,程序判断外部中断的中断标志为1后依然会进入外部中断1处理程序的,只有在外部中断1处理程序中执行reti指令才会硬件清除外部中断1的中断标志(这也正是为什么中断返回使用reti指令而不可以用ret替换的原因)…

    中断优先级寄存器 IP

    ×:无效位。
    PS:串行I/O中断优先级控制位。PS=1,高优先级;PS=0,低优先级。
    PTl:定时器/计数器1中断优先级控制位。PTl=1,高优先级;PTl=0,低优先级。
    PXl:外部中断1中断优先级控制位。Pxl=1,高优先级;PXl=O,低优先级。
    PT0:定时器/计数器o中断优先级控制位。PT0=1,高优先级;PTO=0,低优先级。
    Px0:外部中断0中断优先级控制位。Px0=1,高优先级;Px0=0,低优先级。

    展开全文
  • 51单片机的中断优先级中断嵌套

    千次阅读 2013-10-23 16:38:30
    51单片机的中断优先级中断嵌套 51单片机(80C51系列)有5个中断源,2个优先级,可以实现二级中断服务嵌套。现在很多扩展的51单片机已经有4个优先级(或更多)更多的中断源了。在说到中断之前,我先来定义一下...
  • STM32(Cortex-M3)中有两个优先级的概念——抢占式优先级和响应优先级,有人把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要被指定这两种优先级。 具有高抢占式优先级的中断可以在具有低抢占式优先级的...
  • 我先看了下文档里的常见错误,发现和我现在有关系的也就堆栈大小的设置和中断嵌套优先级的设置了,不过我这几个任务都是比较简单的,没有太多的变量,那么现在设置的堆栈大小是够的,不然也不会运行一段时间才奔溃,...
  • STM32(Cortex-M3)中有两个优先级的概念——抢占式优先级和响应优先级,有人把响应优先级称作’亚优先级’或’副优先级’,每个中断源都需要被指定这两种优先级。 具有高抢占式优先级的中断可以在具有低抢占式优先级...
  • 摘要:中断优先级的内容,有一般紧急的中断,有特别紧急的中断,这取决于具体的系统设计,这就涉及到中断优先级和中断嵌套的概念,今天先简单介绍一下相关寄存器,不做例程说明。中断的产生背景,实际生活当中还有更...
  • 摘要:中断优先级的内容,有一般紧急的中断,有特别紧急的中断,这取决于具体的系统设计,这就涉及到中断优先级和中断嵌套的概念,今天先简单介绍一下相关寄存器,不做例程说明。中断的产生背景,实际生活当中还有更...
  • 中断优先级的内容,有一般紧急的中断,有特别紧急的中断,这取决于具体的系统设计,这就涉及到中断优先级和中断嵌套的概念,今天先简单介绍一下相关寄存器,不做例程说明。中断的产生背景,实际生活当中还有更复杂的...
  • 我先看了下文档里的常见错误,发现和我现在有关系的也就堆栈大小的设置和中断嵌套优先级的设置了,不过我这几个任务都是比较简单的,没有太多的变量,那么现在设置的堆栈大小是够的,不然也不会运行一段时间...
  • 对于中断优先级配置的需求实际上主要体现在系统存在多个可能的中断源情况下,这时为了保证代码的可靠执行,我们不得不考虑很现实的两个问题,一个是如果两个以上中断同时发生,pending请求到CPU,CPU决策该先进哪一...
  • 之前学习嵌入式的时候不太明白中断优先级分组与抢占优先级和响应优先级的关系,比如分组为2,抢占优先级也为2,响应优先级也为2,就是不明白他们之间有什么关系,谁决定谁,总共有多少个数值可供选择。  趁着现在...
  • STM32(Cortex-M3)中有两个优先级的概念——抢占式优先级和响应优先级,有人把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要被指定这两种优先级。 具有高抢占式优先级的中断可以在具有低抢占式优先级的...
  • 我先看了下文档里的常见错误,发现和我现在有关系的也就堆栈大小的设置和中断嵌套优先级的设置了,不过我这几个任务都是比较简单的,没有太多的变量,那么现在设置的堆栈大小是够的,不然也不会运行一段时间才奔溃...
  • 一,中断优先级: STM32(Cortex-M3)中的优先级概念 STM32(Cortex-M3)中有两个优先级的概念——抢占式优先级和响应优先级,有人把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要被指定这两种优先级。...
  • STM32(Cortex-M3)中有两个优先级的概念——抢占式优先级和响应优先级,有人把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要被指定这两种优先级。 具有高抢占式优先级的中断可以在具有低抢占式优先级...
  • 51单片机(80C51系列)有5个中断源,2个优先级,可以实现二级中断服务嵌套。现在很多扩展的51单片机已经...中断的优先级有两个:查询优先级和执行优先级。什么是查询优级呢?我们从datasheet或书上看到的默认(IP寄存器
  • NVIC(Nested Vectored Interrupt Controller),中断嵌套向量控制器,是 Cortex‐M3 不可分离的一部分,它与 CM3 内核共同完成对中断的响应。在了解NVIC之前最好简单了解一下CM3内核的中断系统,传送。 NVIC 共...
  • stm32中断优先级分组

    千次阅读 2016-12-27 08:29:06
    STM32中断优先级和开关总中断一,中断优先级:STM32(Cortex-M3)中的优先级概念 STM32(Cortex-M3)中有两个优先级的概念——抢占式优先级和响应优先级,有人把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 407
精华内容 162
关键字:

中断优先级和中断嵌套