/**
* @brief  This function handles External lines 9 to 5 interrupt request.
* @param  None
* @retval None
*/
void EXTI9_5_IRQHandler(void)
{  
  /* Check the flag status of EXTI line */
  if(EXTI_GetFlagStatus(UP_BUTTON_V2_EXTI_LINE))
  {    
    Set_UPStatus();
    /* Clear the EXTI line flag */
    EXTI_ClearFlag(UP_BUTTON_V2_EXTI_LINE);
  }
  if(EXTI_GetFlagStatus(LEFT_BUTTON_V3_EXTI_LINE))
  {    
    Set_UPStatus();
    /* Clear the EXTI line flag */
    EXTI_ClearFlag(LEFT_BUTTON_V3_EXTI_LINE);
  }
  /* Check the flag status of EXTI line */
  if(EXTI_GetITStatus(KEY_BUTTON_EXTI_LINE))
  {    
    Set_KeyStatus();
    /* Clear the EXTI line flag */
    EXTI_ClearITPendingBit(KEY_BUTTON_EXTI_LINE);
  }
  if(EXTI_GetITStatus(SCM_PS_BUTTON_EXTI_LINE))
  {
    Set_KeyStatus();
    /* Clear the EXTI line flag */
    EXTI_ClearITPendingBit(SCM_PS_BUTTON_EXTI_LINE);
  }
  
}
Example #2
0
void EXTI9_5_IRQHandler(void)
{
    if (EXTI_GetITStatus(EXTI_Line5) != RESET) {
        //Handle the interrupt
        AJ_Printf("EXTI5_IRQHandler\n");
        EXTI_ClearITPendingBit(EXTI_Line5);
        EXTI_ClearFlag(EXTI_Line5);
    } else if (EXTI_GetITStatus(EXTI_Line6) != RESET) {
        AJ_Printf("EXTI6_IRQHandler\n");
        EXTI_ClearITPendingBit(EXTI_Line6);
        EXTI_ClearFlag(EXTI_Line6);
    } else if (EXTI_GetITStatus(EXTI_Line7) != RESET) {
        AJ_Printf("EXTI7_IRQHandler\n");
        EXTI_ClearITPendingBit(EXTI_Line7);
        EXTI_ClearFlag(EXTI_Line7);
    } else if (EXTI_GetITStatus(EXTI_Line8) != RESET) {
        AJ_Printf("EXTI8_IRQHandler\n");
        EXTI_ClearITPendingBit(EXTI_Line8);
        EXTI_ClearFlag(EXTI_Line8);
    } else if (EXTI_GetITStatus(EXTI_Line9) != RESET) {
        AJ_Printf("EXTI9_IRQHandler\n");
        EXTI_ClearITPendingBit(EXTI_Line9);
        EXTI_ClearFlag(EXTI_Line9);
    } else {
        AJ_ErrPrintf(("EXTI9_5_IRQHandler(): IRQ Error\n"));
    }
}
Example #3
0
void EXTI9_5_IRQHandler()//升降限位 光电
{
	if(EXTI_GetITStatus(EXTI_Line5)!= RESET)
	{
		Elevator_StopMotor;
		Elevator_Off;
		EXTI_ClearFlag(EXTI_Line5);  
		EXTI_ClearITPendingBit(EXTI_Line5);	
	}
	else if(EXTI_GetITStatus(EXTI_Line6)!= RESET)
	{
		Elevator_StopMotor;
		Elevator_Off;
		if(Load_Flag == 0 )
		{
		Elevator_On;
		Elevator_Up;
		Elevator_StartMotor;
		}
		EXTI_ClearFlag(EXTI_Line6);
		EXTI_ClearITPendingBit(EXTI_Line6);	
	}
	else if(EXTI_GetITStatus(EXTI_Line7)!= RESET)//取餐器光电检测开关 检测到拿走之后自动上升 
	{
		Elevator_On;
		Elevator_Up;
		Elevator_StartMotor;
		EXTI_ClearFlag(EXTI_Line7);  
	  EXTI_ClearITPendingBit(EXTI_Line7);	
	}

}
Example #4
0
void TIM2_IRQHandler(){

	if (TIM_GetITStatus(TIM2,TIM_IT_CC1))
	{
		TIM_ClearITPendingBit(TIM2,TIM_IT_CC1);
		TIM_ITConfig(TIM2, TIM_IT_CC1, DISABLE);
		TIM_Cmd(TIM2,DISABLE);
		Keyboard_Test_ROW(ROW1);
	}
	else if (TIM_GetITStatus(TIM2,TIM_IT_CC2))
	{
		TIM_ClearITPendingBit(TIM2,TIM_IT_CC2);
		TIM_ITConfig(TIM2, TIM_IT_CC2, DISABLE);
		TIM_Cmd(TIM2,DISABLE);
		Keyboard_Test_ROW(ROW2);
	}
	else if (TIM_GetITStatus(TIM2,TIM_IT_CC3))
	{
		TIM_ClearITPendingBit(TIM2,TIM_IT_CC3);
		TIM_ITConfig(TIM2, TIM_IT_CC2, DISABLE);
		TIM_Cmd(TIM2,DISABLE);
		Keyboard_Test_ROW(ROW3);
	}
	else if (TIM_GetITStatus(TIM2,TIM_IT_CC4))
	{
		TIM_ClearITPendingBit(TIM2,TIM_IT_CC4);
		TIM_ITConfig(TIM2, TIM_IT_CC4, DISABLE);
		TIM_Cmd(TIM2,DISABLE);
		Keyboard_Test_ROW(ROW4);
	}
	Keyboard_Set_All_Columns();
	EXTI_ClearFlag(EXTI_Line2 | EXTI_Line3 | EXTI_Line4 | EXTI_Line5 );
}
Example #5
0
/**
*	@brief handles when the external interrupt happens
*/
void EXTI0_IRQHandler () {
	
	tick  = 1;
	uint8_t crtl;
	LIS302DL_Read(&crtl, LIS302DL_CLICK_SRC_REG_ADDR , 1);
	EXTI_ClearFlag(LIS302DL_SPI_INT1_EXTI_LINE);//reset the interrupt flag
}
Example #6
0
/**
* @brief  This function handles External interrupt request (associated with Spirit GPIO 3).
* @param  None
* @retval None
*/
void M2S_GPIO_3_EXTI_IRQ_HANDLER(void)
{
  /* control the EXTI flag */
  if(EXTI_GetFlagStatus(M2S_GPIO_3_EXTI_LINE))
  {
    /* read the IRQ status bytes */
    SpiritIrqGetStatus(&xIrqStatus);
    
    /* set flags according to the raised IRQ*/
    if(xIrqStatus.IRQ_TX_DATA_SENT)
    {
      xTxDoneFlag = SET;
      SdkEvalLedToggle(LED1);
    }
    if(xIrqStatus.IRQ_RX_DATA_READY)
    {
      xRxDoneFlag = SET;
      SdkEvalLedToggle(LED2);
    }
    if(xIrqStatus.IRQ_RX_DATA_DISC)
    {
      SpiritCmdStrobeRx();
      SdkEvalLedToggle(LED3);
    }
    
    /* clear the EXTI flag */
    EXTI_ClearFlag(M2S_GPIO_3_EXTI_LINE);
  }
}
/*******************************************************************************
* Function Name  : EXTI2_IRQHandler
* Description    : This function handles External interrupt Line 2 request.
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void EXTI2_IRQHandler(void)
{
	extern unsigned char tc6014_it_flag;
	
	EXTI_ClearFlag(EXTI2_IRQn);
	tc6014_it_flag = 1;
}
Example #8
0
/**********************************************************************
* 名    称:EXTI9_5_IRQHandler()
* 功    能:外部中断通道5中断
* 入口参数: 
* 出口参数:
***********************************************************************/
void EXTI9_5_IRQHandler (void)
{
  OSIntEnter(); 
if(EXTI_GetITStatus(EXTI_Line5) != RESET) 
{
  if(SONICDEVICE.step == 1)
  {
    TIM_SetCounter(TIM6,0);
    TIM_Cmd(TIM6, ENABLE);
	SONICDEVICE.step = 2;
  }
  else if(SONICDEVICE.step == 2)
  {
    SONICDEVICE.databuff[SONICDEVICE.nextindex] = TIM_GetCounter(TIM6);
	if(SONICDEVICE.nextindex == 9)
	{
	  SONICDEVICE.nextindex = 0;
	}
	else
	{
	  SONICDEVICE.nextindex ++;
	}
    TIM_Cmd(TIM6, DISABLE);
	SONICDEVICE.step = 0;
  }
  EXTI_ClearFlag(EXTI_Line5);			       //清除中断标志(必须)
  EXTI_ClearITPendingBit(EXTI_Line5);
 }
  OSIntExit();
}
Example #9
0
void ld3320_nvic_cfg(void)
{
  EXTI_InitTypeDef EXTI_InitStructure;
	NVIC_InitTypeDef NVIC_InitStructure;
  GPIO_InitTypeDef GPIO_InitStructure;

  //中断引脚配置
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
  GPIO_InitStructure.GPIO_Pin =GPIO_Pin_1;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOC, &GPIO_InitStructure);
	//外部中断线配置
  GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource1);
  EXTI_InitStructure.EXTI_Line = EXTI_Line1;
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  EXTI_InitStructure.EXTI_Trigger =EXTI_Trigger_Falling;
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);
  EXTI_GenerateSWInterrupt(EXTI_Line1);
		
	GPIO_SetBits(GPIOC,GPIO_Pin_1);	 //默认拉高中断引脚

	EXTI_ClearFlag(EXTI_Line1);
	EXTI_ClearITPendingBit(EXTI_Line1);
	//中断嵌套配置
  NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
}
Example #10
0
File: IDR.c Project: xinmulan/RGB
/********************************************************* 
                中断服务程序 
********************************************************/  
void EXTI9_5_IRQHandler()       
{  
     u8 time=0,startSignal=0,Data=0,Count=0;  
     u32 HW_ReceivedData=0;  
     //printf("1\n");  
     if(EXTI_GetITStatus(EXTI_Line8) == SET)//检查指定的EXTI线路触发请求发生与否,返回一个EXTI_Line新状态  
      {  
            //printf("5\n");   
            //if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0))  GPIO_SetBits(GPIOA,GPIO_Pin_0);//点亮LED  
            //else  GPIO_ResetBits(GPIOA,GPIO_Pin_0);//灭  
            while(1)  
            {  
                    if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_8)==1)  
                    {  
                         time = HW_ReceiveTime();  
                            
                         if(time>=250)  
                         {  
                            //printf("VoverTime:%x\n",time);   
                            startSignal=0;  
                            HW_ReceivedData=0;  
                            Count=0;  
                            break;  
                         }   
                         else if(time>=200 && time<250)  
                         {  
                              startSignal=1;//收到起始信号  
                              HW_ReceivedData=0;  
                              Count=0;  
                              continue;  
                         }   
                         else if(time>=60 && time<90)  Data=1;//收到数据 1  
                         else if(time>=10 && time<50)  Data=0;//收到数据 0  
                         //printf("%x ",Data);  
                         if(startSignal==1)  
                          {  
                                HW_ReceivedData<<=1;  
                                HW_ReceivedData+=Data;  
                                Count++;  
                                if(Count>=32)  
                                {  
                                    //printf("received:%x\n",HW_ReceivedData);  
                                    if(HW_ReceivedData==0x1090000a)  printf("红外编码:0x%8X,指令:打开空调\n",HW_ReceivedData);  
                                    else if(HW_ReceivedData==0x90000a)  printf("红外编码:0x%08X,指令:关闭空调\n",HW_ReceivedData);  
                                    else   printf("红外编码:0x%08X,指令:未知\n",HW_ReceivedData);  
                                    HW_ReceivedData=0;  
                                    Count=0;  
                                    startSignal=0;  
                                    break;  
                                }   
                                  
                          }     
                    }  
            }  
              
            EXTI_ClearITPendingBit(EXTI_Line8);//清除线路挂起位  
            EXTI_ClearFlag(EXTI_Line8);//清除中断挂起位   
     }   
}
/**
 * ext irq handler
 *
 * Handles the gpio interrupt attached to a gpio pin.
 *
 * @param index
 */
