你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

如何在STM32CubeMX2和HAL2中使用IRQ中断回调

[复制链接]
攻城狮Melo 发布时间:2026-10-29 10:50

摘要

本文提供在STM32CubeMX2中配置IRQ中断请求的分步操作指南,介绍相关函数的存放位置。教程以NUCLEO-C562RE开发板作为示例。

简介

中断请求(Interrupt ReQuest,IRQ)处理函数用于在系统层面处理硬件中断请求。切换至全新HAL2框架后,中断服务函数以及弱回调函数的存放位置发生了改变。

本文对比新旧版本下,IRQ中断服务函数、弱回调函数的存放位置,同时讲解如何开启/关闭对应代码的生成。

前置准备

请确认已经安装如下软件:

本教程使用NUCLEO-C562RE开发板。

一、STM32CubeMX2工程创建与基础配置

按照下面步骤,为NUCLEO-C562RE创建应用工程。本实例实现简单的USART串口中断 + EXTI外部中断。

1.1 创建工程

打开STM32CubeMX2,在首页点击【MCU】方块按钮新建工程。

图片

在MCU名称搜索框输入:STM32C562RE,选中芯片,点击【Continue】。

图片

填写工程名称与存储路径,点击【Automatically Download,Install & Create Project】完成工程创建。

图片

工程创建完成,点击【Launch Project】进入配置界面。

图片

1.2 引脚与外设配置

在STM32CubeMX2,打开【Peripherals】→【Connectivity】,将USART模式选择为Async异步模式。

图片

配置USART2外设参数:

图片

NUCLEO板载VCOM虚拟串口桥,USART2_TX对应PA2、USART2_RX对应PA3。软件默认选中引脚可能不一致,需要往下滚动页面修改USART2的TX/RX GPIO引脚为PA2、PA3。

图片

在右侧快捷菜单打开NVIC配置,开启USART中断。

图片

PC13引脚连接板载用户按键。点击引脚配置图标,为该引脚配置EXTI外部中断。

图片

图片

全部配置完成后生成代码,使用Visual Studio Code打开工程。

**二、IRQ中断服务函数存放位置的改动
**

HAL2框架对中断服务函数做了模块化设计:每一个已启用外设的IRQ中断服务函数,放置到该外设专属文件中。这样提升代码模块化程度,也更方便配合代码预览功能分析代码逻辑。

下面对比新旧版本,示例包含两个中断:NUCLEO-C562RE按键对应的EXTI13外部中断,以及板载STLink虚拟串口对应的USART2中断。

HAL1版本:所有外设中断服务函数全部放在同一个文件,即stm32xyz_it.c。

图片

HAL2新版本:中断服务函数分散存放,路径为generated/hal/,每个外设拥有独立源文件,回调函数默认也存放在对应外设文件。

图片

图片

**三、IRQ回调函数的存放位置
**

弱定义回调函数依旧存放在driver文件夹,文件夹命名改为stm32xyz_drivers/hal。每一个外设驱动文件内都包含该外设对应的回调,全部使用weak弱属性声明。

重大变化:在旧HAL版本,EXTI外部中断的弱回调函数位于stm32xyz_hal_gpio.c;HAL2中EXTI弱回调迁移到stm32xyz_hal_exti.c。逻辑原因:并不是所有EXTI外部中断线路都绑定GPIO引脚。

图片

图片

**四、如何生成自定义IRQ回调处理函数
**

想要在STM32CubeMX2生成自定义IRQ回调处理函数:切换至【Project settings】标签页;通过右侧Quick menu快捷菜单选择【Global services】;在Actions操作列,点击齿轮配置按钮。

图片

在快捷菜单选中目标外设(本例为USART2、EXTI),打开Use register callback和User data。

图片

保存配置、重新生成代码,就可以调用HAL2提供的API完成回调注册。

以EXTI外部中断为例,注册回调API:

图片

EXTI示例代码:

💡HAL2新机制:不再依靠重写库内weak弱函数;调用HAL_XXX_RegisterXXXCallback,把用户自定义回调函数指针注册进去即可生效。

图片

五、功能验证

进入调试模式,在创建的回调函数处设置断点。也可以查看调用栈。

图片

六、总结

本文以NUCLEO-C562RE开发板为例,梳理STM32CubeMX2中IRQ中断配置的关键改动与完整操作流程。

迁移到HAL2框架后,中断服务函数按外设拆分到独立文件,代码模块化更强,可读性与可维护性大幅提升。掌握IRQ回调生成开关,理解回调函数新的存放路径,开发者就可以高效完成项目硬件中断的开发。

赞 收藏 评论0 发布时间:2026-10-29 10:50

举报

0个回答

所属标签

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版