第四章 中断管理和复位_第1页
第四章 中断管理和复位_第2页
第四章 中断管理和复位_第3页
第四章 中断管理和复位_第4页
第四章 中断管理和复位_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 一、中断矢量一、中断矢量 二、可屏蔽中断二、可屏蔽中断 三、非屏蔽中断三、非屏蔽中断 四、非法指令陷阱四、非法指令陷阱 五、复位操作五、复位操作 六、低功耗模式六、低功耗模式 七、片内外设的中断扩展七、片内外设的中断扩展 中断分类:中断分类: 可屏蔽中断:可用软件加以屏蔽或解除屏蔽。可屏蔽中断:可用软件加以屏蔽或解除屏蔽。 非屏蔽中断:这些中断不能够被屏蔽。非屏蔽中断:这些中断不能够被屏蔽。C28x将立即响应将立即响应 该种中断并转入相应的子程序去执行。所有用软件调用的中该种中断并转入相应的子程序去执行。所有用软件调用的中 断都属于该类中断。断都属于该类中断。 中断申请中断申请: 由软件或

2、硬件驱动的信号,可暂停目前执行由软件或硬件驱动的信号,可暂停目前执行 的主程序,转而去执行一个中断服务子程序的主程序,转而去执行一个中断服务子程序 处理中断过程:处理中断过程: 1接收中断请求:接收中断请求:由软件中断由软件中断(从程序代码中从程序代码中)或者硬件中断或者硬件中断(从一个引从一个引 脚或一个基于芯片的设备脚或一个基于芯片的设备)提出请求去暂停当前主程序的执行。提出请求去暂停当前主程序的执行。 2响应中断:响应中断:C28x必须能够响应中断请求。如果中断是可屏蔽的,则必必须能够响应中断请求。如果中断是可屏蔽的,则必 须满足一定的条件,按照一定的顺序去进行测试。而对于非屏蔽硬件中断

3、和软件须满足一定的条件,按照一定的顺序去进行测试。而对于非屏蔽硬件中断和软件 中断,中断,C28x会立即作出响应。会立即作出响应。 3准备执行中断服务程序并保存寄存器值。准备执行中断服务程序并保存寄存器值。 (1)完整地执行完当前指令,清除流水线中还没有到达第二阶段的所有指令。完整地执行完当前指令,清除流水线中还没有到达第二阶段的所有指令。 (2)将寄存器将寄存器ST0、T、AH、AL、PH、PL、AR0、ARl、DP、STl、DBGSTAT、 PC和和IER的内容保存到堆栈中,以便自动保存主程序的大部分内容。的内容保存到堆栈中,以便自动保存主程序的大部分内容。 (3)取回中断向量并把它放入程

4、序寄存器取回中断向量并把它放入程序寄存器PC中。中。 4执行中断服务子程序:执行中断服务子程序:C28x进入预先规定的向量地址,并且执行进入预先规定的向量地址,并且执行 已写好的中断服务程序已写好的中断服务程序ISR。 C28x支持支持32个中断向量,包括复位向量。每一向量是个中断向量,包括复位向量。每一向量是 一个一个22位的地址,该地址是相应中断服务程序位的地址,该地址是相应中断服务程序ISR的入口的入口 地址。每一个地址。每一个32位的向量被保存在一个连续地址中。见书位的向量被保存在一个连续地址中。见书 中表中表4-1-1 中断向量地址的低中断向量地址的低16位保存该向量的低位保存该向量

5、的低16位,高地址则位,高地址则 保存它的高保存它的高6位。当位。当个中断被确定后,其个中断被确定后,其22位的向量被位的向量被 取回,而地址的高取回,而地址的高10位被忽略。位被忽略。 一、一、中断矢量中断矢量 向量表可以映像到程序空间的底部或顶部,这取决于状态向量表可以映像到程序空间的底部或顶部,这取决于状态 寄存器寄存器STl的向量映像位的向量映像位VMAP,如果,如果VMAP位是位是0,向量就,向量就 映像在以映像在以000000h开始的地址上;如果其值是开始的地址上;如果其值是1,向量就映像,向量就映像 到以到以3FFFC0h开始的地址上。开始的地址上。 VMAP位可以由位可以由SE

