在测试定时器时代码如下:
void taskRFSFxn(UArg arg0, UArg arg1)
{
GPTimerCC26XX_Params rfsParams;
GPTimerCC26XX_Params_init(&rfsParams);
rfsParams.width = GPT_CONFIG_16BIT;
rfsParams.mode = GPT_MODE_PERIODIC_UP;
rfsParams.debugStallMode = GPTimerCC26XX_DEBUG_STALL_OFF;
h_RFS = GPTimerCC26XX_open(RF_SYNC_TIMER, &rfsParams);
if(h_RFS == NULL)
{
while(1);//fail to open the Timer
}
GPTimerCC26XX_setLoadValue(h_RFS, 0x7FFF);
GPTimerCC26XX_registerInterrupt(h_RFS, (GPTimerCC26XX_HwiFxn)&SYNC_TIMER_callback,GPT_INT_TIMOUT);
GPTimerCC26XX_start(h_RFS);
while(1)
{
Task_sleep(BIOS_WAIT_FOREVER);
}
}
void SYNC_TIMER_callback()
{
LEDG_TOOGLE();
return;
}
按照0x7FFF/48M=682us,IO应该682.6us翻转一次,但实际用示波器测得的值是671和701这两个值,而且这两个值是随机跳动的.
整个工程只有这一个Task ,再无其他。这是什么原因?
把Task_sleep(BIOS_WAIT_FOREVER);屏蔽掉,发现IO变为678us翻转一次。
再建一个task,在这个task中,只要不调用Task_sleep,IO翻转就会变成682.6us?
TI 有无TIMER工作在定时模式下的例程,最好是验证过的