WDT简介
- Watch Dog Timer即看门狗定时器,其主要作用是当发生软件故障时可产生复位信号使SOC复位,其本质是一个计数器
- WDT工作原理
WTD寄存器
wtd控制寄存器
用于设置一级分频、二级分频、使能、产生复位和中断信号
WTD数据寄存器
用于获取计数值,当watch dog开启时会自动递减
WTD计数寄存器
用于设置当前的计数值
代码实现
#include "exynos_4412.h"
void delay(unsigned int i)
{
while(i--);
}
int main()
{
// 设置一级分频为256
WDT.WTCON |= (0xFF << 8);
// 设置二级分频为128
// 递减频率为 PCLOK(100000000) / (0xFF + 1) / 128 = 3052
WDT.WTCON |= (0x3 << 3);
// 禁用中断
WDT.WTCON &= ~(1 << 2);
// 使能复位功能
WDT.WTCON |= 0x1;
// 设置计数值为5s
WDT.WTCNT = 3052 * 5;
while(1)
{
printf("WTD.WTDAT = %d\n", WDT.WTDAT);
// 喂狗
WDT.WTCNT = 3052 * 5;
delay(100000);
}
return 0;
}