6、TC VMAP指令进行置位,由指令进行置位,由CLR CVMAP指令进行复位。指令进行复位。VMAP的复位值是的复位值是1。 一、一、中断矢量中断矢量 14个通用中断个通用中断INTlINTl4 为仿真而设计的中断为仿真而设计的中断DLOGINT(数据标志中断数据标志中断)和和TOSINT(实实 时操作系统中断时操作系统中断)是是。 中断寄存器:中断寄存器: 中断标志寄存器中断标志寄存器IFRl6位寄存器位寄存器IFR包含的标志位表明相应中断在包含的标志位表明相应中断在 等待等待CPU的确认。的确认。外部输入线外部输入线INTlINTl4在在CPU的每的每个时钟周期都被采样。如个时钟周期都被采

7、样。如 果识别出果识别出个中断信号,个中断信号,IFR相应的位就被置位和锁存。相应的位就被置位和锁存。DLOGINT或或RTOSINT, CPU片内分析逻辑送来的信号使得相应标志位被设置和锁存。片内分析逻辑送来的信号使得相应标志位被设置和锁存。 中断使能寄存器中断使能寄存器IER包含的每一位为可屏蔽中断进行使能和关闭。包含的每一位为可屏蔽中断进行使能和关闭。 调试中断使能寄存器调试中断使能寄存器DBGIER包含的每一位为可屏蔽中断进行包含的每一位为可屏蔽中断进行 使能和关闭。表明了当使能和关闭。表明了当CPU处于实时仿真模式时哪一个中断可以利用。处于实时仿真模式时哪一个中断可以利用。 二、二、

8、可屏蔽中断可屏蔽中断 可屏蔽中断也利用状态寄存器可屏蔽中断也利用状态寄存器STl的的0位,即中断全局屏蔽位位,即中断全局屏蔽位 INTM,可用来进行全局使能中断和关闭中断。,可用来进行全局使能中断和关闭中断。 当当INTM0时,这些中断全局使能;时,这些中断全局使能; 当当INTM1时,这些中断全局关闭。时,这些中断全局关闭。 在在IFR中一个标志关闭后,直到中一个标志关闭后,直到IER、DBGIER和和INTM位被使位被使 能,否则相应的中断将不再响应。能,否则相应的中断将不再响应。 二、二、可屏蔽中断可屏蔽中断 为了识别未确认中断,可以利用指令为了识别未确认中断,可以利用指令PUSH IF

9、R,然后测,然后测 试堆栈的值。试堆栈的值。 运用运用OR IFR指令来设置指令来设置IFR位,位, 利用指令利用指令AND IFR,#0或硬件复位可以对所有的未决中断或硬件复位可以对所有的未决中断 进行清进行清0。 注意:注意:当通过指令当通过指令TRAP发出中断请求时,如果发出中断请求时,如果IFR的相应位被置位,的相应位被置位,CPU并并 不会自动清除它。如果有一个应用请求,它的不会自动清除它。如果有一个应用请求,它的IFR已被清已被清0,则必须在中断服务子,则必须在中断服务子 程序中将相应位清程序中将相应位清0。 中断标志寄存器中断标志寄存器(IFR) 二、二、可屏蔽中断可屏蔽中断 R

10、TOSINT D15 D14 D13 D12 D11 D10 D9 D8 INT14 INT13 INT12 INT11 INT10 INT9 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 DLOGINT INT8 D7 D6 D5 D4 D3 D2 D1 D0 INT6INT5INT4INT3INT2INT1 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 INT7 中断标志寄存器中断标志寄存器IFR 若要使能中断,需要把它的相应位置若要使能中断,需要把它的相应位置1; 若要关闭中断,应该清除它

