FSL的MCU 看门狗在应用中有什么特别需要注意的(已解决)

2020-02-21 20:52发布

本帖最后由 FSL_TICS_ZJJ 于 2014-9-11 14:33 编辑

家家的MCU片上都有看门狗,但在应用中,这个小东西常常是被弃用,FSL的看门狗有什么独特的地方,大家在应用中又是如合使用它的,可以分享下你的好ideal.
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
73条回答
holts2
1楼-- · 2020-02-21 21:37
我先来抛块砖,我在51中是这样用它的



  1. /***********************************************************************
  2. Function : Main
  3. Note     : 主程序
  4. ***********************************************************************/
  5. void main()
  6. {
  7.     Time_Init();    //定时器初始化

  8.     EA=1;           //开总中断

  9.     ADC_Init(0);    //设置AD转换通道为P1.0

  10.     P1M0 = 0xFC;    //P1.234567置为推换口
  11.     P1M1 = 0x03;    //P1.01置为高阻抗
  12.     P2M0 = 0xFF;    //P2.01234567置为推勉输出
  13.     P2 = 0x0F;

  14.     PWM_Init();     //DDS初始化 把PCA置为PWM
  15.        
  16.     set90(2);       //初始设置相位
  17.     setRng(Rang_idx);  //初始设置量程
  18.     setGain(Gain_idx); //初始设置增益
  19.     setFrq(Frq_idx);   //DDS初始设置为1kHz       

  20.     LCD_INIT();

  21.     LCD_PrintString("LCR 3.0");
  22.    
  23.     while(1)
  24.      {
  25.              WDTC();  喂狗

  26.            //键盘处理
  27.               if (Trg&KEY_M) {M_Done(Fun_idx);}  //功能切换
  28.               if (Trg&KEY_X) {X_Done(Mode_idx);} //模式切换
  29.               if (Trg&KEY_R) {setRng(0);}        //量程步进
  30.               if (Trg&KEY_C) {C_Done(0);}        //清零
  31.               if (Cont&KEY_M)
  32.                 {
  33.                        cnt_plus++;
  34.                        if (cnt_plus>100)  {cnt_plus=0;M_Done(FUN_S);}
  35.                  }
  36.               if (Cont&KEY_R)
  37.                 {
  38.                        cnt_plus++;
  39.                        if (cnt_plus>100) {cnt_plus=0;setRng(1);}
  40.                  }
  41.               if (Cont&KEY_C)
  42.                 {
  43.                        cnt_plus++;
  44.                        if (cnt_plus>100) {cnt_plus=0;C_Done(1);}
  45.                  }
  46.               if (!(Cont)){cnt_plus=0;}

  47.            //显示处理
  48.            if (Status == DISPLAY )
  49.             {
  50.                 Status = METER;

  51.                    //calcLCR();
  52.                    //SendSem(meter_fine);
  53.                    //showR();
  54.               }
  55.      }
  56. }

复制代码
stepby
2楼-- · 2020-02-22 01:00
喂狗要及时,饿了会咬人。
holts2
3楼-- · 2020-02-22 02:10
stepby 发表于 2014-8-24 07:58
喂狗要及时,饿了会咬人。

担心它咬人,你可以关了它,这也是一种办法,如果你能驾役它,爱它,用它
sunnyqd
4楼-- · 2020-02-22 03:04
 精彩回答 2  元偷偷看……
holts2
5楼-- · 2020-02-22 08:48
sunnyqd 发表于 2014-8-24 08:26
要不要这么肉麻呢。。及时喂就可以啦,别放在中断里,放在住循环里

别说这个小东西有时让人又爱又恨,在有些应用,任务的耗时不确定,放在循环里很难搞定的说,这种情型下,我通常是一关了之。
sunnyqd
6楼-- · 2020-02-22 14:31
holts2 发表于 2014-8-24 08:35
别说这个小东西有时让人又爱又恨,在有些应用,任务的耗时不确定,放在循环里很难搞定的说,这种情型下, ...

我通常的做法是,主循环(或idle进程)放独立看门狗,再额外开一个高优先级进程,放窗口看门狗

一周热门 更多>