ARM学习之看门狗定时器
开发环境与平台
开发板:粤嵌的GEC210开发板
处理器:s5pv210
处理器内核:Cortex-A8
开发环境:Keil4
看门狗的作用与本质
当嵌入式系统运行时受到外部干扰或者系统错误,程序有时会出现死机或“跑飞”,导致整个系统瘫痪。在对系统稳定性要求较高的场合,为了防止这一现象的发生,需要“看门狗”(WATCHDOG)的电路。看门狗的作用就是当系统死机或“跑飞”时,恢复系统的运行。
看门狗本质上是定时器电路,通过设定倒计时时间产生复位信号。在倒计时信号结束前进行"喂狗"就不会产生复位信号。当系统发生死机或者跑飞的情况,势必执行不了喂狗的操作,一旦倒计时结束就会产生复位信号,系统就会复位而不是一直系统系统移植崩溃下去,从而保证了系统的稳定性。
S5PV210看门狗的功能
1、定时器功能
可以作为常规定时器使用,它是一个十六位的定时器,并且可以产生中断,中断名为WDT。
2、复位功能(即看门狗的功能)
作为看门狗定时器使用,当时钟计数减为0(超时)时,它将产生一个复位信号。
S5PV210看门狗结构
看门狗工作原理图示:
S5PV210看门狗定时时间的计算
看门狗定时器溢出一次的时间主要跟一下因素有关:
1、预分频器
8位,取值为0-255
2、再分频器
取值为16、32、64、128。
看门狗定时器溢出一次的时间
t_wdg=1 / (PCLK/(Prescaler+1) / Division factor)。
Prescaler为预分频器的值,Division factor为再分频器的值
上面看门狗定时器溢出一次的时间还不是最终的时间。看门狗最终的定时周期为
T = WDGDAT * t_wdg
WDGDAT
为看门狗数据寄存器的值。
S5PV210相关寄存器
1、看门狗控制寄存器
2、看门狗计数寄存器
3、看门狗数据寄存器
4、看门狗中断清除寄存器
实验
利用S5PV210看门狗定时器产生4s的定时,4S内如果按键K1按下,修改WTCNT的值避免计数器溢出(喂狗),否则系统重启。
编程
s5pv210.h:
//看门狗相关寄存器定义
typedef struct
{unsigned int WTCON;unsigned int WTDAT;unsigned int WTCNT;unsigned int WTCLRINT;
}wtdog;
#define WDG (*(volatile wtdog *)0xE2700000)
watchdog.c:
#include "s5pv210.h"
#include "watchdog.h"#define FOUR_SEC_WDG 1 //设置看门狗4S喂狗//看门狗初始化
void WD_init(void)
{
#if FOUR_SEC_WDGWDG.WTCNT = 0xF424; WDG.WTDAT = 0xF424; //设置看门狗重装载寄存器值为62500 * 0.000064s = 4s WDG.WTCON = 0x00004131; //初始化看门狗的分频系数65、再分频系数为64(最终频率为1/64 MHZ)、使能看门狗定时器
#elseWDG.WTCNT = 0x7a12; WDG.WTDAT = 0x7a12; //设置看门狗重装载寄存器值为31250 * 0.000064s = 2s WDG.WTCON = 0x00004131; //初始化看门狗的分频系数、再分频系数、使能看门狗定时器
#endif }//喂狗
void feed_dog(void)
{
#if FOUR_SEC_WDGWDG.WTCNT = 0xF424; // 62500 * 0.000064s = 4s
#else WDG.WTCNT = 0x7a12; // 31250 * 0.000064s = 2s
#endif
}
main.c:
#include "watchdog.h"
#include "clock.h"
#include "led.h"
#include "key.h"
#include "beep.h"
#include "delay.h"void Main(void)
{clock_init();key_init();led_init();led_on_off();WD_init();for(;;){if(key_Scan() == 1){feed_dog();}}
}
实验主要通过灯的亮灭指示系统的看门狗定时器的溢出导致系统复位,当一直按下按键喂狗时系统就不会复位,灯也就会长亮。
注意事项:
在手册可以查看如下一段话:
an initial value must be written to the watchdog timer count(WTCNT) register, before the watchdog timer starts
、
意思是初始化看门狗计数寄存器一定要在看门狗启动之前。所以不能启动看门狗之后再初始化看门狗计数寄存器。
ARM学习之看门狗定时器相关推荐
- 关于ARM Cortex a 系列的看门狗定时器
关于ARM cortex a系列的看门狗定时器,现在以三星公司的S5PV210为例子,来讨论学习一下看门狗定时器的相关知识. 刚开始学习使用英文技术手册,很多都不太习惯,不过还是坚持吧. 看门狗定时器 ...
- MSP430F5529 DriverLib 库函数学习笔记(十四)看门狗定时器 (WDT)
目录 硬知识 看门狗定时计数器 (WDTCNT) 看门狗模式 定时计数模式 看门狗定时器中断 时钟故障保护功能 低功耗模式下的看门狗操作 看门狗定时器控制寄存器 WDT_A API (机翻) 参数 上 ...
- ARM 看门狗定时器
一.什么是看门狗.有什么用 (1) 看门狗定时器和普通的定时器并无本质区别.定时器可以设定一个时间,在这个时间完成之前定时器不断计时,时间到的时候,定时器会复位 CPU(重启系统). (2 )系统正常 ...
- 【转载】外设使用Tips之MPC574xP系列汽车级MCU的SWT看门狗定时器配置与使用
外设使用Tips之MPC574xP系列汽车级MCU的SWT看门狗定时器配置与使用 原创 2017-09-13 胡恩伟 汽车电子expert成长之路 内容提要 引言 1. SWT的功能概述 2. SWT ...
- Exynos 4412 看门狗定时器中断
如果想弄懂看门狗定时器中断,要掌握下面两个知识点: 1 懂寄存器 Cortex A9采用的是ARM官方规定的中断处理机制 有两大类寄存器决定了中断工作状态 1) exynos 4412 特有的寄存器( ...
- 基于ARM IP的看门狗设计与功能验证
看门狗是一个定时器, ARM提供了一个32位向下计数的看门狗IP,它会不断地计数.通过软件可以设置计数值,计数到某一设定值重新开始计数,这一过程也被称为喂狗,如果没有正常喂狗,说明出现系统故障,看门狗 ...
- 9.0 看门狗定时器WDT
实例7---看门狗定时器WDT-----程序目的:如何应用WDT的看门狗模式与定时器模式 在工业现场,往往会由于供电电源.空间电磁干扰或其他原因引起强烈的干扰噪声.这些干极易使单片机产生误动作,从而失 ...
- 用看门狗定时器做计时器,计算程序耗时,超声波测距,FL2440
开发板:FL2440 核心芯片:S3C2440(ARM9) 超声波模块:HC-SR04 超声波模块工作原理:共四个脚,VCC接5V,GND接地,Trig脚接芯片通过IO传出的高电平(持续时间不低于10 ...
- 【51单片机快速入门指南】8:看门狗定时器(WDT)
目录 硬知识 测试程序 main.c 现象 普中51-单核-A2 STC89C52 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9. ...
- (18)Zynq FPGA 看门狗定时器介绍
1.1 Zynq FPGA 看门狗定时器介绍 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)Zynq FPGA 看门狗定时器介绍: 5)结束语. 1.1.2 本节引言 ...
最新文章
- 第 8 章 容器网络 - 051 - 在 overlay 中运行容器
- spring boot 相关注解
- Datastructure
- 如何计算机械能的变化量,问:如何计算机械能变化量?
- [paper reading] YOLO v1
- 【有返回值的回溯法】剑指offer——面试题66:矩阵中的路径(回溯法)
- shell-一些有趣的使用
- Java开发笔记(一百三十)Swing的选择框
- (二十一) Sed编辑器高级部分
- labelme批量json转png数据集教程
- matlab画柱状图函数,series函数做柱状图
- 游戏语音SDK解决回声消除的方案
- 计算机应用开班培训简报,信息技术提升培训简报及总结.doc
- sqoop:File does not exist:
- 电脑中显示dns服务器可能不可用,DNS服务器可能不可用的解决方法
- excel自学第1天_excel制作项目时间进度表_excel表头
- 【工具mdnice】Markdown在线工具-支持知乎、微信排版
- PDF编辑器怎么使用?PDF编辑器的操作方法
- samsung android usb device驱动
- CCD图像传感器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
热门文章
- 我的世界启动器怎么更改java_我的世界启动器Java路径怎么设置?
- java emun ordinal_关于Java:JPA枚举ORDINAL与STRING
- 公云(3322)动态域名更新API
- [C#] http如何在POST之后下载文件
- 鼠标中键控制音量大小
- Codepen 每日精选(2018-3-26)
- Help Bubu UVALive - 4490
- python中字典的索引_python字典索引
- python数据分析实验报告_数据聚合
- 完善智慧办公建设,小熊U租获京东数千万元A+轮融资