我怎样才能在微控制器中捕获意外重置

How can I a catch an unexpectedly reset in a microcontroller

我正在使用 MCF51EM256 飞思卡尔微控制器,但我在闪存编程方面遇到了一些问题。

为了使我的软件持久化,我试图在外部闪存中存储一​​些变量,以便从意外关机中恢复。

有时,当我测试关闭MCU 的工作时,它会不断重置。可能是关机时写入任何flash地址出错,之后无法正常读取。

我的问题是,有一种方法可以捕获导致我的微控制器重置的致命异常吗?

MCF51EM256 Reference Manual

如果所描述的行为确实是由您假设的原因引起的,您可以保护自己不使用闪存中不一致的写入值,并在闪存写入结束时将 "magic word" 写入已知位置。

关机时,清除你的 "magic word",然后像你已经做的那样刷新你的存储值,最后将 "magic word"(比如 0x31419265)写入一个已知的闪存位置。

启动时,检查这个值。如果它是你期望的值,你可以使用其他变量,如果不是,你必须假设闪存写入失败并忽略它们(我假设你需要一些合理的默认值)。