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

怎么用定时器实现精确延时

本人是新手。请各位高手指点一下。我所用的芯片是F28035,然后我想用定时器0做一个延时函数,让程序延时200Ms,但是又不想用到中断。因为直接用循环的delay()函数时间不准确,所以想用定时器来实现一个200ms的延时,但是又不用中断。望各位高手不吝赐教!!谢谢!

rookiecalf:

用定时器实现精确延时,那你就启用定时器之后,自己不停地查询计数器吧。

不过,还是用中断更简单。

本人是新手。请各位高手指点一下。我所用的芯片是F28035,然后我想用定时器0做一个延时函数,让程序延时200Ms,但是又不想用到中断。因为直接用循环的delay()函数时间不准确,所以想用定时器来实现一个200ms的延时,但是又不用中断。望各位高手不吝赐教!!谢谢!

hongfen he:

回复 rookiecalf:

void CpuTimer_Delay(VU16 k)//这个只是配置了定时器的时间,没有实现延时功能{

VU16 count; count=k; InitCpuTimers();//初始化定时器

ConfigCpuTimer(&CpuTimer0,60,1000); //定时1ms;Configure CPU-Timer 0, 1, and 2 to interrupt every second:

CpuTimer0Regs.TCR.bit.TSS=0;//当TSS=0时,启动或重启定时器0 while(count!=0) { CpuTimer0.InterruptCount++; count–; } CpuTimer0Regs.TCR.bit.TSS=1;//定时器停止计数}

这样写对吗?CpuTimer0.InterruptCount++;这个是不是应该在中断服务程序中使用。

本人是新手。请各位高手指点一下。我所用的芯片是F28035,然后我想用定时器0做一个延时函数,让程序延时200Ms,但是又不想用到中断。因为直接用循环的delay()函数时间不准确,所以想用定时器来实现一个200ms的延时,但是又不用中断。望各位高手不吝赐教!!谢谢!

hongfen he:

回复 rookiecalf:

void CpuTimer_Delay(VU16 k)//这个只是配置了定时器的时间,没有实现延时功能{

VU16 count; count=k; InitCpuTimers();//初始化定时器

ConfigCpuTimer(&CpuTimer0,60,1000); //定时1ms;Configure CPU-Timer 0, 1, and 2 to interrupt every second:

CpuTimer0Regs.TCR.bit.TSS=0;//当TSS=0时,启动或重启定时器0 while(count!=0) { CpuTimer0.InterruptCount++; count–; } CpuTimer0Regs.TCR.bit.TSS=1;//定时器停止计数}

这样写对吗?CpuTimer0.InterruptCount++;这个是不是应该在中断服务程序中使用。

赞(0)
未经允许不得转载:TI中文支持网 » 怎么用定时器实现精确延时
分享到: 更多 (0)