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

starterware 64bit 定时器

您好 ,我使用startware 的定时器例程,可以用串口收到数据。更改高32位的值,改变不了定时器的周期。周期一直都是低32位的FFFFFFFF定时的,高位的改变不起作用。对原始startware程序除了TMR_PERIOD_MSB32改变外,其他地方均没有变化。请问这是什么原因

#define STR_LEN (13)
#define TMR_PERIOD_LSB32 (0xFFFFFFFF)
#define TMR_PERIOD_MSB32 (0x00000001)

Tony Tang:

timer有两种模式:

user4637713:

回复 Tony Tang:

您好,starterware中的定时器是64位的,为查到底层了,里面的配置也确实为00

The timer is in 64-bit GP timer mode.

  )

user4637713:

回复 Tony Tang:

好的谢谢唐工

user5849328:

回复 Tony Tang:

唐工好,64位定时器调试时发现高位能起作用,但是存在多次中断,例如设置25秒时会出现6.2秒和18.8秒循环出现中断的现象。查看了你发的帖子,产品线的意思是TI提供的StarterWare库不支持64位定时器的操作?具体是什么意思呢?我现在需要设定大量程高精度,可以实现吗?

Tony Tang:

回复 user5849328:

他是说Starterware软件没有支持与维护了,不是说芯片或starterware是否支持64bit timer的问题。还在进一步沟通中,我发现LSB改一改,有的值就没问题。

user5849328例如设置25秒时会出现6.2秒和18.8秒循环出现中断的现象。

你是说设成25S时,在中间会出现中断?

user5849328:

回复 Tony Tang:

是的,设置成25秒时会出现中断6.2+18.8正好是25秒,再设置更高的值出现中断更多,每18.8秒一次,例如设置40秒,会出现三次中断,2.4秒、18.8秒、18.8秒,三次中断。

Tony Tang:

回复 user5849328:

号外。找到问题点了。

把对TGCR的配置改成下面就没有问题了。

static void TimerSetUp64Bit(void){ /* Configuration of Timer */// TimerConfigure(SOC_TMR_2_REGS, TMR_CFG_64BIT_CLK_INT); TimerConfigure(SOC_TMR_2_REGS, 3);

/* Set the 64 bit timer period */ TimerPeriodSet(SOC_TMR_2_REGS, TMR_TIMER12, TMR_PERIOD_LSB32); TimerPeriodSet(SOC_TMR_2_REGS, TMR_TIMER34, TMR_PERIOD_MSB32);}

也就是new timer plus feature好像有点问题,那就先disable new timer feature吧。

赞(0)
未经允许不得转载:TI中文支持网 » starterware 64bit 定时器
分享到: 更多 (0)