/** * @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); } }
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")); } }
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); } }
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 ); }
/** * @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 }
/** * @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; }
/********************************************************************** * 名 称: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(); }
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); }
/********************************************************* 中断服务程序 ********************************************************/ 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); } }
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); } }
/** * @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(); } }
void EXTI1_IRQHandler()//取仓门关闭限位 { if(EXTI_GetITStatus(EXTI_Line1)!= RESET) { Door_StopMotor; Door_Off; } EXTI_ClearFlag(EXTI_Line1); EXTI_ClearITPendingBit(EXTI_Line1); }
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); }
/** * 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); } }
/** * @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); } }
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)); } }
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); } }
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(); } }
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")); } }
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); }
/** * 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); } }
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; }
/** * @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); } }
/** * @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; }