You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何STM32启动代码中未定义Flash全局中断处理函数?

STM32F407 Flash中断向量表预留问题解答

问题描述

我正在基于裸机实现STM32F407驱动,处理Flash存储器操作的中断处理函数时遇到困惑。根据《STM32F405xx/07xx及STM32F415xx/17xx参考手册》向量表章节第372页,Flash全局中断处理函数的地址对应0x0000 0050,但查看STM32官方提供的启动代码,该位置却是预留项:

.word RTC_WKUP_IRQHandler                     /* RTC Wakeup interrupt through the EXTI line                         */
  .word 0                                       /* Reserved                                                           */
  .word RCC_IRQHandler                          /* RCC global interrupt    

无法理解ST为何在启动代码中将手册明确标注的Flash中断地址设为预留。

原因分析

  • ST的通用启动代码是为整个STM32F4系列设计的,部分子型号硬件不支持Flash中断,所以统一将该位置设为预留,保证代码在全系列型号上的兼容性。
  • STM32F407确实支持Flash全局中断(包含Flash操作错误、编程/擦除完成等触发源),你只需手动修改启动代码,把预留的.word 0替换为自定义的Flash_IRQHandler函数名即可。
  • 注意:修改向量表后,还需通过寄存器或固件库开启对应的Flash中断使能位,否则即使向量表配置正确,中断也无法正常触发。

内容的提问来源于stack exchange,提问作者abdo Salm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 12:19:57