当程序跑飞时,我们常通过复位来解决,复位也分为很多种:
一、硬件复位
通过复位引脚来复位,如开发板自带复位按键
二、外加看门狗
对程序外加一个看门狗,通过看门狗喂狗来判断程序的状态,当程序跑飞后会自动复位;看门狗不需要人工干预,非常方便
独立看门狗原理:
单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路就是为了避免这种情况的发生,看门狗的作用就是在一定时间内(通过定时计数器实现)没有接收喂狗信号(表示MCU已经挂掉),便实现处理器的自动复位重启(发送复位信号)。
三、自写程序实现
自己写一个程序,每一次程序都在run()里面运行,当程序跑飞后,会进入错误中断里,然后在错位中断里跳到程序之前运行的位置,类似于c#语言的try catch语句原理,把容易跑飞的功能放在run()运行,并保存好之前的地址,跑飞后通过错误中断跳到刚记录的地址。
该方法摘自一位网友,尚未实现。