lpc1114看门狗_复位

发布者:乐观向前最新更新时间:2016-12-09 来源: eefocus关键字:lpc1114  看门狗  复位 手机看文章 扫描二维码
随时随地手机看文章

为了简单的展示一下不喂狗引起复位的效果。我们让单片机给间隔一定时间给串口发送递增的数据,发送一次数据,喂一次狗,两次发送数据的时间小于喂狗要求的最大时间,程序将正常执行,在串口调试助手上,将看到它收到了逐渐递增的数据。然后故意把喂狗的程序隐掉,重新下载程序后,在串口调试助手上,将看到当串口接收的数据递增到某个值时,又重新开始,说明没有及时喂狗造成了单片机复位。

新建一个工程,文件结构如下图所示:

新建看门狗例程

uart.c文件的介绍,请看第三章内容。

在main.c文件中,输入以下代码:

  1. #include “lpc11xx.h”

  2. #include “wdt.h”

  3. #include “uart.h”

  1. void delay(void)

  2. {

  3.    uint16_t i,j;

  1.    for(i=0;i<5000;i++)

  2.       for(j=0;j<250;j++);

  3. }

  1. int main()

  2. {

  3.    uint8_t i=0;

  1.    UART_init(9600);

  2.    WDT_Enable(1); // 看门狗初始化,1秒钟之内喂狗

  1.    while(1)

  2.    {

  3.       delay();

  4.       WDTFeed();

  5.       UART_send_byte(i);

  6.       i++;

  7.    }

  8. }

第10行,从main函数看起。

第12行,定义一个变量。

第13行,初始化串口波特率为9600。(关于此函数的详细说明,请看第四章内容。)

第14行,开启看门狗。

第15行,进入while死循环,间隔一定时间给串口发送逐渐递增的数据。

在wdt.h文件中,输入以下代码:

  1. #ifndef __NXPLPC11XX_WDT_H__

  2. #define __NXPLPC11XX_WDT_H__

  1. extern void WDT_Enable(uint8_t mode);

  2. extern void WDTFeed(void);

  1. #endif

在wdt.c文件中,输入以下代码:

  1. /******************************************/

  2. /* 函数功能:使能看门狗                   */

  3. /* 参    数:mode = 1 不喂狗产生复位      */

  4. /*           mode = 0 不喂狗产生中断      */

  5. /******************************************/

  6. void WDT_Enable(uint8_t mode)

  7. {

  8.    LPC_SYSCON->PDRUNCFG &= ~(0x1<<6);    // 看门狗振荡器时钟上电(bit6)

  9.    LPC_SYSCON->WDTOSCCTRL=(0x1<<5);   // WDT_OSC_CLK=300KHz

  10.    LPC_SYSCON->WDTCLKSEL = 0x2;        // 选择看门狗时钟源

  11.    LPC_SYSCON->WDTCLKUEN = 0x01;          // 更新时钟源

  12.    LPC_SYSCON->WDTCLKUEN = 0x00;          // 先写0,再写1达到更新目的

  13.    LPC_SYSCON->WDTCLKUEN = 0x01;

  14.    while ( !(LPC_SYSCON->WDTCLKUEN & 0x01) );  // 等待更新成功

  15.    LPC_SYSCON->WDTCLKDIV = 3;   // 设置看门狗分频值为3,看门狗时钟为100K

  16.    LPC_SYSCON->SYSAHBCLKCTRL |= (1<<15);// 允许WDT时钟

  17.    LPC_WDT->TC = 25000;           //定时时间大约1秒(这是在wdt_clk=100KHz时)

  18.    if(mode==1) LPC_WDT->MOD |= 0x03;         // 写值0x03:不喂狗产生复位

  19.    else if(mode==0) LPC_WDT->MOD |= 0x01; //  写值0x01:不喂狗发生中断

  20.    LPC_WDT->FEED = 0xAA;        // 喂看门狗,开启

  21.    LPC_WDT->FEED = 0x55;

  22. }

 

  1. /******************************************/

  2. /* 函数功能:喂狗                      */

  3. /******************************************/

  4. void WDTFeed(void)

  5. {

  6.    LPC_WDT->FEED = 0xAA;        // 喂狗

  7.    LPC_WDT->FEED = 0x55;

  8. }


关键字:lpc1114  看门狗  复位 引用地址:lpc1114看门狗_复位

上一篇:lpc1114看门狗_中断
下一篇:lpc1114看门狗_如何启动和喂狗

推荐阅读最新更新时间:2024-03-16 15:24

PIC单片机的外接电压检测复位电路举例
  1.设计思路   有许多型号单片机的内部均不具备掉电复位功能,即使对于内部包含该功能的PIC单片机,其复位门槛电压值是固定不可更改的,有时不能满足用户的需求,因此,外加电压检测复位电路也是较常见的设计方案。   对于片内带有掉电复位功能BOR的PIC单片机,在使用外接电压检测复位电路时,就必须将内部BUR功能禁止,方法是将系统配置字的BUDEN位设置为0。   对于内部不带BOR功能的PIC单片机,其电源控制寄存器PCUN没有BOR标志位,无法准确识别由外接电压检测复位电路引起的单片机复位,因此在程序执行过程中在MCLR引脚施加了人工复位信号引起的复位。   与外接电压检测复位电路相关的单片机片内等效电路如图1所示,从
