精华内容
下载资源
问答
  • 百度百科:中断是指在计算机执行程序的过程中,当出现异常情况或者特殊请求时,计算机停止现行的程序的运行,转而对这些异常处理或者特殊请求的处理,处理结束后再返回到现行程序的中断处,继续执行原程序。...

    在这里插入图片描述:What is interrupt?
    百度百科:中断是指在计算机执行程序的过程中,当出现异常情况或者特殊请求时,计算机停止现行的程序的运行,转而对这些异常处理或者特殊请求的处理,处理结束后再返回到现行程序的中断处,继续执行原程序。

    中断源:我们把引起中断的原因,或者能够发出中断请求信号的来源统称为中断源
    中断向量:中断服务程序的入口地址。在某些计算机中,中断向量的位置存放一条跳转到中断服务程序入口地址的跳转指令。
    中断向量地址:内存中存放中断服务程序入口地址的地址
    矢量中断:某个中断源产生中断时,由硬件直接跳到中断服务程序的入口(需要具备硬件中断向量表)
    非矢量中断:产生中断源时,先跳到一个总入口,再有软件查询中断挂起寄存器判断是哪个中断源,然后跳到入口服务程序。例如;arm接受到中断控制器的IRQ请求,cpu响应中断后,将在中断服务寄存器的对应位置位,cpu转到0x18处执行。1
    软件中断向量表:在ram区的_ISR_STARTADDRESS处开辟一段空间,设置一张软件设定的中断向量表,用来存放中断和异常的服务程序入口地址。2


    1. C语言在嵌入式系统编程时的注意事项:https://cloud.tencent.com/developer/article/1011931 ↩︎

    2. C语言嵌入式系统编程修炼之软件架构篇:https://cloud.tencent.com/developer/article/1019866 ↩︎

    展开全文
  • 矢量中断-非矢量中断

    千次阅读 2016-01-09 16:27:59
    某个中断源产生中断时,由硬件直接跳到中断服务程序的入口(有些cpu,如s3c440box内部有外部中断中断向量表,因而支持矢量中断,而S3C2440等没有硬件向量表,不支持矢量中断。固定中断向量表中装的不是中断或异常...

    矢量中断

    某个中断源产生中断时,由硬件直接跳到中断服务程序的入口(有些cpu,如s3c440box内部有外部中断的中断向量表,因而支持矢量中断,而S3C2440等没有硬件向量表,不支持矢量中断。固定中断向量表中装的不是中断或异常服务程序的入口地址,而是一条转到异常或中断处理程序的转移指令

    硬件中断向量表

    软件中断向量表:在ram区的_ISR_STARTADDRESS处开辟一段空间,设置一张软件设定的中断向量表,用来存放中断和异常的服务程序入口地址。

     

     

    非矢量中断

    产生中断源时,先跳到一个总入口,再有软件查询中断挂起寄存器判断是哪个中断源,然后跳到入口服务程序。例如;arm接受到中断控制器的IRQ请求,cpu响应中断后,将在中断服务寄存器的对应位置位,cpu转到0x18处执行。在0x18处,放置一条转移指令:

    B ISR_IRQ

    ISR_IRQ为中断服务程序的总入口地址,也是非矢量中断模式的中断源判别及散转程序。在ISR_IRQ中通过查询中断服务寄存器的对应位判别出中断源,然后转至对应的中断服务程序。

    ISR_IRQ:

    STMDB R13!,{R0-R8,R12,R14}  ;保护现场(进入异常时已自动将断点保存到LR)

    此处的R14用于异常返回

    BL IRQ                         ; 此处的R14用于子程序返回

    LDMIA R13!,{ R0-R8,R12,R14};恢复现场

    SUBS PC,R14,#4;返回中断断点处继续执行(CPSR 也自动恢复)

    IRQ:

    SUB SP,SP,#4;腾出一个字以存放中断服务程序入口地址

    STMFD SP!,{R8-R9};

    LDR R9,=I_ISPR;中断服务寄存器地址送到R9  I_ISPR EQU 0X????????

    LDR R9,[R9];ISPR 的内容送r9

    MOV R8,#0;设置r8为地址偏移量,并初始化为0

    10:          MOVS R9,R9,LSR #1;R9左移一位,移除位送到C

    BCS 11

    ADD R8,R8,#4

    B 10

    11:              LDR R9,=HANDLEADC;找到了,软件中断向量表的首项中的地址送R9

    ; HANDLEADC EQU _ISR_STARTADDRESS+4*8

    ADD R9,R9,R8

    LDR R9,[R9];将相应的中断服务程序入口地址送R9

    STR R9,[SP,#8];中断服务程序入口入棧

    LDMFD SP! ,{R8-R9,PC};转向执行中断服务程序

    中断服务程序运行完毕,则返回到标记出,回到原来断点继续执行(中断服务程序中已经完成了返回到BL后一条指令的操作)相当于发生了两级跳转!

     

     

     

     

     

    如果采用向量中断模式,cpu发生异常或响应或中断源后,将转到硬件固有中断向量表,自动转入相应的一次或中断向量地址处执行。以ENIT 4567为例

    0x30:LDR PC,=HANDLERENT4567

    ............

    HANDLERENT4567:

    HANDLER HANDLEEINT4567; HANDLEEINT4567为软件设定的中断向量中中断入口的地址标号

    HANDLER 宏的作用:将HANDLEEINT4567的内容赋给PC

    MACRO HANDLER HANDLELABEL

    SUB SP,SP,#4

    STMFD SP!,{R0}

    LDR R0,=HANDLELABEL

    LDR R0,[R0]

    STR R0,[SP,#4]

    LDMFD SP!,{R0,PC}

    ENDM

     

    中断及异常的响应过程

    程序装在ROM中断中断和异常相应情况:

    对于简单的应用系统,通常将初始化和应用程序下载在0x0处,即在ROM或flash中,在硬件固定向量表中断对应位置放置转移指令,转到相应异常或中断服务程序进行处理。

    由于RAM区程序执行速度快,而且可以修改,所以对于大多数系统和复杂程序,通常将具体的异常或中断处理程序下载到RAM区执行。

     

    程序装在高端RAM中断中断或异常响应

    (1)       软件实现地址映射

    若程序下载到高端RAM,当异常中断发生时,S3C440B0X自动转到硬件固定向量表的歌地址处,所以需要在0x0开始的区域放置一个bootloader,它主要完成系统硬件初始化和地址映射工作。地址映射包含两部分,首先完成从0x0开始的固定向量表到0x0c000000(ram起始区,不同的系统不同)的转移,然后应用程序中的Isr_Init()函数完成到代码下载区RAM处的向量转移。

    Bootloader地址映射:

    在硬件固定表的各向量地址处放指令:ldr pc,=0x0000??,实现0x0000??->0x0c0000??的映射。

    注意:若IRQ异常采用非向量模式,在开始地址区不必进行中断源的映射;复位异常发生,硬件初始化后,直接映射到代码下载区的0x0c008000处,并执行应用系统初始化。

    展开全文
  • 51内核的最基础的中断源请求有外部中断、定时器中断和串口中断,这也是学习和开发者最长用的。当然还有其他的中断源,比如ADC、SPI、PWM等。以外部中断0为例,在编程中常使用的方式为:void INT0()interrupt 0 using...

    51内核的最基础的中断源请求有外部中断、定时器中断和串口中断,这也是学习和开发者最长用的。当然还有其他的中断源,比如ADC、SPI、PWM等。以外部中断0为例,在编程中常使用的方式为:

    void INT0()interrupt 0 using 1

    {

    ……

    }

    在这里特别做上笔记:其中前面的void INT0() 只是代表一个普通没有形参的函数而已,函数名写成什么都是可以的,这个到不重要。那么后面的就一个一个词的扣把:(2-1-i-c-中国-电子网,防抓取)

    其中 interrupt n 组成一组,n用来指明中断号,在函数后使用了interrupt关键字后,就会自动的生成中断向量,51内核中断号如下图,这是我今天查的正在使用的MCU:

    c73cae3f2694bd04ab69562ea472b16c.png

    例如:

    12

    interrupt 1 指明是定时器中断0;

    interrupt 2 指明是外部中断1;

    interrupt 3 指明是定时器中断1

    。。。

    对于51内核的MCU,不同厂家及不同型号的内部资源会有所不同,上图是我正在开发的一款中颖SH88F516单片机,由上图可见内部资源还算可以,能够满足一般的产品。后面的using n 指的是使用第n组寄存器。这个之前我在使用的过程中往往忽略了这个,也没有出现什么问题。但是今天注意到这个问题,查完资料后用上发现效果还不如不用,很有肯能是没有把这个知识用好的原因把。对比之后给我的感觉是在使用C语言写程序时,能不用就不用吧。查资料解释说假如在中断函数中使用了using n,中断不再保存R0-R7的值,这也就意味着假如一个高优先级的中断及一个低优先级的中断同时使用了using n,而这个n恰恰相等,那就等着哭把,因为这个BUG还真不是那么好找出来的(今天我就遇到了这个问题)。21ic整理

    其次就是中断优先级的问题了,如图上面的中断表,在右侧第二栏标的很清楚,除了复位之外,就数外部中断0优先级最高了,依次往下排列,那么问题来了,今天刚好就碰到了需要串口0的优先级比定时器0的优先级高。没办法,只好接着啃数据手册,还好这寄存器不多,一会就查到了下表和相关的描述:

    88d5cf0f83b45916893ac7e06024e9ab.png

    所以按照描述修改下优先级就可以达到目的了。

    总结:用到回过头来用到51的中断,发现有些东西在之前学习的时候并没有太在意,导致现在在开发产品上使用的时候不清楚用途。因为工作跟学习性质是不一样的,作为开发者的角度来说,质量往往是第一要求。同时会接触到很多新鲜的事物和技术,但是话又说回来了,最基本的知识还是需要打牢。

    展开全文
  • 这可能是最通俗易懂的方式讲解ARM中断原理以及中断嵌套
  • OK6410矢量中断控制LED

    2016-04-20 12:16:19
    OK6410矢量中断控制LED
  • 矢量中断

    千次阅读 2014-05-16 17:53:24
    某个中断源产生中断时,由硬件直接跳到中断服务程序的入口(有些cpu,如s3c440box内部有外部中断中断向量表,因而支持矢量中断,而S3C2440等没有硬件向量表,不支持矢量中断。固定中断向量表中装的不是中断或异常...

    矢量中断

    某个中断源产生中断时,由硬件直接跳到中断服务程序的入口(有些cpu,如s3c440box内部有外部中断的中断向量表,因而支持矢量中断,而S3C2440等没有硬件向量表,不支持矢量中断。固定中断向量表中装的不是中断或异常服务程序的入口地址,而是一条转到异常或中断处理程序的转移指令

    硬件中断向量表

    软件中断向量表:在ram区的_ISR_STARTADDRESS处开辟一段空间,设置一张软件设定的中断向量表,用来存放中断和异常的服务程序入口地址。

     

     

    非矢量中断

    产生中断源时,先跳到一个总入口,再有软件查询中断挂起寄存器判断是哪个中断源,然后跳到入口服务程序。例如;arm接受到中断控制器的IRQ请求,cpu响应中断后,将在中断服务寄存器的对应位置位,cpu转到0x18处执行。在0x18处,放置一条转移指令:

    B ISR_IRQ

    ISR_IRQ为中断服务程序的总入口地址,也是非矢量中断模式的中断源判别及散转程序。在ISR_IRQ中通过查询中断服务寄存器的对应位判别出中断源,然后转至对应的中断服务程序。

    ISR_IRQ:

    STMDB R13!,{R0-R8,R12,R14}  ;保护现场(进入异常时已自动将断点保存到LR)

    此处的R14用于异常返回

    BL IRQ                         ; 此处的R14用于子程序返回

    LDMIA R13!,{ R0-R8,R12,R14};恢复现场

    SUBS PC,R14,#4;返回中断断点处继续执行(CPSR 也自动恢复)

    IRQ:

    SUB SP,SP,#4;腾出一个字以存放中断服务程序入口地址

    STMFD SP!,{R8-R9};

    LDR R9,=I_ISPR;中断服务寄存器地址送到R9  I_ISPR EQU 0X????????

    LDR R9,[R9];ISPR 的内容送r9

    MOV R8,#0;设置r8为地址偏移量,并初始化为0

    10:          MOVS R9,R9,LSR #1;R9左移一位,移除位送到C

    BCS 11

    ADD R8,R8,#4

    B 10

    11:              LDR R9,=HANDLEADC;找到了,软件中断向量表的首项中的地址送R9

    ; HANDLEADC EQU _ISR_STARTADDRESS+4*8

    ADD R9,R9,R8

    LDR R9,[R9];将相应的中断服务程序入口地址送R9

    STR R9,[SP,#8];中断服务程序入口入棧

    LDMFD SP! ,{R8-R9,PC};转向执行中断服务程序

    中断服务程序运行完毕,则返回到标记出,回到原来断点继续执行(中断服务程序中已经完成了返回到BL后一条指令的操作)相当于发生了两级跳转!

     

     

     

     

     

    如果采用向量中断模式,cpu发生异常或响应或中断源后,将转到硬件固有中断向量表,自动转入相应的一次或中断向量地址处执行。以ENIT 4567为例

    0x30:LDR PC,=HANDLERENT4567

    ............

    HANDLERENT4567:

    HANDLER HANDLEEINT4567; HANDLEEINT4567为软件设定的中断向量中中断入口的地址标号

    HANDLER 宏的作用:将HANDLEEINT4567的内容赋给PC

    MACRO HANDLER HANDLELABEL

    SUB SP,SP,#4

    STMFD SP!,{R0}

    LDR R0,=HANDLELABEL

    LDR R0,[R0]

    STR R0,[SP,#4]

    LDMFD SP!,{R0,PC}

    ENDM

     

    中断及异常的响应过程

    程序装在ROM中断中断和异常相应情况:

    对于简单的应用系统,通常将初始化和应用程序下载在0x0处,即在ROM或flash中,在硬件固定向量表中断对应位置放置转移指令,转到相应异常或中断服务程序进行处理。

    由于RAM区程序执行速度快,而且可以修改,所以对于大多数系统和复杂程序,通常将具体的异常或中断处理程序下载到RAM区执行。

     

    程序装在高端RAM中断中断或异常响应

    (1)       软件实现地址映射

    若程序下载到高端RAM,当异常中断发生时,S3C440B0X自动转到硬件固定向量表的歌地址处,所以需要在0x0开始的区域放置一个bootloader,它主要完成系统硬件初始化和地址映射工作。地址映射包含两部分,首先完成从0x0开始的固定向量表到0x0c000000(ram起始区,不同的系统不同)的转移,然后应用程序中的Isr_Init()函数完成到代码下载区RAM处的向量转移。

    Bootloader地址映射:

    在硬件固定表的各向量地址处放指令:ldr pc,=0x0000??,实现0x0000??->0x0c0000??的映射。

    注意:若IRQ异常采用非向量模式,在开始地址区不必进行中断源的映射;复位异常发生,硬件初始化后,直接映射到代码下载区的0x0c008000处,并执行应用系统初始化。

     

     

    (2)       见《基于ARM 的嵌入式系统接口技术》清华大学

    展开全文
  • 中断响应时间/中断步骤/中断源

    千次阅读 2017-06-29 10:10:32
     计算机中也是采用的这种方法,五个中断源,每个中断产生后都到一个固定的地方去找处理这个中断的序,当然在去之前首先要保存下面将执行的指令的地址,以便处理完中断后回到原来的地方继续往下执行程序。...
  • S5PV210采用了Arm公司的Prime PL192,它是一款支持可编程硬件优先级的矢量中断控制器(Vectored Interrupt Controller)。在这篇博文里,楼主会通过PL192手册的解读和一些实验,尝试挖掘其中的两个关键词:矢量和...
  • 本案例在介绍数字PID控制器和模糊Pl控制器的DSP应用程序设计的同时,还介绍TI公司C2000系列DSP芯片开发时,中断向量表和中断子向量表的编写和配置方法。  一个实用DSP程序除包括主程序和系统初始化程序以及存储器...
  • 51内核的最基础的中断源请求有外部中断、定时器中断和串口中断,这也是学习和开发者最长用的。当然还有其他的中断源,比如ADC、SPI、PWM等。以外部中断0为例,在编程中常使用的方式为:在这里特别做上笔记:其中前面...
  • NVIC嵌套矢量中断控制器中断NVIC(Nested Vectored Interrupt Controller)嵌套矢量中断控制器注意点NVIC 的优先级组NVIC_PriorityGroup_0NVIC_PriorityGroup_1NVIC_PriorityGroup_2NVIC_PriorityGroup_3NVIC_...
  • 89c51中断系统及中断控制

    万次阅读 多人点赞 2018-06-23 23:29:10
    现代的计算机都具有实时处理功能,当外界有突发事件时,cpu能够及时的做出处理,这就是靠中断来实现的。 当CPU正在处理某一命令时,这时外部发生了某一事件(如电平的变化,或者定时器/计数器溢出时)请求CPU去处理...
  • ARM中的中断向量表

    2021-01-19 17:19:52
    中断或异常发生的时候,CPU自动将PC指向一个特定的地址,这个地址就是中断向量表。  在32位ARM系统中,一般都是在中断向量表中放置一条分支指令或PC寄存器加载指令,实现程序跳转到中  断服务例程的...
  • 中断系统

    2021-01-14 19:23:10
    中断矢量地址 外部中断0 0003H 定时/计数器T0中断 000BH 外部中断1 0013H 定时/计数器T1中断 001BH 串行口中断 0023H 定时/计数器控制寄存器TCON 位编号 TCON.7 TCON.6 TCON.5 TCON.4 TCON.3 TCON
  • 随着单片机应用领域的不断扩展,人们越来越关心如何进一步增强单片机的中断功能。本文从软、硬件相结合的角度较为详细地阐述了如何利用8259A蕊片实现单片机的矢量中断和...中断源矢量中断中断重入;中断交叉嵌套
  • 笔记:8051中断源

    千次阅读 2015-05-06 13:05:37
     1.8051的五个中断源  编号  中断源  入口地址  0  /INT0  0x0003  1  TIMER0  0x000b  2  /INT1  0x0013  3  TIMER1  0x001b  4  UART  0x
  • 8259A中断控制器

    2021-08-01 04:51:46
    8259A芯片是一个中断管理芯片,中断的来源除了来自于硬件自身的NMI中断和来自于软件的INT n指令造成的软件中断之外,还有来自于外部硬件设备的中断,这些中断是可屏蔽的。这些中断也都通过可编程中断控制器PIC...
  • 一,中断的定义 二 ,中断处理的过程 三,8086/8088CPU可以处理256种不同类型的终端 四,中断服务程序的设计方法 五中断向量表的建立
  • TMS320 系列DSP 中断矢量表的编写及链接在DSP 编程中,若用户用到中断,需要编写中断服务程序和中断向量表,并用链接命令来链接起来。中断向量表是一些跳转指令,每一个中断对应一条跳转指令(C54 可选多条跳转...
  • 8086中断向量表

    2019-02-16 20:10:24
    中断向量表: 用来存放中断码对应中断处理程序的入口地址,一个地址包括段地址和偏移地址,高地址存放段地址,低地址存放偏移地址 需要四个字节来存储中断处理程序的入口地址,256个中断信号处理程序需要1024个字节...
  • 在51系列单片机中,可以通过特殊功能寄存器来设置中断,并按照中断矢量来识别各个中断。当某个中断发生的时候,首先CPU响应中断,将中断的入口地址装载到程序计数器PC中,中断服务程序便是从该地址开始执行的。当...
  • C语言在8051单片机上的扩展(interrupt、using关键字的用法)直接访问寄存器和端口定义sfr P0 0x80sfrP1 0x81sfrADCON;...在使用了interrupt 1 关键字之后,会自动生成中断向量在 ISR中不能 与其他 “后台循环代码”...
  • 51单片机中断地址表

    2021-03-19 10:50:25
    51中断地址表
  • 本文主要介绍什么是中断中断的基本概念、中断的处理过程、中断系统的结构和中断系统控制寄存器
  • 中断系统有6个中断请求(简称中断源)(80c51单片机有5个中断源),两个中断优先级,可实现两级中断服务程序嵌套。 每一中断源可用软件独立控制为允许中断或关中断状态,中断优先级均可用软件来设置。 图4-2 AT...
  • 所谓中断是指CPU在正常执行程序的过程中,由于内部/外部事件的触发或由程序的预先安排,引起CPU暂时中断当前正在运行的程序,而...中断向量表:中断类型号与相应中断源中断处理程序入口地址之间的连接表; 中断服...
  • 中断的概念及中断源分类在CPU执行程序过程中,由于某种事件发生,强迫CPU暂时停止正在执行的程序而转向对发生的事件进行处理,事件处理结束后又能回到原中止的程序,接着中止前的状态继续执行原来的程序,这一过程...
  • 矢量中断优先级 矢量中断优先级的设置是采用中断优先级控制器。图7-9 给出了它的典型设计原理框图。 外设可以有8个中断请求IR0~IR7送入中断请求寄存器, 中断屏蔽寄存器可由用户设置屏蔽某几位的中断请求。中断优 ...
  • 单片机实验六中断系统实验.doc信息工程系实验报告课程名称:单片微型计算机与接口技术成 绩:实验项目名称:实验六中断系统实验实验时间:2013-12-02指导教师(签名):...理解51单片机中断管理系统处理五种中断源,...
  • 描述什么是单片机嵌套中断所谓“中断”是处理事件的一个“过程”,这一过程一般是由计算机内部或外部某件紧急事件引起并向主机发出...以AT89S52为例,中断系统含有8个中断,共有6个中断矢量:定时/计数器0、1、2,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,161
精华内容 3,264
关键字:

中断源的中断矢量