欢迎光临散文网 会员登陆 & 注册

STM32Cubev6 外部中断

2021-02-11 00:11 作者:僚机Wingplane  | 我要投稿

工作环境:

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


STM32Cubev6 外部中断的评论 (共 条)

分享到微博请遵守国家法律