Other Parts Discussed in Thread: CC1350
Tool/software: TI-RTOS
Hello everybody !
I am using a CC1350 Launch pad, working with the TI-RTOS 2.20.01.08 in Code Composer Studio.
I need to use general purpose timers in my project. But, the driver didn't work as I wanted.
I use the module driver GPTimerCC26XX.h in this installation path: C:\ti\tirtos_cc13xx_cc26xx_2_20_01_08\products\tidrivers_cc13xx_cc26xx_2_20_01_10\packages\ti\drivers\timer.
Here is my code. Please I need your help to get starting with GP timers. If there is any example to propose or any other module driver which works better :
#include <ti/drivers/timer/GPTimerCC26XX.h> #include <ti/drivers/power/PowerCC26XX.h> #include <ti/sysbios/BIOS.h> #include <xdc/runtime/Types.h> #define CC2650_GPTIMERPARTSCOUNT 8 #define CC2650_GPTIMERCOUNT 4 const GPTimerCC26XX_HWAttrs gptimerCC26xxHWAttrs[CC2650_GPTIMERPARTSCOUNT] = { {.baseAddr = GPT0_BASE, .intNum = GPT_INT_TIMEOUT, .powerMngrId = PowerCC26XX_PERIPH_GPT0, .pinMux = GPT_PIN_0A}, {.baseAddr = GPT0_BASE, .intNum = GPT_INT_TIMEOUT, .powerMngrId = PowerCC26XX_PERIPH_GPT0, .pinMux = GPT_PIN_0B}, {.baseAddr = GPT1_BASE, .intNum = GPT_INT_TIMEOUT, .powerMngrId = PowerCC26XX_PERIPH_GPT1, .pinMux = GPT_PIN_1A}, {.baseAddr = GPT1_BASE, .intNum = GPT_INT_TIMEOUT, .powerMngrId = PowerCC26XX_PERIPH_GPT1, .pinMux = GPT_PIN_1B}, {.baseAddr = GPT2_BASE, .intNum = GPT_INT_TIMEOUT, .powerMngrId = PowerCC26XX_PERIPH_GPT2, .pinMux = GPT_PIN_2A}, {.baseAddr = GPT2_BASE, .intNum = GPT_INT_TIMEOUT, .powerMngrId = PowerCC26XX_PERIPH_GPT2, .pinMux = GPT_PIN_2B}, {.baseAddr = GPT3_BASE, .intNum = GPT_INT_TIMEOUT, .powerMngrId = PowerCC26XX_PERIPH_GPT3, .pinMux = GPT_PIN_3A}, {.baseAddr = GPT3_BASE, .intNum = GPT_INT_TIMEOUT, .powerMngrId = PowerCC26XX_PERIPH_GPT3, .pinMux = GPT_PIN_3B} }; GPTimerCC26XX_Object gptimerCC26XXObjects[CC2650_GPTIMERCOUNT]; const GPTimerCC26XX_Config GPTimerCC26XX_config[CC2650_GPTIMERPARTSCOUNT] = { { &gptimerCC26XXObjects[0], &gptimerCC26xxHWAttrs[0], GPT_A}, { &gptimerCC26XXObjects[0], &gptimerCC26xxHWAttrs[1], GPT_B}, { &gptimerCC26XXObjects[1], &gptimerCC26xxHWAttrs[2], GPT_A}, { &gptimerCC26XXObjects[1], &gptimerCC26xxHWAttrs[3], GPT_B}, { &gptimerCC26XXObjects[2], &gptimerCC26xxHWAttrs[4], GPT_A}, { &gptimerCC26XXObjects[2], &gptimerCC26xxHWAttrs[5], GPT_B}, { &gptimerCC26XXObjects[3], &gptimerCC26xxHWAttrs[6], GPT_A}, { &gptimerCC26XXObjects[3], &gptimerCC26xxHWAttrs[7], GPT_B} }; GPTimerCC26XX_Handle timerHandle1; void InitTimer() { GPTimerCC26XX_Params GPT_Params; GPTimerCC26XX_Params_init(&GPT_Params); GPT_Params.width = GPT_CONFIG_16BIT; GPT_Params.mode = GPT_MODE_PERIODIC_UP; GPT_Params.debugStallMode = GPTimerCC26XX_DEBUG_STALL_OFF; timerHandle1 = GPTimerCC26XX_open(0, &GPT_Params); Types_FreqHz freq; BIOS_getCpuFreq(&freq); GPTimerCC26XX_Value loadVal = freq.lo / 1000 - 1; //47999 GPTimerCC26XX_setLoadValue(timerHandle1, loadVal); GPTimerCC26XX_registerInterrupt(timerHandle1, timerCallback, GPT_INT_TIMEOUT); GPTimerCC26XX_start(timerHandle1); } void DeInitTimer() { GPTimerCC26XX_stop(timerHandle1); GPTimerCC26XX_unregisterInterrupt(timerHandle1); GPTimerCC26XX_close(timerHandle1); } void timerCallback(GPTimerCC26XX_Handle handle, GPTimerCC26XX_IntMask interruptMask) { }