S3C2440A的看门狗定时器是用于当其由于噪声和系统错误引起的故障干扰时恢复控制器的工作。它可以被用作普通16位内部定时器来请求中断服务。看门狗定时器产生128个PCLK周期的复位信号

也就是说,在某些环境下,看门狗可以当做定时器使用,当他中断的时候并不发生复位,只发生中断,我看看图

看门狗的中断和复位信号是可以依靠wtcon来切断的(看门狗的时钟是无法切断的)

使用看门狗主要靠这几个寄存器

用来选择时钟源,分频系数,启动看门狗以及看门狗中断和复位的连接

流程基本上就是,第一次对wtcnt赋值之后启动看门狗,看门狗自动减,到达0的时候触发中断,如果连接了复位则触发复位

未连接则触发中断,另外,
看门狗定时器数据寄存器(WTDAT)的值不能被自动重载到定时计数器(WTCNT)中。由于这个理由,必须在看门狗定时器启动前写入一个初始值到看门狗定时器计数寄存器(WTCNT)中

请看具体代码,两种看门狗的使用都有

#include "watchdog.h"

u8 wwdgUp = 0;

void __irq Wdt_Int(void)
{
rSRCPND |=BIT_WDT_AC97;
rINTPND |=BIT_WDT_AC97;
rSUBSRCPND |= BIT_SUB_WDT; //清除中断标志 // WatchdogInit(0);
wwdgUp = 1;
} //看门狗不连接系统复位
//prescaler 分频系数 8位
//mux 始终选择 0 16 1 32 2 64 3 128
//countValue 计数值
void WWDGInitForTimer(u8 prescaler,u8 mux,u16 countValue)
{ rWTCON &= ~(1<<5);//看门狗禁止 rWTCON &= 0xff00;//清除预分频系数
rWTCON |= prescaler<<8;//设置预分频系数 rWTCON &= ~(0x03<<3);
rWTCON |= mux<<3;//设置时钟选择器 rWTCON |= 1<<2;//使能中断]
rWTCON &= ~(1<<0);//禁止复位
rWTDAT = countValue;
rWTCNT = countValue;//初次使用,必须设置CNT的值 rSRCPND |=BIT_WDT_AC97; //清除标志
rINTPND |=BIT_WDT_AC97;
rSUBSRCPND |= BIT_SUB_WDT; //清除子中断标志 rINTMOD &= ~BIT_WDT_AC97;//设置中断模式为IRQ模式
rINTMSK &= ~(BIT_WDT_AC97); //开中断
rINTSUBMSK &= ~(BIT_SUB_WDT);//开子中断 pISR_WDT_AC97=(unsigned)Wdt_Int;//设置中断程序入口 rWTCON |= (1<<5);//看门狗启动 } //看门狗连接系统复位
//prescaler 分频系数 8位
//mux 始终选择 0 16 1 32 2 64 3 128
//countValue 计数值
void WWDGInitForReset(u8 prescaler,u8 mux,u16 countValue)
{ rWTCON &= ~(1<<5);//看门狗禁止 rWTCON &= 0xff00;//清除预分频系数
rWTCON |= prescaler<<8;//设置预分频系数 rWTCON &= ~(0x03<<3);
rWTCON |= mux<<3;//设置时钟选择器 rWTCON &= ~(1<<2);//禁止中断]
rWTCON |= (1<<0);//使能复位
rWTDAT = countValue;
rWTCNT = countValue;//初次使用,必须设置CNT的值 rWTCON |= (1<<5);//看门狗启动 } void Watchfeed(u16 count) //看门狗喂狗
{
rWTCNT=count; //喂狗
}
#ifndef __WATCHDOG_H
#define __WATCHDOG_H
#include "2440addr.h"
#include "def.h" void WWDGInitForTimer(u8 prescaler,u8 mux,u16 countValue); void WWDGInitForReset(u8 prescaler,u8 mux,u16 countValue); void Watchfeed(u16 count); //看门狗喂狗 extern u8 wwdgUp; #endif

S3C2440看门狗解析的更多相关文章

  1. 基于S3C2440的嵌入式Linux驱动——看门狗(watchdog)驱动解读

    本文将介绍看门狗驱动的实现. 目标平台:TQ2440 CPU:s3c2440 内核版本:2.6.30 1. 看门狗概述 看门狗其实就是一个定时器,当该定时器溢出前必须对看门狗进行"喂狗“,如 ...

  2. 基于mini2440的看门狗(裸机)

    在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生 ...

  3. S3C3440看门狗驱动程序

    S3C3440看门狗驱动程序 http://www.cnblogs.com/lfsblack/archive/2012/09/13/2684079.html 看门狗是当CPU进入错误状态后,无法恢复的 ...

  4. 嵌入式 uboot以及kernel添加看门狗临时记录(个人记录未整理乱)

    Uboot_Kernerl_Add_Watch_Dog: U-Boot 2010.06 (Nov 01 2013 - 15:28:44) DRAM:  128 MiBCheck spi flash c ...

  5. linux设备驱动归纳总结(十一):写个简单的看门狗驱动【转】

    本文转载自:http://blog.chinaunix.net/uid-25014876-id-112879.html linux设备驱动归纳总结(十一):写个简单的看门狗驱动 xxxxxxxxxxx ...

  6. nano100B的看门狗讲解

    看门狗定时器的用途是在软件出问题时执行系统复位功能,这可以防止系统无限期地挂起.除此之外,看门狗定时器还支持将CPU 从掉电模式唤醒的功能.看门狗定时器包含一个18 位的自由运行计数器,定时溢出间隔可 ...

  7. mini2440裸机试炼之——看门狗中断和复位操作

    看门狗的工作原理: 设本系统程序完整执行一周期的时间是Tp,看门狗的定时周期为Ti,Ti>Tp,在程序正常执行时,定时器就不会溢出,若因为干扰等原因使系统不能在Tp时刻改动定时器的记数值,定时器 ...

  8. u-boot分析(五)----I/D cache失效|关闭MMU和cache|关闭看门狗

    u-boot分析(五) 上篇博文我们按照210的启动流程,对u-boot启动中的设置异常向量表,设置SVC模式进行了分析,今天我们继续按照u-boot的启动流程对以下内容进行分析. 今天我们会用到的文 ...

  9. 【Linux开发】linux设备驱动归纳总结(十一):写个简单的看门狗驱动

    linux设备驱动归纳总结(十一):写个简单的看门狗驱动 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...

随机推荐

  1. SSH整合环境下Spring配置文件的配置

    applicationContext.xml: <?xml version="1.0" encoding="UTF-8"?> <beans x ...

  2. 快学Scala-第八章 继承

    知识点: 1.扩展类 extends关键字,在定义中给出子类需要而超类没有的字段和方法,或者重写超类的方法. 2.重写方法 在Scala中重写一个非抽象方法必须 override 修饰符 public ...

  3. AsyncTask异步加载和HttpURLConnection网络请求数据

    //获得网络数据    private void huodeshuju() { //这里是使用线程,已注释掉        /*new Thread(){            public void ...

  4. [转]intent 传递对象

    ---恢复内容开始--- Activity之间通过Intent传递值,支持基本数据类型和String对象及它们的数组对象byte.byte[].char.char[].boolean.boolean[ ...

  5. cc2530 -----SampleApp.c解析

    /************************************************************************************************** ...

  6. 2016中国大学生程序设计竞赛 - 网络选拔赛 1004 Danganronpa

    Problem Description Chisa Yukizome works as a teacher in the school. She prepares many gifts, which ...

  7. 第13章 Swing程序设计----常用面板

    面板也是一个Swing容器,它可以作为容器容纳其他组件,但它也必须被添加到其他容器中. Swing常用的面板包括JPanel面板和JScrollPanel面板. 1.JPanel面板 import j ...

  8. AngularJS Front-End App with Cloud Storage Tutorial Part 1: Building a Minimal App in Seven Steps

    原文 : http://www.codeproject.com/Articles/1027709/AngularJS-Front-End-App-with-Cloud-Storage-Tutoria ...

  9. Lorenzo Von Matterhorn

    Lorenzo Von Matterhorn Barney lives in NYC. NYC has infinite number of intersections numbered with p ...

  10. Android Studio调试功能使用总结---转

    Android Studio调试功能使用总结[转]   这段时间一直在使用Intellij IDEA, 今天把调试区工具的使用方法记录于此. 先编译好要调试的程序. 1.设置断点 选定要设置断点的代码 ...