#include "DSP281x_Device.h"// DSP281x Headerfile Include File
#include "DSP281x_Examples.h"// DSP281x Examples Include File
// Prototype statements for functions found within this file.
interrupt void cap_isr(void);
// 子程序接口
void Delay(unsigned int nDelay);// 延时子程序
void init_ev();
int a=0;
void main(void)
{
InitSysCtrl();//初始化cpu
DINT;//关中断
InitPieCtrl();//初始化pie寄存器
IER = 0x0000;//禁止所有的中断
IFR = 0x0000;
InitPieVectTable();
EALLOW;// This is needed to write to EALLOW protected registers
PieVectTable.CAPINT1 = &cap_isr;
EDIS;// This is needed to disable write to EALLOW protected registers
EALLOW;
GpioMuxRegs.GPAMUX.all=0;// Configure MUXs as digital I/Os or
GpioMuxRegs.GPAMUX.bit.CAP1Q1_GPIOA8=1;
GpioMuxRegs.GPADIR.all=0x00FF;// GPIO PORTsas output
GpioMuxRegs.GPAQUAL.all=0xFFFF;// Set GPIO input qualifier values
EDIS;
GpioDataRegs.GPACLEAR.all = 0x00FF;// Test Clear
asm(" RPT #5 ||NOP");
init_ev();
// Enable CPU INT1 which is connected to CPU-Timer 0:
IER |= M_INT1;
// Enable TINT0 in the PIE: Group3 interrupt 5
PieCtrlRegs.PIEIER3.bit.INTx5 = 1;
// Enable global Interrupts and higher priority real-time debug events:
EINT;// Enable Global interrupt INTM
ERTM;// Enable Global realtime interrupt DBGM
//检查是否进入中断
while ( 1 )
{
if(a==1)
{
GpioDataRegs.GPADAT.bit.GPIOA5=0;//点亮LED灯
a=0;
}
Delay(256);
if(a==0)
{
GpioDataRegs.GPADAT.bit.GPIOA5=1;//关闭LED灯
}
}
}
interrupt void cap_isr(void)
{
EvaRegs.EVAIFRC.all = 0x0001; //清中断标志寄存器C中
a=1;
PieCtrlRegs.PIEACK.all = PIEACK_GROUP3;
}
void Delay(unsigned int nDelay)
{
int ii,jj,kk=0;
for ( ii=0;ii<nDelay;ii++ )
{
for ( jj=0;jj<512;jj++ )
{
kk++;
}
}
}
void init_ev()
{
EvaRegs.T1PR = 0xFFFF;// Timer1 period
EvaRegs.T1CNT = 0;// Timer1 counter
EvaRegs.T1CON.bit.TMODE = 2;// TMODE = continuous up
EvaRegs.T1CON.bit.TENABLE = 1; //使能定时器1
EvaRegs.CAPCONA.all = 0;//捕获控制寄存器
EvaRegs.CAPCONA.bit.CAP12EN = 1;//使能捕获1 2器2
EvaRegs.CAPCONA.bit.CAP12TSEL = 1;//捕获单元12选择通用目的定时器1
EvaRegs.CAPCONA.bit.CAP1EDGE = 1;//捕获单元1检测上升沿
EvaRegs.CAPFIFOA.all = 0;//清空CAPFIFOA寄存器
//EvaRegs.EVAIFRA.all = 0x0001;//清中断标志寄存器A中各中断标志位
EvaRegs.EVAIFRC.all = 0x0001; //清中断标志寄存器C中各中断标志位
// EvaRegs.EVAIMRA.bit.all = 0x0001;// 使能PDPINTA中断
EvaRegs.EVAIMRC.bit.CAP1INT = 1;//使能捕获中断1
}
//===========================================================================
// No more.
//========================================
评论0