文章目录 前言 1 看门狗(监控芯片) 2 相关寄存器 2.1 WDCR看门狗控制寄存器 2.2 WDCNTR看门狗计数器寄存器 2.3 WDKEY看门狗复位寄存器 2.4 SCSR系统控制和状态寄存器 3 看门狗电路 4 看门狗例程 例程功能描述 将中断向量表的WAKEINT指向ISR:wakeint_isr 使能看门狗中断 输入安全秘钥,重置看门狗计数器 使能看门狗(未分频) 5 看门狗中断响应时间分析 5.1 看门狗计数时钟不分频 5.2 看门狗计数时钟64分频 总结 前言 随开发板带的教程并没有给出WatchDog的解释和例程。
通过TI给出的源码结合调试开发板,正式看懂WatchDog。
特此记录,加深印象~ 1 看门狗(监控芯片) 在由单片机构成的微型计算机系统中,由于单片机的工作 常常会受到来自外界电磁场的干扰,造成各种寄存器和内存的数据混乱,会导致程序指针错误,不在程序区,取出错误的程序指令 等,都有可能会陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续正常工作,导致整个系统的陷入停滞状态,发生不可预料的后果。
看门狗,又叫 WatchDog,从本质上来说就是一个定时器电路,一般有一个输入和一个输出,其中输入叫做喂狗,输出一般连接到另外一个部分的复位端,一般是连接到单片机。
看门狗的功能是 定期查看芯片内部的情况,一旦发生错误就向芯片发出重启信号。
看门狗命令在程序的中断中拥有最高的优先级。
2 相关寄存器 2.1 WDCR看门狗控制寄存器
WDPS:决定看门狗计数时钟频率WDDIS:决定看门狗的使能WDCHK:应为101
2.2 WDCNTR看门狗计数器寄存器
WDCNTR:看门狗计数器当前值
2.3 WDKEY看门狗复位寄存器
WDKEY:写0x55+0xAA会清除WDCNTR,即重置计数器
2.4 SCSR系统控制和状态寄存器
WDENNIT:看门狗中断使能。为0时为看门狗复位,为1时为看门狗中断。
3 看门狗电路
OSCCLK经分频和WDCR分频后,若WDDIS为0,则看门狗计数器工作。当没有正确的安全狗秘钥,计数器计满后溢出可产生输出512个OSCCLK时钟的脉冲信号。该信号作为复位信号WDRST还是中断信号WDINT由SCSR的WDENNIT决定。
当复位RST或者正确的秘钥WDKEY会重置看门狗计数器。
4 看门狗例程 TI官网的例程如下:
//###########################################################################
//
// FILE: Example_2833xWatchdog.c
//
// TITLE: DSP2833x Watchdog interrupt test program.
//
// ASSUMPTIONS:
//
// This program requires the DSP2833x header files.
//
// DESCRIPTION:
//
// This program exercises the watchdog.
//
// First the watchdog is connected to the WAKEINT interrupt of the
// PIE block. The code is then put into an infinite loop.
//
// The user can select to feed the watchdog key register or not
// by commenting one line of code in the infinite loop.
//
// If the watchdog key register is fed by the ServiceDog function
// then the WAKEINT interrupt is not taken. If the key register
// is not fed by the ServiceDog function then WAKEINT will be taken.
//
// Watch Variables:
// LoopCount for the number of times through the infinite loop
// WakeCount for the number of times through WAKEINT
//
//##########################################################