11、的相应位。若要关闭中断,应该清除它的相应位。 可以使用指令可以使用指令MOV的两种语法对寄存器的两种语法对寄存器IER进行读和写。进行读和写。 ORIER指令可以用来设置指令可以用来设置IER位,位, ANDIER指令可以用来清除指令可以用来清除IER位。位。 注意:注意:当执行当执行AND IER和和OR IER指令时,应确保它们不会修改状态位指令时,应确保它们不会修改状态位 15(RTOSINT),除非当前处于实时操作系统模式。,除非当前处于实时操作系统模式。 中断使能寄存器中断使能寄存器(IER) 二、二、可屏蔽中断可屏蔽中断 RTOSINT D15 D14 D13 D12 D11 D1

12、0 D9 D8 INT14 INT13 INT12 INT11 INT10 INT9 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 DLOGINT INT8 D7 D6 D5 D4 D3 D2 D1 D0 INT6INT5INT4INT3INT2INT1 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 INT7 中断使能寄存器中断使能寄存器IER 当当CPU处于实时仿真模式下并暂停时,才可以使用处于实时仿真模式下并暂停时,才可以使用DBGIER。 可通过读可通过读DBGIER来识别使能或关闭中断,

13、或通过写来识别使能或关闭中断,或通过写 DBGIER来使能或关闭中断。来使能或关闭中断。 用指令用指令PUSH DBGIER对对DBGIER进行读操作,进行读操作, 用指令用指令POP DBGIET对对DBGIER进行写操作。进行写操作。 在复位时,在复位时,DBGIER的所有位被清的所有位被清0。 调试中断使能寄存器调试中断使能寄存器 DBGIER 二、二、可屏蔽中断可屏蔽中断 RTOSINT D15 D14 D13 D12 D11 D10 D9 D8 INT14 INT13 INT12 INT11 INT10 INT9 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

14、 R/W-0 R/W-0 DLOGINT INT8 D7 D6 D5 D4 D3 D2 D1 D0 INT6INT5INT4INT3INT2INT1 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 INT7 调试中断使能寄存器调试中断使能寄存器DBGIER 可屏蔽中断的标准操作可屏蔽中断的标准操作 二、二、可屏蔽中断可屏蔽中断 1送往送往CPU的中断请求。的中断请求。 2设置相应的设置相应的IFR标志位。标志位。 3当当 1)IER中的相应位是中的相应位是1;2)STl中的中的INTM位是位是0,确认中断;,确认中断;一旦一个中断被一旦一个中断被

15、 使能并且被使能并且被CPU确认,则其他的中断就不能得到响应直到确认,则其他的中断就不能得到响应直到CPU开始执行中断服开始执行中断服 务程序,即中断响应的步骤务程序,即中断响应的步骤13。 4清除相应的清除相应的IFR位。位。 5清空流水线。清空流水线。 6增加和临时存储增加和临时存储PC。 7取回中断向量。取回中断向量。 8SP增增1。 9执行自动上下文存储。执行自动上下文存储。 10清除相应的清除相应的IER位。位。 11设置设置INTM和和DBGM,清除,清除LOOP、EALLOW和和IDLESTAT。 12取回向量赋值给取回向量赋值给PC。 13执行中断服务程序。执行中断服务程序。

16、14继续执行程序。继续执行程序。 中断处理的标准过程中断处理的标准过程 INTR指令指令 三、三、非屏蔽中断非屏蔽中断 C28x非屏蔽中断包括:非屏蔽中断包括: 软中断软中断INTR和和TRAP指令指令 硬件中断硬件中断NMI 非法指令陷阱非法指令陷阱 硬件复位中断硬件复位中断RS 可以通过可以通过INTR指令用标号指令用标号INTlINTl4、DLOGINT、 RTOSINT和和NMI来对指令进行初始化。来对指令进行初始化。 INTlINTl4、DLOGINT和和RTOSINT。 NMI一个非屏蔽中断,引脚上的硬件请求和用一个非屏蔽中断,引脚上的硬件请求和用INTR指令引起的软指令引起的软