static void
ext_irq_handler(int index)
{
    if (EXTI_GetFlagStatus(index) != RESET) {
        EXTI_ClearFlag(index);
        gpio_irq_handlers[index].isr(gpio_irq_handlers[index].arg);
    }
}
Example #12
0
void EXTI4_IRQHandler(void)
{
    AJ_Printf("EXTI4_IRQHandler\n");
    if (EXTI_GetITStatus(EXTI_Line4) != RESET) {
        //Handle the interrupt
        EXTI_ClearITPendingBit(EXTI_Line4);
        EXTI_ClearFlag(EXTI_Line4);
    }
}
Example #13
0
/**
 * @brief Interrupcion llamada cuando se preciona el pulsador
 */
void EXTI0_IRQHandler(void) {

	if (EXTI_GetITStatus(EXTI_Line0) != RESET) //Verificamos si es la del pin configurado
			{
		EXTI_ClearFlag(EXTI_Line0); // Limpiamos la Interrupcion
		// Rutina:
		APP_ISR_sw();
	}
}
Example #14
0
void EXTI1_IRQHandler()//取仓门关闭限位
{
	if(EXTI_GetITStatus(EXTI_Line1)!= RESET)
	{
		Door_StopMotor;
		Door_Off;
	}
	EXTI_ClearFlag(EXTI_Line1);  
	EXTI_ClearITPendingBit(EXTI_Line1);
}
Example #15
0
void EXTI0_IRQHandler(void)
{
	GPIO_SetBits(GPIOD,GPIO_Pin_12);
	for(i=0;i<500000;i++);
	GPIO_ResetBits(GPIOD,GPIO_Pin_12);
	for(i=0;i<500000;i++);

	EXTI_ClearFlag(EXTI_Line0);

}
Example #16
0
/**
 * Handler for ROW4 of matrix keyboard
 */
