打印

MSP430--看门狗定时器

[复制链接]
742|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ccw1986|  楼主 | 2015-9-30 20:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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对应不同的分频。  


相关帖子

沙发
ccw1986|  楼主 | 2015-9-30 20:56 | 只看该作者
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;  
    }  

使用特权

评论回复
板凳
蜕变吧| | 2015-10-30 09:16 | 只看该作者
讲解的不错,学习了!

使用特权

评论回复
地板
houjiakai| | 2015-10-31 15:06 | 只看该作者
还是用看门狗放置死机的。

使用特权

评论回复
5
天灵灵地灵灵| | 2015-10-31 22:25 | 只看该作者
默认在中断中SR清零,也就是GIE是0,所以默认不会发生中断嵌套

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

84

主题

925

帖子

6

粉丝