/**************************************************************************//** * @brief Initialize GPIO interrupt on PC14 *****************************************************************************/ void GPIO_EVEN_IRQHandler(void) { uint16_t data, joystick; /* Clear interrupt */ data = BSP_InterruptFlagsGet(); BSP_InterruptFlagsClear(data); /* Clear GPIO interrupt */ GPIO_IntClear(1 << 2); /* Read joystick status */ joystick = BSP_JoystickGet(); if ( joystick == BC_UIF_JOYSTICK_UP ) { if ( eMode > 0 ) eMode = eMode - 1; } if ( joystick == BC_UIF_JOYSTICK_DOWN ) { if ( eMode < 6 ) eMode = eMode + 1; } /* Restart counter */ msCountDown = 4000; /* Light up LEDs according to joystick status */ BSP_LedsSet(joystick); }
/**************************************************************************//** * @brief GPIO Interrupt handler *****************************************************************************/ void GPIO_EVEN_IRQHandler(void) { uint16_t joystick; /* Clear interrupt */ BSP_InterruptFlagsClear(BC_INTEN_JOYSTICK); GPIO_IntClear(1 << 14); /* Read and store joystick activity */ joystick = BSP_JoystickGet(); /* One bit for each direction left/right/up/down + button */ switch (joystick) { case JOY_MODE_BUTTON: emMode = JOY_MODE_NONE; BSP_LedsSet(0x0000); SegmentLCD_Symbol(LCD_SYMBOL_PAD0, 0); SegmentLCD_Symbol(LCD_SYMBOL_PAD1, 0); break; case JOY_MODE_EM3: case JOY_MODE_EM4: emMode = joystick; BSP_LedsSet(0xffff); SegmentLCD_Symbol(LCD_SYMBOL_PAD0, 1); SegmentLCD_Symbol(LCD_SYMBOL_PAD1, 1); break; default: break; } }
/**************************************************************************//** * @brief GPIO Interrupt handler * This interrupt handler is not an example of good design, as it will do * a lot of operations inside the interrupt handler. *****************************************************************************/ void GPIO_EVEN_IRQHandler(void) { uint16_t joystick; uint16_t pb; /* Clear interrupt */ BSP_InterruptFlagsClear(BC_INTEN_JOYSTICK); BSP_InterruptFlagsClear(BC_INTEN_PB); GPIO_IntClear(1 << GPIO_INT_PIN); /* LEDs on to indicate joystick used */ BSP_LedsSet(0xffff); /* Read and store joystick activity - wait for key release */ joystick = BSP_JoystickGet(); while (BSP_JoystickGet()) ; /* Read and store pushbutton activity - wait for key release */ pb = BSP_PushButtonsGet(); while (BSP_PushButtonsGet()) ; /* LEDs off to indicate joystick release */ BSP_LedsSet(0x0000); /* Up increases data to store in EEPROM */ if (joystick & BC_UIF_JOYSTICK_UP) { eepromData++; } /* Down decreases data to store in EEPROM */ if (joystick & BC_UIF_JOYSTICK_DOWN) { eepromData--; } /* Reset modified data to factory default */ if (pb & BC_UIF_PB4) { eepromReset = true; } }
/**************************************************************************//** * @brief GPIO Interrupt handler * This interrupt handler is not an example of good design, as it will do * a lot of operations inside the interrupt handler. *****************************************************************************/ void GPIO_EVEN_IRQHandler(void) { uint16_t joystick; /* Clear interrupt */ BSP_InterruptFlagsClear(BC_INTEN_JOYSTICK); GPIO_IntClear(1 << GPIO_INT_PIN); /* LEDs on to indicate joystick used */ BSP_LedsSet(0xffff); /* Read and store joystick activity - wait for key release */ joystick = BSP_JoystickGet(); while (BSP_JoystickGet()); /* LEDs off to indicate joystick release */ BSP_LedsSet(0x0000); /* Push toggles celsius/fahrenheit */ if (joystick & BC_JOYSTICK_CENTER) { showFahrenheit ^= 1; } }
/**************************************************************************//** * @brief Initialize GPIO interrupt on PC14 *****************************************************************************/ void GPIO_EVEN_IRQHandler(void) { uint16_t data, joystick; /* Clear interrupt */ data = BSP_InterruptFlagsGet(); BSP_InterruptFlagsClear(data); /* Clear GPIO interrupt */ GPIO_IntClear(1 << GPIO_INT_PIN); /* Read joystick status */ joystick = BSP_JoystickGet(); /* Light up LEDs according to joystick status */ BSP_LedsSet(joystick); }
/**************************************************************************//** * @brief Initialize GPIO interrupt on PC14 *****************************************************************************/ void GPIO_EVEN_IRQHandler(void) { uint16_t flags, joystick, pb; /* Clear interrupt */ flags = BSP_InterruptFlagsGet(); BSP_InterruptFlagsClear(flags); /* Clear GPIO interrupt */ GPIO_IntClear(1 << GPIO_INT_PIN); /* Move selection */ if(flags & BC_INTEN_JOYSTICK) { /* Read joystick status */ joystick = BSP_JoystickGet(); /* Move selection around */ if(joystick == BC_UIF_JOYSTICK_UP) { if(eModeDemo>0) eModeDemo=eModeDemo-1; } if(joystick == BC_UIF_JOYSTICK_DOWN) { if(eModeDemo<8) eModeDemo=eModeDemo+1; } } /* Activate demo */ if(flags & BC_INTEN_PB) { pb = BSP_PushButtonsGet(); if(pb == BC_UIF_PB1) { runDemo = true; } /* Wait until key is released */ while(BSP_PushButtonsGet()!=0) ; } }