新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > STM32 獨立看門狗IWDG 與窗口看門狗WWDG

        STM32 獨立看門狗IWDG 與窗口看門狗WWDG

        作者: 時間:2016-12-02 來源:網(wǎng)絡 收藏
        獨立看門狗Iwdg——有獨立時鐘(內部低速時鐘LSI---40KHz),所以不受系統(tǒng)硬件影響的系統(tǒng)故障探測器。主要用于監(jiān)視硬件錯誤。

        窗口看門狗wwdg——時鐘與系統(tǒng)相同。如果系統(tǒng)時鐘不走了,這個狗也就失去作用了,主要用于監(jiān)視軟件錯誤。
        一,獨立看門狗

        本文引用地址:http://www.104case.com/article/201612/325011.htm

        看門狗定時時限= IWDG_SetReload()的值 / 看門狗時鐘頻率
        看門狗時鐘頻率=LSI(內部低速時鐘)的頻率(40KHz)/ 分頻數(shù)

        1.STM32

        獨立看門狗IWDG的時限定為280微秒。這個時限可能會隨著LSI(內部低速時鐘)的頻率漂移而產(chǎn)生微小的變化。
        /* IWDG timeout equal to 280 ms (the timeout may varies due to LSI frequency dispersion) -------------------------------------------------------------
        */
        /* Enable write access to IWDG_PR and IWDG_RLR registers */
        IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
        /* IWDG counter clock: 40KHz(LSI) / 32 = 1.25 KHz */
        IWDG_SetPrescaler(IWDG_Prescaler_32);
        /* Set counter reload value to 349 */
        IWDG_SetReload(349);
        /*該參數(shù)允許取值范圍為0 – 0x0FFF *
        /* Reload IWDG counter */
        IWDG_ReloadCounter();
        /* Enable IWDG (the LSI oscillator will be enabled by hardware) */
        IWDG_Enable();
        2.獨立看門狗(IWDG)由專用的40kHz 的低速時鐘為驅動;因此,即使主時鐘發(fā)生故障它也仍然有效。窗口看門狗由從APB1 時鐘分頻后得到的時鐘驅動,通過可配置的時間窗口來檢測應用程序非正常的過遲或過早的行為。可通過
        IWDG_SetPrescaler(IWDG_Prescaler_32); 對其時鐘進行分頻,4-256,
        通過以下方式喂狗 :
        /* Reload IWDG counter */
        IWDG_ReloadCounter();
        3. 1.25KHz 即每周期 為0.8ms
        共計時 350 個周期,即350*0.8ms=280ms
        看門狗定時時限= IWDG_SetReload()的值 / 看門狗時鐘頻率
        看門狗時鐘頻率=LSI(內部低速時鐘)的頻率(40KHz)/ 分頻數(shù)

        二,窗口看門狗

        STM32F的窗口看門狗中有一個7位的遞減計數(shù)器,它會在出現(xiàn)下述2種情況之一時產(chǎn)生看門狗復位:
          
          1)當計數(shù)器的數(shù)值從0x40減到0x3F時
          
          2)當刷新看門狗時計數(shù)器的數(shù)值大于某一設定數(shù)值時,此設定數(shù)值在WWDG_CFR寄存器定義
          
          對于一般的看門狗,程序可以在它產(chǎn)生復位前的任意時刻刷新看門狗,但這有一個隱患,有可能程序跑亂了又跑回到正常的地方,或跑亂的程序正好執(zhí)行了刷新看門狗操作,這樣的情況下一般的看門狗就檢測不出來了;如果使用窗口看門狗,程序員可以根據(jù)程序正常執(zhí)行的時間設置刷新看門狗的一個時間窗口,保證不會提前刷新看門狗也不會滯后刷新看門狗,這樣可以檢測出程序沒有按照正常的路徑運行非正常地跳過了某些程序段的情況。



        評論


        技術專區(qū)

        關閉
        主站蜘蛛池模板: 海林市| 大化| 富锦市| 嘉定区| 濉溪县| 玛沁县| 资源县| 乌什县| 宜兰县| 阿合奇县| 二连浩特市| 许昌市| 巴青县| 贵州省| 平乐县| 红原县| 广昌县| 宁安市| 周至县| 微山县| 芮城县| 噶尔县| 南陵县| 台南县| 临清市| 时尚| 万源市| 兴隆县| 开封县| 民勤县| 高唐县| 白河县| 棋牌| 敖汉旗| 无锡市| 常州市| 沈阳市| 乌兰察布市| 芦溪县| 周宁县| 同江市|