新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STM32---IWDG獨立看門狗的使用

        STM32---IWDG獨立看門狗的使用

        作者: 時間:2016-12-02 來源:網絡 收藏
        獨立看門狗(IWDG)由專用的40kHz的低速時鐘驅動,

        即使主時鐘發生故障它也仍然有效。
        窗口看門狗由從APB1時鐘分頻后得到的時鐘驅動,
        通過可配置的時間窗口來檢測應用程序非正常的過遲或過早的操作。

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

        IWDG最適合應用于那些需要看門狗作為一個在主程序之外,
        能夠完全獨立工作,并且對時間精度要求較低的場合。

        WWDG最適合那些要求看門狗在精確計時窗口起作用的應用程序。

        IWDG主要性能
        ●自由運行的遞減計數器
        ●時鐘由獨立的RC振蕩器提供(可在停止和待機模式下工作)
        ●看門狗被激活后,則在計數器計數至0x000時產生復位

        在鍵寄存器(IWDG_KR)中寫入0xCCCC,開始啟用獨立看門狗;
        此時計數器開始從其復位值0xFFF遞減計數。
        當計數器計數到末尾0x000時,會產生一個復位信號(IWDG_RESET)。
        無論何時,只要鍵寄存器IWDG_KR中被寫入0xAAAA,
        IWDG_RLR中的值就會被重新加載到計數器中從而避免產生看門狗復位 。


        如果用戶在選擇字節中啟用了“硬件看門狗“功能,
        在系統上電復位后,看門狗會自動開始運行;
        如果在計數器計數結束前,若軟件沒有向鍵寄存器寫入相應的值,
        則系統會產生復位寄存器訪問保護


        IWDG_PR和IWDG_RLR寄存器具有寫保護功能。
        要修改這兩個寄存器的值,必須先向IWDG_KR寄存器中寫入0x5555。
        以不同的值寫入這個寄存器將會打亂操作順序,寄存器將重新被保護。
        重裝載操作(即寫入0xAAAA)也會啟動寫保護功能。
        狀態寄存器指示預分頻值和遞減計數器是否正在被更新。

        //啟動獨立看門狗
        IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //訪問之前要首先使能寄存器寫

        IWDG_SetPrescaler(IWDG_Prescaler_64);//64分頻 一個周期1.6ms
        IWDG_SetReload(800);//最長12位 [0,4096] 800*1.6=1.28S
        /* Reload IWDG counter */
        IWDG_ReloadCounter();
        IWDG_Enable();// Enable IWDG (the LSI oscillator will be enabled by hardware)

        因為獨立看門狗使用的是LSI,所以最好程序啟動的時候,使時鐘源穩定:

        /* LSI的啟動*/
        RCC_LSICmd(ENABLE);//打開LSI
        while(RCC_GetFlagStatus(RCC_FLAG_LSIRDY)==RESET);//等待直到LSI穩定



        關鍵詞: STM32IWDG獨立看門

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 上栗县| 纳雍县| 壶关县| 汶上县| 乐安县| 慈溪市| 澄江县| 宣化县| 沂源县| 眉山市| 惠水县| 台江县| 大同县| 准格尔旗| 龙泉市| 定州市| 花莲县| 安西县| 兴山县| 鹤壁市| 集安市| 策勒县| 双流县| 东城区| 泸定县| 正镶白旗| 四川省| 曲阳县| 新郑市| 军事| 郎溪县| 酒泉市| 曲麻莱县| 龙泉市| 池州市| 平舆县| 通海县| 淳化县| 遵义市| 沾益县| 广东省|