STM32CubeMX学习笔记五 《GPIO 外部中断》

前言

废话: 黑曼巴、新冠疫情反复、中印冲突国内经济民生都受到相应的影响,这个2020注定不平凡啊!不管怎样,我们都要以积极的心态去生活,“阳光怎在风雨后”。来吧学习吧!这个歌词暴露年龄了 haha。

前面我们已经初步学习了STM32CubeMX软件怎样去建立工程及配置GPIO的输入输出,到目前相信对软件的使用方法已经相对熟悉了很多,最起码知道该去做什么。本节我们继续学习用STM32CubeMX软件去配置GPIO的外部中断这个功能,下一节看看串口的配置方法。

本博主使用的STM32F7这款芯片,正好上次项目中用到了就顺手用它来复习一下STM32CubeMX的配置方法。芯片不重要方法很重要。

外部中断简介:
STM32F7 的每个 IO 都可以作为外部中断的中断输入口(除去电源和GND等特殊的IO), STM32F7 的中断控制器支持 22 个外部中断/事件请求。每个中断设有状态位,每个中断/事件都有独立的触发和屏蔽设置。
STM32F7的 23 个外部中断为:
EXTI 线 0~15:对应外部 IO 口的输入中断。
EXTI 线 16:连接到 PVD 输出。
EXTI 线 17:连接到 RTC 闹钟事件。
EXTI 线 18:连接到 USB OTG FS 唤醒事件。
EXTI 线 19:连接到以太网唤醒事件。
EXTI 线 20:连接到 USB OTG HS(在 FS 中配置)唤醒事件。
EXTI 线 21:连接到 RTC 入侵和时间戳事件。
EXTI 线 22:连接到 RTC 唤醒事件。
EXTI 线 23:连接到 LPTIM1 异步事件。

本节通过STM32F7这款芯片外部 IO 口的中断功能,通过中断的功能,实现上一节中按键控制LED灯的亮灭。

第一步 创建工程

  1. 前面我们也已经说过了点击这两处都可以创建一个新的工程文件,在此再重复一遍,为了从没接触过这款软件,也给懒得看前面的使用方法的小伙伴提供方法。
    在这里插入图片描述

  2. 上面选择自己用的芯片系列,点击中的芯片对应封装。 在这里插入图片描述

  3. 如下图便进入了配置界面,点击下面的芯片引脚进行选择我们需要配置的功能,我们在本节中选择GPIO的GPIO_EXTI功能。根据自己硬件支持去配置相应引脚的功能。(题外话:在工作的实际项目中,我们做软件编写的并不能天马行空的去选择引脚配置,毕竟我们不是一个人在战斗,我们也要考虑硬件工程师在设计的一些限制,对软件工程师来说,仅仅只是改个引脚的代码,如果改硬件成本等都是问题,我们是一个团队!)
    在这里插入图片描述

  4. 在选择完GPIO的功能之后,想必也知道了下一步就是去配置GPIO的初始化参数。如下图所示,点击处,然后在处依次点击每个引脚后,在中根据自己的硬件支持去配置初始化参数, 特别要注意一下引脚上下拉,这对我们后来写代码有一定的影响还特别不容易发现这个问题。
    在这里插入图片描述

  5. 配置完GPIO的初始化参数后,我就应该去配置IO的外部中断了,点击处NVIC(这个记住就是中断),之后点击处进行配置中断优先级分组,最后在处根据自己的需求去配置外部中断的优先级。
    在这里插入图片描述

  6. 完成GPIO的外部中断优先级配置之后点击下图处进行配置外部高速时钟输入源配置。
    在这里插入图片描述

  7. 配置系统的时钟树,前面已经详细讲过了。到此GPIO外部中断基本上就算配置完了,下面的步骤就是输出项目工程的配置。
    在这里插入图片描述

  8. 配置项目工程的名称,编辑器,堆栈大小等。
    在这里插入图片描述

  9. 设置项目的固件相关参数,完成后点击右上角生成项目工程
    在这里插入图片描述

  10. 打开我们的项目工程看看gpio.c中的引脚看看STM32CubeMX是怎样自己配置的,对比一下看看有没有出入,顺便学习一下人家的规范代码书写风格。
    在这里插入图片描述

  11. 我们在gpio.c中的用户编写代码区编写我们的外部按键中控制LED的闪烁(在用户区编写代码是为了下次编辑工程不会删掉我们编写的代码)
    在这里插入图片描述

  12. 我们已经在外部中断回调函数中编写了控制逻辑,所以main.c的while循环中就不用写了。当外部按键按下,会根据我们自己配置的是上升沿还是下降沿触发外部中断,然后在中断回调函数中判断是哪个按键按下进行相应的控制。
    在这里插入图片描述

第二步 下载验证

将我们的项目编译然后下载到自己的开发板中验证程序是否满足项目要求。本博主给的项目工程代码都是亲测完成的,如果在自己的配置过程中出现问题欢迎留言,相互学习!

GPIO 外部中断工程如下:
百度链接:https://pan.baidu.com/s/1p0Vg7WtiUjPZ6DzGHo-1zw
提取码:q61o

总结

本节通过GPIO的外部中断功能,实现了上一节中按键输入控制LED等闪烁。具体的操作不是很繁琐,多练习几遍,熟能生巧。再重复一遍,一定要自己亲自上手去尝试,这样的好处慢慢就会体会到了!本节就到这里。

作者:Cary.chen

猜你喜欢

转载自blog.csdn.net/weixin_43123205/article/details/106797411