<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                * 導師視頻講解:[**去聽課**](https://www.bilibili.com/video/BV1k34y1D7Vz?p=14) >[success] **技術支持說明:** >**1**.一般以自主學習為主 > **2**.可到官方問答社區中提問:[**去提問**](https://bbs.csdn.net/forums/zigbee) > **3**.工程師**會盡快**解答社區問題,但他們是一線開發,【**難以保證**】解答時效,解答辛苦,感謝理解! <br/> ## **理論基礎** * **看門狗定時器**:看門狗定時器也是定時器,相對對于定時器T1和T3,其特殊性在于:時間到了后會復位芯片。 ### * **喂狗**:為阻止看門狗定時器復位芯片,我們可以在看門狗定時器計時結束之前,讓其重新開始計時(即清零定時器)。這個清零定時器的動作我們稱之為”喂狗”。 ### * **程序跑飛**:程序在正常運行的過程中,有時候可能會突然遇到意外(例如靜電干擾)而不正常,沒有按正常的流程運行,這個現象我們稱之為“程序跑飛”。在遇到程序跑飛現象時,看門狗沒有及時被“喂”,時間一到就會去復位芯片。復位芯片后,我們可以通過技術手段讓程序恢復正常。(這也是看門狗定時器的意義所在) ### * **應用場景**:看門狗定時器可用在電噪聲大、電源故障率高或靜電放電等惡劣環境中,或對可靠性有更高要求的場合中。如果系統不需要用到看門狗,則可配置成間隔定時器,在指定的時間間隔內發生中斷。 <br/> ## **相關寄存器** ![](https://img.kancloud.cn/a8/6b/a86b8b5f00d3ef5780057ddfe7377121_890x1116.png =600x) ### 初始化配置: ``` 1.WDCTL?=?0x00;??//?打開?IDLE模式才能設置看門狗?? 2.WDCTL?=?0x08;??//?看門狗模式、定時1秒 ``` ### 喂狗配置: ``` 1.WDCTL?|=?(0xA?<<?4);??//?在Bit[7:4]依次寫入0xA和0x5,定時器被清除?? 2.WDCTL?|=?(0x5?<<?4); ``` <br/> ## **程序分析** 主函數: ``` void main() { initLed(); initWatchDogTimer(); while(1) { #if 0 //0 or 1 delayMs(SYSCLK_16MHZ, 1500); #else delayMs(SYSCLK_16MHZ, 500); watchDogFeet(); delayMs(SYSCLK_16MHZ, 500); watchDogFeet(); delayMs(SYSCLK_16MHZ, 500); watchDogFeet(); #endif LED = (LED == LED_ON)?LED_OFF : LED_ON; } } ``` &emsp;&emsp;代碼中把看門狗定時器設置成了定時1秒,所以必須在1秒內進行喂狗。 ### &emsp;&emsp;第一段程序直接延時了1.5秒,然后翻轉LED燈。由于沒有及時喂狗,所以系統不斷地復位,而且看不到LED燈閃爍過程 ### &emsp;&emsp;第二段程序雖然也延時了1.5秒,但是是分三次延時且每隔500ms就喂狗一次,所以看門狗不會導致復位,程序正常運行,LED燈閃爍。 <br/> ## **調試仿真** >[danger] 在學習本節課前,需要先掌握基本的程序下載及仿真操作,參考:[程序下載及仿真](2482302) 打開第一段程序預編譯:#if 1,編譯下載到開發板,LED燈一直是滅的! ### 打開第二段程序預編譯:#if 0,編譯下載到開發板,LED燈閃爍! <br/> <br/> ## **項目定制** * 如需項目定制開發,可掃碼添加項目經理好友(注明“**項目定制**”) * 定制范圍:**NB-IoT**、**CATn(4G)**、**WiFi**、**ZigBee**、**BLE Mesh**以及**STM32**、**嵌入式Linux**等IoT技術方案 * 善學坊官網:[www.sxf-iot.com](https://www.sxf-iot.com/) ![](https://img.kancloud.cn/ca/73/ca739f92cab220a3059378642e3bd502_430x430.png =200x) * 非項目定制**勿擾**,此處**非**技術支持
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看