0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32L552开发板——外部中断

STM32单片机 来源:STM32单片机 2020-05-29 17:07 次阅读

上回向大家介绍了如何使用GPIO口的输出功能点亮一盏LED灯,以及使用GPIO口的输入功能读取按键的状态控制LED的闪烁频率,然鹅,获取按键的状态采用的是主循环查询的方法,这有一个弊端,试想当主循环的循环周期非常长的时候,比如夸张点说要1秒,那就得一直按着按键等到程序扫描到按键的输入引脚后才能放开,这个等待时间最长需要1秒,这是很糟糕的,我可没有这个耐心去等,比如在将一个数从1调节到100的时候,那后果是可想而知的。为此,就有必要引入一个叫中断的神奇东西,程序中的中断,会把正在运行的普通程序或者低级的中断服务程序打断,先运行本中断服务函数内的程序,就好比我们日常生活中的突发事件,你正在洗衣服,突然快递小哥到你家门口了,你得放下手上的衣服先去取个快递,总不能让快递小哥在门口等你把衣服洗完吧。中断还有很多种分类,在普通的51单片机中有三类中断共五个中断源,分别是外部中断0和1、定时器中断0和1以及串口中断,而在STM32中的中断那可多了去了,比方说有GPIO外部中断、定时器中断、串口中断、DMA中断、ADC中断等等等等,每个中断都有它独特的功能,而本次我们需要的就是这当中的GPIO外部中断,好了,废话不多说,接下来我们就来研究研究STM32L552的外部中断是如何使用的。

评测内容

使用外部中断获取按键的状态,并调节LED灯闪烁的频率。

所需元件

1、STM32L552ZET6Q;

2、板载红色LED(LD3);

3、板载蓝色按键(USER)。

评测步骤 01

将按键引脚配置成外部中断模式,打开上回创建的STM32CubeMX工程,将芯片的PC13引脚按照步骤配置成下图所示的设置,第五步为设置程序中的引脚别名,可根据自己的需求进行设置

02

使能外部中断并设置中断优先级,按照下图所示步骤及内容设置,中断优先级可自己根据需要设置

03

保存工程并生成代码工程。

04

打开代码工程,发现main.c文件中的GPIO口配置函数多了如下两行设置中山优先级和使能中断的代码

05

在stm32l5xx_it.c文件中也多了一段中断服务函数的代码

06

跳转到HAL_GPIO_EXTI_IRQHandler函数的实现,该函数的内容如下

其中的HAL_GPIO_EXTI_Rising_Callback和HAL_GPIO_EXTI_Falling_Callback函数就是外部中断的回调函数,两个函数内分别有如下注释:

意思是这两个函数在用户需要的时候可以在用户文件上实现,实现的内容就是用户需要本次中断执行的内容。

07

回到main.c文件,添加如下函数的实现

USER_BUTTON为一个全局变量,在文件开头进行定义:_Bool USER_BUTTON = 0;

08

在主函数的循环中添加如下代码;

一切就绪,重新编译连接并

下载到开发板上,按下按键观察程序运行情况,还是跟上回的一样,实现了使用外部中断检测按键对LED的闪烁频率进行调节。

总结

得益于STM32CubeMX的强大功能以及HAL库的完美包装,外部中断的实现似乎并没有那么难(相比于标准固件库来说真的是简单了不少),只需要自己实现一个回调函数就好了,对快速开发是方便了不少。好了,本次评测就到此结束,感谢您的阅读。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    240

    文章

    23128

    浏览量

    658263
  • 开发板
    +关注

    关注

    25

    文章

    4933

    浏览量

    97159
  • 外部中断
    +关注

    关注

    1

    文章

    131

    浏览量

    15801

原文标题:分享 | 人生中的首块STM32L552开发板——外部中断

