基于mini2440的看门狗(裸机)
在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称"看门狗",s3c2440中也集成了看门狗,在受到干扰或者系统错误时是芯片复位。s3c2440的看门狗有两个特点:1、提供16bit的时间间隔的中断。2、128个PCLK的周期复位信号。看门狗的结构:
看门狗定时器频率计算如下:
分频值从0到2的8次方减1,分频系数可选:16、32、64、128。s3c2440看门狗操作需要三个寄存器:WTCON、WTDAT、WTCNT。分别是看门狗控制、限时、计数。在启动时候WTDAT不会自动装载到WTCNT,所以初始化时一定要写定时值到WTCNT中。
测试程序:
测试中我们将分频值设置为249,分频系数设置为16。可计算看门狗时间间隔t_watchdog为0.00008s,设置4秒中断一次的话那么WTDAT的值应设置为50000。每次中断蜂鸣器响起,并用串口显示相关信息。程序如下:
主程序部分:
#define GLOBAL_CLK 1#include<string.h>
#include "def.h"
#include "option.h"
#include "2440addr.h"
#include "profile.h"
#include "mmu.h"extern void watchdog_set(unsigned int wtcnt);
extern void feed_watchdog(unsigned int wtcnt);
extern unsigned char watchdog_flag;void delay(int num)
{int i, j, k;for(i=0;i<num;i++)for(j=0;j<1000;j++)for(k=0;k<1000;k++);
}void Main(void)
{rGPBCON = (1<<0);//GPIOB[0]设为输出rGPBDAT = (0<<0);//关闭蜂鸣器MMU_Init();//地址的重映射watchdog_set(50000);while (1){if (1 == watchdog_flag){rGPBDAT = 1;//打开蜂鸣器delay(50);Uart_Printf("\nwatchdog on\n");}watchdog_flag = 0;rGPBDAT = 0;//关闭蜂鸣器}
}
看门狗部分:
#include "2440addr.h"unsigned char watchdog_flag = 0;//看门狗中断标志
void __irq watchdog_interrupt(void);/*看门狗初始化*/
void watchdog_set(unsigned int wtcnt)
{/*开始时不自动装载因此需先设置计数值*/rWTDAT = wtcnt;rWTCNT = wtcnt;/*使用中断但不复位CPU*/rWTCON |= (249<<8 | 1<<5 | 1<<2 | 0);rINTSUBMSK &= ~(1<<13);//允许看门狗中断rINTMSK &= ~(1<<9);/*设置中断向量*/pISR_WDT_AC97 = (unsigned)watchdog_interrupt;
}/*喂狗操作*/
void feed_watchdog(unsigned int wtcnt)
{rWTCNT = wtcnt;
}/*看门狗中断服务函数*/
void __irq watchdog_interrupt(void)
{rSUBSRCPND |= 1<<13;//清除中断rSRCPND |= 1<<9;rINTPND |= 1<<9;watchdog_flag = 1;//设置用户中断标志
}
运行结果:
源代码地址:http://download.csdn.net/detail/a16839678/6272069
基于mini2440的看门狗(裸机)相关推荐
- (29)基于FPGA实现看门狗功能(FPGA不积跬步101)
1 引言 微处理(ARM.单片机)在特殊的环境下,运行代码或程序会跑到非预期状态,也就是说系统可能会进入死循环,这种情况微处理器无法进行自我恢复,只能通过复位或者重启进行解决.看门狗就是解决这种情况 ...
- STM32 学习笔记 -- 基于stm32f4的看门狗配置和实验代码
基于stm32f4的看门狗配置和实验代码 以下本人对stm32f4xx的独立看门狗和窗口看门狗学习.理解和总结,程序的说明和解释均在注释中,仔细阅读不难理解.我已经过验证,有问题或错误请指出. 版权声 ...
- 基于mini2440的ov9650摄像头裸机测试
mini2440提供了一个摄像头接口,可以输出RGB24,RGB16的原始图像还可以输出编码的如YUV格式的图像,并提供了偏移翻转,放大缩小的功能.与开发板配套的摄像头模块为CAM130,采用ov96 ...
- LabVIEW CompactRIO 开发指南10 确保可靠性与看门狗定时器
LabVIEWCompactRIO 开发指南10 确保可靠性与看门狗定时器 在设计将要部署的嵌入式系统时,考虑纳入看门狗定时器以确保可靠性.看门狗定时器是一个硬件计数器,它与嵌入式软件应用程序接口,用 ...
- linux进程看门狗使用方式,Linux系统中基于看门狗的精细化进程监控方法及系统的制作方法...
Linux系统中基于看门狗的精细化进程监控方法及系统的制作方法 [技术领域] [0001] 本发明涉及Linux系统的进程监控技术领域,特别是涉及一种Linux系统中基于看 门狗的精细化进程监控方法及 ...
- linux看门狗设备,基于Linux构建无人值守系统(看门狗)
基于Linux构建无人值守系统(看门狗) 在各种嵌入式设备soc中基本都提供了看门狗,在很长一段时间里我对看门狗的理解就是"关掉它,不然它会找麻烦".但是当某种需求存在的时候,它又 ...
- 基于ARM IP的看门狗设计与功能验证
看门狗是一个定时器, ARM提供了一个32位向下计数的看门狗IP,它会不断地计数.通过软件可以设置计数值,计数到某一设定值重新开始计数,这一过程也被称为喂狗,如果没有正常喂狗,说明出现系统故障,看门狗 ...
- [看门狗]基于Linux的嵌入式系统全程喂狗策略
https://www.cnblogs.com/aaronLinux/p/8073898.html https://github.com/aaronRong [看门狗]基于Linux的嵌入式系统全程喂 ...
- 定时器、看门狗和RTC-1.9.ARM裸机第九部分-朱有鹏-专题视频课程
定时器.看门狗和RTC-1.9.ARM裸机第九部分-6771人已学习 课程介绍 本期课程主要讲述SoC中的时间相关的外设,包括定时器.看门狗定时器和实时时钟RTC.首先讲述了定时器的基 ...
最新文章
- 【短视频SDK - 参数解析】对焦模式、裁剪模式、视频质量、分辨率、视频比例、帧率、关键帧间隔等参数解析...
- SpringBoot使用Socket向前端推送消息
- 14-4-5 17 MySQL 主主同步
- Soldier and Traveling
- leetcode 372. Super Pow | 372. 超级次方(快速幂)
- python函数体以冒号起始、并且是缩进格式的_函数体以冒号起始,并且是缩进格式的。(3.0分)_学小易找答案...
- 做VB的,经常注册和反注册OCX控件和DLL链
- Tyche 2147 旅行
- HDU 4946 Area of Mushroom(2014 Multi-University Training Contest 8)
- python在数字后添加字符_用python生成数字、字母和特殊字符混合的字符串
- dubbo monitor mysql_dubbo-monitor监控台的部署
- python工厂方法_Python设计模式:工厂方法模式初探
- Centos7.x 安装JDK、Jenkins、Jmeter、ant
- 什么是代码评审(Code Review)
- php如何防止恶意DDoS攻击,避免带宽占用问题方法
- python编程练习-完美数
- java 根据助记词导入ETH钱包账户
- snapchat_Snapchat的新地图功能介绍(以及如何禁用它)
- chrome设置微信ua_模拟UA实现访问只能在微信上打开的网页
- kali linux 64bit 2019.1a下启动bbqsql:No module named coros
热门文章
- python mql4_可以转发文章不?老外用随机森林预测外汇分钟涨跌准确率高达85%。求高手用python重写。...
- 机器学习:论相关(一)
- 2021-05-21 matlab 傅里叶变换后恢复信号
- 深度学习 卷积层与全连接层权重参数个数的计算
- oracle into多个变量,Oracle中merge into的使用:该命令使用一条语句从一个或者多个数据源中完成对表的更新和插入数据....
- CSS学习16之层级
- java 0000 0001 0002 000a 000b_Java代码编译后的class文件
- JAVA模拟某信网登录信息采集
- G - 数据结构实验之查找七:线性之哈希表
- 【自动驾驶】欧拉角和旋转矩阵之间的转换