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

📄 evtimer.c

📁 DSP2812_SourceCode SourceCode03_EvTimer
💻 C
字号:
////////////
#include "DSP28_Device.h"

unsigned  int  *LedADDR  = (unsigned int *)0x2002;    //LED 控制寄存器

unsigned int Flag;	

const	Uint16	LedCode[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF};

// Prototype statements for functions found within this file.
interrupt void eva_timer1_isr(void);
interrupt void eva_timer2_isr(void);
interrupt void evb_timer3_isr(void);
interrupt void evb_timer4_isr(void);

// Global counts used in this example
Uint32	EvaTimer1InterruptCount;
Uint32  EvaTimer2InterruptCount;
Uint32	EvbTimer3InterruptCount;
Uint32  EvbTimer4InterruptCount;
Uint16	LedCount = 0;

void main(void)
{
	InitSysCtrl();			//初始化系统

	DINT;					//关中断
	IER = 0x0000;
	IFR = 0x0000;
	
    Flag = 0;
    
	InitPieCtrl();			//初始化PIE
	InitPieVectTable();		//初始化PIE中断矢量表
    InitPeripherals();		//初始化外设
	InitGpio();				//初始化GPIO
	InitXIntrupt();			//初始化外部中断
	
	EALLOW;	// This is needed to write to EALLOW protected registers
	PieVectTable.T1PINT = &eva_timer1_isr; //中断主体地址从新定位
	PieVectTable.T2PINT = &eva_timer2_isr;
	PieVectTable.T3PINT = &evb_timer3_isr;
	PieVectTable.T4PINT = &evb_timer4_isr;
	EDIS;   // This is needed to disable write to EALLOW protected registers
    
    PieCtrl.PIEIER2.all = M_INT4;// Enable PIE group 2 interrupt 4 for T1PINT
    PieCtrl.PIEIER3.all = M_INT1;// Enable PIE group 3 interrupt 1 for T2PINT   
    PieCtrl.PIEIER4.all = M_INT4;// Enable PIE group 4 interrupt 4 for T3PINT

    PieCtrl.PIEIER5.all = M_INT1;// Enable PIE group 5 interrupt 1 for T4PINT
	
    
	IER |= (M_INT2 | M_INT3 | M_INT4 | M_INT5);// Enable CPU INT2(T1PINT), INT3(T2PINT), INT4(T3PINT) and INT5(T4PINT)
 
	EINT;   // Enable INTM
	ERTM;	// Enable DBGM

    while (1); //wait
} 	

interrupt void eva_timer1_isr(void)
{
	EvaTimer1InterruptCount++;

	EvaRegs.EVAIMRA.bit.T1PINT = 1;    // Enable more interrupts from this timer
	
	// Note: To be safe, use a mask value to write to the entire EVAIFRA register.  
	// Writing to one bit will cause a read-modify-write operation that may have 
	// the result of writing 1's to clear bits other then those intended. 
    EvaRegs.EVAIFRA.all = BIT7;
	// Acknowledge interrupt to recieve more interrupts from PIE group 2
	PieCtrl.PIEACK.all = PIEACK_GROUP2;
	if(Flag == 1)
	{
		*LedADDR = 0x55;
		Flag = 0;
	}
	else
	{
		*LedADDR = 0xAA;
		Flag = 1;
	}	
}

interrupt void eva_timer2_isr(void)
{
	EvaTimer2InterruptCount++;

    // Enable more interrupts from this timer
	EvaRegs.EVAIMRB.bit.T2PINT = 1;
	
	// Note: To be safe, use a mask value to write to the entire EVAIFRB register. 
	// Writing to one bit will cause a read-modify-write operation that may have 
	// the result of writing 1's to clear bits other then those intended. 
    EvaRegs.EVAIFRB.all = BIT0;
	
	// Acknowledge interrupt to recieve more interrupts from PIE group 3
	PieCtrl.PIEACK.all = PIEACK_GROUP3;
}

interrupt void evb_timer3_isr(void)
{
	EvbTimer3InterruptCount++;
	
	// Note: To be safe, use a mask value to write to the entire EVBIFRA register. 
	// Writing to one bit will cause a read-modify-write operation that may have 
	//the result of writing 1's to clear bits other then those intended. 
    EvbRegs.EVBIFRA.all = BIT7;	
	
	// Acknowledge interrupt to recieve more interrupts from PIE group 4
	PieCtrl.PIEACK.all = PIEACK_GROUP4;
}

interrupt void evb_timer4_isr(void)
{
	EvbTimer4InterruptCount++;
	
	// Note: To be safe, use a mask value to write to the entire EVBIFRB register. 
	// Writing to one bit will cause a read-modify-write operation that may have 
	// the result of writing 1's to clear bits other then those intended. 
    EvbRegs.EVBIFRB.all = BIT0;	
	
	// Acknowledge interrupt to recieve more interrupts from PIE group 5
	PieCtrl.PIEACK.all = PIEACK_GROUP5;
}

void Delay(Uint16  data)
{
	Uint16	i;
	for (i=0;i<data;i++) 
	{	;	}	
}

⌨️ 快捷键说明

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