STM32Cubev6 外部中断
工作环境:
STM32CubeMXv6
Keil5
比起直接扫描IO口读取引脚状态进行输入检测的方法,

使用外部中断会更加实用且不会影响主程序的应用状态,进入中断后会改变相应的标志位,而main.c的while循环中则一直查询对应的标志位,只要查到则会执行对应操作。
首先,右键需要检测输入的IO口,勾选GPIO_EXIT5;

打开左侧的下拉框System Core,点击GPIO选项,在下方的配置框中更改GPIO Pull-up/Pull-down:
No pull-up and no pull-down:无上拉下拉
Pull-up:上拉
Pull-down:下拉
User Label:用户命名(选填)

如果有需要更改触发模式的可以在GPIO Mode中修改:
External Interrupt Mode with Rising edge trigger detection:带上升沿触发检测的外部中断模式
External Interrupt Mode with Rising edge trigger detection:带上升沿触发检测的外部中断模式
External Interrupt Mode with Falling edge trigger detection:带下降沿触发检测的外部中断模式
External Interrupt Mode with Rising/Falling edge trigger detection:带上升/下降沿触发检测的外部中断模式
External Event Mode with Rising edge trigger detection:具有上升沿触发检测的外部事件模式
External Event Mode with Falling edge trigger detection:具有下降沿触发检测的外部事件模式
External Event Mode with Rising/Falling edge trigger detection:具有上升/下降沿触发检测的外部事件模式

再打开左侧的下拉框System,点击NVIC选项;

可以在Priority Group中选择中断优先级组;

勾选EXTI line[9:5] interrupts开启中断;

设置完成后
点击Project Manager页面,输入工程名和工程位置,选择工具链和IDE为MDK-ARM,版本为5.27;

打开左侧Code Generater菜单勾选Generate peripheral initialization as a pair of'.c/.h'file per peripheral;

最后点击右上角的GENERATE CODE按钮后生成代码。
生成代码后打开工程文件夹,用Keil5打开工程。

编译,为了使得我们的代码尽可能解耦合,所以我们在工程文件夹中新建一个user_gpioit.c和对应的user_gpioit.h文件,在这个.c文件中我们写入以下函数
在对应头文件user_uart.h中写入以下内容
在主函数的include中加入include
然后再在主循环里加入中断标志位检测
好了,现在我们就可以在main里用外部中断来完成业务了
参考资料:
STM32F7开发指南-HAL库版本_V1.1
HAL库教程4:外部中断 https://yatao.blog.csdn.net/article/details/89164659