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.

CC2630 定时器GPTM外部边沿计数 异常

Other Parts Discussed in Thread: CC2640R2F

我在用定时器做外部输入边缘计数功能时,计数不正常,比如我用定时器来计数按键按下次数,按键按下是低电平,需要按键保持低电平1s以上才能计数一次,按键电平示波器看过,一按下就变低,松开就变高,具体初始化代码如下:

#define Radio_PIN                      IOID_19

PIN_Config RadioPinTable[] =
{
Radio_PIN | PIN_GPIO_OUTPUT_DIS | PIN_INPUT_EN | PIN_PULLUP,
PIN_TERMINATE
};

RadioPinHandle = PIN_open(&RadioPinState, RadioPinTable);
//RTOS: Enable peripheral domain and clocks for timer
Power_setDependency(PERIPH_GPT1);
PINCC26XX_setMux(RadioPinHandle, Radio_PIN, IOC_PORT_MCU_PORT_EVENT2);

//TimerDisable(GPT1_BASE,TIMER_BOTH);
TimerConfigure(GPT1_BASE,TIMER_CFG_SPLIT_PAIR|TIMER_CFG_A_CAP_COUNT);
TimerEventControl(GPT1_BASE,TIMER_A,TIMER_EVENT_NEG_EDGE);
//TimerPrescaleSet(GPT1_BASE,TIMER_A,0);
TimerLoadSet(GPT1_BASE,TIMER_A,65535);
TimerMatchSet(GPT1_BASE,TIMER_A,1);


//TimerIntRegister(GPT1_BASE,TIMER_A,Radio_callback);
//TimerIntEnable(GPT1_BASE,TIMER_CAPA_MATCH);
TimerEnable(GPT1_BASE,TIMER_A);

我用的是定时器1A,配置的引脚是IOID_19,希望帮忙分析下代码上有没有问题。 或者有做过的可以给一些参考,谢谢!

  • GPTM的实现可参考TI RTOS for CC13XX/CC26XX里的GPTimerCC26XX.h/c文件
  • 你好,viki,
    感谢回复,我的初始化代码也参考过GPTimerCC26XX.h/c这个文件,我是调用Timer.c/h文件的函数,因为我用的tirtos_simplelink_2_11_01_09版本,调用GPTimerCC26XX.h/c文件中函数总提示找不到Hwip和DeviceFamily头文件,我在文件夹下的确也没找到这两个文件,我看Timer.c/h中的设置也是一样的操作底层寄存器,按理也是可以的,请问你那边有验证过的边沿计数的初始化吗?
    感谢!希望得到你的帮助

  • 你好,viki
    感谢你的回复,我参考过GPTimerCC26XX.h/c文件,但调用里面函数时提示找不到HwiP.h和DeviceFamily.h,我用的是tirtos_simplelink_2_11_01_09版本,里面的确没找到这两个文件,所以我用的是Timer.h/c里面的函数,其实和GPTimerCC26XX.h/c一样操作底层寄存器,所以就用了Timer.h/c里面的函数,按理上是一样的。想请教下 我的初始化代码错误在哪?或者你那边有没有已验证过的边沿计数的相关代码,
    感谢! 希望得到你的帮助!
  • 目前没有边沿计数的例程,有一个用GPTimer实现PWM的例程,CC2640R2F上的,如下链接:
    dev.ti.com/.../node