lv11 嵌入式开发 WDT实验 12

目录

1 WDT简介

2 Exynos4412下的WDT控制器

2.1 概述

2.2 WDT的特性

2.3 工作原理

2.4 其他细节

3 WDT寄存器详解

3.1 WTCON控制寄存器

3.2 WTDAT 实时中断寄存器

3.3 WTCNT 递减计数器

3.4 WTCLRINT清除中断寄存器

4 WDT编程


1 WDT简介

Watch Dog Timer即看门狗定时器,其主要作用是当发生软件故障时可产生复位信号使SOC复位,其本质是一个计数器(独立于CPU,但是集成在SOC中的芯片)

WDT工作原理

2 Exynos4412下的WDT控制器

2.1 概述

Exynos 4412 SCP中的看门狗定时器(WDT)是一种计时设备。可以使用该设备在系统错误引起的故障后恢复控制器的操作。可以将WDT用作普通的16位间隔定时器,以请求中断服务。WDT也可以生成复位信号。

2.2 WDT的特性

  • 支持带有中断请求的普通间隔定时器模式。
  • 当定时器计数值达到0(超时)时,会触发内部复位信号。
  • 支持电平触发的中断机制。

2.3 工作原理

看门狗定时器使用的时PCLK时钟,100Mhz ,由soc提供给我们

WTCNT寄存器中存入的是递减计数器的值,会自动递减。

减到0时可以发送2种信号,中断(和普通定时器一样)和复位(监控CPU)

WTCON寄存器[2]位可以设置是否中断

WTCON寄存器[0]位可以设置是否复位

WTCON寄存器[15:8]位,设置预分频器,降低频率,可以设置0~255,降低1~256倍。

WTCON寄存器[4:3]位,二级分频,再次降低频率,可以降低1/16 1/32 1/64 1/128。

公式为递减周期计算

2.4 其他细节

3 WDT寄存器详解

3.1 WTCON控制寄存器

 

3.2 WTDAT 实时中断寄存器

WTDAT寄存器可以指定超时持续时间。在初始WDT操作中,您无法将WTDAT的内容加载到计时器计数器中。然而,通过使用0x8000(初始值),可以驱动WDT计数器首次超时。设置Count reload value每当超时,都会把WTDAT里的值复制到WTCNT中,来产生实时中断。

3.3 WTCNT 递减计数器

 不好超过65535

3.4 WTCLRINT清除中断寄存器

4 WDT编程

介绍:编程实现看门狗运行,程序运行5s后开发板复位

注:exynos_4412.h见前期接口介绍。


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

练习

编程实现将WDT的递减频率设置为10000HZ,程序运行5s后开发板复位


#include "exynos_4412.h"

void Delay(unsigned int Time)
{
	while(Time--);
}

int main()
{
	/*设置一级分频*/
	WDT.WTCON = WDT.WTCON | (0x4D << 8);
	/*设置二级分频*/
	/*WTCNT递减频率 = PLCK(100000000)/(0x4D + 1)/128 ≈ 10000*/
	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);
		/*喂狗*/
		//WDT.WTCNT = 10000;
		Delay(100000);
	}

	return 0;
}

效果:5s后开发板复位

注:开发板已经帮我们实现了串口的功能,所以直接调用printf即可,否则串口也不会打印上电的信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/197883.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

探索三种生成模型:基于DDPMs、NCSNs和SDEs方法的Diffusion

探索三种生成模型&#xff1a;基于DDPMs、NCSNs和SDEs方法的Diffusion 去噪扩散概率模型&#xff08;DDPMs&#xff09;正向过程反向过程 噪声条件得分网络&#xff08;NCSNs&#xff09;正向过程初始化训练 NCSNs生成样本 反向过程 随机微分方程&#xff08;SDEs&#xff09;原…

自然资源科普交互大屏助力自然资源的保护

在当代社会&#xff0c;自然资源的科学管理和可持续利用变得愈发重要。为了提高公众对于自然资源的认知和理解&#xff0c;科普交互大屏成为一个新兴的工具。它通过生动的图像和实时数据展示&#xff0c;以及与观众的互动方式&#xff0c;让人们更深入地了解自然资源和环境保护…

eNSP防火墙USG6000V使用Web界面登入教程

文章目录 登入流程1、下载USG6000V的镜像包2、导入USG6000V的镜像包3、配置防火墙web页面4、修改本机vmnet1网卡的ipv4地址5、在eNSP上添加云6、配置防火墙管理地址&#xff0c;开启http服务7、关闭电脑防火墙8、访问web页面 登入流程 1、下载USG6000V的镜像包 链接&#xff…

数据库应用:MongoDB 库与集合管理

目录 一、理论 1.MongoDB用户管理 2.MogoDB库管理 3.MogoDB集合管理 二、实验 1.MongoDB用户管理 2.MogoDB库管理 3.MogoDB集合管理 三、问题 1.不显示新创建的数据库 2.插入数据报错 3.删除指定数据库报错 一、理论 1.MongoDB用户管理 (1) 内置角色 数据库用户…

Postman进阶功能实战演练

Postman除了前面介绍的一些功能&#xff0c;还有其他一些小功能在日常接口测试或许用得上。今天&#xff0c;我们就来盘点一下&#xff0c;如下所示&#xff1a; 1.数据驱动 想要批量执行接口用例&#xff0c;我们一般会将对应的接口用例放在同一个Collection中&#xff0c;然…

ZYNQ_project:IIC_EEPROM

EEPROM简介&#xff1a; EEPROM(Electrically Erasable Progammable Read Only Memory&#xff0c; E2PROM)是指带电可擦可编程只读存 储器&#xff0c;是一种常用的非易失性存储器&#xff08;掉电数据不丢失&#xff09;&#xff0c; E2PROM 有多种类型的产品&#xff0c;我…

