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

📄 10.2.c

📁 数字信号处理器 原理、结构及应用基础-TMS320F28x所附光盘源程序C-C++ 刘和平等编著
💻 C
字号:
#include "DSP28_Device.h"
interrupt void eva_timer1_isr(void);
//  定义一个无符号32位的全局变量,保存各定时器的中断次数
Uint32	EvaTimer1InterruptCount;
void main(void)
{  
	InitSysCtrl();       
	DINT;                    //  #define  DINT   asm(" setc INTM")
	IER = 0x0000;
	IFR = 0x0000;
	InitPieCtrl();
	InitPieVectTable();	
	EvaTimer1InterruptCount = 0;  //  初始化计数值为0
//  初始化 EVA Timer 1
    EvaRegs.GPTCONA.all = 0;      //  设置 Timer 1 Registers (EV A)
    EvaRegs.T1PR = 0x0200;        //  设置EV Timer1的周期寄存器值为0x200
    EvaRegs.T1CMPR = 0x0000;     	   //  设置比较寄存器值为0x0000
    EvaRegs.EVAIMRA.bit.T1PINT = 1;     //  使能GP Timer1的周期中断位
    EvaRegs.EVAIFRA.bit.T1PINT = 1;      //  清零 GP Timer1的周期中断标志位
    EvaRegs.T1CNT = 0x0000;          	//  GP timer 1 的计数器清零
EvaRegs.T1CON.all = 0x1742;    		//  连续增计数,128分频 ,使能比较 
//  在定时器1周期中断时启动EVA模数转换
EvaRegs.GPTCONA.bit.T1TOADC = 2;
   	EALLOW;							//  使能EALLOW保护寄存器的写操作
	PieVectTable.T1PINT = &eva_timer1_isr;
	EDIS;                               //  禁止EALLOW保护寄存器的写操作
   	PieCtrlRegs.PIEIER2.all = M_INT4; 
 //  使能 PIE第2组的中断4,定时器1的周期中断 
   	IER |= M_INT2 ;    //  #define M_INT2 0x0002使能T1PINT的CPU INT2 
	EINT;              //  #define  DINT   asm(" clrc INTM")
	ERTM;	         //  使能全局实时中断DBGM
	for(;;);             //  此处为主程序的死循环,等待定时器1的周期中断
} 	
interrupt void eva_timer1_isr(void)
{
EvaTimer1InterruptCount++;         //  中断计数器加1
puts("Interrupt seccess!");           //  输出“Interrupt seccess!”
EvaRegs.EVAIMRA.bit.T1PINT = 1;   //  使能定时器1的周期中断
EvaRegs.EVAIFRA.all = BIT7;        //  清除定时器1的周期中断标志
//  中断应答,使可以接受PIE组2的更多的中断
PieCtrlRegs.PIEACK.all = PIEACK_GROUP2;
//  清零 PIEACK中的第2组中断对应的位,为下一次中断做准备
}

⌨️ 快捷键说明

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