2020-02-21 20:52发布
stepby 发表于 2014-8-24 07:58 喂狗要及时,饿了会咬人。
sunnyqd 发表于 2014-8-24 08:26 要不要这么肉麻呢。。及时喂就可以啦,别放在中断里,放在住循环里
holts2 发表于 2014-8-24 08:35 别说这个小东西有时让人又爱又恨,在有些应用,任务的耗时不确定,放在循环里很难搞定的说,这种情型下, ...
最多设置5个标签!
- /***********************************************************************
- Function : Main
- Note : 主程序
- ***********************************************************************/
- void main()
- {
- Time_Init(); //定时器初始化
- EA=1; //开总中断
- ADC_Init(0); //设置AD转换通道为P1.0
- P1M0 = 0xFC; //P1.234567置为推换口
- P1M1 = 0x03; //P1.01置为高阻抗
- P2M0 = 0xFF; //P2.01234567置为推勉输出
- P2 = 0x0F;
- PWM_Init(); //DDS初始化 把PCA置为PWM
-
- set90(2); //初始设置相位
- setRng(Rang_idx); //初始设置量程
- setGain(Gain_idx); //初始设置增益
- setFrq(Frq_idx); //DDS初始设置为1kHz
- LCD_INIT();
- LCD_PrintString("LCR 3.0");
-
- while(1)
- {
- WDTC(); 喂狗
- //键盘处理
- if (Trg&KEY_M) {M_Done(Fun_idx);} //功能切换
- if (Trg&KEY_X) {X_Done(Mode_idx);} //模式切换
- if (Trg&KEY_R) {setRng(0);} //量程步进
- if (Trg&KEY_C) {C_Done(0);} //清零
- if (Cont&KEY_M)
- {
- cnt_plus++;
- if (cnt_plus>100) {cnt_plus=0;M_Done(FUN_S);}
- }
- if (Cont&KEY_R)
- {
- cnt_plus++;
- if (cnt_plus>100) {cnt_plus=0;setRng(1);}
- }
- if (Cont&KEY_C)
- {
- cnt_plus++;
- if (cnt_plus>100) {cnt_plus=0;C_Done(1);}
- }
- if (!(Cont)){cnt_plus=0;}
- //显示处理
- if (Status == DISPLAY )
- {
- Status = METER;
- //calcLCR();
- //SendSem(meter_fine);
- //showR();
- }
- }
- }
复制代码担心它咬人,你可以关了它,这也是一种办法,如果你能驾役它,爱它,用它
别说这个小东西有时让人又爱又恨,在有些应用,任务的耗时不确定,放在循环里很难搞定的说,这种情型下,我通常是一关了之。
我通常的做法是,主循环(或idle进程)放独立看门狗,再额外开一个高优先级进程,放窗口看门狗
一周热门 更多>