RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

STM32速成筆記(10)—IWDG

冬至子 ? 來源:二土電子 ? 作者:二土電子 ? 2023-10-24 14:58 ? 次閱讀

一、IWDG簡介

獨立看門狗 (Independent Watchdog, IWDG ),什么是看門狗?字面意思——看門的,有陌生人來,就會叫。實際在嵌入式領域里,看門狗也是這種作用,當軟件程序發(fā)生故障或者程序跑飛時,看門狗會產(chǎn)生復位信號,復位系統(tǒng)。

二、STM32的IWDG

2.1 STM32的IWDG簡介

STM32內(nèi)置兩個看門狗,提供了更高的安全性、時間的精確性和使用的靈活性。兩個看門狗設備(獨立看門狗和窗口看門狗)可用來檢測和解決由軟件錯誤引起的故障;當計數(shù)器達到給定的超時值時,觸發(fā)一個中斷(僅適用于窗口型看門狗)或產(chǎn)生系統(tǒng)復位。

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

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

  • ? 自由運行的12位遞減計數(shù)器
  • ? 時鐘由獨立的RC振蕩器提供(可在停止和待機模式下工作)
  • ? 看門狗被激活后,則在計數(shù)器計數(shù)至0x000時產(chǎn)生復位

一旦使能IWDG,就無法關閉。只有等到復位之后,才能將IWDG關閉。

2.2 喂狗

通過上面的簡介可以知道,獨立看門狗實際就是一個12位的遞減計數(shù)器,當計數(shù)器的值遞減到0的時候,就會產(chǎn)生復位。但是,如果我們在計數(shù)值遞減到0之前,重新給計數(shù)器賦值,那么就不會再產(chǎn)生復位。這個操作叫做喂狗。

2.3 IWDG框圖

圖片

IWDG框圖

IWDG的框圖很好理解,IWDG由一個由獨立的RC振蕩器提供時鐘。經(jīng)過一個8位的預分頻器對時鐘信號進行分頻。12位遞減計數(shù)器按照設置好的初始值和輸入時鐘遞減。當遞減計數(shù)器遞減到0時,產(chǎn)生獨立看門狗復位。

在產(chǎn)生復位之前,如果將重裝載寄存器傳遞給遞減計數(shù)器,那么就會重新開始遞減,這叫做喂狗。

鍵寄存器也叫做關鍵字寄存器,往該寄存器寫入不同的值,有不同的作用

  • ? 寫入 0x5555 ——表示允許訪問IWDG_PR和IWDG_RLR寄存器
  • ? 寫入 0xAAAA ——將重載寄存器的值傳遞到遞減計數(shù)器,也就是喂狗
  • ? 寫入 0xCCCC ——啟動獨立看門狗功能

中文參考手冊中給出了一個時間表

圖片

IWDG的溢出時間表

時間的計算方法是,時間 = 重裝載寄存器值 / (輸入時鐘頻率 / 4 * 2^預分頻系數(shù))

為什么是4 * 2^預分頻系數(shù),可以看一下中文參考手冊對于預分頻寄存器的描述

圖片

預分頻寄存器描述

三、IWDG配置步驟

  • ? 開啟寄存器訪問(允許訪問IWDG_PR和IWDG_RLR寄存器)

  • ? 設置IWDG預分頻系數(shù)和重裝載值

  • ? 將重裝載寄存器的值傳遞到遞減計數(shù)器(喂狗)

  • ? 開啟IWDG

    四、IWDG配置程序

    44.1 IWDG初始化程序

/*
 *==============================================================================
 *函數(shù)名稱:IWDG_Init
 *函數(shù)功能:初始化IWDG
 *輸入參數(shù):pre:預分頻系數(shù)(0~6);rlr:重裝載值(0~0xFFF)
 *返回值:無
 *備  注:獨立看門狗復位時間計算公式:t=(4*2^pre*rlr)/40(ms)
 *==============================================================================
 */
