目录
15.1WDT简介
Watch Dog Timer即看门狗定时器,其主要作用是当发生软件故障时可产生复位信号使SOC复位,其本质是一个计数器。
WDT工作原理:
15.2Exynos4412下的WDT控制器
《4412手册》26Watchdog Timer
1/(PCLK/(一级+1)/二级)
15.3WDT寄存器详解
WTCON:控制看门狗寄存器的功能
WTDAT:产生中断信号
WTCNT:储存递减值
倒计时最大数65535.[15:0]
15.4WDT编程
#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*/
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;
}
作业
1.编程实现将WDT的递减频率设置为10000HZ,程序运行5s后开发板复位
答:WDT的递减频率设置为9889HZ
#include "exynos_4412.h"
void Delay(unsigned int Time)
{
while(Time--);
}
int main()
{
/*设置一级分频*/
WDT.WTCON = WDT.WTCON | (0x4e << 8);
/*设置二级分频*/
/*WTCNT递减频率 = PLCK(100000000)/(0x4e + 1)/128 = 9889,取相近值10016也可以*/
WDT.WTCON = WDT.WTCON | (0x3 << 3);
/*禁止WDT产生中断信号*/
WDT.WTCON = WDT.WTCON & (~(1 << 2));
/*使能WDT产生复位信号*/
WDT.WTCON = WDT.WTCON | 1;
/*设置计数器的初始值*/
WDT.WTCNT = (10000 * 5);
/*使能WDT,计数器开始递减*/
WDT.WTCON = WDT.WTCON | (1 << 5);
while(1)
{
printf("WDT.WTCNT = %d\n",WDT.WTCNT);
Delay(100000);
}
return 0;
}