目录
一、WDT简介
Watch Dog Timer即看门狗定时器,其主要作用是当发生软件故障时可产生复位信号使SOC复位,其本质是一个计数器。
和32的看门狗一样,不喂狗就会复位
二、Exynos_4412下的WDT控制器
中间的WTCNT是一个存放递减计数器值的寄存器,减到0产生两种信号中断信号或者复位信号
PCLK是一个100MHz的时钟。左面这东西看着眼熟吧,32时钟树的预分频器。8位预分频器就能设置0-255,降低1-256倍。之后是一个二级分频它只有四个选项,看门狗真正的频率是经过两层分频后的。
经过这个公式计算后得出频率,结果的倒数就是周期。
三、WDT的寄存器
四、WDT编程
由于访问开发板的方式是串口,所以我们不需要初始化串口,因为软件已经帮我们初始化了。
#include "exynos_4412.h"
WDT_Init(void)
{
WDT.WTCNT = (3052 * 5);//5S
WDT.WTCON = 0xFF39;//3052
}
void delay(unsigned int time)
{
while(time --);
}
int main()
{
WDT_Init();
while(1)
{
printf("WTCNT = %d\n",WDT.WTCNT);
delay(100000);
}
return 0;
}
#include "exynos_4412.h"
WDT_Init(void)
{
WDT.WTCNT = (10000 * 5);//5S
WDT.WTCON = 0x4D39;//10000
}
void delay(unsigned int time)
{
while(time --);
}
int main()
{
WDT_Init();
while(1)
{
printf("WTCNT = %d\n",WDT.WTCNT);
delay(100000);
}
return 0;
}
正常看门狗不是这样使用的,要在程序中不断的喂狗,直到程序跑飞喂不了狗了,才会复位。