1、初始化基础 SYS,RCC,时钟配置,路径选择等

    2、用PB2来做外部中断,点中,选择外部中断
    image.png
    3、初始化该引脚中断
    image.png

    GPIO mode 选择中断或者事件,以及方式
    GPIO Pull-up/Pull-down 选择上下拉

    4、使能该中断
    image.png
    5、为该中断分配优先级,生成代码
    image.png
    6、在stm32f1xx_it.c中有此外部中断的服务函数
    image.png
    7、点击HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_5);转到定义处,可看到其函数定义,__weak void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);为外部中断的回调函数,是一个虚函数,可由用户重新定义。
    image.png
    8、在main.c文件中可重新定义该回调函数,并写关于外部中断的内容
    image.png

    在用回调函数时,发现外部中断只会有一个回调函数,不同外部中断触发后调用的是同一个函数,这对有时候想要在不同文件中写不同的外部中断文件来说可能不太方便,如果有这方面需求,可按照以下方案配置

    1、在NVIC的Code generation中,将外部中断线的Generate IRQ handler取消选中,然后生成代码,记得中断还是要使能,只是不生成中断服务函数代码。
    image.png
    2、自己编写中断服务函数代码,记得清除外部中断标志。
    image.png

    1. void EXTI2_IRQHandler()
    2. {
    3. __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_2);
    4. }