【计算机网络学习之路】序列化,反序列化和初识协议

文章目录 前言一. 序列化和反序列化1.自己实现2. JSON 二. 初识协议结束语 前言 本系列文章是计算机网络学习的笔记&#xff0c;欢迎大佬们阅读&#xff0c;纠错&#xff0c;分享相关知识。希望可以与你共同进步。 本篇博文讲解应用层的序列化和反序列化&#xff0c;还有见一…

Linux基础项目开发1:量产工具——显示系统(二)

前言&#xff1a; 前面我们已经对这个项目的基本框架有了一个初步的了解与认识&#xff0c;要实现显示管理器与输入管理器&#xff0c;有输入有输出基本就实现这个项目的大部分功能了&#xff0c;首先我们先来做显示系统&#xff0c;对于上层系统为了让程序更好扩展&#xff0c…

Python分享之字符串格式化 (%操作符)

在许多编程语言中都包含有格式化字符串的功能&#xff0c;比如C和Fortran语言中的格式化输入输出。Python中内置有对字符串进行格式化的操作%。 模板 格式化字符串时&#xff0c;Python使用一个字符串作为模板。模板中有格式符&#xff0c;这些格式符为真实值预留位置&#xff…

【Android Jetpack】Hilt 依赖注入框架

文章目录 依赖注入DaggerHiltKoin添加依赖项Hilt常用注解的含义HiltAndroidAppAndroidEntryPointInjectModuleInstallInProvidesEntryPoint Hilt组件生命周期和作用域如何使用 Hilt 进行依赖注入 依赖注入 依赖注入是一种软件设计模式&#xff0c;它允许客户端从外部源获取其依…

计算机丢失vcomp140.dll是什么意思,如何解决与修复(附教程)

vcomp140.dll缺失的5种解决方法以及vcomp140.dll缺失原因 引言&#xff1a; 在日常使用电脑的过程中&#xff0c;我们可能会遇到一些错误提示&#xff0c;其中之一就是“vcomp140.dll缺失”。这个错误提示通常出现在运行某些程序或游戏时&#xff0c;给使用者带来了困扰。本文…

【蓝桥杯 LCA 差分】 砍树

题目分析&#xff1a; 这道题还是比较裸的一道书上差分的题目了 对于每一对标记点(x,y) 他们之间的路径就是 x − > L C A ( x , y ) − > y x->LCA(x,y)->y x−>LCA(x,y)−>y 这条路径上的每一条边都要经过。 那么对于一条边&#xff0c;什么时候砍掉这条…

【推荐系统】MMOE笔记 20231126

paper阅读 任务差异带来的固有冲突实际上会损害至少某些任务的预测&#xff0c;特别是当模型参数在所有任务之间广泛共享时。&#xff08;在说ESMM&#xff09; 共享底层参数可以减少过拟合风险&#xff0c;但是会遇到任务差异引起的优化冲突&#xff0c;因为所有任务都需要在…

Django二转Day02

http #1 http 是什么#2 http特点#3 请求协议详情 -请求首行---》请求方式&#xff0c;请求地址&#xff0c;请求协议版本 -请求头---》key:value形式 -referer&#xff1a;上一次访问的地址 -user-agenet&#xff1a;客户端类型 -name&#x…

JSP迭代标签之 forEach循环标签 基本使用讲解

好 之前我们讲完了 我们的条件动作标签 那么 我们来继续说 迭代标签 所谓迭代就是 将某个主体循环多次 也可以循环 集合 对象 map 这个标签叫 forEach items 就是 我们要循环的数据 注意 这里 操作的也是域对象中的值 begin 开始说 例如 i 0;i<x;i begin 就是开始数 当前…

1.Spring源码解析-ClassPathXmlApplicationContext

此类是读取spring的xml配置文件并解析。也是源码入口之一。 我们调试即将开始。 传递给父类设置值 经调试我们得到是给AbstractApplicationContext设置默认的应用上下文父级的值&#xff0c;很明显是空 给父类AbstractRefreshableConfigApplicationContext设置属性 刷新容器…

AMESim|学习记录

此文记录AMESim学习过程中的各种情况。 目录 01 王佳. AUV 浮力调节系统设计及控制策略研究[D]. 天津大学, 2017.01 王佳. AUV 浮力调节系统设计及控制策略研究[D]. 天津大学, 2017. 01 王佳. AUV 浮力调节系统设计及控制策略研究[D]. 天津大学, 2017. 开始步入正文 01 王佳.…

Open AI宫斗始末:董事会开除CEO再复职,这场闹剧终于结束了!

老哥们&#xff0c;作为一名在科技圈吃瓜前线的程序员&#xff0c;这几天open ai的瓜都吃到了吗&#xff1f;反转反转再反转&#xff0c;堪称职场版的《甄嬛传》&#xff01; 惊呆了&#xff0c;CEO被解雇又回归…… 在梳理open ai时间线之前&#xff0c;给大家先介绍一下这个…

C++基础 -9- 函数的默认参数

函数默认格式(图片代码段呈现) #include "iostream"using namespace std;void rlxy(int a100) {cout << a << endl; }int main() {rlxy();rlxy(99); }函数默认参数注意事项 函数的默认参数从左开始推导 错误写法 正确写法

029 - STM32学习笔记 - ADC(三) 独立模式单通道DMA采集

029 - STM32学习笔记 - 单通道DMA采集&#xff08;三&#xff09; 单通道ADC采集在上节中学习完了&#xff0c;这节在上节的内容基础上&#xff0c;学习单通道DMA采集。程序代码以上节的为基础&#xff0c;需要删除NVIC配置函数、中段服务子程序、R_ADC_Mode_Config()函数中使能…
最新文章