精华内容
下载资源
问答
  • 单片机之中断优先级设置

    千次阅读 2020-09-14 17:39:35
    然而datashhet里STC12C5A60S2单片机复位后IP、IP2、IPH、IP2H均为00H,各个中断源都是低优先级=》不能被同级中断所中断 中断优先控制寄存器IP、IP2、IPH、IP2H 例如:想要实现外部中断1被中断0中断,设置外部中断0...

    单片机芯  片:        STC12C5A60S2                
    晶振是11.0592MHZ

    中断优先级的基本规则

    1.低优先级中断可被高优先级中断所中断

    2.任何中断都不被同级中断所中断

    然而datashhet里STC12C5A60S2单片机复位后IP、IP2、IPH、IP2H均为00H,各个中断源都是低优先级=》不能被同级中断所中断

    中断优先控制寄存器IP、IP2、IPH、IP2H

    例如:想要实现外部中断1被中断0中断,设置外部中断0为最高优先级(优先级3)

    也就是另

    PX0H = 1;

    PX0 = 0;

    结果是错误的

    因为IP、IP2、IPH、IP2H各位都可以程序置1,清0,但是只有IP可以位操作,而IP2、IPH、IP2H寄存器只能使用字节指令来更新

    程序最终为

    PX0 = 0;

    IPH |= 0X01;

    测试结果:程序正常工作

    例:设置串口1中断优先级为优先级2

    程序最终为

    PS = 0;

    IPH |= 0X10;

     

    测试:STC12C5A60S2单片机优先级2的串口中断无法被优先级3的外部中断0所中断,将串口设置成优先级1就可以被优先级3 的中断了!!不知是不是哪里有问题了

    展开全文
  • STM32中断优先级分组概念

    万次阅读 2016-12-20 09:19:23
    Cortex-M3允许具有较少中断源时使用较少的寄存器位指定中断源优先级,因此STM32把指定中断优先级的寄存器位减少到4位,这4个寄存器位的分组方式如下:第0组:所有4位用于指定响应优先级第1组:最高1位用于指定抢占...

    在进行STM32f103的时候,进行中断分组的相关概念
    Cortex-M3允许具有较少中断源时使用较少的寄存器位指定中断源的优先级,因此STM32把指定中断优先级的寄存器位减少到4位,这4个寄存器位的分组方式如下:

    第0组:所有4位用于指定响应优先级

    第1组:最高1位用于指定抢占式优先级,最低3位用于指定响应优先级

    第2组:最高2位用于指定抢占式优先级,最低2位用于指定响应优先级

    第3组:最高3位用于指定抢占式优先级,最低1位用于指定响应优先级

    第4组:所有4位用于指定抢占式优先级

    可以通过调用STM32的固件库中的函数NVIC_PriorityGroupConfig()选择使用哪种优先级分组方式,这个函数的参数有下列5种:

    NVIC_PriorityGroup_0=> 选择第0组

    NVIC_PriorityGroup_1=> 选择第1组

    NVIC_PriorityGroup_2=> 选择第2组

    NVIC_PriorityGroup_3=> 选择第3组

    NVIC_PriorityGroup_4=> 选择第4组

    接下来就是指定中断源的优先级,下面以一个简单的例子说明如何指定中断源的抢占式优先级和响应优先级:
    // 选择使用优先级分组第1组
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

    // 使能EXTI0中断
    NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQChannel;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; // 指定抢占式优先级别1

    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; // 指定响应优先级别0
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);

    // 使能EXTI9_5中断
    NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; // 指定抢占式优先级别0
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; // 指定响应优先级别1
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);

    要注意的几点是:

    1)如果指定的抢占式优先级别或响应优先级别超出了选定的优先级分组所限定的范围,将可能得到意想不到的结果;

    2)抢占式优先级别相同的中断源之间没有嵌套关系;

    3)如果某个中断源被指定为某个抢占式优先级别,又没有其它中断源处于同一个抢占式优先级别,则可以为这个中断源指定任意有效的响应优先级别。

    展开全文
  • STM32 NVIC中断优先级

    2018-11-05 19:15:48
    STM32 有2 个优先级:(1)抢占式优先级(主优先级),(2)响应优先级,每个中断源都需要指定这两种优先级。 1.1 配置 STM32 把 中断优先级寄存器变成 4位,分组如下: 第 0 组:所有4位用于指定响应优先级; 第 1...

    1 NVIC 介绍

    STM32 有2 个优先级:(1)抢占式优先级(主优先级),(2)响应优先级,每个中断源都需要指定这两种优先级。

    1.1 配置

    STM32 把 中断优先级寄存器变成 4位,分组如下:

    • 第 0 组:所有4位用于指定响应优先级;
    • 第 1 组:最高 1 位用于指定抢占式优先级,最低 3 位用于指定响应优先级;
    • 第 2 组:最高 2位用于指定抢占式优先级,最低 2 位用于指定响应优先级;
    • 第 3组:最高 3位用于指定抢占式优先级,最低 1 位用于指定响应优先级;
    • 第 4 组:所有4位用于指定抢占优先级;
    NVIC_PriorityGroup_0 ---- 选择第 0 组
    

    2 编程

    2.1 配置

    1. 时钟配置;
    2. GPIO配置;
    3. EXTI (选择,清除中断标志,出发模式…)
    4. NVIC 配置 (Group)
    5. 中断服务子程序
    展开全文
  • Cortex-M3允许具有较少中断源时使用较少的寄存器位指定中断源优先级,因此STM32把指定中断优先级的寄存器位减少到4位,这4个寄存器位的分组方式如下: 第0组:所有4位用于指定响应优先级 第1组:最高1位用于指定...

    NXP NVIC(嵌套向量中断管理器) 优先级分组
    Cortex-M3允许具有较少中断源时使用较少的寄存器位指定中断源的优先级,因此STM32把指定中断优先级的寄存器位减少到4位,这4个寄存器位的分组方式如下:

    第0组:所有4位用于指定响应优先级
    第1组:最高1位用于指定抢占式优先级,最低3位用于指定响应优先级
    第2组:最高2位用于指定抢占式优先级,最低2位用于指定响应优先级
    第3组:最高3位用于指定抢占式优先级,最低1位用于指定响应优先级
    第4组:所有4位用于指定抢占式优先级

    可以通过调用STM32的固件库中的函数NVIC_PriorityGroupConfig()(在CM0中是NVIC_SetPriorityGrouping())选择使用哪种优先级分组方式,这个函数的参数有下列5种:

    NVIC_PriorityGroup_0 => 选择第0组
    NVIC_PriorityGroup_1 => 选择第1组
    NVIC_PriorityGroup_2 => 选择第2组
    NVIC_PriorityGroup_3 => 选择第3组
    NVIC_PriorityGroup_4 => 选择第4组

    接下来就是指定中断源的优先级,下面以一个简单的例子说明如何指定中断源的抢占式优先级和响应优先级:

    // 选择使用优先级分组第1组
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

    // 使能EXTI0中断
    NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQChannel;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; // 指定抢占式优先级别1

    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; // 指定响应优先级别0
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);

    // 使能EXTI9_5中断
    NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; // 指定抢占式优先级别0
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; // 指定响应优先级别1
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);

    要注意的几点是:
    1)如果指定的抢占式优先级别或响应优先级别超出了选定的优先级分组所限定的范围,将可能得到意想不到的结果;
    2)抢占式优先级别相同的中断源之间没有嵌套关系;
    3)如果某个中断源被指定为某个抢占式优先级别,又没有其它中断源处于同一个抢占式优先级别,则可以为这个中断源指定任意有效的响应优先级别。

    STM32的抢占优先级和响应优先级
    中断优先级寄存器NVIC_IPRx,本寄存器宽度为8位,原则上每个外部中断可配置的优先级为0~255,实际上精简了,只用到了它的高4位。这4位,又被分成了抢占优先级和响应优先级两组:
    (1)抢占属性:就是打断其它正在执行的中断,这时就出现了中断嵌套。抢占属性由NVIC_IRQChannelPreemptionPriority 的参数配置。
    (2)响应属性:如果两个中断的抢占优先级相同,并且他们同时申请中断,那么该怎么办呢?则响应属性较高的中断优先处理。响应属性由抢占属性由NVIC_IRQChannelSubPriority 的参数配置。

    当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪一个。

    总结:抢占式优先级>响应优先级>中断表中的排位顺序

    不人工设置中断优先级,那么将按芯片的默认优先级响应,只有当默认优先级不能满足要求时才需要人工设置中断优先级。

    在有实时操作系统时, 为什么不用设置中断抢占优先级与中断响应优先级?
    因为中断处理函数分两种处理形式
    1.线程同步量的释放
    2.非常短时间的处理
    在线程同步量的释放中, 会获得下一个被调度的线程(遵从优先级调度), 并进行线程调度.
    所以中断抢占优先级的配置遂转化为线程优先级的配置

    展开全文
  • 抢占式优先级>响应优先级>中断表中的排位顺序正是因为每个中断源都需要被指定这两种优先级,就需要有相应的寄存器位记录每个中断的优先级;在Cortex-M3中定义了8个比特位用于设置中断源优先级,这8个比特位可以有8...
  • 一、外部中断 1.1 中断 关于中断的概念在上一篇博客中已经提到了。...51单片机的中断源优先级与向量号如下表: 中断源 优先级 中断向量号 INT0 – 外部中断0 最高 0 T0 – 定时器/计数器0中断 第2 ...
  • 多个中断源的中断请求优先级 B.CPU对多个中断请求响应的优先次序 C.多个中断服务程序开始执行的顺序 D.多个中断服务程序执行完的次序 正确答案D 原因: 中断请求优先级: 由中断请求排队器决定(参考微机原理),...
  • STM32(Cortex-M3)中的优先级概念

    千次阅读 2009-08-19 10:41:00
    STM32(Cortex-M3)中有两个优先级的概念——抢占式优先级和响应优先级,有人把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要被指定这两种优先级优先级0级最高 具有高抢占式优先级的中断可以在具有...
  • 总体记住M0支持: 内部15个中断源 外部32个中断源 除了最高优先级的三个内部中断外,其他优先级可软件配置。
  • 51单片机中断

    2017-08-04 15:27:24
    一、中断的概念 CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生); CPU暂时中断当前的工作,转去处理事件B(中断...中断号优先级中断源中断入口地址 0 1(最高)外部中断00003H 1 2 定时器
  • 51单片机中断学习

    2020-01-21 10:28:24
    一、中断的概念 CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生); CPU暂时中断当前的工作,转去处理事件B...中断号 优先级 中断源 中断入口地址 0 1(最高) 外部中断0 0003H 1 2 定时器0 0...
  • 单片机中断详讲

    2017-08-16 20:57:47
    一、中断的概念 CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生); CPU暂时中断当前的工作,转去处理事件B(中断响应和中断...中断号 优先级 中断源 中断入口地址 0 1(最高) 外部中断0 000
  • C51 中断 个人笔记

    2018-11-02 15:09:00
    中断源及其优先级 中断号写程序的时候要用 CPU处理中断三原则 1.CPU同时接收到几个中断时,首先响应优先级别最高的中断请求。 2.正在进行的中断过程不能被新的同级或低优先级的中断请求所中断。 3.正在进行的低...
  • 中断

    2015-01-12 21:40:00
    引起中断的因素:1,人为中断2,程序性事故,溢出等3,硬件故障4,IO设备5,外部事件中断...1,硬件排队,链式排队器当最高优先级中断源有请求时INTR1=1,可以封住其他级别低的。2,软件排队,通过编写查询程序实...
  • 中断应用设计要点

    2020-08-28 20:00:22
    AVR的中断源比较多,尤其是ATmega128,一共有35个外部以及内部中断源。通常情况下,Flash程序存储器空间的最低位置(0x0000-0x0045)定义为复位和中断向量空间。完整的中断向量见第二章表 2-23。在中断向量表中,处于...
  • X86架构中断的处理

    千次阅读 2013-02-26 18:38:24
    就是在有多个中断源的系统中,接受外部的中断请求,并进行判断、选中优先级最高的中断请求,发从给cpu,cpu响应中断并进入响应的中断处理函数中处理相关事件。结合中断的概念,比如中断控制器接受到一个中断请求,而...
  • 51单片机的中断控制

    2016-01-25 11:47:06
    51系列单片机有5个中断源,2个优先级,可以实现二级中断服务嵌套结构。现在很多兼容51的单片机已经有4个优先级(或更多)和更多的中断源了。---------------------想要研究中断的嵌套,应该从中断优先级入手。一些...
  • 对于中断,大家应该都比较熟悉。莱昂氏书中的第9章对这部分也有精彩的讲解,一定要多读多看,确保深入... 硬件产生的最高优先级中断为6。因此,将CPU priority设置为7时,可屏蔽硬件中断。代码中有大量这样的设置,
  • 所谓中断是指CPU对系统发生的某个事件做出的一种反应,它使CPU暂停正在执行的程序,保留现场后自动执行相应的处理程序,处理该事件后,如被中断进程的优先级最高,则返回断点继续执行被“打断”的程序。中断示意图...
  • CPU在运行的过程中,也会被各种“异常”打断,这些“异常”有:·指令未定义;...这些众多的“中断源”,汇集到“中断控制器”,由“中断控制器”选择优先级最高的中断并通知CPU。 arm对异常(中断)处理过程: 1...
  • 所谓中断是指CPU对系统发生的某个事件做出的一种反应,它使CPU暂停正在执行的程序,保留现场后自动执行相应的处理程序,处理该事件后,如被中断进程的优先级最高,则返回断点继续执行被“打断”的程序。中断示意图...
  • 51单片机中断系统(定时器、计数器)

    万次阅读 多人点赞 2017-11-16 23:40:32
    一、中断 中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续...中断源 中断入口地址 0 1(最高) INT0
  • 一、部分中断源信息 中断源 中断号 中断优先级设置 优先级1(最高) 中断请求标志 中断允许控制 INT0(外部中断0) 0 PX0 1 IE0 EX0/EA Timer 0 1 PT0 1 TF0 ET0/EA INT1(外部中断1) 2 PX1 1 IE1 EX1/EA ...
  • 11中断系统

    2018-01-26 21:19:00
    80c51有5个中断源80c52有六个中断源,两个优先级,可实现二级中断嵌套。 优先级 !! 原则 1.CPU同时接受几个中断时,首先响应级别最高的。 2.正在进行的中断过程不能被新的同级或者低优先级的...
  • 中断向量表

    2021-01-21 13:34:06
    在Pc/AT中由硬件产生的中断标识码被称为中断类型号(当然,中断类型号还有其他的产生方法,如指令中直接给出、CPU自动形成等),即在中断响应期间8259A产生的是当前请求中断的最高优先级中断源的中断类型号。...
  • 定时器中断实验

    2012-01-31 22:12:14
    单片机一般允许有多个中断源,当几个中断源同时向CPU请求中断时,就存在CPU优先响应哪一个中断请求源的问题(优先级问题),一般根据中断源的轻重缓急排队,优先处理最紧急事件的中断请求,于是便规定每一个中断源都...
  • LPC2131 中断处理

    千次阅读 2008-02-21 17:24:00
    关于中断处理LPC2131 使用的ARM PrimeCell向量中断控制...FIRQ有最高优先级IRQ向量中断次之IRQ非向量中断优先级最低其中IRQ向量中断:最多可定义16个,支持优先级策略,优先级设置通过将中断源编号置入VICVectCntX寄
  • 一、硬件中断 嵌入式系统一般都有一个"独立自主运行"的中断控制器,...中断控制器会把优先级最高中断源对应的中断号经系统总线送给CPU,作为CPU查找中断服务程序入口地址的依据。所以,硬件中断属于嵌入式系统的硬...

空空如也

空空如也

1 2 3 4 5
收藏数 90
精华内容 36
关键字:

中断源优先级最高