17、件请求都会导致同样的事件发生。这些事件与执行件请求都会导致同样的事件发生。这些事件与执行TRAP指令时所发生的事件指令时所发生的事件 相同。相同。 由由TRAP指令对中断进行初始化的功能流程:指令对中断进行初始化的功能流程: 1取回取回TRAP指令。指令。 2清空流水线。清空流水线。 3PC增增1和临时存储和临时存储PC。 4取回中断向量。取回中断向量。 5SP增增1。 6. 执行自动上下文存储。执行自动上下文存储。 7设置设置INTM和和DBGM,清除,清除LOOP、EALLOW和和IDLESTAT。 8用取回的向量装载用取回的向量装载PC。 9执行中断服务程序。执行中断服务程序。 10程序

18、继续。程序继续。 TRAP指令指令 三、三、非屏蔽中断非屏蔽中断 TRAP指令可初始化任何中断,包括用户定义的软件中断。指令可初始化任何中断,包括用户定义的软件中断。 TRAP指令与指令与32个中断的任何一个中断有关。个中断的任何一个中断有关。 , 非屏蔽硬件中断非屏蔽硬件中断 NMI输入引脚输入引脚 CPU一旦在一旦在NMI引脚上检测到一个有效请求,就将按引脚上检测到一个有效请求,就将按TRAP 指令中所示的方式来处理。指令中所示的方式来处理。 需要说明的是:尽管需要说明的是:尽管NMI不可以被屏蔽,但有一些调试执行不可以被屏蔽,但有一些调试执行 状态是状态是NMI所不能服务的。所不能服务的

19、。 三、三、非屏蔽中断非屏蔽中断 无效的指令被译码无效的指令被译码 操作码操作码0000h被译码被译码 ITRAP0 操作码操作码FFFFh被译码被译码 ITRAP1 四、非法指令陷阱四、非法指令陷阱 复位(复位(RS=0)是优先级最高的中断,为非屏蔽外部中断)是优先级最高的中断,为非屏蔽外部中断 复位通常在电源打开之后被启动复位通常在电源打开之后被启动 每次复位之后必须重新初始化系统每次复位之后必须重新初始化系统 作为硬件复位的一部分,所有当前操作均被放弃,流水作为硬件复位的一部分,所有当前操作均被放弃,流水 线被清除线被清除 复位后复位后CPU的寄存器按表的寄存器按表4-5-1所示进行复位

20、,然后所示进行复位,然后 RESET中断向量被取回,从而执行相应的中断服务程序。中断向量被取回,从而执行相应的中断服务程序。 五、复位操作五、复位操作 IDLE模式:模式:任何被使能的中断或任何被使能的中断或NMI中断都可以使处理器退出中断都可以使处理器退出IDLE模模 式。在这种模式下,如果式。在这种模式下,如果LPMCR1:0位都设置成零,位都设置成零,LPM模块将不完成任何工模块将不完成任何工 作。作。 HALT模式:模式:只有复位只有复位XRS非和非和XNMI_XINT13外部信号能够唤醒器件,外部信号能够唤醒器件, 使其退出使其退出HALT模式。在模式。在XMNICR寄存器中,寄存器

21、中,CPU有一位使能有一位使能/禁止禁止XNMI 。 STANDBY模式:模式:如果在如果在LPMCRl寄存器中被选中,所有信号寄存器中被选中,所有信号(包括包括 XNMI)都能够将处理器从都能够将处理器从STANDBY模式唤醒,用户必须选择具体哪个信号唤醒模式唤醒,用户必须选择具体哪个信号唤醒 处理器。在唤醒处理器之前,要通过处理器。在唤醒处理器之前,要通过OSCCLK确认被选定的信号:确认被选定的信号:OSCCLK的周的周 期数在期数在LPMCR0寄存器当中确定。寄存器当中确定。 六、低功耗模式六、低功耗模式 可使芯片核心部分进入休眠状态,耗散更少的功率。有三种模式:可使芯片核心部分进入休

