如果想要实现利用中断复位,我所知道的有两种方式:看门狗中断和无中断服务程序的中断。
一、利用看门狗中断实现复位
单片机中看门狗的作用在这里就不详细说了,看门狗中断的功能之一是,防止单片机程序陷入预料之外的死循环或者单片机程序跑飞。
如何实现看门狗中断复位呢?首先我们要预估一段程序的最长运行时间,估算出来后,再加上一些时间余量,把这个时间作为看门狗的“喂狗”时间,在这个时间即将达到时,要及时“喂狗”(也就是把看门狗时间配置寄存器的值重新设置),这样看门狗会重新计时,程序继续正常运行。一旦程序跑飞或者进入一个预料之外的死循环,那么因为程序一直在这里运行,不会再运行到“喂狗”程序中,所以当看门狗寄存器的值达到预定值后,就产生了中断,这个中断让单片机复位。
二、利用没有中断服务程序的中断复位
这个功能我在MSP430单片机上试验过,没有再别的单片机上实验,所以不确定别的单片机是否也会这样。
具体实现过程是,在程序中使能某个中断,例如端口中断,串口中断等,但是不写这个中断的服务程序,这样,当满足这个中断的条件出现时,由于找不到中断服务程序,单片机就会复位。