实验2中断模拟实验

上传人:ldj****22 文档编号:48666183 上传时间:2018-07-19 格式:PPT 页数:22 大小:151.50KB
返回 下载 相关 举报
实验2中断模拟实验_第1页
第1页 / 共22页
实验2中断模拟实验_第2页
第2页 / 共22页
实验2中断模拟实验_第3页
第3页 / 共22页
实验2中断模拟实验_第4页
第4页 / 共22页
实验2中断模拟实验_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《实验2中断模拟实验》由会员分享,可在线阅读,更多相关《实验2中断模拟实验(22页珍藏版)》请在金锄头文库上搜索。

1、实验2 中断模拟实验1试验目的n掌握中断的含义和中断响应过程。n掌握用CCS simulator模拟中断的方法。n掌握中断应用程序的编写方法。摘要n复习C54x中断操作n模拟中断的方法n实验内容及步骤2试验原理n中断是一些由硬件或软件产生的信号,能使CPU暂时停 止执行正在执行的程序,转而执行由DSP程序开发者编 写的中断服务程序(ISR Interrupt Service Routine)nC54x既支持软件中断也支持硬件中断软件中断,是由指令 (INTR、TRAP、RESET) 产生的。硬件中断:n外部中断通过DSP外部中断引脚接收到的片外设备产生的中断 (例如ADC/DAC向DSP发出的

2、中断)n片上外设中断DSP片上外设 (如定时器、串口、DMA等) 向 CPU发出的中断n当同一CPU时钟周期内有多个硬件中断发生时,CPU会 按照中断优先级对它们进行响应 ! 软件中断无优先级。可屏蔽和非可屏蔽中断nDSP的中断可分为两大类:可屏蔽 (Maskable) 中断:可以通过软件被禁止/使能的中断。被 禁止掉的中断即使产生,CPU 也不会去响应 !被使能的中断, 当它产生时 CPU 就会去响应它 !非可屏蔽 (Nonmaskable) 中断:不能被禁止的中断。当这些中 断产生时 CPU 会无条件响应 !C54x 的非可屏蔽中断有:n所有的软件中断 !n外部中断 NMI (DSP外部中

3、断引脚NMI)n复位中断 RS (DSP外部中断引脚RS)CPU在响应 NMI 中断时,将不能被任何其他中断打断 !包括复 位中断 !IFRnIFR (Interrupt Flag Register) 中断标志寄存器 (地址 0x01)当一个可屏蔽中断产生时,IFR中相应的中断标志位会被置1, 当CPU响应该中断后,该标志位才被清除 !清除中断标志还可通过:n软件或硬件复位;n向标志位写1;n使用INTR #K指令响应该中断15-1413121110987ReservedReservedDMAC5DMAC5DMAC4DMAC4BXINT1BXINT1 /DMAC3/DMAC3BRINT1BRI

4、NT1 /DMAC2/DMAC2HPINTHPINTINT3INT3TINT1TINT1 /DMAC1/DMAC1C5402 DSP 的 IFR 寄存器6543210DMAC0DMAC0BXINT0BXINT0BRINT0BRINT0TINT0TINT0INT2INT2INT1INT1INT0INT0IMRnIMR (Interrupt Mask Register) 中断屏蔽寄存器 (地址 0x00)当 ST1 的 INTM 位为 0 时,IMR 可用于禁止和使能可屏蔽中断 ,向 IMR 中的某个屏蔽位写 1 就能使能相应的可屏蔽中断 !如 果写 0,则相应的中断被禁止 !15-1413121

5、110987ReservedReservedDMAC5DMAC5DMAC4DMAC4BXINT1BXINT1 /DMAC3/DMAC3BRINT1BRINT1 /DMAC2/DMAC2HPINTHPINTINT3INT3TINT1TINT1 /DMAC1/DMAC1C5402 DSP 的 IMR 寄存器6543210DMAC0DMAC0BXINT0BXINT0BRINT0BRINT0TINT0TINT0INT2INT2INT1INT1INT0INT011INTM中断模式位,可屏蔽中断的全局开关 ! =0 全局开 =1 全局关ST1: (0x07)C54x 中断响应流程中断请求产生 Reques

6、t中断应答 Acknowledgment执行用户编写的ISRIMR屏蔽位=1?将当前PC值压入堆栈产生应答信号 IACK可屏蔽中断?从ISR返回时,将先前 压入堆栈的 PC 值 弹出放入PC 中程序继续从被中断处 运行INTM=0 ?YNY产生应答信号 IACK INTM置1YNNCPU 如何跳转到 ISR 去执行 ?中断 号中断 名称 0RS1NMI16INT017INT118INT215 - 7IPTR中断 INT0 得到应答 AcknowledgmentPC = (IPTR#define IMR*(unsigned int *)0x0000 #define IFR*(unsigned i

7、nt *)0x0001 #define ST1*(unsigned int *)0x0007 #define PMST *(unsigned int *)0x001Dint INTtimes; void main() asm(“SSBX INTM“); PMST = 0x00A0; IFR = 0xFFFF; IMR = 0x0001; asm(“RSBX INTM“); puts(“interrupt enabled !“);INTtimes = 0; while(1) asm(“RSBX INTM“); main.c#include extern int INTtimes;interrup

8、t void myisr() printf(“%dn“, +INTtimes); isr.c.sect “.vectors“ .ref _myisr.align 0x80Unused .space 16*4*16int0:B _myisrNOPNOPNOP int1: RETENOPNOPNOP int2: RETENOPNOPNOP .endvectors.asm-lrts.lib -stack 0x400 -heap 0x400 MEMORY PAGE 0: VECT:o=0x0080,l=0x0080 SRAM:o=0x4000,l=0x3000PAGE 1: REVS:o=0x1000

9、,l=0x0400 STACK:o=0x1400,l=0x0400 IDRAM:o=0x1800,l=0x2800 SECTIONS .vectors:VECT .text:SRAM .cinit:SRAM .stack:STACK .bss:IDRAM .const:IDRAM .cio:IDRAM .sysmemIDRAM linker.cmd实验内容和步骤n构建可执行模块。n装载并运行后观察结果。n修改程序,使其响应INT1中断。n重新构建、装载并运行后观察结果。实验报告要求n中断发生时程序是如何转移到ISR的?n如何编程实现对中断的响应 ?n附.c程序和.asm程序(中断向量表),并添 加注释,说明一些关键语句的含义。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号