TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F2812 Timer0读TIM寄存器问题

这是程序中测试读TIM寄存器的部分

   ConfigCpuTimer(&CpuTimer0,120,10);  //该条语句是给Timer0配置成10us的周期    
   StartCpuTimer0();                              // 启动CPU Timer0定时器
   test_tmp1=CpuTimer0Regs.TIM.half.LSW;
   test_tmp2=CpuTimer0Regs.TIM.all;

 想问问配置好后TIM寄存器的值应该是在0到1200之间吗?这种读TIM的方式对不对?为什么读出的值超出了这个范围很多,谢谢大家了

wenlong zhang87:

关键还是看你DSP28_CpuTimers.c文件时怎么配置的,如果配置好,应该可以的,下面是我经常的配置(请指教):

#include "DSP28_Device.h"

struct CPUTIMER_VARS CpuTimer0; //对用户开放的CPU定时器只有CpuTimer0,CpuTimer1struct CPUTIMER_VARS CpuTimer1; //和CpuTimer2被保留用作实习操作系统OS(例如DSPstruct CPUTIMER_VARS CpuTimer2; //BIOS)

/******************************************************************************名    称:InitCpuTimers()**功    能:初始化CpuTimer0。**入口参数:无**出口参数:无*****************************************************************************/

void InitCpuTimers(void){ CpuTimer0.RegsAddr = &CpuTimer0Regs; //使得CpuTimer0.RegsAddr 指向定时器寄存器  CpuTimer0Regs.PRD.all  = 0xFFFFFFFF; //初始化CpuTimer0的周期寄存器

 CpuTimer0Regs.TPR.all  = 0;          //初始化定时器预定标计数器 CpuTimer0Regs.TPRH.all = 0;  CpuTimer0Regs.TCR.bit.TSS = 1;       //停止定时器      

 CpuTimer0Regs.TCR.bit.TRB = 1;       //将周期寄存器PRD中的值装入计数器寄存器TIM中             CpuTimer0.InterruptCount = 0;        //初始化定时器中断计数器}  /******************************************************************************名    称:ConfigCpuTimer()**功    能:此函数将使用Freq和Period两个参数来对CPU定时器进行配置。Freq以MHz*          为单位,Period以us作为单位。**入口参数:*Timer(指定的定时器),Freq,Period**出口参数:无*****************************************************************************/

void ConfigCpuTimer(struct CPUTIMER_VARS *Timer, float Freq, float Period){ Uint32  temp;  Timer->CPUFreqInMHz = Freq; Timer->PeriodInUSec = Period; temp = (long) (Freq * Period); Timer->RegsAddr->PRD.all = temp;  //给定时器周期寄存器赋值

 Timer->RegsAddr->TPR.all  = 0;    //给定时器预定标寄存器赋值 Timer->RegsAddr->TPRH.all  = 0;  // 初始化定时器控制寄存器: Timer->RegsAddr->TCR.bit.TIF=1;   //清除中断标志位 Timer->RegsAddr->TCR.bit.TSS = 1; //停止定时器  Timer->RegsAddr->TCR.bit.TRB = 1; //定时器重装,将定时器周期寄存器的值装入定时器计数器寄存器 Timer->RegsAddr->TCR.bit.SOFT = 1; Timer->RegsAddr->TCR.bit.FREE = 1;      Timer->RegsAddr->TCR.bit.TIE = 1; //使能定时器中断  Timer->InterruptCount = 0;        //初始化定时器中断计数器}

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F2812 Timer0读TIM寄存器问题
分享到: 更多 (0)