[单片机]
PIC单片机的外接电压检测<font color='red'>复位</font>电路举例
MSP430看门狗程序
单片机经常工作在环境干扰比较大的环境中,容易受到各种各样的干扰而使单片机不能执行正常的程序。MSP430片内集成了看门狗定时器(WDT),具有两种功能,其一作为普通的定时器,该模式下产生正常的定时中断信号;其二作为通常意义上的看门狗,用来复位单片机,避免单片机长时间处于不正常工作状态。 鉴于看门狗的工作职责,看门狗寄存器值的读写通常采用密码字+数据的方式,以防止单片机正常执行过程中对看门狗的误写。MSP430F169简单的看门狗初始化和喂狗操作程序如下所示: #include #include wdt.h /******************************************* 函数名称:看门狗
[单片机]
STM8L探索套件学习笔记-窗口看门狗WWDG(十七)
窗口看门狗(WWDG)通常被用来监测由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。除非递减计数器的值在 T6 位变成 0 前被刷新,看门狗电路在达到预置的时间周期时,会产生一个 MCU 复位。在递减计数器达到窗口寄存器数值之前,如果 7 位的递减计数器数值(在控制寄存器中)被刷新, 那么也将产生一个 MCU 复位。这表明递减计数器需要在一个有限的时间窗口中被刷新。 上面提到的 T6 即是窗口看门狗的自减计数器的第六位(最高位)。在该计数器的 T6 位变为 0 后(小于 0X40),就会引起一复位。这是窗口的下限。而当计数器的值在大雨窗口配置寄存器的窗口值之前就被修改的话,也会引起一次复位,这里窗口值
[单片机]
简述判断数字电路中晶振和复位电压的经验
1.测晶振时钟:用数字万用表测晶振两端的电压,如果两端电压为电源电压一半或其中一端低于电源电压的一半(多见于频率较高的晶振),则晶振工作正常。如果,某一端高于电源工作电压一半,则晶振不正常;但判断其工作的频率是否符合标称值,可以用观察工作情况判定。例如,一台采用ES系列解码芯片的VCD,其27MHz晶振发生频偏时,就会出现无彩色或开机画面放大同时无彩色现象,VCD机伺服电路的16MHz不符,会发生碟片转而不读数现象,这时,可更换晶振试试。 2.复位电路的检测:这一项必须使用指针式万用表,因为用数字表无法看出瞬时的电压反应。测量时,万用表置于2.5V挡,用万用表的红表笔接电源的正极,黑表笔接复位脚,然后开机通电,这时若表针轻微摆动一
[测试测量]
STM32上电不复位 问题
我做了一个stm32 的板子,上电显示不正常,手动复位后正常显示, 最后找到的原因是 是片外设备的上电速度比MCU慢,MCU在片外设备还没有就绪时就操作它,导致系统不能正常工作。 外设为 EEPROM EEPROM上电较慢 在读EEPROM前 加一个延时 10ms,解决了上电跑飞的问题!
[单片机]
基于看门狗芯片MAX708的数据保护系统设计
引 言   单片机的程序稳定性和运行及数据的安全性是设计者在不同的运行环境中所必须考虑的问题,而最易遇到的问题是受干扰而使CPU进入死循环,一般情况下设计者会使用软件陷阱和软件看门狗来避免此类现象的出现,对于一般的运行环境还可以,如果是连续运行或环境恶劣的状况时往往不能满足要求,这时要使用硬件看门狗来重启 CPU,使程序恢复正常运行。同时,如果电源电压波动较大或断电,有些系统还要求将当前有用的数据进行保护。MAX708就是这种既有电源监控和数据保护又有看门狗作用的集成电路芯片。 1 看门狗芯片MAX708的工作原理   MAX708是一种微处理器电源监控和看门狗芯片,可同时输出高电平有效和低电平有效的复位信号。复位信号可由V
[工业控制]
基于<font color='red'>看门狗</font>芯片MAX708的数据保护系统设计
STM32芯片异常复位的原因有哪些
问题描述 某STM32用户反馈,当使用STM32L4芯片的时候,程序运行一段时间后,会忽然复位。复位后程序继续运行,但是还会继续复位,原因不详。 问题解析 初步确定复位的原因,是硬件复位,如外部NRST被拉低,还是软件复位,包括软件直接调用复位,或者看门狗复位,还是低功耗模式如standby模式被唤醒时产生中断。 查看复位状态寄存器了解复位大方向,然后做进一步得拆解分析。 目前客户项目的复位原因是因为看门狗复位,即客户使用了IWDG,但由于某种原因没有及时喂狗,导致IWDG超时复位。初步怀疑由于客户软件的问题,程序跑飞,进入异常处理。 因为客户的异常处理函数中并没有做任何动作,导致独立看门狗IWDG复位。基于此,我
[单片机]
STM32芯片异常<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的连接方法
[单片机]
X5045组成的<font color='red'>看门狗</font>电路及51读写x5045存储器的程序
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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