DSP28335 定时器中断初始化函数
//###########################################################################
// 采样频率初始化函数
//函数入口参数为设计采样时间,单位为秒(s),有效范围设计为0.05s–1s.
//###########################################################################
//CPU一共有3个32位定时器
//其中定时器0可以被用户使用,定时器1和定时器2则被保留为实时操作系统使用;;
//定时器分频寄存器的值TDDR=0,所以定时器的时钟周期等于SYSCLKOUT
//分频值可以在文件DSP2833x_CpuTimers.c中的函数void InitCpuTimers(void)中去修改
//每过一个定时器时钟周期,定时器计数器寄存器TIM减1
//当TIM递减到0时,PRD的值将重载到TIM中,继续递减计数;
//详参资料《2823x System Control and Interrupts Reference Guide》第61页。
//使用定时器0 来计数,产生中断
//CPU定时器0的中断TINT0为PIE中断
//##########################################################################
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
#include "DSP2833x_Examples.h" // DSP2833x Examples Include File
interrupt void SampleRate();//必须进行此函数声明
Uint32 pd; //定义实际需要的周期寄存器值
void Init_SampleRate(float Ts)
{
if(Ts<0.001)
Ts=0.001;
else if(Ts>10)
Ts=10;
pd=Ts*150000000;//因为定时器时钟周期为150MHz
EALLOW;//允许访问受保护的寄存器
CpuTimer0Regs.TCR.bit.TSS=0;//启动定时器
CpuTimer0Regs.TCR.bit.TIE=1;//使能定时器中断
CpuTimer0Regs.PRD.all=pd;
CpuTimer0Regs.TCR.bit.TRB = 1;//重新装载定时器0 后,定时器0 的计数值为周期寄存器值,计算器开始递减计数
PieVectTable.TINT0 = & SampleRate;
//下面的语句用于使能PIE级以及CPU级中断向量
IER |= M_INT1;
PieCtrlRegs.PIEIER1.bit.INTx7=1;//使能PIE中的TINT0,1组第7个中断,见文件DSP2833x_PieVect.c
EINT;//使能全局中断
EDIS;
}