第一节 S5PV210的看门狗定时器
S5PV210上的看门狗定时器相当于一个普通的16bit的定时器,它与PWM定时器的区别是看门狗定时器可以产生reset信号而PWM定时器不能,S5PV210看门狗定时器的结构图如下:

第二节 程序相关讲解
完整代码见目录见详细代码下载链接。
1. main.c
共4个步骤:
第一步 初始化串口;
第二步 中断相关初始化;
第三步 测试看门狗,调用函数wtd_test(),其定义位于wtd.c中;
第四步 死循环,等待看门狗中断的发生;

2. wtd.c
wtd_test()的内容包括4个步骤:
第一步 VIC相关的中断设置,包括设置WTD中断的处理函数为isr_wtd()和使能中断;
第二步 测试看门狗定时的功能,调用了函数wtd_operate(),这里我们只是使能了看门狗定时器的定时功能,而并没有使能reset功能;

wtd_operate()的完整代码如下:
void wtd_operate(unsigned long uenreset, unsigned long uenint, unsigned long uselectclk, unsigned long uenwtd, unsigned long uprescaler,unsigned long uwtdat, unsigned long uwtcnt)
{
WTDAT = uwtdat;
WTCNT = uwtcnt;
/*uenreset: 是否使能reset *uenint: 是否使能中断 *uselectclk: 分频系数 *uenwtd:是否启动定时器 *bit[8:15]:预分频系数 */
WTCON= (uenreset<<0)|(uenint<<2)|(uselectclk<<3)|(uenwtd<<5)|((uprescaler)<<8);
}
首先设置计数相关的寄存器WTDAT和WTCNT,寄存器WTDAT用来决定看门狗定时器的超时周期,在看门狗定时器启动后,寄存器WTDAT的值会自动传入寄存器WTCNT,当WTCNT计数达到0时:如果中断被使能的话会发出中断,如果reset功能被使用的话会发出复位信号,然后装载WTDAT的值并重新计数。

寄存器WTCON进行相关配置,用来决定是否使能reset、是否使能中断、分频、是否启动定时器等,具体见下图:

最后再来看看看门狗中断的处理函数,代码如下:
void isr_wtd()
{
//记录中断发生次数
static int wtdcounter=0;
printf("%d\r\n",++wtdcounter);
// 看门狗相关中断清除
WTCLRINT = 1;
// VIC相关中断清除
intc_clearvectaddr();
if(wtdcounter==5)
{
// 看门狗reset printf("waiting system reset\r\n");
wtd_operate(1,1,0,1,100,100000000,100000000);
}
}
共3个步骤:
第一步 打印中断发生的次数;
第二步 中断清除;
第三步 当发生了5次定时中断后,使能看门狗的reset功能,此时系统会重启;

第三节 实验现象
首先会打印1、2、3、4...,当打印5时,watchdog的reset功能被使能,系统会重启,说明看门狗的复位作用生效了。

详细代码下载链接:http://download.csdn.net/detail/klcf0220/5741763

S5PV210 看门狗定时和复位的更多相关文章

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

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

  2. MSP430常见问题之看门狗及定时器类

    Q1. 定时器两个中断TAIE 和CCIE,有什么区别?两个中断的中断向量一样吗?A1:TAIE 和CCIE指的是不同事件.TAIE指TAR 计数器溢出,从65535 到0 的变化,由TAIFG 引起 ...

  3. STM32之------独立看门狗(IWDG)和窗体看门狗(WWDG)

    一     前沿废语: 之前有很风靡的游戏,名字叫<看门狗>.该游戏用了很新的引擎技术,打造出了一个辽阔庞大的世界,内容是玩家Aiden·Pearce(主角)是一名精通黑客技术的高手,当时 ...

  4. S3C2440看门狗解析

    个PCLK周期的复位信号 也就是说,在某些环境下,看门狗可以当做定时器使用,当他中断的时候并不发生复位,只发生中断,我看看图 看门狗的中断和复位信号是可以依靠wtcon来切断的(看门狗的时钟是无法切断 ...

  5. at91 看门狗

    看 门狗的驱动一般来说比较简单,只要做寄存器的设置实现开启.关闭.喂狗功能.本项目中我们使用的是at91sam9g45处理器,带有看门狗定时器.这个 看门狗的驱动却比较复杂,应用层想用它的话,将涉及到 ...

  6. zigbee学习之路(十一):看门狗

    一.前言 今天,我们要通过实验学习和认识一下看门狗的使用,看门狗是为了防止防止程序跑飞的,通过不断的喂狗,使看门狗能持续监管程序的运行状态,当程序跑飞时,能及时把程序拽回来. 二.原理与分析 在CPU ...

  7. stm32 看门狗配置

    1.独立看门狗: 1) 取消寄存器写保护(向 IWDG_KR 写入 0X5555) IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);  //使能或者失能 2) ...

  8. 窗口看门狗 WWDG

    一,窗口看门狗 二,喂狗注意事项 三,程序设计 1.检查复位状态,有助于观察当前工作的可靠性 /* Check if the system has resumed from WWDG reset ,检 ...

  9. 痞子衡嵌入式:聊聊系统看门狗WDOG1在i.MXRT1xxx系统启动中的应用及影响

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是系统看门狗WDOG1在i.MXRT1xxx系统启动中的应用及影响. 软件看门狗模块(WDOG)在 MCU 应用里可以说是非常基础的功能模 ...

随机推荐

  1. JavaScript窗体Window.ShowModalDialog使用详解

    Javascript有许多内建的方法来产生对话框,如:window.alert(), window.confirm(),window.prompt().等. 然而IE提供更多的方法支持对话框.如: s ...

  2. 目标检测网络之 Mask R-CNN

    Mask R-CNN 论文Mask R-CNN(ICCV 2017, Kaiming He,Georgia Gkioxari,Piotr Dollár,Ross Girshick, arXiv:170 ...

  3. maven install deploy tell us heap is full

    <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compi ...

  4. php简单一句话分析

    <?php $arr="j{fq-)dUTXY`}b.@"; ;$i< strlen($arr);$i++){ $arr[$i]=chr(ord($arr[$i])-) ...

  5. 过时date.toLocaleString()的解决方法

    System.out.println(new java.util.Date()); 输出:Thu Jan 27 14:43:28 CST 2011 System.out.println(new jav ...

  6. Windows安装nginx服务

    1.测试版本 nginx版本:nginx-1.10.2:windows版本:win10 2.下载winsw. 当前最新版本为:winsw-2.0.1-bin.exe.下载地址:http://repo. ...

  7. 面向对象【day07】:类的实例化过程剖析(三)

    本节内容 1.概述 2.类的语法 3.总结 一.概述 之前我们说关于python中的类,都一脸懵逼,都想说,类这么牛逼到底是什么,什么才是类?下面我们就来讲讲,什么是类?它具有哪些特性. 二.类的语法 ...

  8. .Net MVC发布出错 Server Error in '/' Application.

    发布的时候遇到这个错误:Server Error in '/' Application.  Could not load file or assembly 'SettingsProviderNet' ...

  9. 跨iOS SDK版本编译问题

    iOS开发时会考虑两种SDK版本兼容性:一个是运行时SDK版本的兼容,即已构建/已发布的APP能在不同系统版本的用户手机上正常运行:一个是编译时SDK版本的兼容,即使用不同版本的SDK编译项目都能正常 ...

  10. Oracle记录-Linux JDK与Oracle profile环境配置

    1.LINUX JDK环境配置 #set java environment export JAVA_HOME=/usr/java/jdk1.7.0_79 export JRE_HOME=/usr/ja ...