3671|9

6

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

求大神指导看门狗使用 [复制链接]

现在想将程序加入看门狗功能,搞了半天也不明白该如何使用,小弟不才,希望能够获得大家指点
#include "msp430x14x.h"
#define UINT8 unsigned char
#define UINT16 unsigned int
#define False 0
#define True 1

UINT16 Timer_Counter = 0;
UINT8  Timer_Flag = False;
UINT8  Light_Start = False;
UINT8  Fun_Choose = False;

/***********时钟初始化函数***********/
void clk_init()
{
  UINT8 i;
  BCSCTL1&=~XT2OFF; //打开高频晶体振荡器
  BCSCTL2|=SELM_2+SELS; //MCLK和SMCLK都选择XT2,8MHZ
    do
    {
      IFG1&=~OFIFG;   //清除振荡器失效标志
      for(i=0xff;i>0;i--);  //延迟待稳定
      
    }
   while((IFG1&OFIFG)!=0);
}   
   
void GPIO_Init()
{
  P1DIR &= ~BIT5;
  P1OUT |= 0xFF;
  P2DIR |= BIT6;
  P2OUT &= 0x00;
  
  P5DIR |= BIT4;
  P5OUT &= ~BIT4;  
}
/*****************TimerA_Init*******************/
void TimerA_Init()
{
  TACTL|=TASSEL_2+MC0+TACLR+TAIE+ID_3;
  CCTL0 = CCIE;
  TACCR0=29999;
}
//******************************************************
//352微秒延时程序
void delay_352us(UINT16 i)//352us延时程序
{
  UINT8 j;
  while(i--)
  {
   for(j=0;j<255;j++)
   {  
    _NOP();
    _NOP();
    _NOP();
    _NOP();   
    }
  }
}

/************************************************/
/*                   主函数                     */
/************************************************/
void main(void)

{

//  WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer

    WDTCTL = WDTPW + WDTCNTCL;

    P5DIR |= BIT4;                            // Set P5.4 to output direction
    P5OUT ^= BIT4;
    clk_init();
  
    GPIO_Init();
   
    TimerA_Init();

    _EINT();
    LPM0;                       
    WDTCTL = WDTPW + WDTCNTCL;



}

/************定时器A中断函数******************/
#pragma vector=TIMERA0_VECTOR
__interrupt void timer0()
{
   switch(TAIV)
   {
     case TAIV_TACCR1:break;
     case TAIV_TACCR2:break;
     case TAIV_TAIFG:
     {
       Timer_Counter++;
       if(((P1IN & BIT5)>>5) == 1)
       {
           Fun_Choose = False;  
       }
       else
       {         
           Fun_Choose = True;
       }
      
      
       if(Fun_Choose == True)
       {
         if(Timer_Counter >= 11)
            
         {
         
            Timer_Flag = 0;
           
         }
         if(Timer_Counter >= 33)
            {
              Timer_Counter = 0;
              Timer_Flag = 1;
            }  
         if(Timer_Flag == True)
         {
           P2OUT |= BIT6;
           P5OUT |= BIT4;
         }
         else
         {
           P2OUT &= ~BIT6;
           P5OUT &= ~BIT4;
         }
       }
       else
       {
         P5OUT |= BIT4;
         P2OUT |= BIT6;
       }   
     }
     break;
   }
}



最新回复

先初始化看门狗,再使能看门狗。隔一段时间喂一次狗,时间间隔要合适。别让看门狗的计数器溢出。如果停止喂狗。看门狗就会重启系统。  详情 回复 发表于 2016-6-18 10:33
 
点赞 关注

回复
举报

3238

帖子

5

TA的资源

五彩晶圆(中级)

沙发
 
哥们,你写代码连while(1)
{}都不需要?
 
个人签名淘宝:https://viiot.taobao.com/Q群243090717
多年专业物联网行业经验,个人承接各类物联网外包项目
 

回复

1234

帖子

4

TA的资源

纯净的硅(高级)

板凳
 
看门狗,通常是为了怕程序跑飞从而就不会进看门狗的中断,没有喂狗这个动作,程序就会复位。

看门狗也可以作为定时器来使用,喂狗后,再用来查询状态。
 
个人签名天地庄周马;江湖范蠡船。
个性签名还是放QQ号吧,2060347305,添加说明EEworld好友
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

4
 
ywlzh 发表于 2016-6-14 13:06
看门狗,通常是为了怕程序跑飞从而就不会进看门狗的中断,没有喂狗这个动作,程序就会复位。

看门狗也可 ...

像在我的这个程序里,就是还需要添加喂狗这个操作,添加一个喂狗的中断源么

点评

喂狗的动作一定要有,不然,看门狗计数器就溢出了,但这不是中断源。比如,你在执行主循环的过程中,插入喂狗程序就行啦。  详情 回复 发表于 2016-6-16 22:38
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

5
 
1111A 发表于 2016-6-14 13:39
像在我的这个程序里,就是还需要添加喂狗这个操作,添加一个喂狗的中断源么

感觉自己已经入门了,发现什么样式正确使用的,感谢提醒
 
 
 

回复

3471

帖子

13

TA的资源

五彩晶圆(高级)

6
 
先初始化看门狗,再使能看门狗。隔一段时间喂一次狗,时间间隔要合适。别让看门狗的计数器溢出。如果停止喂狗。看门狗就会重启系统。
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

7
 
ienglgge 发表于 2016-6-15 01:39
先初始化看门狗,再使能看门狗。隔一段时间喂一次狗,时间间隔要合适。别让看门狗的计数器溢出。如果停止喂 ...

就是上边这个程序,430输出总是跑飞,用了内部看门狗,效果也不是很理想,现在这位这件事发愁,不知道到底为什么会跑飞,(430实现的功能 就是闪烁输出,在开启电源后,开启闪烁,然后重复启停电源,然后就没有输出了,还没有能够理解,还望能够指点下)
 
 
 

回复

373

帖子

0

TA的资源

纯净的硅(中级)

8
 
2楼说的对,你连while(1)循环都没有,程序不跑飞才怪,和看门狗有毛线关系
 
 
 

回复

3471

帖子

13

TA的资源

五彩晶圆(高级)

9
 
1111A 发表于 2016-6-14 13:39
像在我的这个程序里,就是还需要添加喂狗这个操作,添加一个喂狗的中断源么

喂狗的动作一定要有,不然,看门狗计数器就溢出了,但这不是中断源。比如,你在执行主循环的过程中,插入喂狗程序就行啦。
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(中级)

10
 
先初始化看门狗,再使能看门狗。隔一段时间喂一次狗,时间间隔要合适。别让看门狗的计数器溢出。如果停止喂狗。看门狗就会重启系统。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表