22、眠状态,耗散更少的功率。有三种模式: 六、低功耗模式六、低功耗模式 低功耗模式通过低功耗模式通过LPMCR0和和LPMCRl两个寄存器来控制两个寄存器来控制 CANRX D15 D14 D13 D12 D11 D10 D9 D8 SCIRXA C6TRIPC5TRIPC4TRIPC3TRIPC2TRIPSCIRXB C1TRIP D7 D6 D5 D4 D3 D2 D1 D0 T3CTRIPT2CTRIPT1CTRIPWDINT XNMI XINT1T4CTRIP 低功耗方式控制低功耗方式控制1寄存器寄存器LPMCR1 保留保留 D15 D1 D0 QUAL STDBYLPM 低功耗方式控制低

23、功耗方式控制0寄存器寄存器LPMCR0 R-0 R/W-1 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 PIE:外设中断扩展模块(外设中断扩展模块(the Peripheral Interrupt Expansion block)把许)把许 多中断源多路复用成一个较小的中断输入集。多中断源多路复用成一个较小的中断输入集。 功能:功能:PIE模块支持模块支持96个不同的中断,这些中断分成个不同的中断,这些中断分成12个组,每个组有个组,每

24、个组有8个个 中断,每个组都被反馈到中断,每个组都被反馈到CPU内核的内核的12条中断线条中断线(1NTlINTl2)的一条上。这的一条上。这96 个中断中的每一个都得到了各自向量的支持,这些向量被保存在专用个中断中的每一个都得到了各自向量的支持,这些向量被保存在专用RAM块中块中 并可以进行修改。并可以进行修改。 在在PIE块中可对每个中断分别使能或者使之无效。块中可对每个中断分别使能或者使之无效。 七、片内外设的中断扩展七、片内外设的中断扩展 六、片内外设的中断扩展六、片内外设的中断扩展 PIE控制器概述控制器概述 七、片内外设的中断扩展七、片内外设的中断扩展 PIE向量向量(vector

25、)表用来存储系统的各个中断服务子程序表用来存储系统的各个中断服务子程序ISR 的地址。的地址。 所有多通道所有多通道(MUXed)中断和非多通道中断和非多通道(nonMUXed)中断中的中断中的 每个中断都有一个向量。非多通道中断源由每个中断都有一个向量。非多通道中断源由CPU直接提供。直接提供。 在器件配置期间,用户要使用向量表并在操作期间去修改它。在器件配置期间,用户要使用向量表并在操作期间去修改它。 有多通道有多通道PIE中断操作序列的概况中断操作序列的概况 六、片内外设的中断扩展六、片内外设的中断扩展 六、片内外设的中断扩展六、片内外设的中断扩展 外设级:外设级:一个中断产生事件出现在

26、某个外设中,和该事件相关的中断一个中断产生事件出现在某个外设中,和该事件相关的中断 标志标志(IF)位会在这个特别外设的寄存器中被置为位会在这个特别外设的寄存器中被置为1。如果相应的中断使能。如果相应的中断使能(IE)位位 已经置位,则外设向已经置位,则外设向PIE控制器产生一个中断请求。如果该中断在外设级使能控制器产生一个中断请求。如果该中断在外设级使能 无效,则相应的无效,则相应的IF位会一直保持直到用软件清除它为止。如果在以后使能该中位会一直保持直到用软件清除它为止。如果在以后使能该中 断,且中断标志仍然置位,那么就会向断,且中断标志仍然置位,那么就会向PIE发出一个中断请求。外设寄存器

