コード例 #1
0
ファイル: stm32f1xx_it.c プロジェクト: JalonWong/Mini-IoT
bool USER_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)
{
    /* EXTI line interrupt detected */
    if(__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != RESET)
    {
        __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);
        return true;
    }
    return false;
}
コード例 #2
0
ファイル: stm32xx_it.c プロジェクト: AdrainGuo/STM32_Platform
/*lsm6ds3*/
void EXTI0_IRQHandler(void)
{
   if(__HAL_GPIO_EXTI_GET_IT(MEMS_INT1_PIN) != RESET)
  {
    __HAL_GPIO_EXTI_CLEAR_IT(MEMS_INT1_PIN);
    if(EXTI0_IRQFUNC)
      (*EXTI0_IRQFUNC)();
//    imu_sensor_read_data_from_fifo();
//    printf("fifo interrupt \n");
  }
}
コード例 #3
0
/**
 * @brief  Enable SPI IRQ.
 * @param  None
 * @retval None
 */
static void Enable_SPI_Receiving_Path(void)
{  
  __HAL_GPIO_EXTI_CLEAR_IT(BNRG_SPI_EXTI_PIN);
  HAL_NVIC_ClearPendingIRQ(BNRG_SPI_EXTI_IRQn);
  HAL_NVIC_EnableIRQ(BNRG_SPI_EXTI_IRQn);
  
  if (HAL_GPIO_ReadPin(BNRG_SPI_IRQ_PORT, BNRG_SPI_IRQ_PIN) == GPIO_PIN_SET)
  {
    __HAL_GPIO_EXTI_GENERATE_SWIT(BNRG_SPI_IRQ_PIN);
  }
}
コード例 #4
0
/**
 * ext irq handler 
 *  
 * Handles the gpio interrupt attached to a gpio pin. 
 * 
 * @param index 
 */
static void
ext_irq_handler(int index)
{
    uint32_t mask;

    mask = 1 << index;
    if (__HAL_GPIO_EXTI_GET_IT(mask) != RESET) {
        __HAL_GPIO_EXTI_CLEAR_IT(mask);
        gpio_irq_handlers[index].isr(gpio_irq_handlers[index].arg);
    }
}
コード例 #5
0
ファイル: lsm303d.c プロジェクト: fhtthg/my_pix4
void EXTI1_IRQHandler(void)
{
    if(__HAL_GPIO_EXTI_GET_IT(LSM303D_MAG_DRDY_PIN) != RESET)
      {

        LSM303D_MAG_READY(&LSM303D_MAG_report1);
        LSM303D_RD_CNT++;
        __HAL_GPIO_EXTI_CLEAR_IT(LSM303D_MAG_DRDY_PIN);
      }

}
コード例 #6
0
ファイル: lsm303d.c プロジェクト: fhtthg/my_pix4
void EXTI4_IRQHandler(void)
{
    if(__HAL_GPIO_EXTI_GET_IT(LSM303D_ACC_DRDY_PIN) != RESET)
      {

       // LSM303D_ACC_READY(&LSM303D_ACC_report1);

        __HAL_GPIO_EXTI_CLEAR_IT(LSM303D_ACC_DRDY_PIN);
      }

}
コード例 #7
0
ファイル: Interrupt_Functions.c プロジェクト: javifercep/MuBA
/**
  * @brief  This function handles EXTI0 Handler.
  * @param  None
  * @retval None
  */