void IWDG_Init (u8 pre,u16 rlr)
{
    IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);   // 取消寄存器寫保護
    IWDG_SetPrescaler(pre);   // 設置預分頻系數(shù) 0-6
    IWDG_SetReload(rlr);   // 設置重裝載值
    IWDG_ReloadCounter();   // 重裝載初值
    IWDG_Enable();   // 打開獨立看門狗
}

4.2 喂狗

/*
 *==============================================================================
 *函數(shù)名稱:IWDG_FeedDog
 *函數(shù)功能:喂狗
 *輸入?yún)?shù):無
 *返回值:無
 *備  注:無
 *==============================================================================
 */
void IWDG_FeedDog (void)
{
    IWDG_ReloadCounter();   // 重裝載初值
}

五、應用實例

初始化IWDG,配置2s內(nèi)不及時喂狗就會復位。通過按下按鍵WK UP喂狗。串口打印復位和喂狗信息。IWDG初始化程序如下

IWDG_Init(4,1250);   // 看門狗初始化,2s不及時喂狗,復位

main函數(shù)如下

u8 gKeyValue = 0;   // 記錄按鍵鍵值變量

int main(void)
{
    Med_Mcu_Iint();   // 系統(tǒng)初始化
    printf("復位系統(tǒng)rn");
    
    while(1)
  {
        gKeyValue = Med_KeyScan();   // 獲取按鍵鍵值
        
        // WK UP按下
        if (gKeyValue == 1)
        {
            IWDG_FeedDog();   // 喂狗
            printf ("喂狗rn");
        }
    }
}

效果如下

圖片

IWDG效果

按下WK UP喂狗,不會產(chǎn)生系統(tǒng)復位。

一旦2s內(nèi),未按下WK UP,就會產(chǎn)生系統(tǒng)復位。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5336

    瀏覽量

    120230
  • STM32
    +關注

    關注

    2270

    文章

    10895

    瀏覽量

    355728
  • IWDG
    +關注

    關注

    0

    文章

    21

    瀏覽量

    5211
  • rc振蕩器
    +關注

    關注

    3

    文章

    48

    瀏覽量

    9562
  • 獨立看門狗
    +關注

    關注

    0

    文章

    24

    瀏覽量

    3827
