/*==============================================================================
  hal_extIntInit()
 =============================================================================*/
uint8_t hal_extIntInit(en_targetExtInt_t e_intSource, pfn_intCallb_t pfn_intCallback)
{
    int8_t    c_ret = 0;
    s_hal_gpio_pin_t* p_gpioPin = NULL;

    if( pfn_intCallback != NULL ) {

      /* Initialize GPIO interrupt dispatcher */
      GPIOINT_Init();

      switch( e_intSource ){
        case E_TARGET_RADIO_INT:

            pf_hal_radioCb = pfn_intCallback;

            p_gpioPin = &s_hal_gpio[e_hal_gpios_rf_irq];
            /* configure pin */
            GPIO_PinModeSet( p_gpioPin->port, p_gpioPin->pin, p_gpioPin->mode, p_gpioPin->val );
            /* Register callbacks before setting up and enabling pin interrupt. */
            GPIOINT_CallbackRegister( p_gpioPin->pin, _hal_radioCb );
            /* Set falling edge interrupt */
            GPIO_IntConfig( p_gpioPin->port, p_gpioPin->pin, true, false, true );
            c_ret = 1;
            break;

        case E_TARGET_USART_INT:
            break;

        default:
            break;
        }
    }
    return c_ret;
} /* hal_extIntInit() */
__LINK_C void __gpio_init()
{
    for(int i = 0; i < 16; i++)
    {
    	interrupts[i].callback = 0x0;
    	interrupts[i].interrupt_port = 0xFF; //signal that a port has not yet been chosen
    }
    for(int i = 0; i < 6; i++)
    	gpio_pins_configured[i] = 0;
    CMU_ClockEnable(cmuClock_GPIO, true);

    /* Initialize GPIO interrupt dispatcher */
    GPIOINT_Init();
}
Exemple #3
0
void Buttons_Init(void) {
    /* Enable GPIO in CMU */
    CMU_ClockEnable(cmuClock_GPIO, true);

    /* Initialize ODD and EVEN GPIO interrupts dispatcher */
    GPIOINT_Init();

		GPIOINT_CallbackRegister(BTN0, buttonCallback);
		GPIOINT_CallbackRegister(BTN1, buttonCallback);
		GPIOINT_CallbackRegister(BTN2, buttonCallback);
		GPIOINT_CallbackRegister(BTN3, buttonCallback);
		GPIOINT_CallbackRegister(BTN4, buttonCallback);

		Bitless_GpioSetup();
}
Exemple #4
0
/**************************************************************************//**
 * @brief  Gpio setup. Setup button pins to trigger falling edge interrupts.
 *  Register callbacks for that interrupts.
 *****************************************************************************/
void gpioSetup(void)
{
  /* Enable GPIO in CMU */
  CMU_ClockEnable(cmuClock_GPIO, true);

  /* Initialize GPIO interrupt dispatcher */
  GPIOINT_Init();
  
  /* Configure PB9 and PB10 as input */
  GPIO_PinModeSet(gpioPortB, 9, gpioModeInput, 0);
  GPIO_PinModeSet(gpioPortB, 10, gpioModeInput, 0);

  /* Register callbacks before setting up and enabling pin interrupt. */
  GPIOINT_CallbackRegister(9, gpioCallback);
  GPIOINT_CallbackRegister(10, gpioCallback);

  /* Set falling edge interrupt for both ports */
  GPIO_IntConfig(gpioPortB, 9, false, true, true);
  GPIO_IntConfig(gpioPortB, 10, false, true, true);
}