简介
STC8A8K64S4A12系列单片机的复位分为硬件复位和软件复位两种。
硬件复位时,所有寄存器的值会复位到初始值,系统会重新读取所有的硬件选项。同时根据硬件选项所设置的上电等待时间进行上电等待。
软件复位时,除与时钟相关的寄存器保持不变外,其余的所有寄存器的值会复位到初始值,软件复位不会重新读取所有的硬件选项。
硬件复位:看门狗
为了防止“系统在异常情况下,受到干扰,MCU/CPU程序跑飞,导致系统长时间异常工作”的情况发生,而设计了一种用于检测程序运行状态的芯片或电路,俗称看门狗(即Watchdog)。
看门狗通常有一个输入信号和一个输出信号。输入信号也称“喂狗”,输出信号关联MCU的复位端。系统运行后启动看门狗计数器,看门狗开始计数,当计数满后未收到清零信号(喂狗),看门狗计数器溢出,触发看门狗中断,输出控制MCU复位。
看门狗寄存器操作
WDT_FLAG
看门狗发生溢出时,硬件自动置 1 ,软件清零
EN_WDT
看门狗使能,0 无影响;1 启动开门狗定时器
CLR_WDT
看门狗定时器清零(喂狗)
1 清零看门狗定时器,才不会发生重启,重启时硬件自动将此位复位
WDTPS[2:0]
看门狗定时器时钟分频系数
代码:
void WDT_Init() //看门狗初始化
{
WDT_CONTR = 0x26; //2s
}
void WDG_Feed() //喂狗
{
WDT_CONTR |= 0x10; //CLR_WDT位置1,看门狗定时器重新计数
}
|