/*============================================================================== 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(); }
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(); }
/**************************************************************************//** * @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); }