TMS320C6x系列DSP对中断的控制是通过一组中断控制寄存器完成的。这些中断控制寄存器见表2-22。
表2-22 中断控制寄存器列表
(续)
1.控制状态寄存器(CSR)
CSR中有两个字段用于中断控制:GIE(Global Interrupt Enable)和PGIE(Previous GIE),分别如图2-30和表2-23所示。
图2-30 控制状态寄存器
表2-23 PGIE字段描述
GIE是CSR的bit0,当GIE=0时,使能所有可屏蔽中断;当GIE=1时,禁止所有可屏蔽中断。
PGIE是CSR的bit1,PGIE用于在可屏蔽中断处理过程中保存GIE,因为在处理可屏蔽中断过程中,GIE被自动清零,以禁止其他可屏蔽中断,GIE的值被保存在PGIE中。当中断返回时,通过BIRP指令,从PGIE中恢复GIE。
例如,不可屏蔽全局中断代码。
例如,可屏蔽全局中断代码。
2.中断使能寄存器(IER)
相对于CSR中的GIE,使能/禁止所有可屏蔽中断,IER可以单独对每一个中断使能/禁止。IER的格式如图2-31所示。
IER的0位对应于复位中断(RESET)。0位总为1,表示RESET中断总被使能。
IER的1对应于非屏蔽中断(NMI)。当NMIE=0时,禁止NMI和其他所有可屏蔽中断;当NMIE=1时,使能NMI。需要说明的是,NMIE只能通过指令写入1,而不能通过指令写入0,NMIE只能在CPU复位期间和NMI发生期间被自动置0。如果需要NMIE置1,可以通过BNRP指令或写入指令完成。
IER的bit4~bit15(IE4~IE15)分别和可屏蔽中断INT4~INT15相对应。IEm=1,使能INTm中断;IEm=0,禁止INTm中断。
图2-31 中断使能寄存器
例如,使能一个中断(INT9)的代码段。
例如,禁止一个中断(INT9)的代码段。
3.中断标志寄存器(IFR)
IFR的1位(NMIF)是NMI的中断标志位,bit4~bit15(IF4~IF15)分别是INT4~INT15的中断标志位。当某一中断发生时,IFR对应的中断标志位置1,否则置0。可以使用MVC指令,读取IFR,以检查是否有中断发生。IFR的结构如图2-32所示。(www.xing528.com)
图2-32 中断标志寄存器
4.中断设置寄存器(ISR)
ISR用以设置IFR相应的中断标志位,其结构如图2-33所示。ISR的bit4~bit15(IS4~IS15)分别和IFR的IF4~IF15对应,对ISn置1,则IFn置1。对ISR的任何位写0无效,NMI和复位中断不受ISR影响。
图2-33 中断设置寄存器
5.中断清零寄存器(ICR)
ICR用以清除IFR相应的中断标志位,其结构如图2-34所示。ICR的bit4~bit15(IC4~IC15)分别和IFR的IF4~IF15对应,对ICn置1,则IFn清零。对ICR的任何位写0无效,NMI和复位中断不受ICR影响。
图2-34 中断清零寄存器
中断具有优先权,如果有中断存在,即使ICR对应该中断的中断清除标志为1,IFR对应的中断标志位仍然会置1。
写入ISR和ICR,使用MVC指令设置或清除IFR对应的标志位,需要两个时钟周期。如果同时设置、清除IFR的某一中断标志位,则设置操作优先。
例如,设置一个中断(INT6)并读标志寄存器的代码段。
例如,清除一个中断(INT6)并读标志寄存器的代码段。
6.中断返回指针寄存器
复位信号变为高电平后,控制寄存器为确定值,同时程序从地址0开始执行。不可屏蔽中断和可屏蔽中断服务结束后,使用分支转移到返回指针寄存器所对应的位置继续执行前面的程序。
(1)不可屏蔽中断返回指针(NRP)寄存器。
NRP寄存器包含从NMI中断返回后开始执行的32位程序地址,当NMI服务程序返回时,调用BNRP指令,程序从NRP寄存器中的地址开始执行。NRP寄存器如图2-35所示。
和BIRP指令相比,BNRP指令在完成程序跳转的同时置位NMIE位。
图2-35 不可屏蔽中断返回指针寄存器
(2)可屏蔽中断返回指针(IRP)寄存器。
IRP寄存器包含从可屏蔽中断返回后开始执行的32位程序地址,当可屏蔽中断服务程序返回时,调用BIRP指令,程序从IRP寄存器中的地址开始执行。IRP寄存器如图2-32所示。
图2-36 可屏蔽中断返回指针寄存器
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。