27、中发出一个中断请求。外设寄存器中 的中断标志必须手工清除。的中断标志必须手工清除。 PIE控制器概述控制器概述 PIE级:级:PIE块汇集了块汇集了8个外设和外部引脚的中断进入个外设和外部引脚的中断进入1个个CPU中断。这些中中断。这些中 断被划分为断被划分为12个组:个组:PIE组组1PIE组组12,1个组中的中断被多路汇集进入个组中的中断被多路汇集进入1个个CPU中中 断。例如,断。例如,PIE组组1被多路汇集进入被多路汇集进入CPU中断中断INTl,而,而PIE组组12被多路汇集进入被多路汇集进入CPU 中断中断INTl2。与。与CPU剩余的中断相连接的中断源不是多路复用的。对于非多路复

28、用剩余的中断相连接的中断源不是多路复用的。对于非多路复用 的中断而言,的中断而言,PIE直接向直接向CPU传送中断请求。对于多路复用的中断源,传送中断请求。对于多路复用的中断源,PIE块中的块中的 每个中断组都有一个相关标志位每个中断组都有一个相关标志位PIEIFRx.y和使能位和使能位PIEIERx.y。另外,每个中断。另外,每个中断 组组(1NT1INTl2)都有一个应答位都有一个应答位PIEACKx。 CPU级:级:一旦某个中断请求被送往一旦某个中断请求被送往CPU,CPU级中与级中与INTx相关的中断标相关的中断标 志志(IFR)位就被置位。该标志位被锁存在位就被置位。该标志位被锁存在

29、IFR后,后,CPU不会马上就去执行相应的中不会马上就去执行相应的中 断,而是等待断,而是等待CPU使能使能IER寄存器,或者使能寄存器,或者使能DBGIER寄存器,并对全局中断屏寄存器,并对全局中断屏 蔽位蔽位INTM进行适当的使能。进行适当的使能。 六、片内外设的中断扩展六、片内外设的中断扩展 PIE控制器概述控制器概述 六、片内外设的中断扩展六、片内外设的中断扩展 向量表映射向量表映射 在在C28x芯片上,中断向量表可以和存储器的五个不同位置相对应。实际上,芯片上,中断向量表可以和存储器的五个不同位置相对应。实际上,F28x 芯片只使用了芯片只使用了PIE向量表映像。向量映像由下述方式位

30、向量表映像。向量映像由下述方式位/信号控制。信号控制。 1VMAP:该位是状态寄存器该位是状态寄存器STl的位的位3。芯片复位将把该位置。芯片复位将把该位置1。通过写。通过写STl 或执行或执行SETCCLRC VMAP指令可以修改该位的状态。对于正常的指令可以修改该位的状态。对于正常的F2812操作,可操作,可 把该位设置为把该位设置为1。 2MOMlMAP:该位是状态寄存器该位是状态寄存器ST1的位的位11。芯片复位将把该位置。芯片复位将把该位置1。 通过写通过写STl或执行或执行SETC/CLRC MOMlMAP指令可以修改该位的状态。对于正常的指令可以修改该位的状态。对于正常的 F28

31、12操作,该位应该保持为操作,该位应该保持为1。MOMlMAP=0保留,仅用于保留,仅用于TI测试。测试。 3MP/MC:该位是该位是XINTCNF2寄存器的位寄存器的位8。在有外部接口。在有外部接口(XINTF)的芯片的芯片 上,复位时,该位的默认值由上,复位时,该位的默认值由XMP/MC输入信号设置。在没有输入信号设置。在没有XINTF的芯片上,在的芯片上,在 内部将内部将XMP/MC拉为低电平。复位后,通过写拉为低电平。复位后,通过写XINTCNF2寄存器寄存器(地址:地址:0 x0000 0B34),可以修改该位状态。,可以修改该位状态。 4ENPIE:该位是寄存器该位是寄存器PIEC

