Cortex-M0 看门狗程序详解

发布者:asd999ddd最新更新时间:2014-12-30 来源: 51hei关键字:Cortex-M0  看门狗  程序详解 手机看文章 扫描二维码
随时随地手机看文章

M0的看门狗和普通51单片机的看门狗类似。比较简单。在配置完看门狗寄存器后看门狗模块就会随程序一直执行不能关闭。唯一关闭的方法就是系统发生复位。狗狗工作标记位就会由硬件自动清零而不工作了。在对看门狗寄存器写数据前需要先使能看门狗模块 :SYSAHBCLKCTRL|=1<<15;//使能看门狗模块。这一点非常重要否则造成狗不工作

 
来认识一下狗狗的寄存器,WDTCLKUEN-看门狗时钟源使能寄存器。因为狗狗的时钟是可选的。在对狗进行时钟源选择前是要关闭狗狗的时钟连接!该寄存器的有效位只有一位。WDTCLKUEN=0X01;//第0位为1连接看门狗时钟源
 
WDTCLKSEL-看门狗时钟源选择寄存器。用于选择看门狗的时钟源。狗的时钟源可以由LPC1114内部时钟源IRC提供,还可以由系统主时钟和内部看门狗时钟提供。默认是选择IRC。这里我们选择系统主时钟。WDTCLKSEL=0X01;//选择系统主时钟
 
WDTCLKDIV-看门狗时钟分频寄存器。看门狗的时钟源设置好了以后就可以对狗进行分频设置了。一般选择1分频。WDTCLKDIV=0X01;//选择1分频
 
设置完看门狗的时钟后,就可以对狗狗的计数时间进行设置了。LPC1114的看门狗计数器采用的减法计数。不像一般的计数器是往上下而是往下减。减到0还没喂狗。系统就复位了。
 
WDTTC-看门狗计数寄存器。设置的是看门狗的计数时间。这个是一个32位的寄存器。有点特殊。最小值要求为0XFF,给它赋小于0XFF的值时系统自动会为其设置成0XFF。WDTTC=0XFFFF;//设置看门狗的计数时间(既溢出时间)
 
WDTMOD-看门狗模式寄存器。设置完这些看门狗并不会工作。因为还没有对看门狗模块设置成使能。需要启动看门狗模块.该寄存器第0位是看门狗的使能位。要设置其为1.第2位是看门狗复位使能。M0的看门狗在未正常的喂狗的情况下是可以执行2个步骤的。一个是产生系统复位,一个是产生中断。这里我们选择产生复位。WDTMOD=0X03;//设置开启看门狗使能和狗溢出后系统复位。完成上面的设置现在看门狗还是没有启动的。那是因为在启动前必须要先喂一次狗(哈哈。。类似于先吃了才能工作)。
 
WDTFEED-看门狗馈送序列寄存器。该寄存器用来为喂狗。要分2次写入0XAA,0X55。写的时候要注意!两次写入要接连着完成。如果只写了一句会引起系统复位。所以说喂狗时最好先关掉中断以免引起系统不正常复位!
 
WDTFEED=0XAA;WDTFEED=0X55;//以上完成后看门狗就彻彻底底的开始工作了
 
以下是程序源代码及工程文件(基于TKStduio环境)attachment download
 
#include "..\config.h"
 
 
 
void myDelay (INT32U ulTime)
{
    INT32U i;
   
    i = 0;
    while (ulTime--) {
      for (i = 0; i < 5000; i++);
    }
}
 
void WDT_Init(INT32U time)
{
 if(time<0xff)
  time=0xff;
 WDTCLKUEN=0X00;//关闭看门狗的时钟源
 WDTCLKSEL=0X01;//选择主时钟作为看门狗的时钟
 WDTCLKUEN=0X01;//开启看门狗的时钟源,现在看门狗还不是工作的。需要喂一次狗
 WDTCLKDIV=0X01;//进行1分频
 SYSAHBCLKCTRL|=1<<15;//使能看门狗模块。这一点非常重要否则造成狗不工作
 WDTTC=time;//设置看门狗的计数时间
 WDTMOD=0X03;//设置看门狗使能
 WDTFEED=0XAA;//启动看门狗喂狗序列。如果在看门狗正常工作后喂狗序列不完整会造成看门狗复位
 WDTFEED=0X55;//完成看门狗喂狗操作
}
 
