文章目录
- WDT简介
- WDT的工作原理
- 读WDT的芯片手册
- WDT寄存器详解
- WDT编程
WDT简介
看门狗定时器
:用来监控,当软件出现故障,可向CPU发送复位信号,自动实现复位。其位置在CPU外部,SOC上
WDT的工作原理
看门狗定时器
:
本质是一个计数器,给一个值,一直递减,递减至零,向CPU发送复位信号
喂狗
:
让看门狗定时器刷新一个值,使其不递减至零
正常的程序会定时喂狗,而出错的程序无法执行喂狗,则定时器会递减至零,发送复位信号。
读WDT的芯片手册
读一下Overview、Feature知:看门狗定时器有2种工作模式,普通定时器产生中断功能和递减定时器发送复位功能。
读工作原理图知:WTCON寄存器的第2位用来控制中断,WTCON寄存器的第0位用来控制复位信号的发送。
看门狗定时器的时钟源是Pclock。它的频率是100M每秒,经过一个8位的预分频器分频,可降频1~256倍,由WTCON寄存器的8 ~15位来控制。再经过4档固定倍率的分频,由WTCON的3 ~4位控制,最后给看门狗寄存器。
以下是WDT的频率计算公式:
WDT寄存器详解
WDT编程
#include "exynos_4412.h"void Delay(unsigned int Time)
{while(Time--);
}int main()
{/*设置一级分频256倍*/WDT.WTCON = WDT.WTCON | (0xFF << 8);/*设置二级分频128倍*//*WTCNT递减频率 = PLCK(100000000)/(0xFF + 1)/128 = 3052*/WDT.WTCON = WDT.WTCON | (0x3 << 3);/*禁止WDT产生中断信号*/WDT.WTCON = WDT.WTCON & (~(1 << 2));/*使能WDT产生复位信号*/WDT.WTCON = WDT.WTCON | 1;/*设置计数器的初始值*/WDT.WTCNT = (3052 * 5);/*使能WDT,计数器开始递减*/WDT.WTCON = WDT.WTCON | (1 << 5);//正常程序中要不停喂狗保证不复位while(1){printf("WDT.WTCNT = %d\n",WDT.WTCNT);/*喂狗*/WDT.WTCNT = 3052;Delay(100000);}return 0;
}
本文链接:https://my.lmcjl.com/post/8703.html
展开阅读全文
4 评论