历史上的今天
今天是:2025年01月20日(星期一)
2021年01月20日 | 快速学Arm(13)--看门狗(WatchDog)
2021-01-20 来源:eefocus
WatchDog,中文为"看门狗",老外起的名字有时很有趣也很贴切,这些从事技术的老外对生活总是充满了乐观的态度,把工作当成乐趣而不要认为他是痛苦的事情,这样才能把工作做好.否则就不要去做,不仅仅是为了不至于让你变得忧郁,关键是天天做自己认为痛苦的事情,其最终的结果往往也是痛苦的.
一样,我总是喜欢用自己的理解而不是无聊的术语来讲解我所理解的东西.WatchDog是为了能够防止程序跑飞而使用的一种东西.如果你的程序没有跑飞,那么你的程序会定时的去喂的看门狗,如果你的程序跑飞了,那么就不会再去喂狗了,如果超过了喂狗的时间,那么狗就会自己生成一个信号来重新reset你的CPU,重新开始.这是一种在很重要的情况下防止系统跑飞的一种方法.一般的程序也许不需要,但在特殊的情况下可能会需要这种机制.
我们在上一篇的图中,第一个地址段就是为看门狗设置的.

可以看一下实际的电路.SP706的(-RST)输出低电平时会使LPC2478的CPU复位.对于PFI,-PFO两个管脚来讲,当PFI得电压监控输入地于1.25V时,-PF0会置为LOW.但因为PFI在这里接地,-PFO置空,因此没有使用这一功能.
因为-MR,-WDO相连接,因此当Vcc低于复位值,-RST将输出200ms的LOW脉冲.并且如果WDI输出保持高电平1.6s时,看门狗超时,-WDO将置为LOW,也就将-MR置低,一旦-MR置低,-RST便置低,也就将CPU复位.
当WDI超过1.6s没有来脉冲,也会导致-WDO输出低电平,同理也会是-RST产生复位信号.
在文档中介绍超时时间是1.6s,电路中标识为1.2s.我也有点不理解,没有细研究其原因.而控制看门狗的APB寄存器大概是这样的:
Name Description Access ResetValue[1] Address
WDMOD Watchdog mode register. This register contains
the basic mode and status of the Watchdog Timer. R/W 0 0xE000 0000
WDTC Watchdog timer constant register. This register
determines the time-out value. R/W 0xFF 0xE000 0004
WDFEED Watchdog feed sequence register. Writing 0xAA
followed by 0x55 to this register reloads the
Watchdog timer with the value contained in
WDTC. WO NA 0xE000 0008
WDTV Watchdog timer value register. This register
reads out the current value of the Watchdog
timer. RO 0xFF 0xE000 000C
WDCLKSEL Watchdog clock source selection register. R/W 0 0xE000 0010
读书的时候,老师总是要求学生学好英语,学理工科的孩子总是不喜欢,没办法,自己看吧.
看门狗我们也没有必要把他研究得那么明白,讲这东西只是讲个道理,我也懒得把他解释得完全正确,如果中间讲的有问题,大家包涵,以便大家能够理解硬件电路,寄存器以及程序之间的关系.实际上,我们按照参考设计去做就可以了,在应用中,改动看门狗的情况应该不多.
史海拾趣
|
基于微控制器的系统发展日趋精密,给汽车应用带来了新功能,同时也给这些产品认证工程带来了新挑战。随着 RF 技术(如蓝牙和 Wi-Fi)应用越来越广泛,在解决管理条例遵守和法律责任问题方面带来更高的要求。这些问题包括新技术之间的兼容性、新技术 ...… 查看全部问答> |
|
Everyday.Practical.Electronics.Magazine.37-02.-.Jan.2008 Everyday.Practical.Electronics.Magazine.37-02.-.Jan.2008 [ 本帖最后由 tecfighter 于 2009-3-4 07:57 编辑 ]… 查看全部问答> |
|
收到开发板 今天上午 做啦下串口的实验, 其实是很简单的程序 开发 人员已经给设计的差不多啦, 只要做少许的修改 添加上自己的动能就好啦 希望大家多多支持 !! 多提些宝贵的意见!!!共同交流, 共同学习!! [ 本帖最后由 lanyu345 于 2010-4 ...… 查看全部问答> |
|
请教一个问题,在WINCE下,我用HalAllocateCommonBuffer申请了一块内存用来DMA传输,然后通过memcpy将这块内存里面的内容拷贝到另一个区域,现在发现memcpy耗费的时间很长,跟普通用new alloc等申请的内存拷贝相比,慢了大概50倍,想请教这是什么原 ...… 查看全部问答> |
|
我修改了WINCE500\PUBLIC\COMMON\OAK\DRIVERS\TOUCH\TCHMAIN\tchmain.c,但为什么对应生成的touch.dl 按理说对上述的工程进行\"build current project\",应产生对应的dll,但是没有,为什么?应怎样做才行?… 查看全部问答> |
|
我们的设计需要多大容量的芯片?我们的设计能跑多快?这是经常困扰工程师的两个问题.对于前一个问题,我们可能还能先以一个比较大的芯片实现原型,待原型完成再选用大小合适的芯片实现.对于后者,我们需要一个比较精确的预估,我们的设计能跑50M,100M 还 ...… 查看全部问答> |
|
(紧急求助)STM32F101C8T6FLASHDownload失败 我使用STM32F101C8T6J进行产品开发,在KEIL环境下可以使用ULINK1在SRAM内进行调试,但是发现不能对其FLASH进行调试或下载。也不能通过Boot loader下载。测试条件如下: 我使用的是自己焊 ...… 查看全部问答> |




