This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2652PSIP:用于计数的定时器边沿捕捉

Guru**** 2382480 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/1434250/cc2652psip-timer-edge-capture-for-counting

器件型号:CC2652PSIP

工具与软件:

您好!   

我尝试在边沿捕获模式下使用 gp 计时器、以便对数字脉冲进行计数。  是否有我可以参考的示例来实现该目的?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Chris、您好!

    此处可能没有确切的示例、但我们可以尝试修改周期示例以使用边沿捕获:

     (按下"GPTimer Driver"超链接以参考 SDK 文档)  

    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(&params);
      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, &params);
      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);
      }
    }

    谢谢!
    Alex F