void EXTI2_IRQHandler(void)
{
		/* EXTI line interrupt detected */
  if(__HAL_GPIO_EXTI_GET_IT(PIN8_PIN) != RESET)
  {
    __HAL_GPIO_EXTI_CLEAR_IT(PIN8_PIN);
		if(EXTI_CallBack[8]){ EXTI_CallBack[8](); }
  }
	/* EXTI line interrupt detected */
  if(__HAL_GPIO_EXTI_GET_IT(PIN14_PIN) != RESET)
  {
    __HAL_GPIO_EXTI_CLEAR_IT(PIN14_PIN);
		if(EXTI_CallBack[14]){ EXTI_CallBack[14](); }
	}
	
	/* EXTI line interrupt detected */
  if(__HAL_GPIO_EXTI_GET_IT(PINA3_PIN) != RESET)
  {
    __HAL_GPIO_EXTI_CLEAR_IT(PINA3_PIN);
		if(EXTI_CallBack[A3]){ EXTI_CallBack[A3](); }
	}
}
コード例 #8
0
ファイル: stm32f1xx_it.c プロジェクト: patlas/ke
void EXTI15_10_IRQHandler(void)
{
	for(uint8_t i=0; i< (sizeof(EXTI_TAB)/sizeof(EXTI_TAB[0])); i++)
	{
		if(__HAL_GPIO_EXTI_GET_IT(EXTI_TAB[i]) != RESET) 
		{ 
			__HAL_GPIO_EXTI_CLEAR_IT(EXTI_TAB[i]);
			
			xQueueSendFromISR( joyPressQueue, &JOY_MAP[i], NULL );
			break;
		}
	}
	
}
コード例 #9
0
void hal_gpio_ext_irq_handler(uint16_t index)
{
    uint32_t mask;

    mask = HAL_GPIO_PIN(index);
    if (__HAL_GPIO_EXTI_GET_IT(mask) != RESET) {
        __HAL_GPIO_EXTI_CLEAR_IT(mask);
      if (hal_gpio_irq[index].isr) {
          ++hal_gpio_irq[index].invoked;
          hal_gpio_irq[index].isr(hal_gpio_irq[index].arg);
      } else {
          ++hal_gpio_irq[index].dropped;
      }
    }
}
コード例 #10
0
/**
  * @brief  Configures button GPIO and EXTI Line.
  * @param  Button: Button to be configured
  *          This parameter can be one of the following values:
  *            @arg  BUTTON_WAKEUP: Wakeup Push Button 
  *            @arg  BUTTON_TAMPER: Tamper Push Button
  *            @arg  BUTTON_KEY: Key Push Button 
  *            @arg  BUTTON_RIGHT: Joystick Right Push Button 
  *            @arg  BUTTON_LEFT: Joystick Left Push Button 
  *            @arg  BUTTON_UP: Joystick Up Push Button 
  *            @arg  BUTTON_DOWN: Joystick Down Push Button
  *            @arg  BUTTON_SEL: Joystick Sel Push Button
  * @param  Button_Mode: Button mode
  *          This parameter can be one of the following values:
  *            @arg  BUTTON_MODE_GPIO: Button will be used as simple IO
  *            @arg  BUTTON_MODE_EXTI: Button will be connected to EXTI line 
  *                                    with interrupt generation capability  
  * @retval None
  */
