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

CC2640R2F使用GPTimer如何实现100微秒的精准定时?

CC2640R2F使用GPTimer实现100us的计时,并在超时回调函数中对某个IO口的引脚电平进行翻转来验证定时是否准确。但是使用示波器检测IO输出波形时,他的周期和脉宽都不一样。这是为什么

void timerCallback(GPTimerCC26XX_Handle handle, GPTimerCC26XX_IntMask interruptMask)

{

User_GpioSet(U_TEST_PIN,GPIO_STATE_TOGGLE); //电平翻转

}

void UserTimerInit()
{
GPTimerCC26XX_Params params;
GPTimerCC26XX_Params_init(&params);
params.width = GPT_CONFIG_16BIT;//GPT_CONFIG_16BIT;
params.mode = GPT_MODE_PERIODIC_UP;
params.debugStallMode = GPTimerCC26XX_DEBUG_STALL_OFF;

while(1)
{
hTimer = GPTimerCC26XX_open(2, &params);
if(hTimer == NULL)
{
continue;
}
else
{
break;
}
}

Types_FreqHz freq;
BIOS_getCpuFreq(&freq);
GPTimerCC26XX_Value loadVal = (freq.lo / 10000 – 1);  // 10000-1;生成100us计时器
GPTimerCC26XX_setLoadValue(hTimer, loadVal);
GPTimerCC26XX_registerInterrupt(hTimer, timerCallback, GPT_INT_TIMEOUT);
//GPTimerCC26XX_start(hTimer);
//GPTimerCC26XX_stop(hTimer);

}

Viki Shi:

引脚电平翻转为什么不用GPIO_toggle?就设置而言,没看出什么问题,把其他功能disable,仅跑这一个测试下

赞(0)
未经允许不得转载:TI中文支持网 » CC2640R2F使用GPTimer如何实现100微秒的精准定时?
分享到: 更多 (0)