收藏 人收藏

    評論

    相關推薦

    STM32速成

    喲管STM32速成貼?求助
    發(fā)表于 01-23 14:34

    STM32CubeMX看門狗iwdg定時

    STM32CubeMX看門狗iwdg定時 筆記1.打開STM32cubeMX的工程文件重新配置,開啟獨立看門狗(IWDG)。2.生成報告以及
    發(fā)表于 07-30 07:17

    STM32_H750_IWDG 精選資料分享

    STM32_H750_IWDG__HAL_IWDG_START(&hiwdg1);HAL_IWDG_Refresh(&hiwdg1);iwdg時鐘32k4096/(32k/4)=512ms實測延時506ms可以正常喂狗HAL_D
    發(fā)表于 08-02 09:50

    STM32F103獨立看門狗IWDG使用筆記 精選資料分享

    本文使用STM32CubeMX1,在Pinout激活IWDG獨立看門狗2,在Configration 中點擊System-> IWDG 設置看門狗參數(shù),我使用700ms設置如下,生成的初始化
    發(fā)表于 08-02 10:02

    一文弄懂STM32的獨立看門狗IWDG

    STM32的獨立看門狗IWDG有哪些功能?STM32的獨立看門狗IWDG有哪些相關配置寄存器?怎樣去計算STM32的獨立看門狗
    發(fā)表于 08-20 07:11

    使用HAL_IWDG庫讓IWDG工作,為什么無法在IWDG_Reset之前刷新看門狗?

    /en.STM32WB-WDG_TIMERS-Independent-Watchdog-IWDG.pdf當 RL < WINR 時,我必須刷新看門狗看門狗超時設置為 10 秒。wdgReset
    發(fā)表于 02-08 07:26

    STM32F446ZE-Nucleo-IWDG

    單片機開發(fā)板STM32F446ZE-Nucleo的開發(fā)例程IWDG
    發(fā)表于 06-03 15:48 ?8次下載

    STM32469I_EVAL-IWDG

    單片機開發(fā)板STM32469I_EVAL的開發(fā)例程STM32469I_EVAL-IWDG
    發(fā)表于 06-03 15:48 ?8次下載

    STM32各模塊學習筆記

    STM32個模塊學習筆記 目錄 STM32筆記之一 中斷優(yōu)先級.....................................................1
    發(fā)表于 11-30 03:32 ?3157次閱讀

    STM32看門狗WWDG和IWDG的區(qū)別是什么

    STM32有2個看門狗:獨立看門狗和窗口看門狗。 獨立看門狗IWDG:獨立于系統(tǒng)之外,因為有獨立時鐘,所以不受系統(tǒng)影響的系統(tǒng)故障探測器,主要用于監(jiān)視硬件錯誤。
    發(fā)表于 05-17 13:51 ?1.5w次閱讀
    <b class='flag-5'>STM32</b>看門狗WWDG和<b class='flag-5'>IWDG</b>的區(qū)別是什么

    如何解決STM32在擦除內(nèi)部FLASH時間過長導致IWDG復位的問題

    客戶反饋在使用STM32F412的時候,擦除Sector 8~11發(fā)現(xiàn)時間過長,從而導致意外觸發(fā)IWDG復位。原因是什么?怎么避免?怎么處理?
    的頭像 發(fā)表于 01-29 11:53 ?1.6w次閱讀
    如何解決<b class='flag-5'>STM32</b>在擦除內(nèi)部FLASH時間過長導致<b class='flag-5'>IWDG</b>復位的問題

    STM32擦除內(nèi)部FLASH時間過長導致IWDG復位

    STM32擦除內(nèi)部FLASH時間過長導致IWDG復位(嵌入式開發(fā)一般采用什么方式?)-客戶反饋在使用STM32F412的時候,擦除sector 8~11發(fā)現(xiàn)時間過長,從而導致意外觸發(fā)IWDG
    發(fā)表于 07-30 11:06 ?3次下載
    <b class='flag-5'>STM32</b>擦除內(nèi)部FLASH時間過長導致<b class='flag-5'>IWDG</b>復位

    MCU學習筆記_IWDG獨立看門狗

    MCU學習筆記IWDG獨立看門狗1. IWDG獨立看門狗概述2. 寄存器和HAL庫函數(shù)配置3. 實例1. IWDG獨立看門狗概述看門狗,watchdog,用于檢測單片機程序運行狀態(tài)的模
    發(fā)表于 10-28 20:21 ?9次下載
    MCU學習<b class='flag-5'>筆記</b>_<b class='flag-5'>IWDG</b>獨立看門狗

    【MCU】基于STM32CubeMX 實現(xiàn)獨立看門狗 IWDG

    STM32F10X 獨立看門狗 IWDG1. IWDG 簡介(1)STM32F10X內(nèi)置了獨立看門狗 IWDG,其可用來檢查和解決由軟件錯誤
    發(fā)表于 11-05 15:51 ?10次下載
    【MCU】基于<b class='flag-5'>STM32</b>CubeMX 實現(xiàn)獨立看門狗 <b class='flag-5'>IWDG</b>

    STM32核心筆記

    STM32核心筆記文章目錄STM32核心筆記1. 下載程序的兩種方式1.1 串口ISP1.2 仿真器2. 認識寄存器3. 地址總線與外設地址映射關系4. GPIO的三種配置5. 時鐘樹
    發(fā)表于 12-04 12:21 ?1次下載
    <b class='flag-5'>STM32</b>核心<b class='flag-5'>筆記</b>
    RM新时代网站-首页