前面我们已经初步学习了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灯的亮灭。
第一步 创建工程
前面我们也已经说过了点击这两处都可以创建一个新的工程文件,在此再重复一遍,为了从没接触过这款软件,也给懒得看前面的使用方法的小伙伴提供方法。
在①上面选择自己用的芯片系列,点击②中的芯片对应封装。
如下图便进入了配置界面,点击下面的芯片引脚进行选择我们需要配置的功能,我们在本节中选择GPIO的GPIO_EXTI功能。根据自己硬件支持去配置相应引脚的功能。(题外话:在工作的实际项目中,我们做软件编写的并不能天马行空的去选择引脚配置,毕竟我们不是一个人在战斗,我们也要考虑硬件工程师在设计的一些限制,对软件工程师来说,仅仅只是改个引脚的代码,如果改硬件成本等都是问题,我们是一个团队!)
在选择完GPIO的功能之后,想必也知道了下一步就是去配置GPIO的初始化参数。如下图所示,点击①处,然后在②处依次点击每个引脚后,在③中根据自己的硬件支持去配置初始化参数, 特别要注意一下引脚上下拉,这对我们后来写代码有一定的影响还特别不容易发现这个问题。
配置完GPIO的初始化参数后,我就应该去配置IO的外部中断了,点击①处NVIC(这个记住就是中断),之后点击②处进行配置中断优先级分组,最后在③处根据自己的需求去配置外部中断的优先级。
完成GPIO的外部中断优先级配置之后点击下图①处进行配置外部高速时钟输入源配置。
配置系统的时钟树,前面已经详细讲过了。到此GPIO外部中断基本上就算配置完了,下面的步骤就是输出项目工程的配置。
配置项目工程的名称,编辑器,堆栈大小等。
设置项目的固件相关参数,完成后点击右上角生成项目工程
打开我们的项目工程看看gpio.c中的引脚看看STM32CubeMX是怎样自己配置的,对比一下看看有没有出入,顺便学习一下人家的规范代码书写风格。
我们在gpio.c中的用户编写代码区编写我们的外部按键中控制LED的闪烁(在用户区编写代码是为了下次编辑工程不会删掉我们编写的代码)
我们已经在外部中断回调函数中编写了控制逻辑,所以main.c的while循环中就不用写了。当外部按键按下,会根据我们自己配置的是上升沿还是下降沿触发外部中断,然后在中断回调函数中判断是哪个按键按下进行相应的控制。
第二步 下载验证
将我们的项目编译然后下载到自己的开发板中验证程序是否满足项目要求。本博主给的项目工程代码都是亲测完成的,如果在自己的配置过程中出现问题欢迎留言,相互学习!
总结
本节通过GPIO的外部中断功能,实现了上一节中按键输入控制LED等闪烁。具体的操作不是很繁琐,多练习几遍,熟能生巧。再重复一遍,一定要自己亲自上手去尝试,这样的好处慢慢就会体会到了!本节就到这里。
前面我们已经初步学习了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灯的亮灭。
第一步 创建工程
前面我们也已经说过了点击这两处都可以创建一个新的工程文件,在此再重复一遍,为了从没接触过这款软件,也给懒得看前面的使用方法的小伙伴提供方法。
在①上面选择自己用的芯片系列,点击②中的芯片对应封装。
如下图便进入了配置界面,点击下面的芯片引脚进行选择我们需要配置的功能,我们在本节中选择GPIO的GPIO_EXTI功能。根据自己硬件支持去配置相应引脚的功能。(题外话:在工作的实际项目中,我们做软件编写的并不能天马行空的去选择引脚配置,毕竟我们不是一个人在战斗,我们也要考虑硬件工程师在设计的一些限制,对软件工程师来说,仅仅只是改个引脚的代码,如果改硬件成本等都是问题,我们是一个团队!)
在选择完GPIO的功能之后,想必也知道了下一步就是去配置GPIO的初始化参数。如下图所示,点击①处,然后在②处依次点击每个引脚后,在③中根据自己的硬件支持去配置初始化参数, 特别要注意一下引脚上下拉,这对我们后来写代码有一定的影响还特别不容易发现这个问题。
配置完GPIO的初始化参数后,我就应该去配置IO的外部中断了,点击①处NVIC(这个记住就是中断),之后点击②处进行配置中断优先级分组,最后在③处根据自己的需求去配置外部中断的优先级。
完成GPIO的外部中断优先级配置之后点击下图①处进行配置外部高速时钟输入源配置。
配置系统的时钟树,前面已经详细讲过了。到此GPIO外部中断基本上就算配置完了,下面的步骤就是输出项目工程的配置。
配置项目工程的名称,编辑器,堆栈大小等。
设置项目的固件相关参数,完成后点击右上角生成项目工程
打开我们的项目工程看看gpio.c中的引脚看看STM32CubeMX是怎样自己配置的,对比一下看看有没有出入,顺便学习一下人家的规范代码书写风格。
我们在gpio.c中的用户编写代码区编写我们的外部按键中控制LED的闪烁(在用户区编写代码是为了下次编辑工程不会删掉我们编写的代码)
我们已经在外部中断回调函数中编写了控制逻辑,所以main.c的while循环中就不用写了。当外部按键按下,会根据我们自己配置的是上升沿还是下降沿触发外部中断,然后在中断回调函数中判断是哪个按键按下进行相应的控制。
第二步 下载验证
将我们的项目编译然后下载到自己的开发板中验证程序是否满足项目要求。本博主给的项目工程代码都是亲测完成的,如果在自己的配置过程中出现问题欢迎留言,相互学习!
总结
本节通过GPIO的外部中断功能,实现了上一节中按键输入控制LED等闪烁。具体的操作不是很繁琐,多练习几遍,熟能生巧。再重复一遍,一定要自己亲自上手去尝试,这样的好处慢慢就会体会到了!本节就到这里。
举报