文章出处:【微信号:STM32_STM8_MCU,微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    STM32L552在实际应用中的功耗高于预期的原因是什么?如何解决?

    STM32L552在实际应用中的功耗高于预期。
    发表于 03-20 06:19

    为什么无法通过调试器连接到STM32L552

    无法通过调试器连接到STM32L552,或者编程失败
    发表于 03-20 06:14

    无法从低功耗模式中正确唤醒STM32L552怎么办?

    STM32L552无法从低功耗模式中正确唤醒
    发表于 03-20 08:07

    【NUCLEO-L552ZE-Q开发板试用连载】NUCLEO-L552ZE-Q开发板试用

    处理器产品的开发使用。评测计划:1、根据ST官方给出的datasheet,熟悉NUCLEO_L552ZE_Q_STM32Nucleo_144 开发板的硬件资源,STM32L552微控制
    发表于 03-11 15:35

    【NUCLEO-L552ZE-Q开发板试用连载】+硬件介绍与初步上手

    价格便宜,因此受到很多人的欢迎。相比起以前的nucleo-144系列开发板,这块开发板提供了一个新的接口—USB Type C,这个接口也是STM32L552提供的新接口之一。下面就由笔者向大家介绍这块
    发表于 04-25 22:04

    【NUCLEO-L552ZE-Q开发板试用连载】+示例开发一:STM32L552与RK3399使用USB通信

    这个例子介绍一下STM32L552的USB功能的使用,在这里,STM32L552做USB Device,RK3399做USB Host首先在cubemx里面选上USB外设与USB的协议栈 然后USB
    发表于 04-25 22:44

    STM32L552如何交换闪存组?

    STM32L552 的 SWAP_BANK 有点在 eeprom 中,但我们想在自己的引导加载程序中动态交换闪存组,并且不想使 eeprom 的生命周期过期,在没有 eeprom 设置的情况下交换内存的任何选项?
    发表于 12-01 06:33

    有没有人让USB在STM32L552上作为VCP运行?

    有没有人让 USB 在 STM32L552 上作为 VCP 运行?我们在通过 VCP 将 USB 连接到 PC 的情况下运行系统时遇到问题。我们使用 MXCube 5.6.1 版并使用 USB
    发表于 12-28 06:24

    关于STM32L552的功耗问题

    我们选用STM32L552 ,因为看指标,这款芯片的功耗很低,看指标 106 μA/MHz Run mode但是我们实测下来,2MHz的时候 电流为0.89mA16MHz的时候电流为2.8mA。差异
    发表于 08-07 09:14

    首次使用STM32L552开发板的一些步骤以及电脑系统和开发软件

    带着一颗追求新产品新功能的心以及试一试的态度,按要求在帖子里回复了自己的想法,没想到结果被选中了,不得不说,这是我人生中的首次评测,内心无比的激动,也无比的忐忑,激动是因为我很荣幸地申请到了这次NUCLEO-L552ZE-Q开发板的评测资格
    的头像 发表于 04-28 10:10 7556次阅读

    STM32L552开发板——开发环境

    值得注意的是,只有安装STM32CubeMX的5.6.0版本,才能有对STM32L5系列微控制器的支持,而社区目前能下载到的为5.3.0版本,所以需要到ST官网下载,我这里给大家贴上下载地址:STM32CubeMX下载,方便大家
    的头像 发表于 05-29 17:09 4304次阅读
    <b class='flag-5'>STM32L552</b><b class='flag-5'>开发板</b>——<b class='flag-5'>开发</b>环境

    STM32f10x 外部中断中断分组

    利用外部中断来实现按键控制LED灯的亮灭。实验工具:MDK5,STM32F103ZET6开发板使用固件库编程LED灯引脚PD13,按键PE0首先了解一下32的
    发表于 11-23 18:06 4次下载
    <b class='flag-5'>STM32</b>f10x <b class='flag-5'>外部</b><b class='flag-5'>中断</b>及<b class='flag-5'>中断</b>分组

    野火F1开发板STM32案例-外部中断(按键)使用

    野火F1开发板STM32案例-外部中断(按键)使用硬件平台野火STM32F103ZET6 霸道V2开发板
    发表于 11-24 16:36 1次下载
    野火F1<b class='flag-5'>开发板</b><b class='flag-5'>STM32</b>案例-<b class='flag-5'>外部</b><b class='flag-5'>中断</b>(按键)使用

    CubeMX系列教程——4 外部中断

    这篇文章将使用STM32CubeMX生成外部中断初始代码,并添加测试代码。开发板使用的是原子STM32F407
    发表于 12-05 13:36 11次下载
    CubeMX系列教程——4 <b class='flag-5'>外部</b><b class='flag-5'>中断</b>

    如何对GD32F310开发板外部中断进行测试呢

    通过例程来测试下开发板外部中断。设置为上升沿触发,LED指示灯,中断一次,状态反转一次。
    的头像 发表于 09-30 14:39 1318次阅读
    如何对GD32F310<b class='flag-5'>开发板</b>的<b class='flag-5'>外部</b><b class='flag-5'>中断</b>进行测试呢