CCS simulation 中断模拟实验_第1页
CCS simulation 中断模拟实验_第2页
CCS simulation 中断模拟实验_第3页
CCS simulation 中断模拟实验_第4页
CCS simulation 中断模拟实验_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

实验2

中断模拟实验试验目的掌握中断的含义和中断响应过程。掌握用CCSsimulator模拟中断的方法。掌握中断应用程序的编写方法。摘要复习C54x中断操作模拟中断的方法实验内容及步骤试验原理中断是一些由硬件或软件产生的信号,能使CPU暂时停止执行正在执行的程序,转而执行由DSP程序开发者编写的中断服务程序(ISR——InterruptServiceRoutine)C54x既支持软件中断也支持硬件中断软件中断,是由指令(INTR、TRAP、RESET)产生的。硬件中断:外部中断——通过DSP外部中断引脚接收到的片外设备产生的中断(例如ADC/DAC向DSP发出的中断)片上外设中断——DSP片上外设(如定时器、串口、DMA等)向CPU发出的中断当同一CPU时钟周期内有多个硬件中断发生时,CPU会按照中断优先级对它们进行响应!软件中断无优先级。可屏蔽和非可屏蔽中断DSP的中断可分为两大类:可屏蔽(Maskable)中断:可以通过软件被禁止/使能的中断。被禁止掉的中断即使产生,CPU也不会去响应!被使能的中断,当它产生时CPU就会去响应它!非可屏蔽(Nonmaskable)中断:不能被禁止的中断。当这些中断产生时CPU会无条件响应!C54x的非可屏蔽中断有:所有的软件中断!外部中断NMI(DSP外部中断引脚NMI)复位中断RS(DSP外部中断引脚RS)CPU在响应NMI中断时,将不能被任何其他中断打断!包括复位中断!IFRIFR(InterruptFlagRegister)中断标志寄存器(地址0x01)当一个可屏蔽中断产生时,IFR中相应的中断标志位会被置1,当CPU响应该中断后,该标志位才被清除!清除中断标志还可通过:软件或硬件复位;向标志位写1;使用INTR#K指令响应该中断15-1413121110987ReservedDMAC5DMAC4BXINT1/DMAC3BRINT1/DMAC2HPINTINT3TINT1/DMAC1C5402DSP的IFR寄存器6543210DMAC0BXINT0BRINT0TINT0INT2INT1INT0IMRIMR(InterruptMaskRegister)中断屏蔽寄存器(地址0x00)当ST1的INTM位为0时,IMR可用于禁止和使能可屏蔽中断,向IMR中的某个屏蔽位写1就能使能相应的可屏蔽中断!如果写0,则相应的中断被禁止!15-1413121110987ReservedDMAC5DMAC4BXINT1/DMAC3BRINT1/DMAC2HPINTINT3TINT1/DMAC1C5402DSP的IMR寄存器6543210DMAC0BXINT0BRINT0TINT0INT2INT1INT011INTM中断模式位,可屏蔽中断的全局开关!=0全局开=1全局关ST1:(0x07)C54x中断响应流程中断请求产生Request中断应答Acknowledgment执行用户编写的ISRIMR屏蔽位=1?将当前PC值压入堆栈产生应答信号IACK可屏蔽中断?从ISR返回时,将先前压入堆栈的PC值弹出放入PC中程序继续从被中断处运行INTM=0?YNY产生应答信号IACKINTM置1YNNCPU如何跳转到ISR去执行?中断号中断名称0RS1NMI……16INT017INT118INT2……15-7IPTR中断INT0得到应答AcknowledgmentPC=(IPTR<<7)+中断号×4

PMST:(0x1D)……程序空间NOPB_MyInt0isr

NOPNOP执行C函数MyInt0isrINT0的中断向量中断向量表中断向量(表)指针4-wordspace4-wordspace4-wordspace4-wordspace4-wordspace摘要复习C54x中断操作模拟中断的方法实验内容及步骤Simulator下模拟中断编写引脚文件,指示出中断产生的时间!将引脚文件和相应的中断引脚进行“连接”!装载并运行程序后,CCS会根据引脚文件中设置的时间来产生模拟的中断信号!引脚文件(.txt)文件内容含义100120300分别在第100、120、300个CPUclock时产生中断100+20300同上,分别在第100、120、300个CPUclock时产生中断5(+10)rpt3分别在第5、15、25、35个CPUclock时产生中断5(+10+20)rpt2分别在第5、15、35、45、65个CPUclock时产生中断100(+200)rptEOS分别在第100、300、500、700…个CPUclock时产生中断,无限循环!引脚文件和中断引脚的“连接”Tools→Pinconnect

实验内容在C54xDeviceSimulator模式下,编写引脚文件模拟部中断0(INT0)的产生。编写程序响应INT0中断。实验步骤使用CCSSetup添加“C5402DeviceSimulator”配置到系统中;运行CCS,进入Simulator工作模式。编写引脚文件intsim.txt

包含:10000

(+10000)

rpt

EOS使用ToolsPinConnect工具将该引脚文件连接到引脚INT0。建立一个CCS项目,包含下列文件main.c

使能并打开中断isr.c

中断服务函数vectors.asm

中断向量表linker.cmd

链接器命令文件实验环境建立#include<stdio.h>#defineIMR *(unsignedint*)0x0000#defineIFR *(unsignedint*)0x0001#defineST1 *(unsignedint*)0x0007#definePMST *(unsignedint*)0x001DintINTtimes;voidmain(){ asm(" SSBXINTM"); PMST=0x00A0; IFR=0xFFFF; IMR=0x0001; asm(" RSBXINTM"); puts("interruptenabled!"); INTtimes=0; while(1) { asm(" RSBXINTM"); }}main.c#include<stdio.h>externintINTtimes;interruptvoidmyisr(){ printf("%d\n",++INTtimes);}isr.c .sect".vectors" .ref_myisr.align0x80Unused .space16*4*16int0: B_myisr NOP NOP NOPint1: RETE NOP NOP NOPint2: RETE NOP NOP NOP .endvectors.asm-lrts.lib-stack0x400-heap0x400MEMORY{ PAGE0: VECT: o=0x0080, l=0x0080 SRAM: o=0x4000, l=0x3000 PAGE1:REVS: o=0x1000, 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: >

温馨提示

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

评论

0/150

提交评论