void EXTI9_5_IRQHandler(){
	if (EXTI_GetITStatus(EXTI_Line5) != RESET)
	{
		EXTI_ClearITPendingBit(EXTI_Line5);
		EXTI_ClearFlag(EXTI_Line5);
		TIM_SetCompare4(TIM2, 100); // 100 * [1/(72MHz / 36 000)] = 50ms
		Keyboard_Timer_Start();
		TIM_ITConfig(TIM2, TIM_IT_CC4, ENABLE);
	}
}
Example #17
0
/**
* @brief  This function handles External interrupt request (associated with the KEY_BUTTON).
* @param  None
* @retval None
*/
void KEY_BUTTON_EXTI_IRQ_HANDLER(void)
{
  /* Use this ISR to corrupt the data flow in order to stop the test */
  if(EXTI_GetFlagStatus(KEY_BUTTON_EXTI_LINE))
  {
    vectcBallBuff[14]=3;
    SdkEvalLedToggle(LED3);
    EXTI_ClearFlag(KEY_BUTTON_EXTI_LINE);
  }
}
Example #18
0
void EXTI1_IRQHandler(void)
{

	if(EXTI_GetITStatus(EXTI_Line1)!= RESET ) 
	{
			//ProcessInt0(); 
		EXTI_ClearFlag(EXTI_Line1);
		EXTI_ClearITPendingBit(EXTI_Line1);
		rt_event_send(&event,(1 << 0));
	}
}
Example #19
0
void EXTI0_IRQHandler(void)
{
    int8_t trigId;
    if (EXTI_GetITStatus(EXTI_Line0) != RESET) {
        //Find the trigger ID and set the correct bit
        trigId = findTrigId(EXTI_PinSource0);
        BIT_SET(trigSet, trigId);
        AJ_Net_Interrupt();
        EXTI_ClearITPendingBit(EXTI_Line0);
        EXTI_ClearFlag(EXTI_Line0);
    }
}
Example #20
0
void EXTI2_IRQHandler(void)
{
    AJ_Printf("EXTI2_IRQHandler\n");
    int8_t trigId;
    if (EXTI_GetITStatus(EXTI_Line2) != RESET) {
        //Find the trigger ID and set the correct bit
        trigId = findTrigId(EXTI_PinSource2);
        BIT_SET(trigSet, trigId);
        EXTI_ClearITPendingBit(EXTI_Line2);
        EXTI_ClearFlag(EXTI_Line2);
    }
}
void uartTxenFlowctrlIsr()
{
  EXTI_ClearFlag(UART_TXEN_EXTI);
  if (GPIO_ReadInputDataBit(UART_TXEN_PORT, UART_TXEN_PIN) == Bit_SET)
  {
    uartPauseDma();
  }
  else
  {
    uartResumeDma();
  }
}
Example #22
0
void EXTI15_10_IRQHandler(void)
{
    if (EXTI_GetITStatus(EXTI_Line10) != RESET) {
        //Handle the interrupt
        AJ_Printf("EXTI10_IRQHandler\n");
        EXTI_ClearITPendingBit(EXTI_Line10);
        EXTI_ClearFlag(EXTI_Line10);
    } else if (EXTI_GetITStatus(EXTI_Line11) != RESET) {
        AJ_Printf("EXTI11_IRQHandler\n");
        EXTI_ClearITPendingBit(EXTI_Line11);
        EXTI_ClearFlag(EXTI_Line11);
    } else if (EXTI_GetITStatus(EXTI_Line12) != RESET) {
        AJ_Printf("EXTI12_IRQHandler\n");
        EXTI_ClearITPendingBit(EXTI_Line12);
        EXTI_ClearFlag(EXTI_Line12);
    } else if (EXTI_GetITStatus(EXTI_Line13) != RESET) {
        AJ_Printf("EXTI13_IRQHandler\n");
        EXTI_ClearITPendingBit(EXTI_Line13);
        EXTI_ClearFlag(EXTI_Line13);
    } else if (EXTI_GetITStatus(EXTI_Line14) != RESET) {
        AJ_Printf("EXTI14_IRQHandler\n");
        EXTI_ClearITPendingBit(EXTI_Line14);
        EXTI_ClearFlag(EXTI_Line14);
    } else if (EXTI_GetITStatus(EXTI_Line15) != RESET) {
        AJ_Printf("EXTI15_IRQHandler\n");
        EXTI_ClearITPendingBit(EXTI_Line15);
        EXTI_ClearFlag(EXTI_Line15);
    } else {
        AJ_ErrPrintf(("EXTI15_10_IRQHandler(): IRQ Error\n"));
    }
}
Example #23
0
void EXTI15_10_IRQHandler()//开启装填
{
	if(EXTI_GetITStatus(EXTI_Line15)!= RESET)
	{
		Door_StopMotor;
		Door_Off;
		Elevator_Down;
		Elevator_On;
		Elevator_StartMotor;
	}
	EXTI_ClearFlag(EXTI_Line15);  
	EXTI_ClearITPendingBit(EXTI_Line15);
}
Example #24
0
/**
 * Obsluga przerwania przycisku TOGGLE
 *
 */
