如何在stm32f1的HAL库中使用EXTI中断?

问题描述 投票:0回答:1

我需要在我的stm32f103板的A1端口上配置一个外部中断。我使用stm32cubemx创建了一个模板,但是我尝试手动配置中断,因为这是我已经编写的代码的新功能。我正在阅读许多主题,但找不到任何解决方案。在这个项目中,我使用HAL库,并按照以下步骤操作:

配置GPIO

      GPIO_InitStruct.Pin = GPIO_PIN_1;
      GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
      GPIO_InitStruct.Pull = GPIO_NOPULL;
      GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
      HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

启用IRQ

     HAL_NVIC_SetPriority(EXTI1_IRQn, 3, 0);
     HAL_NVIC_EnableIRQ(EXTI1_IRQn);

自定义回调

      void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
     {
      if(GPIO_Pin == STEP_PIN)
      {
        GlobalMotorData.step.longint++;
      }
     }

我在新的.c文件中编写了回调函数,并且我没有触及stm32f1xx_hal_gpio.c内部的同一函数

我未启用宏HAL_EXTI_MODULE_ENABLED,因为该项目找不到对应的.h头文件,但没有宏,代码生成没有错误。

我忘记了什么?

谢谢

interrupt hal stm32f1
1个回答
0
投票

您很可能会错过EXTI1中断处理程序:

void EXTI1_IRQHandler(void)
{
    HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_1);
}
© www.soinside.com 2019 - 2024. All rights reserved.