WDT寄存器
作用:监控CPU是否出现错误,出现错误向CPU发送复位信号
工作原理:向WDT写入一个100的值,递减,正常程序执行时会定时向WDT发送一个比较大的定时数,这样就不会减到零
有两种功能:
1. 当一个普通的定时器,递减,时间一到会向CPU发送一个中断信号
2. 当计数器到达0的时候,会产生一个内部的复位信号
WDT工作逻辑:
PCLK -> 一级分频器 -> 二级分频器 -> WTCNT -> interrupt / Reset Signal
PCLK原始时钟100M一级分频器 1-256倍 WTCON[15:8]二级分频器 16,32,64,128倍 WTCON[4:3]WTCNT : 递减的速度会根据分频器传过来的速度减 当前计数器的值interrupt / Reset Signal: 中断 / 复位信号 根据WTCON[0] WTCON[1]来决定
WDT看门狗实验目的:实现倒计时结束向CPU发送复位信号,从而实现开发板复位功能
#include "exynos_4412.h"void Delay(unsigned int Time)
{while(Time--);
}int main()
{/*设置一级分频*/WDT.WTCON = WDT.WTCON | (0xFF << 8);/*设置二级分频*//*WTCNT递减频率 = PLCK(100000000)/(0xFF + 1)/128 = 3052* 3052频率就是1秒就是3052,*/WDT.WTCON = WDT.WTCON | (0x3 << 3);/*禁止WDT产生中断信号*/WDT.WTCON = WDT.WTCON & (~(1 << 2));/*使能WDT产生复位信号*/WDT.WTCON = WDT.WTCON | 1;/*设置计数器的初始值 5秒*/WDT.WTCNT = (3052 * 5);/*使能WDT,计数器开始递减*/WDT.WTCON = WDT.WTCON | (1 << 5);/** 上面代码可以综合写成/*设置WDTCON寄存器*/WDT.CON = 0xFF39;/*设置计数器的初始值 5秒*/WDT.WTCNT = (3052 * 5);*/while(1){printf("WDT.WTCNT = %d\n",WDT.WTCNT);
/* 添加定时喂狗程序将不会复位 *//*喂狗*/WDT.WTCNT = 3052;Delay(100000);}return 0;
}