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.

CC1310: GPTime捕获模式下无法进入中断

Part Number: CC1310
Other Parts Discussed in Thread: CC2650

    GPTimerCC26XX_Params params1A;
    GPTimerCC26XX_Params_init(&params1A);
    params1A.width          = GPT_CONFIG_16BIT;
    params1A.mode           = GPT_MODE_EDGE_COUNT_UP;
    params1A.debugStallMode = GPTimerCC26XX_DEBUG_STALL_OFF;
    hTimer1A = GPTimerCC26XX_open(CC1310_LAUNCHXL_GPTIMER1A, &params1A);
    if(hTimer1A == NULL) {
        while(1);
    }
    GPTimerCC26XX_registerInterrupt(hTimer1A, timerCallback1A, GPT_INT_CAPTURE);

    GPTimerCC26XX_PinMux pinMux = GPTimerCC26XX_getPinMux(hTimer1A);
    PINCC26XX_setMux(pinHandle, Board_GPIO_BUTTON1, pinMux);
    GPTimerCC26XX_setCaptureEdge(hTimer1A, GPTimerCC26XX_NEG_EDGE);
    GPTimerCC26XX_setLoadValue(hTimer1A, 0xffffff);
    GPTimerCC26XX_start(hTimer1A);

执行上述代码时,出现如下情况导致中断卡住,求解答:

debug调试中,第一次边缘触发没有捕获到,然后再回到第一行代码重新运行时,第二次运行出现卡死再while(1)函数的情况(即htimer1A为空),请问如何解决?

  • 您可以参考一下下面帖子的讨论

    https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/420104/using-cc2650-gptimers-to-measure-narrow-pulses 

    该帖子是讨论 使用 CC2650 GPTimers 测量窄脉冲,基本的用法类似

  • 解决了卡在while(1)的问题,但是依旧没有采到数据

  • 您现在使用的是开发板?是从哪个引脚输入脉冲?脉冲是怎样的?如何查看是否采到数据?

    若是可以的话,请私信或发送下工程,我用开发板看一下

  • Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    void timerCallback1A(GPTimerCC26XX_Handle handle, GPTimerCC26XX_IntMask interruptMask) {
    counter = counter + 1;
    // interrupt callback code goes here. Minimize processing in interrupt.
    }
    void celiang_init ()
    {
    GPTimerCC26XX_Params params1A;
    GPTimerCC26XX_Params_init(&params1A);
    params1A.width = GPT_CONFIG_16BIT;
    params1A.mode = GPT_MODE_EDGE_COUNT_UP;
    params1A.debugStallMode = GPTimerCC26XX_DEBUG_STALL_OFF;
    hTimer1A = GPTimerCC26XX_open(CC1310_LAUNCHXL_GPTIMER1A, &params1A);
    if(hTimer1A == NULL) {
    while(1);
    }
    GPTimerCC26XX_registerInterrupt(hTimer1A, timerCallback1A, GPT_INT_CAPTURE);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    非开发板,采集脚为将原来的BTN2重新定义为dio_2, 再主函数中调用此函数,采集下降沿,如果采集到counter+1.

  • 谢谢反馈。若是可以的话,请直接给出工程,节省时间

  • 已经私信给您

  • 收到您的工程了。但是无法成功编译

    缺少tirtos_builds_CC1310_LAUNCHXL_release_ccs,我添加过也还是不行

  • 又发给您一个完整的