void WDT_FEED(void)
{
 zyIrqDisable();//喂狗的时候停止中断
 WDTFEED=0XAA;
 WDTFEED=0X55;//完成喂狗
 zyIrqEnable();//开启系统的中断
}
 
int main (void)
{
 
 
   targetInit();                                                      
   pinInit();                                                         
   myDelay(1000);
   SYSAHBCLKCTRL |= (1ul << 6);                                         
 GPIO0DIR=0X02;//设置P0.02为IO输出
   WDT_Init(0xffff);
 GPIO0DATA=0XFD;//led持续闪烁表明系统在不停的复位
 myDelay(1000);//加延时使LED闪烁跟明显
   while (1)
   { 
     myDelay(1000);//不喂狗LED会闪烁
 
   }
}

关键字:Cortex-M0  看门狗  程序详解 引用地址:Cortex-M0 看门狗程序详解

上一篇:uC/OS II程序设计点滴记录
下一篇:基于微控制器的自由轴法RLC测量方法研究

推荐阅读最新更新时间:2024-03-16 13:50

【库函数版本】基于STM32F103的MPU6050的原始数据读取程序详解
因为我的博客已经对I2C协议的详细过程已经做了一个例子!所以这个MPU6050的程序我将使用库函数完成! 第一步:硬件连接: 第二步:初始化I2C端口的函数: /***PB6/PB7 端口初始化****/ static void I2C_GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOB,ENABLE ); RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE); GPIO_InitStructure.GP
[单片机]
【库函数版本】基于STM32F103的MPU6050的原始数据读取<font color='red'>程序</font><font color='red'>详解</font>
【实验五】窗口看门狗实验
一、实验目的 1)了解STM32窗口看门狗; 2)了解STM32窗口看门狗与独立看门狗的异同; 3)会使用窗口看门狗; 4)利用STM32窗口看门狗的中断功能来喂狗。 二、STM32 窗口看门狗简介 窗口看门狗通常被用来监测,由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。除非递减计数器的值在T6位变成0前被刷新,看 门狗电路在达到预置的时间周期时,会产生一个MCU复位。在递减计数器达到窗口寄存器数值之前,如果7位的递减计数器数值(在控制寄存器中)被刷新, 那么也将产生一个MCU 复位。这表明递减计数器需要在一个有限的时间窗口中被刷新。 简而言之,窗口看门狗有两个门限就上窗口和下窗口;下
[单片机]
Cortex-M0权威指南》之体系结构---嵌套中断控制器(NVIC)
  为了管理中断请求的优先级并处理其他异常,Cortex-M0处理器内置了嵌套中断控制器(NVIC)。NVIC的一些可编程控制器控制着中断管理功能,这些寄存器被映射到系统地址空间里,它们所处的区域被称为系统控制空间(SCS)。   NVIC有以下特性: 灵活的中断管理; 支持嵌套中断; 向量化的异常入口 中断屏蔽 灵活的中断管理   Cortex-M0处理器中,每一个外部中断都可以被使能或者禁止,并且可以被设置为挂起状态或者清除状态。处理器的中断可以是信号级的(在中断服务程序清除中断请求以前,外设的请求会一直保持),也可以是脉冲形式的(最小一个始终周期),这样中断控制器就可以处理任何中断源。 支持嵌