32、TRL的位的位0。复位时该位的默认值设为。复位时该位的默认值设为0(PIE 无效无效)。复位后,通过写。复位后,通过写PIECTRL寄存器寄存器(地址:地址:0 x0000 0CE0),可以修改该位状态。,可以修改该位状态。 六、片内外设的中断扩展六、片内外设的中断扩展 PIE控制器概述控制器概述 M1和和M0向量表映像仅留作向量表映像仅留作TI测试之用,当使用其他向量测试之用,当使用其他向量 映像时,映像时,M0和和M1存储器用作存储器用作RAM块,可以自由使用,没有块,可以自由使用,没有 限制。芯片复位后,向量表映像如书中表所示。限制。芯片复位后,向量表映像如书中表所示。 在复位和程序引导

33、完成之后,应该由用户对在复位和程序引导完成之后,应该由用户对PIE向量表进向量表进 行代码初始化,然后,由应用程序使能行代码初始化,然后,由应用程序使能PIE向量表,从向量表,从PIE向向 量表所指出的位置上取回中断向量。量表所指出的位置上取回中断向量。 六、片内外设的中断扩展六、片内外设的中断扩展 中中 断断 源源 六、片内外设的中断扩展六、片内外设的中断扩展 多通道中断处理过程多通道中断处理过程 1不要清除一个不要清除一个PIEIFR位。当读修改写操作发生时,一个已被录入的中断可位。当读修改写操作发生时,一个已被录入的中断可 能会丢失。清除相应的能会丢失。清除相应的PIEIFR位,该未决的

34、中断应该被服务。假如用户希望清除位,该未决的中断应该被服务。假如用户希望清除 PIEIFR位,而不执行正常的服务子程序,则应按下列的过程:位,而不执行正常的服务子程序,则应按下列的过程: 步骤步骤1:设置:设置EALLOW位,允许修改位,允许修改PIE向量表。向量表。 步骤步骤2:修改:修改PIE向量表以便将外设服务子程序的向量指向一个临时向量表以便将外设服务子程序的向量指向一个临时ISR。这个临时。这个临时 ISR仅完成从中断操作的返回仅完成从中断操作的返回(IRET)。 步骤步骤3:使能该中断以便使该中断通过临时:使能该中断以便使该中断通过临时ISR得到服务。得到服务。 步骤步骤4:在执行

35、了临时中断服务子程序后,将清除:在执行了临时中断服务子程序后,将清除PIEIFR的位。的位。 步骤步骤5:修改:修改PIE向量表重新将外设的服务子程序映像至适当的服务子程序。向量表重新将外设的服务子程序映像至适当的服务子程序。 步骤步骤6:清除:清除EALLOW位。位。 CPU的的IFR寄存器在寄存器在CPU中是整合的。因为清除中是整合的。因为清除CPU IFR寄存器中的位不会造成一寄存器中的位不会造成一 个己录入的中断的丢失。个己录入的中断的丢失。 2软件软件中断优先级。中断优先级。 3使用使用PIEIER禁止中断。使用禁止中断。使用PIEIER寄存器去使能一个中断,而后去禁止这个中寄存器去

36、使能一个中断,而后去禁止这个中 断。断。 六、片内外设的中断扩展六、片内外设的中断扩展 使能和禁止多通道外设中断使能和禁止多通道外设中断 使能或禁止一个中断的通常会产生下列两个过程。使能或禁止一个中断的通常会产生下列两个过程。 1使用使用PIEIERx寄存器去禁止中断并保护相应的寄存器去禁止中断并保护相应的PIEIFRx标志。当清除标志。当清除 PIEIERx寄存器中的位,保护寄存器中的位,保护PIEIFRx寄存器的相应位时,应按下列过程。寄存器的相应位时,应按下列过程。 步骤步骤1:禁止全局中断:禁止全局中断(INTM=1)。 步骤步骤2:清除:清除PIEIERx.y位去禁止一个给定的外设中

