实验报告

  • 格式:doc
  • 大小:270.50 KB
  • 文档页数:8

下载文档原格式

  / 8
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

利用事件管理器产生四个匹配事件控制四盏灯实验

一、实验目的

1、通过对做实验进一步了解DSP的工作原理。

2、检测一学期上课效果。

二、实验要求

1、利用事件管理器模块的定时器的四匹配事件中的中断来控制D6、D7、D8、D9显示。

三、实验器材

合众达DSP开发板以及装有ccs3.3的笔记本电脑

四、实验内容以及方法

本次实验操作主要是涉及到事件管理器中断,基本设想是事件管理器包含EV A和EVB 两个,一共四个通用定时器,正好可以产生上溢、下溢、比较、周期中断,每次中断产生时候,所对应的LED灯置位,当所对应的LED灯显示亮的时候就证明这种中断已经产生,所对应的程序流程图已经程序和说明如下:

Main函数基本流程如下

头文件、延时

函数、定时器

中断声明

进入主函数,初始化系

统、PIE控制寄存器、

禁止和清除CPU中断

EALLOW

四个定时器映

射到相应的中

断位

EDIS

事件管理器初始

化,使能四个PIE级

中断,使能全局中

断,使能实时中断

进入FOR循环

中断函数程序流程图如下:

进入比较中断*LED置1,进入延时,中断标志寄存器和中断屏蔽寄存器

置位

响应中断

进入周期中断

*LED置2,进入

延时,中断标

志寄存器和中

断屏蔽寄存器

置位

响应中断

进入上溢中断

*LED置4,进入

延时,中断标

志寄存器和中

断屏蔽寄存器

置位

响应中断

进入下溢中断

*LED置8,进入

延时,中断标

志寄存器和中

断屏蔽寄存器

置位

响应中断

由程序流程图写得程序如下:

主函数:

/******************************************************************/ /*Copyright (C), ; 华东交通大学*/ /* Module Name : */ /* File Name : main.c */ /* Author : */ /* Create Date : 2013/12/27 */ /* Version : */ /* Function : 四个匹配事件控制四盏灯*/ /* Description : */ /* Support : */ /******************************************************************/ /*****************头文件********************/

#include "DSP28_Device.h"

#include "ext_inf.h"

/****************端口宏定义*****************/

/****************常量宏定义*****************/

void delay_loop(void);

/***************全局变量定义****************/

/****************函数声明*******************/

interrupt void EV A_Timer1_isr(void);

interrupt void EV A_Timer2_isr(void);

interrupt void EVB_Timer3_isr(void);

interrupt void EVB_Timer4_isr(void);

/*------------------------------------------*/

/*形式参数:void */

/*返回值:void */

/*函数描述:主函数*/

/*------------------------------------------*/

void main(void)

{

InitSysCtrl();

DINT;

InitPieCtrl(); //初始化PIE控制寄存器

IER=0x0000; //禁止CPU中断

IFR=0x0000; //清楚CPU中断标志

InitPieVectTable(); //初始化PIE中断向量表

EALLOW; //允许更改

PieVectTable.T1PINT = &EV A_Timer1_isr;

PieVectTable.T2CINT = &EV A_Timer2_isr;

PieVectTable.T3OFINT = &EVB_Timer3_isr;

PieVectTable.T4UFINT = &EVB_Timer4_isr;

EDIS; //禁止更改

InitEv();

PieCtrl.PIEIER2.bit.INTx4 =1; //使能PIE中断INT2.4( T1PINT) PieCtrl.PIEIER3.bit.INTx2 =1 ; //使能PIE中断INT3.2(T2CINT) PieCtrl.PIEIER4.bit.INTx7 =1; //使能PIE中断INT4.7(T3OFINT) PieCtrl.PIEIER5.bit.INTx3 =1 ; //使能PIE中断INT5.3(T4UFINT) IER |= (M_INT2|M_INT3|M_INT4|M_INT5); //开CPU中断

EINT; //使能全局中断INTM

ERTM; //使能全局实时中断DBGM

for(;;);

//等待中断

}

interrupt void EV A_Timer1_isr(void)

{

*LED = 1; //置1

delay_loop(); //延时

EvaRegs.EV AIMRA.bit.T1PINT = 1; //中断标志寄存器置位