[单片机]
《<font color='red'>Cortex-M0</font>权威指南》之体系结构---嵌套中断控制器(NVIC)
S3C2440上看门狗(Watchdog)驱动开发实例讲解
嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。 共享资源,欢迎转载: http://hbhuanggang.cublog.cn 一、开发环境 主 机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand, Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2 二、相关概念 1、平台设备及平台设备驱动: 这个在前面篇幅: S3C2440上RTC时钟驱动开发实例讲解 中已经讲过了。这里只需了解一下系统为我们定义的看门狗(Watchdog)平
[单片机]
S3C2440上<font color='red'>看门狗</font>(Watchdog)驱动开发实例讲解
基于X25045的新型看门狗电路
  看门狗(Watchdog)电路是嵌入式系统需要的抗干扰措施之一。本文用X25045芯片设计了一种新的看门狗电路,具有体积小、占用I/O口线少和编程方便的特点,可广泛应用于仪器仪表和各种工控系统中。 前言   工控系统在运行时,通常都会遇到各种各样的现场干扰,抗干扰能力是衡量工控系统性能的一个重要指标。看门狗(Watchdog)电路是自行监测系统运行的重要保证,几乎所有的工控系统都包含看门狗电路。在8096系列单片机和增强型8051系列单片机中,该系统已经做在芯片内部,用户只要用软件开放它就可以,使用很方便。但目前工控系统仍在使用廉价的普通型8051系列单片机,则看门狗电路必须由用户自己建立。   看门狗电路一般有软件看门
[单片机]
STM8L探索套件学习笔记-窗口看门狗WWDG(十七)
窗口看门狗(WWDG)通常被用来监测由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。除非递减计数器的值在 T6 位变成 0 前被刷新,看门狗电路在达到预置的时间周期时,会产生一个 MCU 复位。在递减计数器达到窗口寄存器数值之前,如果 7 位的递减计数器数值(在控制寄存器中)被刷新, 那么也将产生一个 MCU 复位。这表明递减计数器需要在一个有限的时间窗口中被刷新。 上面提到的 T6 即是窗口看门狗的自减计数器的第六位(最高位)。在该计数器的 T6 位变为 0 后(小于 0X40),就会引起一复位。这是窗口的下限。而当计数器的值在大雨窗口配置寄存器的窗口值之前就被修改的话,也会引起一次复位,这里窗口值
[单片机]
C51单片机看门狗电路
采用89C51单片机和X25045组成的看门狗电路,X25045硬件连接图如图1所示。X25045芯片内包含有一个看门狗定时器,可通过软件预置系统的监控时间。在看门狗定时器预置的时间内若没有总线活动,则X25045将从RESET输出一个高电平信号,经过微分电路C2、R3输出一个正脉冲,使CPU复位。图1电路中,CPU的复位信号共有3个:上电复位(C1、R2),人工复位(S、R1、R2)和Watchdog复位(C2、R3),通过或门综合后加到RESET端。C2、R3的时间常数不必太大,有数百微秒即可,因为这时CPU的振荡器已经在工作。 看门狗定时器的预置时间是通过X25045的状态寄存器的相应位来设定的。如表1所示,X25
[单片机]
C51单片机<font color='red'>看门狗</font>电路
基于X5045的看门狗电路及51读写x5045存储器的程序
X5045是一种集看门狗、电压监控和串行EEPROM 三种功能于一身的可编程控制电路.特别适合应用在需要少量存储器,并对电路板空间需求较高场合, X5045具有电压监控功能,可以保护系统免受低电压的影响,当电源电压降到允许范围(4.2V)以下时,系统将复位,直到电源电压返回到稳定值为止。X5045的存储器与CPU 通过串行通信方式接口(SPI),可以存放512个字节数据.可擦写100万次,数据可保存100年. 下图是X5045与具有手动复位的8051微控制器的连接 注意:图上的芯片写着是X5043,实际上这是X5045的接法 下边是51读写x5045存储器的程序 //x5045和51的连接方法 sbit CS = P
[单片机]
基于X5045的<font color='red'>看门狗</font>电路及51读写x5045存储器的<font color='red'>程序</font>
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved