Esempio n. 1
0
/**
  * @brief  This function handles External interrupt Line 3 request.
  * @param  None
  * @retval : None
  */
void EXTI3_IRQHandler(void)
{
  if(EXTI_GetITStatus(EXTI_Line3) != RESET)
  {
    DownFunc();  
    /* Clear the EXTI Line 3 */
    EXTI_ClearITPendingBit(EXTI_Line3);
  }
}
/*******************************************************************************
* Function Name  : EXTI15_10_IRQHandler
* Description    : This function handles External lines 15 to 10 interrupt request.
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void EXTI15_10_IRQHandler(void)
{
  if(EXTI_GetITStatus(EXTI_Line12) != RESET)
  {
    SelFunc();
    /* Clear the EXTI Line 12 */    
    EXTI_ClearITPendingBit(EXTI_Line12);
  }
  if(EXTI_GetITStatus(EXTI_Line14) != RESET)
  {
    DownFunc();  
    /* Clear the EXTI Line 14 */
    EXTI_ClearITPendingBit(EXTI_Line14);
  }
}
/*******************************************************************************
* Function Name  : ReadKey
* Description    : Dispatcher function
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void ReadKey(void)
{
  uint32_t key;

  while (1)
  {
    key = GetKey();
    switch (key)
    {
      case SEL:   SelFunc();  break;
      case UP:    UpFunc();   break;
      case DOWN:  DownFunc(); break;
      case BACK:  ReturnFunc(); break;
    }
  WAIT_UNTIL_KEY_RELEASED(key);
  }
}