L9-15WDT实验

文章详细介绍了WDT(看门狗定时器)的作用和工作原理,特别是关注在Exynos4412处理器下的WDT控制器。通过设置一级和二级分频来调整递减频率,以实现特定时间后的系统复位。在示例代码中,演示了如何配置WDT进行系统复位,并给出了修改配置以达到5秒后复位的作业答案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

15.1WDT简介

15.2Exynos4412下的WDT控制器

15.3WDT寄存器详解

15.4WDT编程

作业


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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值