void EXTI0_1_IRQHandler() {

	// przycisk toggle
	if (EXTI_GetFlagStatus(EXTI_Line0)) {
		// wylaczenie dalszych przerwan az mina drgania stykow
		NVIC_DisableIRQ(EXTI0_1_IRQn);
		// ustawienie timera do odliczania czasu drgan
		timerKey1=sysTicks;
		// ustawienie flagi wcisniecia przycisku
		TOGGLE_Button=1;
		// wyczyszczenie flagi przerwania
		EXTI_ClearFlag(EXTI_Line0);
	}
}
//MPU6050 external interrupt handler
void EXTI9_5_IRQHandler(void)
{
    if(EXTI_GetITStatus(EXTI_Line5) == SET)
    {
        
        // Read MPU6050 data out to control the gimbal smoother
        // USe MPU6050 gyro output as the close-loop feedback for speed
        // If only use the mechanical angle from motor controller for feedback
        // Significant oscillation occur
        MPU6050_ReadData();                                              
        
        EXTI_ClearFlag(EXTI_Line5);          
        EXTI_ClearITPendingBit(EXTI_Line5);
    }
}
Example #26
0
static int gpioh_get_int_flag( elua_int_id id, elua_int_resnum resnum, int clear )
{
  int flag = 0;
  u32 mask =  1 << exint_gpio_to_src( resnum );

  if( EXTI_GetFlagStatus( exti_line[ exint_gpio_to_src( resnum ) ] ) == SET )
  {
    if( id == INT_GPIO_POSEDGE )
      flag = ( EXTI->RTSR & mask ) != 0;
    else
      flag = ( EXTI->FTSR & mask ) != 0;
  }
  if( flag && clear )
    EXTI_ClearFlag( exti_line[ exint_gpio_to_src( resnum ) ] );
  return flag;
}
Example #27
0
/**
  * @brief  This function handles TIM7 global interrupt request.
  * @param  None
  * @retval None
  */
