• S5PV210 看门狗定时和复位


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

    image 

    第二节 程序相关讲解
    完整代码见目录见详细代码下载链接。
    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的值并重新计数。

    image

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

    image

    最后再来看看看门狗中断的处理函数,代码如下:
    void isr_wtd()
    {
    //记录中断发生次数
    static int wtdcounter=0;
    printf("%d ",++wtdcounter);
    // 看门狗相关中断清除
    WTCLRINT = 1;
    // VIC相关中断清除
    intc_clearvectaddr();
    if(wtdcounter==5)
    {
    // 看门狗reset printf("waiting system reset ");
    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

  • 相关阅读:
    百度地图之自动提示--autoComplete
    h5之scrollIntoView控制页面元素滚动
    angular之interceptors拦截器
    angular之$broadcast、$emit、$on传值
    前端基础入门(一)-HTML-HTML基础
    改进自定义博客
    自定义博客主题
    使用JavaScript策略模式校验表单
    【经典面试题】圣杯布局以及双飞翼布局原理
    [JavaScript设计模式]惰性单例模式
  • 原文地址:https://www.cnblogs.com/klcf0220/p/3185981.html
Copyright © 2020-2023  润新知