void BSP_PB_Init(Button_TypeDef Button, ButtonMode_TypeDef Button_Mode)
{
  GPIO_InitTypeDef GPIO_InitStruct;
  
  /* Enable the BUTTON clock */
  BUTTONx_GPIO_CLK_ENABLE(Button);
  
  if(Button_Mode == BUTTON_MODE_GPIO)
  {
    /* Configure Button pin as input */
    GPIO_InitStruct.Pin = BUTTON_PIN[Button];
    GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FAST;

    HAL_GPIO_Init(BUTTON_PORT[Button], &GPIO_InitStruct);
    HAL_NVIC_DisableIRQ((IRQn_Type)(BUTTON_IRQn[Button]));
  }
  
  if(Button_Mode == BUTTON_MODE_EXTI)
  {
    /* Configure Button pin as input with External interrupt */
    GPIO_InitStruct.Pin = BUTTON_PIN[Button];
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
    
    if(Button != BUTTON_WAKEUP)
    {
      GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; 
    }
    else
    {
      GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
    }
    
    HAL_GPIO_Init(BUTTON_PORT[Button], &GPIO_InitStruct);
    
    /* Enable and set Button EXTI Interrupt to the lowest priority */
    HAL_NVIC_SetPriority((IRQn_Type)(BUTTON_IRQn[Button]), 0x0F, 0x0);
    __HAL_GPIO_EXTI_CLEAR_IT(BUTTON_PIN[Button]);
  NVIC_ClearPendingIRQ((IRQn_Type)(BUTTON_IRQn[Button]));
  HAL_NVIC_EnableIRQ((IRQn_Type)(BUTTON_IRQn[Button]));
  }
}
コード例 #11
0
ファイル: ads1222.c プロジェクト: HargicStudio/AirMonitor
static void Ads1222_SenseD_EXTIGpioConfig()
{
    GPIO_InitTypeDef   GPIO_InitStructure;

    /* Enable /DRDY clock */
    ADS1222_D_DOUT_GPIO_CLK_ENABLE();

    /* Configure PB15 pin as input floating */
    GPIO_InitStructure.Mode = GPIO_MODE_IT_FALLING;
    GPIO_InitStructure.Pull = GPIO_NOPULL;
    GPIO_InitStructure.Pin = ADS1222_D_DOUT_PIN;
    HAL_GPIO_Init(ADS1222_D_DOUT_PORT, &GPIO_InitStructure);

    /* Enable and set EXTI Line15:10 Interrupt to the HIGH2 priority */
    // !!! this is very important
    // !!! we must clear EXTI bit first or it will trigger next interrupt when IRQ enabled
    __HAL_GPIO_EXTI_CLEAR_IT(ADS1222_D_DOUT_PIN);
    HAL_NVIC_SetPriority(ADS1222_D_DOUT_EXTI_IRQn, SYSTEM_IRQ_PRIORITY_HIGH_2, 0);
    HAL_NVIC_EnableIRQ(ADS1222_D_DOUT_EXTI_IRQn);
}
コード例 #12
0
ファイル: stm32_bluenrg_ble.c プロジェクト: nvdl/pymite
/**
 * @brief  Clear EXTI (External Interrupt) line for SPI IRQ.
 * @param  None
 * @retval None
 */
void Clear_SPI_EXTI_Flag(void)
{
	__HAL_GPIO_EXTI_CLEAR_IT(BNRG_SPI_EXTI_PIN);
}
コード例 #13
0
ファイル: usbd_conf.c プロジェクト: assarsh/Project_2016_04
/**
  * @brief  Suspend callback.
  * When Low power mode is enabled the debug cannot be used (IAR, Keil doesn't support it)
  * @param  hpcd: PCD handle
  * @retval None
  */