void TIM7_IRQHandler(void)
{
  if (TIM_GetITStatus(TIM7, TIM_IT_Update) != RESET)
  {    
    if (((ActionState == ACTION_NONE) && (DeviceMode == MASTER)) || ((LastMode == SLAVE) && (DeviceMode == SLAVE)))
    {
      ActionState =  ACTION_PERIODIC ;
    }
    
    /* Clear Timer interrupt pending bit */
    TIM_ClearITPendingBit(TIM7, TIM_IT_Update);
    
    /* Clear Key Button Interrupt pending bit */
    EXTI_ClearITPendingBit(KEY_BUTTON_EXTI_LINE);
    EXTI_ClearFlag(KEY_BUTTON_EXTI_LINE); 
  } 
}
/**
* @brief  This function handles External lines 15 to 10 interrupt request.
* @param  None
* @retval None
*/
void EXTI15_10_IRQHandler(void)
{  
  /* Check the flag status of EXTI line 10 */
  if(EXTI_GetITStatus(M2S_GPIO_3_EXTI_LINE))
  {    
    WMBus_PhyInterruptHandler();
    /* Clear the EXTI line 10 flag */
    EXTI_ClearITPendingBit(M2S_GPIO_3_EXTI_LINE); 
  }
  /* Check the flag status of EXTI line */
  if(EXTI_GetFlagStatus(UP_BUTTON_V3_EXTI_LINE))
  {    
    Set_UPStatus();
    /* Clear the EXTI line flag */
    EXTI_ClearFlag(UP_BUTTON_V3_EXTI_LINE);
  }
}
Example #29
0
/**
  * @brief  This function handles TIM17 global interrupt request.
  * @param  None
  * @retval None
  */