37、断。可以对同组一个位去禁止一个给定的外设中断。可以对同组一个 或多个外设这样去作。或多个外设这样去作。 步骤步骤3:等待:等待5个周期。需要确保这个延时,任何录入个周期。需要确保这个延时,任何录入CPU的中断均已经被的中断均已经被 标志在标志在CPU的的IFR寄存器中。寄存器中。 步骤步骤4:为外设组清除:为外设组清除CPU IFRx位。这是对位。这是对CPU的的IFR寄存器的软件操寄存器的软件操 作。作。 步骤步骤5:为外设组清除:为外设组清除PIEACKx位。位。 步骤步骤6:使能全局中断:使能全局中断(INTM=0)。 六、片内外设的中断扩展六、片内外设的中断扩展 2使用使用PIEIER

38、x寄存器去禁止中断并清除相应的寄存器去禁止中断并清除相应的PIEIFRx标志。完成外设中断的软标志。完成外设中断的软 件复位并清除件复位并清除PIEIFRx寄存器和寄存器和IFR寄存器中的相应标志,按下列过程。寄存器中的相应标志,按下列过程。 步骤步骤1:禁止全局中断:禁止全局中断(1NTM=1)。 步骤步骤2:置位:置位EALLOW位。位。 步骤步骤3:修改:修改PIE向量表,将特有的外设中断暂时映像到向量表,将特有的外设中断暂时映像到一个空的中断服务子程一个空的中断服务子程 序序ISR。这个空的。这个空的ISR仅完成从中断指令的返回。在没有丢失来自其他外设组的任何仅完成从中断指令的返回。在

39、没有丢失来自其他外设组的任何 中断的情况下,这是清除单个中断的情况下,这是清除单个PIEIFRx.y位的一种安全途径。位的一种安全途径。 步骤步骤4:禁止外设寄存器的外设中断。:禁止外设寄存器的外设中断。 步骤步骤5:使能全局中断:使能全局中断(1NTM=0)。 步骤步骤6:通过空的:通过空的ISR子程序为那些等待来自外设的未决中断服务。子程序为那些等待来自外设的未决中断服务。 步骤步骤7:禁止全局中断:禁止全局中断(1NTM=1)。 步骤步骤8:修改:修改PIE向量表,将外设向量映像到它最初的向量表,将外设向量映像到它最初的ISR。 步骤步骤9:清除:清除EALLOW位。位。 步骤步骤10:

40、禁止给定外设的:禁止给定外设的PIEIER位。位。 步骤步骤11:清除给定外设组的:清除给定外设组的IFR位位(这是对这是对CPUIFR寄存器的安全操作寄存器的安全操作)。 步骤步骤12:清除:清除PIE组的组的PIEACK位。位。 步骤步骤13:使能全局中断。:使能全局中断。 使能和禁止多通道外设中断使能和禁止多通道外设中断 从外设到从外设到CPU的多通道中断请求流程的多通道中断请求流程 六、片内外设的中断扩展六、片内外设的中断扩展 步骤步骤1:任何:任何PIE组里的外设和外部中断产生一个中断,假如外设中断已被使能,组里的外设和外部中断产生一个中断,假如外设中断已被使能, 那么,该中断要求就被置入那么,该中断要求就被置入PIE模块。模块。 步骤步骤2:PIE模块识别模块识别PIE组组x内已经录入的中断内已经录入的中断y(INTx.y),并且将相应的,并且将相应的PIE中中 断标志位锁存:断标志位锁存:PIEIFRx.y=1。 步骤步骤3:为了置位从:为了置位从PIE到到CPU的中断要求,下列两个条件必须为真。的中断要求,下列两个条件必须为真。 (1)适当的使能位必须置位适当的使能位必须置位(PIEIERx.y=1)。 (2)必须清除该组的必须清除该组的PIEACKx位。位。 步骤步骤4:如果步骤:如果步骤3中的两个条件为真

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论