看门狗定时器

1 看门的概概念

看门狗又叫 watchdog timer,是一个定时器电路,一般有一个输入,叫喂狗,一个输出到MCU的RST端,MCU正常工作的时候,每隔一段时间输出一个信号到喂狗端,给WDT清零,如果超过规定的程序不喂狗(一般程序跑飞时),WDT定时超过,就回给一个复位信号到MCU,MCU复位,防止MCU死机,看门狗的作用就是防止程序发生死循环,或者说程序跑飞。

MUC:微控制单元(Microcontroller Unit;MCU) ,又称单片微型计算机(Single Chip Microcomputer )或者单片机,是把中央处理器(Central Process Unit;CPU)的频率与规格做适当缩减,并将内存(memory)、计数器(Timer)、USB、A/D转换、UART、PLC、DMA等周边接口,甚至LCD驱动电路都整合在单一芯片上,形成芯片级的计算机,为不同的应用场合做不同组合控制

RST端:复位端

2 看门狗的工作原理

工作原理:在系统运行以后也就是启动了看们狗的计数器,看门狗就开始自动计数,如果到了一定时间不去清除看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。

3 看门狗的实现过程(Exynos 4412)

在这里插入图片描述

t_watchdog = 1/(PCLK/(Prescaler value + 1)/Division_factor)
实际上就是:看门狗时钟周期=1/(PCLK源时钟频率/预分频值+1)/预分频系数

1/周期=频率

4 看门狗相关寄存器(Watchingdog Timer的Register Description

4.0 寄存器描述

在这里插入图片描述

4.1 WTCON

在这里插入图片描述

4.2 WTCNT

在这里插入图片描述
当我们想要使用看门狗功能的时候,首先我们需要先使能WDT timer ,如果我们时最初使能WDT timer ,WTDAT的值并不能加载到这个定时计数寄存器(WTCNT)中,所以我们需要初始化赋值给WTCNT

WTDAT

在这里插入图片描述
在最初使能WDT的时候,这里面的值不能直接赋值给WTCNT,直到超时后的情况下,才会把这个WTDAT里面的值赋值给WTDAT

WTCLRINT

在这里插入图片描述
随便写一个值就会清除中断

#include "exynos_4412.h"


void delay(int i)
{
	while(i--);
}



void WDT_Init()
{
	/* 设置一级分频 156 = 0x9B+1*/
	WDT.WTCON = WDT.WTCON & (~(0xFF<<8)) | (0x9B<<8);

	/* 设置二级分频 64- 10 */
	WDT.WTCON |= (0x2<<3);

	//看门狗频率为100000000/156/64 约等为10000Hz
	
	/* 关闭中断 */
	WDT.WTCON &= (~(0x1<<2));

	/* 打开产生复位信号 */
	WDT.WTCON |= 1;

	/* 设置计数器计数值 */
	WDT.WTCNT = (5*10000);  //5秒

	/* 使能看门狗 */
	WDT.WTCON |= (0x1<<5);
}

int main()
{
	WDT_Init();

	while(1)
	{
		printf("WDT.WTCNT = %d\n", WDT.WTCNT); //打印计数器值
		delay(100000);
	}
	return 0;
}

效果会计数,然后当递减计数器清零,便会自动复位,因为这里并没有喂狗

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值