void TIM17_IRQHandler(void)
{
  if (TIM_GetITStatus(TIM17, TIM_IT_Update) != RESET)
  {    
    if ((ActionState == ACTION_NONE) && (RecieverMode == STATE_OFF))
    {
      ActionState =  ACTION_PERIODIC ;
    }
    
    /* Clear Timer interrupt pending bit */
    TIM_ClearITPendingBit(TIM17, TIM_IT_Update);
    
    /* Clear Key Button Interrupt pending bit */
    EXTI_ClearITPendingBit(KEY_BUTTON_EXTI_LINE);
    EXTI_ClearFlag(KEY_BUTTON_EXTI_LINE); 
  } 
}
/**
 * gpio irq release
 *
 * No longer interrupt when something occurs on the pin. NOTE: this function
 * does not change the GPIO push/pull setting nor does it change the
 * SYSCFG EXTICR registers. It also does not disable the NVIC interrupt enable
 * setting for the irq.
 *
 * @param pin
 */
void
gpio_irq_release(int pin)
{
    int index;
    uint32_t pin_mask;

    /* Disable the interrupt */
    gpio_irq_disable(pin);

    /* Clear any pending interrupts */
    pin_mask = GPIO_MASK(pin);
    EXTI_ClearFlag(pin_mask);

    /* Clear out the irq handler */
    index = GPIO_INDEX(pin);
    gpio_irq_handlers[index].arg = NULL;
    gpio_irq_handlers[index].isr = NULL;
}