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

CC1310定时器在循环中应用问题

Hi,

    目前通过GPTimer配置好定时器,使得程序在一定周期内进入中断函数中。由于在程序运行中会有更改周期的需求,因此考虑把定时器配置函数放入到循环中。当在循环中运行时,发现定时器GPTimerCC26XX_open后返回NULL

GPTimerCC26XX_Params paramsTimer1A;GPTimerCC26XX_Params_init(&paramsTimer1A);paramsTimer1A.width= GPT_CONFIG_32BIT;paramsTimer1A.mode= GPT_MODE_PERIODIC_UP;paramsTimer1A.debugStallMode = GPTimerCC26XX_DEBUG_STALL_OFF;hTimer1A = GPTimerCC26XX_open(CC1310_LAUNCHXL_GPTIMER1A, &paramsTimer1A);if(hTimer1A == NULL){while(1);}

也无法进行周期修改,请问定时器配置函数不能在循环中应用吗?

想在主程序运行过程中进行修改定时器周期值,如果不在循环中,该怎么样实现呢?

谢谢!

Alvin Chen:

建议参考下面的使用clock 模块
e2echina.ti.com/…/354055

Mings Liu:

回复 Alvin Chen:

谢谢Alvin Chen,之前考虑应用Clock模块,作为一个单独任务中,不太好更改周期,此外我目前定时器处理中断函数是在主任务中,主任务是固定时间进行唤醒并广播数据的,如果应用clock模块同时结合信号量的话,可能会影响到主任务的广播时间。现在尝试这种方式出现了问题,目前看下来可能是定时器在重复调用时没有进行释放资源。

Alvin Chen:

回复 Mings Liu:

试试先stop然后更新:GPTimerCC26XX_open()GPTimerCC26XX_start()GPTimerCC26XX_stop()http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/tirtos/2_20_00_06/exports/tirtos_full_2_20_00_06/products/tidrivers_full_2_20_00_08/docs/doxygen/html/_g_p_timer_c_c26_x_x_8h.html#a0a148f2232f5bb4c59015de965c82d43

Mings Liu:

回复 Alvin Chen:

是的,是需要调用一下对应的API就可以在循环中进行开启了。
但是又出现了新的问题,当程序运行后,开启定时器GPTimer计数,一段时间后会造成整个程序死掉,程序是基于RFwsn搭建的,定时器是CC1310_LAUNCHXL_GPTIMER1A。
请问这个定时器的开启会影响到什么RFWsn程序中的哪个配置?谢谢!

Alvin Chen:

回复 Mings Liu:

The time base of the timer is 48 MHz since it's using the HF clock as reference.
我猜想你TIMER是基于48MHZ的高配时钟,当你RFwsn可能会进入低功耗 ,导致48MHZ时钟关闭。

Mings Liu:

回复 Alvin Chen:

是的,这个GPTimer是基于48MHz的,通过调试发现程序中主Task不运行了。我应该怎么修改呢?

Mings Liu:

回复 Alvin Chen:

好的,我试试,谢谢

Mings Liu:

回复 Alvin Chen:

Hi Alvin Chen,我之前应用PWM driverlib api时,同样把配置好的PWM驱动放入主任务中,类似目前的操作,也出现了一种情况:在程序正常运行后,开启pwm后,一段时间后PWM停止输出,主程序正常运行。这个问题和我现在的问题一样吗?也是高配时钟的问题吗?

Mings Liu:

回复 Alvin Chen:

Hi Alvin Chen,
我之前应用过PWM驱动配置,当放入主任务中后,在开启pwm,程序正常运行一段时间后也出现了PWM停止工作,但是主任务是正常工作的。这个情况也是同样的高配时钟问题吗?PWM driverlib配置是基于48MHz时钟配置的吗?

赞(0)
未经允许不得转载:TI中文支持网 » CC1310定时器在循环中应用问题
分享到: 更多 (0)