DSP28335中文资料

DSP28335测试总结

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; }

8.5采用定时器的延时函数

//延时函数,鉴于定时器0已经用于产生中断,这里采用定时器1

//但关于定时器1是否可以随意使用的问题Timer程序文件与英文资料的说法不一致

#include \DSP2833x_Device.h\ // DSP2833x Headerfile Include File #include \DSP2833x_Examples.h\ // DSP2833x Examples Include File Uint32 TT;//延时时间对应计数次数 Uint32 RTT;//当前计数器的值

Uint32 PRD;//当前周期寄存器的值 Uint32 CY;//整循环后的余数 int CCY;//整循环次数 int ii;

void delay(float32 time) { //CpuTimer0.RegsAddr= & CpuTimer0Regs; RTT=CpuTimer1Regs.TIM.all;

CpuTimer1Regs.TCR.bit.TSS=0;//启动定时器

CpuTimer1Regs.TCR.bit.TRB = 1;//重新装载定时器1 后,定时器1 的计数值

39

DSP28335测试总结

为周期寄存器值,计算器开始向下计数 if(time<0.0001) time=0.0001; else if(time>10) time=10;

TT=time*150000000;//将中断时间转换为定时器计数个数 PRD=CpuTimer1Regs.PRD.all;

if(RTT>TT) //这说明当前计数器递减计数未减到0就完成延时 {

}

do

{}while(CY>=(RTT - CpuTimer1Regs.TIM.all));

else //当前计数器递减到0不足以完成延时 {

CY=TT-RTT; //延时所需计数次数减去当前读出的计数器值 CCY=CY/PRD; //循环计数次数

CY=CY-CCY*PRD; //整循环后的剩余计数次数 for(ii=0;ii

do

{}while(CpuTimer1Regs.TIM.all>30);//计数器的值小于30就认为已经归零,这是为了保证已经(或即将)完成的整周循环不会被误判 } }

}

do

{}while(CY>=(PRD - CpuTimer1Regs.TIM.all));

8.6看门狗初始化函数

//###########################################################################

// 看门狗初始化程序,入口参数为系统定时复位时间

40

DSP28335测试总结

//在需要复位看门狗计数器的地方调用程序ServiceDog() //此程序在文件DSP2833x_SysCtrl.c中

//###########################################################################

//详细说明在

//《TMS320x2833x, 2823x System Control and Interrupts Reference Guide (Rev. A)》 //57到59页

//看门狗时钟发生器:WDCLK = CLKOUT/512,当HALT时停止。 //CLKOUT为外部时钟,频率30MHz。

//###########################################################################

#include \DSP2833x_Device.h\ // Headerfile Include File #include \DSP2833x_Examples.h\ // Examples Include File void InitWatchDog(void) {

EALLOW; // 允许访问受保护的寄存器 SysCtrlRegs.SCSR = 1;//选择看门狗中断允许 EDIS;

// 使能看门狗 EALLOW; SysCtrlRegs.WDCR &=0x3F; SysCtrlRegs.WDCR |= WDCLK=OSCCLK/512/1 //SysCtrlRegs.WDCR WDCLK=OSCCLK/512/1 //SysCtrlRegs.WDCR WDCLK=OSCCLK/512/1 //SysCtrlRegs.WDCR WDCLK=OSCCLK/512/1 //SysCtrlRegs.WDCR WDCLK=OSCCLK/512/1 //SysCtrlRegs.WDCR WDCLK=OSCCLK/512/1 //SysCtrlRegs.WDCR WDCLK=OSCCLK/512/1

|= |= |= |= |= |=

0x0028; 0x0029; 0x002A; 0x002B; 0x002C; 0x002D;

//4.4//4.4//8.7//17.5//35//69.9

毫秒复位一次,毫秒复位一次,毫秒复位一次,毫秒复位一次,毫秒复位一次,毫秒复位一次,毫秒复位一次,毫秒复位一次,

0x002E; //139.80x002F;

//279.6

//SysCtrlRegs.WDCR |= WDCLK=OSCCLK/512/1

41

DSP28335测试总结

EDIS; }

42

联系客服:779662525#qq.com(#替换为@)