STM32 G0系列,程序运行在BANK1,擦写BANK2失败
STM32 g0系列双BANK芯片,程序运行在BANK1时,想要擦写BANK2,会发生Error或者HardFault。是否不支持这样的操作? {:smile:} STM32 G0系列的Flash可能具有保护机制,以防止在程序运行时对正在使用的Bank进行擦写操作。 在Dual bank模式下,Bank1和Bank2的切换需要特定的操作,如设置FB_MODE寄存器。如果切换操作不正确或时机不合适,可能导致无法访问或擦写目标Bank。 可能是因为 Flash 操作过程中有中断或时序要求未能满足。 我记得STM32 G0系列在不同BANK操作Flash时需要特别注意,你设置了相应的Flash解锁和中断屏蔽了吗? 有没有检查一下Flash控制寄存器的配置,比如确保写保护和错误中断都关闭? 通常擦写Flash时需要禁用中断和可能的预取功能,否则容易触发硬件错误。 你是不是直接用CPU访问BANK2的内容了?擦写期间这样操作可能会导致HardFault。 我建议你检查一下Flash加速器的状态寄存器,看是否有提示具体错误。 可以试试看让程序执行到RAM中,再进行BANK2的擦写,这样可以避免运行Bank冲突。 BANK1和BANK2的擦写权限和地址配置是独立的,可能需要单独检查擦写权限配置。 有没有用CubeMX生成代码?它能帮你正确配置Flash操作相关的寄存器。 STM32的不同系列芯片对于Flash操作支持会有差异,确认下G0是否有特别限制。 你考虑过分步调试擦写流程吗?可能在某个步骤就出现了隐性问题。 请问具体是有什么不同? 我是来学习的
页:
[1]