音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

看門狗

作者:飄葉 欄目:新手園地
在單片機系統(tǒng)中,我們經(jīng)常用硬狗復位MCU。程序經(jīng)常這樣寫:

       data unsigned CHAR bootflag;

       if(bootflag!=0xaa)
          {
               /*      冷啟動代碼      */
          }
       else
          {
               /*      熱啟動代碼      */
          }

      最近做了一個東東,發(fā)現(xiàn)即使系統(tǒng)冷啟動,bootflag仍為0xaa。所以希望各位兄第做東西時,如果用到硬狗,程序中至少要用2個啟動檢查變量,來查看是冷啟動,還是熱復位。如果程序的RAM比較緊張,或者你就想用一個字節(jié)變量做標志,可以在else中這樣寫:

       else
          {
               /*      根據(jù)系統(tǒng)用到的變量在運行時的值初始化系統(tǒng)        */
              if(run_var==VAR_DEF_1)
                  {
                      /*      初始化1 */
                  }
              else if(run_var==VAR_DEF_2)
                  {
                      /*      初始化2 */
                 }
              else
                  {
                       bootflag=0x55;
                       soft_dog();
                  }
               while(1)
                   {
                       /*      實際的程序代碼  */
                   }

          }

       需要注意的是,單片機被硬狗復位后,外部端口和SFR將還原成默認狀態(tài)。所以有些SFR
還需要在else中重新初始化。

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
[求助]求助啊,幫幫小弟吧
[求助]有個小問題,關(guān)于幾個電路圖
[轉(zhuǎn)帖]使用數(shù)字萬用表判斷三極管管腳(圖解教程)
編譯中的一個錯誤
請大家推薦幾款集成濾波芯片,書到用時方恨少,唉
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號