单片机
返回首页

MSP430(G2553)用看门狗定时器来产生周期信号

2020-01-28 来源:eefocus

#include

#include

 

volatile unsigned int i = 0;  // 中断服务子程序中所用到的全局变量, 最好定义成 volatile 型, 具体原因和用法可以参考我的其他博文介绍

 

void main (void)

{

    WDTCTL = WDT_MDLY_0_5; // 周期 0.5ms, 设置可参考下面头文件中的截段

    IE1 |= WDTIE;          // 使能WDT中断

    P2DIR |= BIT2;         // P2.2输出

    _EINT();               // 使能全局中断

    for (;;)

    {

        LPM0;              // 进入LPM0

        _NOP();

    }

}

 

 

// 看门狗中断服务子程序

#pragma vector=WDT_VECTOR

__interrupt void WDT_Timer_ISR(void)

{

    if (i++ > 1) {

        P2OUT ^= BIT2;     // 取反

    }

}

==============================================================================================================================


//==========================================================================================================================

// 相关头文件中的定义

/************************************************************

* WATCHDOG TIMER

************************************************************/

#define __MSP430_HAS_WDT__             /* Definition to show that Module is available */

 

#define WDTCTL_             (0x0120u)  /* Watchdog Timer Control */

DEFW(   WDTCTL            , WDTCTL_)

/* The bit names have been prefixed with 'WDT' */

#define WDTIS0              (0x0001u)

#define WDTIS1              (0x0002u)

#define WDTSSEL             (0x0004u)

#define WDTCNTCL            (0x0008u)

#define WDTTMSEL            (0x0010u)

#define WDTNMI              (0x0020u)

#define WDTNMIES            (0x0040u)

#define WDTHOLD             (0x0080u)

#define WDTPW               (0x5A00u)

 

 

/* WDT-interval times [1ms] coded with Bits 0-2 */

/* WDT is clocked by fSMCLK (assumed 1MHz) */

#define WDT_MDLY_32         (WDTPW+WDTTMSEL+WDTCNTCL)                         /* 32ms interval (default) */

#define WDT_MDLY_8          (WDTPW+WDTTMSEL+WDTCNTCL+WDTIS0)                  /* 8ms     ' */

#define WDT_MDLY_0_5        (WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1)                  /* 0.5ms   ' */

#define WDT_MDLY_0_064      (WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1+WDTIS0)           /* 0.064ms ' */

/* WDT is clocked by fACLK (assumed 32KHz) */

#define WDT_ADLY_1000       (WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL)                 /* 1000ms  ' */

#define WDT_ADLY_250        (WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS0)          /* 250ms   ' */

#define WDT_ADLY_16         (WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1)          /* 16ms    ' */

#define WDT_ADLY_1_9        (WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0)   /* 1.9ms   ' */

/* Watchdog mode -> reset after expired time */

/* WDT is clocked by fSMCLK (assumed 1MHz) */

#define WDT_MRST_32         (WDTPW+WDTCNTCL)                                  /* 32ms interval (default) */

#define WDT_MRST_8          (WDTPW+WDTCNTCL+WDTIS0)                           /* 8ms     ' */

#define WDT_MRST_0_5        (WDTPW+WDTCNTCL+WDTIS1)                           /* 0.5ms   ' */

#define WDT_MRST_0_064      (WDTPW+WDTCNTCL+WDTIS1+WDTIS0)                    /* 0.064ms ' */

/* WDT is clocked by fACLK (assumed 32KHz) */

#define WDT_ARST_1000       (WDTPW+WDTCNTCL+WDTSSEL)                          /* 1000ms  ' */

#define WDT_ARST_250        (WDTPW+WDTCNTCL+WDTSSEL+WDTIS0)                   /* 250ms   ' */

#define WDT_ARST_16         (WDTPW+WDTCNTCL+WDTSSEL+WDTIS1)                   /* 16ms    ' */

#define WDT_ARST_1_9        (WDTPW+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0)            /* 1.9ms   ' */


进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 家用电源无载自动断电装置的设计与制作

  • 用数字电路CD4069制作的万能遥控轻触开关

  • 使用ESP8266从NTP服务器获取时间并在OLED显示器上显示

  • 开关电源的基本组成及工作原理

  • 用NE555制作定时器

  • 带有短路保护系统的5V直流稳压电源电路图

    相关电子头条文章