⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cap中断程序参考.txt

📁 DSP2812的cap测频程序参考 希望对大家有用
💻 TXT
字号:
#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.

//========================================

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -