GPTimerCC26XX_Handle hTimer;
void timerCallback(GPTimerCC26XX_Handle handle, GPTimerCC26XX_IntMask interruptMask) {
// interrupt callback code goes here. Minimize processing in interrupt.
}
void taskFxn(uintptr_t a0, uintptr_t a1) {
GPTimerCC26XX_Params params;
GPTimerCC26XX_Params_init(¶ms);
params.width = GPT_CONFIG_16BIT;
params.mode = GPT_MODE_PERIODIC;
params.direction = GPTimerCC26XX_DIRECTION_UP;
params.debugStallMode = GPTimerCC26XX_DEBUG_STALL_OFF;
hTimer = GPTimerCC26XX_open(CC2650_GPTIMER0A, ¶ms);
if(hTimer == NULL) {
Log_error0("Failed to open GPTimer");
Task_exit();
}
Types_FreqHz freq;
BIOS_getCpuFreq(&freq);
GPTimerCC26XX_Value loadVal = freq.lo / 1000 - 1; //47999
GPTimerCC26XX_setLoadValue(hTimer, loadVal);
GPTimerCC26XX_registerInterrupt(hTimer, timerCallback, GPT_INT_TIMEOUT);
GPTimerCC26XX_start(hTimer);
while(1) {
Task_sleep(BIOS_WAIT_FOREVER);
}
}
如果我将TIMER的工作模式改成了GPT_MODE_EDGE_COUNT ,并用GPTimerCC26XX_getValue来获取一段时间内我捕获的边缘数目。那在上面的范例代码中,周期计时模式是在定时时间到达后调用回调函数 timerCallback的,但是如果是EDGE_COUNT模式呢?回调函数是在什么时候调用?是在定时时间结束吗?
如果是定时时间结束后调用?我是不是可以在回调函数中使用GPTimerCC26XX_getValue来获取该时间段内捕获的边缘数目?