STM32F7 – HAL – Interrupt handling

Når man bruger CubeMx til at lave den basale kode får man automatisk genereret en interrupt handler for External Interrupts, som vist nedenfor.

 

/**
* @brief This function handles EXTI line0 interrupt.
*/
void EXTI0_IRQHandler(void)
{
  /* USER CODE BEGIN EXTI0_IRQn 0 */
  
  /* USER CODE END EXTI0_IRQn 0 */
  HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);
  /* USER CODE BEGIN EXTI0_IRQn 1 */
  
  /* USER CODE END EXTI0_IRQn 1 */
**
  * @brief  This function handles EXTI interrupt request.
  * @param  GPIO_Pin: Specifies the pins connected EXTI line
  * @retval None
  */
void HAL_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);
    HAL_GPIO_EXTI_Callback(GPIO_Pin);
  }
}

Som det ses er der er en callback med navnet HAL_GPIO_EXTI_Callback(GPIO_Pin). Denne funktion er også lavet som en tilhørende “weak” funktion, så koden vil compile uden problemer, men man vil jo gerne udføre noget når man modtager en interrupt. Det gøres simpelt ved at lave sin egen HAL_GPIO_EXTI_Callback funktion. Denne vil “overrule” den foruddefineret “weak” funktion, og der kan man så håndtere den funktionalitet som man ønsker udført når interrupt’en bliver aktiveret.

Leave a Reply

Your email address will not be published. Required fields are marked *