void HAL_PCD_SuspendCallback(PCD_HandleTypeDef *hpcd)
{
  U8 i,y;
//  USBD_HID_HandleTypeDef *ptr;
//  ptr = (USBD_HID_HandleTypeDef *)(hUsbDeviceFS.pClassData);
//  GPIO_InitTypeDef GPIO_InitStruct;
  /* Inform USB library that core enters in suspend Mode */
  USBD_LL_Suspend(hpcd->pData);
  /*Enter in STOP mode */
  /* USER CODE BEGIN 2 */
  if (hpcd->Init.low_power_enable)
  {
    //[ slash

//   for (y = COLS; y < COLS+ROWS; y++) {                            // Scan, save, and update the current keyboard state
//     gpio_setDirvalue(matrix[y].port, matrix[y].pin, GPIO_MODE_OUTPUT_PP, GPIO_PIN_SET);
//      for (i = 0; i < 10; i++); 
//    }    
  if (HAL_TIM_Base_Stop_IT(&htim2) != HAL_OK)
  {
    /* Starting Error */
    while(1);
  }       
    HAL_I2CEx_AnalogFilter_Config(&hi2c2, I2C_ANALOGFILTER_DISABLE);
  if  (HAL_I2C_DeInit(&hi2c2)!= HAL_OK) {
    while(1);
  }
    for (i=0;i<3;i++) {
    ((USBD_HID_HandleTypeDef *)&hUsbDeviceFS.pClassData)->state[i] = HID_BUSY;
    }
    HAL_GPIO_WritePin(LED_RESET_GPIO_Port, LED_RESET_Pin, GPIO_PIN_RESET);                  // Low to shut down led controller
//    for (i = 0; i < 10; i++);
//    GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3 
//                            |GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7 
//                            |GPIO_PIN_15;
//    GPIO_InitStruct.Pin = GPIO_PIN_15;
//    GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
//    GPIO_InitStruct.Pull = GPIO_NOPULL;
//    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
//////    __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_0);
//////    __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_1);
//////    __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_2); 
//////    __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_3);
//////    __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_4);
//////    __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_5);
//////    __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_6);
//////    __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_7);  
//    __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_15);    
    __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_All);    
////    HAL_NVIC_SetPriority(EXTI0_1_IRQn, 3, 0);
    HAL_NVIC_EnableIRQ(EXTI0_1_IRQn);
////    HAL_NVIC_SetPriority(EXTI2_3_IRQn, 3, 0);
    HAL_NVIC_EnableIRQ(EXTI2_3_IRQn);
//    HAL_NVIC_SetPriority(EXTI4_15_IRQn, 3, 0);
    HAL_NVIC_EnableIRQ(EXTI4_15_IRQn);
////    __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_0);
////    __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_1);
////    __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_2); 
////    __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_3);
////    __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_4);
////    __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_5);
////    __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_6);
////    __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_7);  
////    __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_15);    
//    __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_All); 
////      HAL_NVIC_DisableIRQ(I2C2_IRQn); 
    //]
    for (y = 0; y < COLS; y++) {                             // Scan, save, and update the current keyboard state
     gpio_setDirvalue(matrix[y].port, matrix[y].pin, GPIO_MODE_OUTPUT_PP, GPIO_PIN_RESET);
     for (i = 0; i < 10; i++); 
   }  
    for (y = 0; y < COLS; y++) {                             // Scan, save, and update the current keyboard state
     gpio_setDirvalue(matrix[y].port, matrix[y].pin, GPIO_MODE_OUTPUT_PP, GPIO_PIN_RESET);
     for (i = 0; i < 10; i++); 
   } 
    /* Set SLEEPDEEP bit and SleepOnExit of Cortex System Control Register */
//    SCB->SCR |= (uint32_t)((uint32_t)(SCB_SCR_SLEEPDEEP_Msk | SCB_SCR_SLEEPONEXIT_Msk));
  }
  /* USER CODE END 2 */
}
コード例 #14
0
ファイル: main-ex1.c プロジェクト: Atmango/mastering-stm32
void EXTI15_10_IRQHandler(void) {
  __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_13);
  HAL_GPIO_TogglePin(LD2_GPIO_Port, GPIO_PIN_5);
}
コード例 #15
0
ファイル: button.cpp プロジェクト: jothan/avr-divecomputer
void EXTI9_5_IRQHandler(void)
{
	button2.change_event();
	__HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_5);
}
コード例 #16
0
/** @brief  This function enables the button interrupt 
 * 
 * The interrupt is re-enabled after waiting for a possible bouncing phase.
 * */
void de_bounce_callback(xTimerHandle)
{
  // once more: reset EXTI I/O interrupt latch
  __HAL_GPIO_EXTI_CLEAR_IT( KEY_BUTTON_PIN);
  BSP_PB_Init (BUTTON_KEY, BUTTON_MODE_EXTI);
}
コード例 #17
0
/**
 * @brief  Set in Output mode the IRQ.
 * @param  None
 * @retval None
 */
static void set_irq_as_output(void)
{
  HAL_GPIO_WritePin(BNRG_SPI_IRQ_PORT, BNRG_SPI_IRQ_PIN, GPIO_PIN_SET);
  HAL_LPPUART_GPIO_Set_Mode(BNRG_SPI_IRQ_PORT, BNRG_SPI_IRQ_PIN_POSITION, GPIO_MODE_OUTPUT_PP);
  __HAL_GPIO_EXTI_CLEAR_IT(BNRG_SPI_IRQ_PIN);
}
コード例 #18
0
ファイル: port.c プロジェクト: bittercrow/btstack
void EXTI15_10_IRQHandler(void){
	__HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_11);
	if (cts_irq_handler){
		(*cts_irq_handler)();
	}
}