STM32
直播中

小峰

12年用户 903经验值
私信 关注
[问答]

G0B1CET6擦除bank1的flash会跑飞,为什么?

G0B1CET6,擦除bank1的flash会跑飞,单步运行ok,全速运行会卡死。
有两个项目虽然程序有些不一样,但是大体方案一致。他俩的区别是一个用了bank2,擦了bank2。一个没用到就擦bank1。只擦bank1这个不会出现跑飞。
目前关闭了中断,还是存在跑飞的现象,还有其他方法能定位问题吗,比如标志位。

回帖(1)

张桂英

2024-6-4 16:44:32
G0B1CET6是一款基于ARM Cortex-M4F内核的微控制器,具有双Bank Flash存储器。在您的描述中,当擦除Bank1的Flash时,程序在单步运行时没有问题,但在全速运行时会出现卡死现象。这可能是由于以下几个原因导致的:

1. Flash擦除过程中的干扰:在全速运行时,擦除Flash可能会受到其他操作的干扰,导致擦除不完整或错误。这可能是由于硬件设计、电源稳定性或电磁干扰等原因造成的。

2. Flash擦除后的校验问题:在擦除Flash后,需要对擦除后的区域进行校验,以确保擦除操作成功。如果校验失败,可能会导致程序运行异常。

3. 程序逻辑问题:在全速运行时,程序可能在执行擦除操作时,同时执行其他关键任务,导致程序运行异常。这可能是由于程序逻辑设计不当或资源分配不合理造成的。

为了定位问题,您可以尝试以下方法:

1. 增加日志输出:在程序中增加日志输出,记录关键操作的状态和时间戳,以便分析问题发生的原因。

2. 使用调试器:使用调试器逐步跟踪程序执行过程,观察在擦除Flash时程序的状态和行为,以便找到问题所在。

3. 检查硬件设计:检查硬件设计是否合理,包括电源稳定性、电磁干扰等因素,以确保硬件环境对程序运行没有负面影响。

4. 优化程序逻辑:检查程序逻辑,确保在擦除Flash时,程序不会同时执行其他关键任务,以避免程序运行异常。

5. 校验Flash擦除结果:在擦除Flash后,增加校验操作,确保擦除操作成功,避免程序运行异常。

6. 尝试使用其他Flash擦除方法:如果可能,尝试使用其他Flash擦除方法,以排除当前方法可能导致的问题。

通过以上方法,您应该能够定位问题并找到解决方案。希望这些建议对您有所帮助。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分