我正在使用MCF51EM256飞思卡尔微控制器,而且我遇到了闪存编程的一些问题。
为了使我的软件持续存在,我试图在外部闪存中存储一些变量,以便从意外停机中恢复。
有时,当我测试我的工作关闭MCU时,它会不断重置。这可能是由于在关机期间写入任何闪存地址时出错,导致无法正常读取。
我的问题是,有一种方法可以捕获这个致命的异常,导致我的微观重置吗?
答案 0 :(得分:4)
如果所描述的行为确实是由您所假设的原因引起的,那么您可以保护自己免于使用闪烁的不一致写入的值来使用"魔术词"在flash写入结束时写入已知位置。
关机后,清除你的#34;魔术词",然后像你一样闪现你存储的值,最后写出"魔术词" (如0x31419265)到已知的闪存位置。
启动时,检查此值。如果它是你期望的值,你可以使用其他变量,如果没有,你必须假设闪存写入失败并忽略它们(你需要一些合理的默认值,我假设)。