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.

CCS/CC2640R2F: BUTTON INTERRUPT FUNCTION

Part Number: CC2640R2F

Tool/software: Code Composer Studio

Timer is not getting intialized in the code .Could me found out error in it .Can you suggest me timer programs.  BUTTON INTERRUPT FUNCTION IS NOT WORKING.

/*
 * Copyright (c) 2015-2017, Texas Instruments Incorporated
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * *  Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *
 * *  Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * *  Neither the name of Texas Instruments Incorporated nor the names of
 *    its contributors may be used to endorse or promote products derived
 *    from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

/*
 *  ======== gpiointerrupt.c ========
 */
#include <stdint.h>
#include <stddef.h>

/* Driver Header files */
#include <ti/drivers/GPIO.h>

/* Example/Board Header files */
#include "Board.h"

  void gptimer()
{
    GPTimerCC26XX_handle htimer;
    GPTimerCC26XX_Params params;

    GPTimerCC26XX_Params_init(&params);
    params.width=GPT_CONFIG_16BIT;
    params.mode=GPT_MODE_ONESHOT_UP;
   // params.direction=GPTimerCC26XX_DIRECTION_UP;
    params.debugStallMode =GPTimerCC26XX_DEBUG_STALL_OFF;

            htimer=GPTimerCC26XX_open(Board_GPTIMER0A,&params);
            if(htimer==NULL)
            {
                Task exit();
            }
    Types_FreqHz freq;
    BIOS_getCPUFreq(&freq);
    GPTimerCC26XX_value loadvalue=Freq.lo/(1000-1);
    GPTimerCC26XX_setLoadValue(hTimer,loadvalue);
    GPTimerCC26XX_registerInterrupt(GPTimerCC26XX_Handle htimer,TimerCallback,GPT_INT_TIMEOUT);
    GPTimerCC26XX_start(GPTimerCC26XX_handle htimer);
return (NUll);
    }








/*
 *  ======== gpioButtonFxn0 ========
 *  Callback function for the GPIO interrupt on Board_GPIO_BUTTON0.
 */
void gpioButtonFxn0(uint_least8_t index)
{
    /* Clear the GPIO interrupt and toggle an LED */

    int i=0;

while(i<50){
    GPIO_toggle(Board_GPIO_LED0);
i++;
}

}
// ==============GPT TIMER FUNCTION =========

/*
 *  ======== gpioButtonFxn1 ========
 *  Callback function for the GPIO interrupt on Board_GPIO_BUTTON1.
 *  This may not be used for all boards.
 */
void gpioButtonFxn1(uint_least8_t index)
{
    /* Clear the GPIO interrupt and toggle an LED */
    GPIO_toggle(Board_GPIO_LED1);
}

/*
 *  ======== mainThread ========
 */
void *mainThread(void *arg0)
{
    /* Call driver init functions */
    GPIO_init();

    /* Configure the LED and button pins */
    GPIO_setConfig(Board_GPIO_LED0, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW|GPIO_CFG_OUT_OD_NOPULL|GPIO_CFG_OUT_STR_MED|GPIO_CFG_OUT_OD_PU);
    GPIO_setConfig(Board_GPIO_LED1, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);
    GPIO_setConfig(Board_GPIO_BUTTON0, GPIO_CFG_IN_PU | GPIO_CFG_IN_INT_FALLING);
     int i=0;
    // GPIO_read(Board_GPIO_BUTTON0);

   int j;


    /* Turn on user LED */
    while(i<100){
    GPIO_write(Board_GPIO_LED0, Board_GPIO_LED_ON);
   for( j=0;j<50;j++)
    GPIO_write(Board_GPIO_LED0,Board_GPIO_LED_OFF);
    i++;
    }
    gptimer();

    /* install Button callback */
    GPIO_setCallback(Board_GPIO_BUTTON0, gpioButtonFxn0);

    /* Enable interrupts */
    GPIO_enableInt(Board_GPIO_BUTTON0);

    /*
     *  If more than one input pin is available for your device, interrupts
     *  will be enabled on Board_GPIO_BUTTON1.
     */
    if (Board_GPIO_BUTTON0 != Board_GPIO_BUTTON1) {
        /* Configure BUTTON1 pin */
        GPIO_setConfig(Board_GPIO_BUTTON1, GPIO_CFG_IN_PU | GPIO_CFG_IN_INT_FALLING);

        /* Install Button callback */
        GPIO_setCallback(Board_GPIO_BUTTON1, gpioButtonFxn1);
        GPIO_enableInt(Board_GPIO_BUTTON1);
    }

    return (NULL);
}