MSP430入门程序之(02)WDT(看门狗模式)

#include "in430.h"
#include "io430x14x.h"
//定义使用主频
#define CPU_F ((double)8000000)
//定义延时函数
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
#define _EINT() __enable_interrupt()

void wdt_init(void)
{
WDTCTL = WDTPW + WDTHOLD;//禁止看门狗
WDTCTL = WDT_ARST_1000;//设置看门狗
}
void clk_init(void)
{
unsigned char i;
BCSCTL1 &= ~XT2OFF;
do
{
IFG1 &= ~OFIFG;
for(i = 0xFF;i > 0;i--);
}while(IFG1 & OFIFG);
BCSCTL2 |= SELM_2;
DCOCTL |= DCO2 + DCO1 + DCO0;
}
void port_init(void)
{
P2DIR |= 0x01;
P2OUT |= 0x01;
P5DIR |= 0x70;
P5SEL = BIT4+BIT5+BIT6;
P4DIR |= 0xFF;
}
void init_devices(void)
{
wdt_init();
clk_init();
port_init();
}
void main( void )
{
init_devices();
//IE1 |= WDTIE;
P2OUT &= ~0x01;
delay_ms(50);
P2OUT |= 0x01;
//_EINT();
while(1)
{
delay_ms(200);
P2OUT &= ~0x01;
delay_ms(200);
P2OUT |= 0x01;
WDTCTL = WDTPW + WDTCNTCL + (WDTCTL & 0x00FF);
delay_ms(5000);
}
}

M1与M2间隔1s,为看门狗定时器复位时间;

四个低脉冲为P2.0拉低,窄脉冲为50ms,宽脉冲为200ms.

时间: 2024-08-10 02:11:27

MSP430入门程序之(02)WDT(看门狗模式)的相关文章

MSP430入门程序之(01)时钟与延时

//芯片MSP430F149#include "io430.h"//定义使用主频#define CPU_F ((double)8000000) //定义延时函数#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) void main( void ){ unsigned

(4)MSP430F5529 看门狗的设置

看门狗定时器(Watchdog Timer(WDT_A))实际上是一个特殊的定时器,即可以用来作为看门狗使用,也可以用作定时器. 所谓的看门狗功能,是指可以监控程序是否由于某些干扰或者错误而跑飞.其原理就是发生故障的时间满足规定的定时时间后,产生一个非屏蔽中断,使系统复位.这样当在调试程序或预计程序在某个地方可能瞬时发生错误时(如外部电路干扰),选用设置看门狗定时中断可以避免程序跑飞. 当然,它也可以用作一般的定时功能. 不过实际上,由于看门狗定时器(作看门狗使用时)需要很严密的设置(否则程序容

[ZigBee] 12、ZigBee之看门狗定时器——饿了就咬人的GOOD DOG

引言:硬件中的看门狗,不是门卫的意思,而是一只很凶的狗!如果你不按时喂它,它就会让系统重启!这反而是我们想要的功能~ 1.看门狗概述 看门狗定时器(WDT,Watch Dog Timer)是单片机的一个组成部分,它实际上是一个计数器,一般给看门狗一个数字,程序开始运行后看门狗开始倒计数.如果程序运行正常,过一段时间CPU应发出指令让看门狗复位,重新开始倒计数.如果看门狗减到0就认为程序没有正常工作,强制整个系统复位.因此可以用看门狗防止程序在跑飞的时候回不到正常模式. 看门狗可用于受到电气噪音.

CC2541蓝牙学习——看门狗

看门狗是在软件跑飞的情况下CPU自恢复的一个方式,看门狗分为硬狗和软狗,硬狗就是由专门的看门狗硬件电路实现看门狗功能,看门狗芯片也比较多,比如DS1232,除了看门狗功能外还有电源电压监测功能.软狗就是由软件实现的看门狗功能,现在很多CPU都自带了软狗,很难说硬狗好还是软狗好,如果软狗够用,尽量使用软狗简化设计,看门狗说白了就是一个定时器!,当软件在选定的时间间隔内不能置位看门狗定时器(WDT),WDT就复位系统.看门狗可用于电噪声,电源故障或静电放电等恶劣工作环境或高可靠性要求的环境.如果系统

zigbee学习之路(十一):看门狗

一.前言 今天,我们要通过实验学习和认识一下看门狗的使用,看门狗是为了防止防止程序跑飞的,通过不断的喂狗,使看门狗能持续监管程序的运行状态,当程序跑飞时,能及时把程序拽回来. 二.原理与分析 在CPU 可能受到一个软件颠覆的情况下,看门狗定时器(WDT)用作一个恢复的方法.当软件在选定时间间隔内不能清除WDT 时,WDT 必须就复位系统.看门狗可用于受到电气噪音.电源故障.静电放电等影响的应用,或需要高可靠性的环境.如果一个应用不需要看门狗功能,可以配置看门狗定时器为一个间隔定时器,这样可以用于

CC2540开发板学习笔记(七)—— 看门狗

一.功能: 防止程序跑飞,使得系统重新进入工作状态,即一种复位操作吧. 但需要不停地喂狗= =(就是不断的执行某种操作),假如说你的程序跑到了不知道哪里去的错误时,即不会实现喂狗,就会发生复位,程序就进入正常工作状态. 二.模拟看门狗作用 加上注释相当于进入不正常的工作状态. #include<ioCC2540.h> #define uint unsigned int #define uchar unsigned char //定义控制LED灯的端口 #define LED1 P1_0 #de

【分享】iTOP-iMX6UL开发板驱动看门狗 watchdog 以及 Linux-c 测试例程

iTOP-iMX6UL开发板看门狗测试例程,iTOP-iMX6UL 开发板的看门狗驱动默认已经配置,可以直接使用测试例程. 版本 V1.1:1.格式修改:2.例程修改完善,其中增加喂狗代码.1 看门狗内核驱动看门狗的驱动已经默认配置,iMX6UL 的 watchdog 看门狗驱动源码是"drivers/watchdog/watchdog.c".如下图所示,选择"Device Drivers --->",输入回车. 如下图所示,在"Device Dri

ARM中的看门狗程序

在ARM中,有一个硬件部分叫WATCH DOG.这个硬件,一直在做一件事情:就是,从某一数值,一直数,各一段时间减一,隔一段时间减一,直到减到0的时候将会触发重启或者中断.而有时候,为了预防死机,我们在操作系统跑起来的时候会有一个特定的程序来做一件事情:减到特定是值的时候数值将会重新置到100.这样,看门狗将会循环往复做一件事情:一直数数,而不会死机. 这个程序叫做守护程序:又叫做喂狗程序. 看门狗的逻辑运算图如下: 今天,有看门狗来写了一个程序:隔一段时间来触发一个中断,每次中断来的时候,将会

软件看门狗--别让你地程序无响应(使用未公开API函数IsHungAppWindow,知识点较全)

正文一.概述一些重要的程序,必须让它一直跑着:而且还要时时关心它的状态——不能让它出现死锁现象.当然,如果一个主程序会出现死锁,肯定是设计或者编程上的失误.我们首要做的事是,把这个Bug揪出来.但如果时间紧迫,这个Bug又“飘忽不定”,那么,我们还是先写一个软件“看门狗”,暂时应一下急吧. “看门狗”的需求描述:“看门狗”的运行不出现界面窗口,具有一定的隐蔽性:定时判断目标进程是否运行在当前系统中,如果没有则启动目标进程:判断目标进程是否“没有响应”,如果是则终止目标进程:如果目标进程“没有响应