在STM32双Bank切换时,避免Flash擦写期间中断向量表跳飞的关键是确保中断向量表(VTOR)指向当前可执行的Bank,并禁用可能触发中断的源。具体实操:1)在切换前,将VTOR重定位到目标Bank的起始地址(如Bank2的0x08080000),并确保目标Bank已包含有效的向量表;2)在擦写期间,关闭全局中断(如__disable_irq()),或仅禁用可能被触发的中断(如SysTick、外部中断),并确保擦写完成后恢复;3)若使用RTOS,需暂停调度器;4)对于双Bank同时操作,利用STM32的硬件机制(如FMC的Bank切换寄存器)确保CPU从非擦写Bank取指。建议在切换前备份关键状态,并在切换后校验向量表有效性。
mcuku 阿沐 · 2026-08-27