MSP430--看门狗定时器

1.WDT总共有3个寄存器:WDTCTL,IE1,IFG1.




2.WDT interrupt:

看门狗有两种工作模式,watchdog mode, interval mode。

WDTIFG 置位的两种情况:在看门狗模式下发生看门狗溢出。在间隔定时模式下发生定时溢出,且全局中断使能GIE和WDTIE均开启。

WDTIFG在中断服务程序后会自动清除该标记。

3.WDTCTL

WDTPW:必须写0x5A.
WDTHOLD:停止看门狗就设为1.
WDTNMIES: NMI下降沿为1,上升沿为0.
WDTNMI: NMI为1.
WDTTMSEL:间隔定时器模式设为1.
WDTCNTCL:通过该位来清除WDT计数器的值 通常设为1表示清除到0.
WDTSSEL:设置时钟源 ACLK(辅助系统时钟)为1,SMCLK(子系统时钟)为0.
WDTISx:设置时间间隔。0-3对应不同的分频。


4.WDT程序:

默认在中断中SR清零,也就是GIE是0,所以默认不会发生中断嵌套。只有在中断服务程序中打开GIE才能发生中断嵌套。

#include  <msp430x14x.h>
unsigned int i=0;
void main(void)
{
  WDTCTL = WDT_MDLY_32;                     // Set Watchdog Timer interval to ~30ms
  IE1 |= WDTIE;                             // Enable WDT interrupt
  P2DIR =0xFF;                            // Set P1.0 to output direction
  P2OUT = 0xFF;
  _BIS_SR(LPM0_bits + GIE);                 // Enter LPM0 w/ interrupt
}

// Watchdog Timer interrupt service routine
#pragma vector=WDT_VECTOR
__interrupt void watchdog_timer(void)
{
  P2OUT = ~(0x80>>(i++));                            // Toggle P1.0 using exclusive-OR
  if(8==i) i=0;
}


  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值