STM32中,如何理解看門狗

在STM32微控制器中,看門狗(Watchdog)是一種硬件計時器,用于監控系統運行狀態,防止軟件死鎖或跑飛。其核心機制是:系統需定期“喂狗”(復位看門狗計數器),若未及時喂狗,則觸發系統復位,使程序恢復至初始狀態。


看門狗類型及特點

STM32提供兩種看門狗,各有適用場景:

1.?獨立看門狗(IWDG)
  • 時鐘源:獨立內部低速時鐘(LSI,~32-40kHz),不受主時鐘影響(即使主時鐘故障仍有效)。

  • 特點

    • 配置后無法停止(只能通過復位關閉)。

    • 超時時間范圍寬(毫秒到秒級)。

    • 適合監控嚴重故障(如程序跑飛、死循環)。

  • 工作流程

初始化 → 啟動計數器 → 定期喂狗(復位計數器)→ 若超時未喂狗 → 觸發系統復位
2.?窗口看門狗(WWDG)
  • 時鐘源:APB1總線時鐘(PCLK1)分頻。

  • 特點

    • 必須在指定時間窗口內喂狗(既不能過早也不能過晚)。

    • 提供提前喚醒中斷(EWI),允許在復位前執行緊急操作。

    • 適合監控代碼執行時效性(如任務調度超時)。

  • 工作流程

初始化 → 啟動計數器 → 在窗口期內喂狗 → 若喂狗過早/過晚 → 觸發復位

關鍵概念詳解

超時時間計算
  • IWDG公式

    示例(LSI=40kHz,預分頻=32,RLR=1000):
    Ttimeout=100040000×32=0.8秒Ttimeout?=400001000?×32=0.8秒

  • WWDG公式

喂狗操作
  • IWDG喂狗:向鍵寄存器(IWDG_KR)寫入0xAAAA

  • WWDG喂狗:向控制寄存器(WWDG_CR)寫入值(需在0x40~0x7F之間)。


配置步驟(以IWDG為例,HAL庫)

#include "stm32f1xx_hal.h"IWDG_HandleTypeDef hiwdg;void IWDG_Init(void) {hiwdg.Instance = IWDG;hiwdg.Init.Prescaler = IWDG_PRESCALER_32;  // 預分頻系數hiwdg.Init.Reload    = 1000;               // 重載值(超時時間)HAL_IWDG_Init(&hiwdg);                     // 初始化HAL_IWDG_Start(&hiwdg);                    // 啟動看門狗
}void main(void) {IWDG_Init();while (1) {// ... 正常代碼 ...HAL_IWDG_Refresh(&hiwdg);  // 定期喂狗(需在超時前執行)}
}

使用注意事項

  1. 喂狗位置

    • 放在主循環或關鍵任務中,避免在阻塞函數中餓死看門狗

    • 若使用RTOS,可在空閑任務中喂狗(但需確保任務調度正常)。

  2. 調試影響

    • 調試時暫停MCU會導致看門狗復位,可通過DBGMCU模塊臨時凍結看門狗。

  3. 窗口看門狗窗口期

    • 窗口上限由WWDG_CFR寄存器設定,喂狗需在[窗口值, 0x3F]之間。


應用場景對比

場景推薦看門狗原因
高可靠性系統(工業控制)IWDG獨立時鐘,抗干擾能力強
實時任務監控WWDG精確時間窗口,可捕獲邏輯錯誤
低功耗應用IWDGLSI功耗低于主時鐘

通過合理配置看門狗,可顯著提升STM32系統的抗故障能力,確保設備在異常狀態下自動恢復。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/82183.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/82183.shtml
英文地址,請注明出處:http://en.pswp.cn/web/82183.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[AI算法] LLM中的gradient checkpoint機制

文章目錄 什么是gradient checkpoint原理使用場景 注意事項 什么是gradient checkpoint gradient checkpoint是一種優化深度學習模型內存使用的技術,尤其在訓練大型模型時非常有用。它通過犧牲計算時間為代價來減少顯存占用。大多數情況下,transformers…

船舶二階非線性響應方程的EKF與UKF參數辨識

船舶二階非線性響應方程的EKF與UKF參數辨識 本文將詳細闡述使用Python實現擴展卡爾曼濾波(EKF)和無跡卡爾曼濾波(UKF)對船舶二階非線性響應方程進行參數辨識的過程。全文包含理論推導、算法實現、仿真驗證及結果分析。—### 1. 船舶二階非線性響應方程建模船舶運動可表示為&am…

【ARM AMBA APB 入門 1.1 -- APB 讀寫寄存器 RTL 實現】

請閱讀【ARM AMBA 總線 文章專欄導讀】 文章目錄 APB 寄存器訪問APB 讀寄存器 RTL 代碼實現APB 寫寄存器 RTL 代碼實現 APB 寄存器訪問 APB 讀寄存器 RTL 代碼實現 APB 總線讀寄存器操作代碼實現: wire [31:0] SOC_PLL_CFG_REG; wire [31:0] SOC_PLL_LOCK_REG; wi…

C++修煉:位圖和布隆過濾器

Hello大家好&#xff01;很高興我們又見面啦&#xff01;給生活添點passion&#xff0c;開始今天的編程之路&#xff01; 我的博客&#xff1a;<但凡. 我的專欄&#xff1a;《編程之路》、《數據結構與算法之美》、《題海拾貝》、《C修煉之路》 1、引言 在計算機科學…

Java大廠后端技術棧故障排查實戰:Spring Boot、Redis、Kafka、JVM典型問題與解決方案

Java大廠后端技術棧故障排查實戰&#xff1a;Spring Boot、Redis、Kafka、JVM典型問題與解決方案 引言 在互聯網大廠&#xff0c;Java后端系統往往承載著高并發、高可用和復雜業務需求。系統架構日益復雜&#xff0c;涵蓋微服務、緩存、消息隊列、數據庫等多種組件&#xff0…

交叉編譯tcpdump工具

1.導出交叉編譯工具鏈 export PATH$PATH:/opt/rockchip/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin 下載源碼包libpcap-1.10.5&#xff0c;配置、并編譯安裝。 github倉庫地址 ./configure --hostarm-linux CCarm-linux-gnueabihf-gcc --prefix$PWD/install …

Pytest Fixture 是什么?

Fixture 是什么&#xff1f; Fixture 是 Pytest 測試框架的核心功能之一&#xff0c;用于為測試函數提供所需的依賴資源或環境。它的核心目標是&#xff1a; ? 提供測試數據&#xff08;如模擬對象、數據庫記錄&#xff09; ? 初始化系統狀態&#xff08;如配置、臨時文件&a…

【深度剖析】流處理系統性能優化:解決維表JOIN、數據傾斜與數據膨脹問題

目錄 前言:為什么你的流處理作業總是慢? 一、維表JOIN優化:從普通連接到高性能查詢 1.1 時態表的雙面性 1.2 Lookup Join 優化 1.3 多表JOIN優化策略 二、數據傾斜:單分區也會遇到的隱形殺手 2.1 單分區數據傾斜 2.2 熱點鍵打散技術 2.3 時間窗口預聚合 三、數據…

Codeforces Round 1028 (Div. 2)(ABC)

A. Gellyfish and Tricolor Pansy 翻譯&#xff1a; 水母和小花在玩一個叫 “決斗 ”的游戲。 水母有 a HP&#xff0c;花花有 b HP。 它們各有一個騎士。水母的騎士有 c HP&#xff0c;而花花的騎士有 d HP。 他們將進行一輪游戲&#xff0c;直到其中一方獲勝。對于 k1、2、.…

數字創新智慧園區建設及運維方案

該文檔是 “數字創新智慧園區” 建設及運維方案,指出傳統產業園區存在管理粗放等問題,“數字創新園區” 通過大數據、AI、物聯網、云計算等數字化技術,旨在提升園區產業服務、運營管理水平,增強競爭力,實現綠色節能、高效管理等目標。建設內容包括智能設施、核心支撐平臺、…

緩存一致性協議的影響

在操作系統中&#xff0c;線程切換相比進程切換更輕量級的關鍵原因之一是 緩存&#xff08;Cache&#xff09;的有效性&#xff0c;尤其是對 CPU 緩存&#xff08;如 L1/L2/L3&#xff09;和 TLB&#xff08;Translation Lookaside Buffer&#xff09;的影響。以下從緩存角度詳…

六月一日python-AI代碼

python 運行 import turtle as t # 導入turtle庫并簡稱為t&#xff0c;用于圖形繪制 import random # 導入random庫&#xff0c;用于隨機數生成t.delay(0) # 設置繪圖延遲為0&#xff0c;加快繪圖速度 colors ["red", "blue", "gr…

58、辣椒種植學習

辣椒&#xff08;學名&#xff1a;Capsicum annuum&#xff09;屬于茄科辣椒屬&#xff0c;是一種重要的蔬菜兼調味作物&#xff0c;具有較高的經濟價值和營養價值。其果實富含維生素C、辣椒素等成分&#xff0c;既可鮮食&#xff0c;也可加工成干辣椒、辣椒粉、辣椒醬等產品&a…

C語言進階--程序的編譯(預處理動作)+鏈接

1.程序的翻譯環境和執行環境 在ANSI C標準的任何一種實現中&#xff0c;存在兩種不同的環境。 第一種是翻譯環境&#xff1a;將源代碼轉換為可執行的機器指令&#xff08;0/1&#xff09;; 第二種是執行環境&#xff1a;用于實際執行代碼。 2.詳解編譯鏈接 2.1翻譯環境 程…

微調大模型:什么時候該做,什么時候不該做?

目錄 一、什么是“微調”&#xff1f;你真的需要它嗎&#xff1f; 二、什么時候不該微調&#xff1f; &#x1f6ab; 不該微調的 5 個典型場景&#xff1a; 1. 通用問答、閑聊、常識類內容 2. 企業內部問答 / 文檔助手 3. 想要通過微調“學會格式” 4. 沒有大量高質量標…

微深節能 碼頭裝卸船機定位與控制系統 格雷母線

微深節能碼頭裝卸船機定位與控制系統&#xff1a;格雷母線技術賦能港口作業智能化升級 在現代化港口散貨裝卸作業中&#xff0c;裝卸船機是連接船舶與陸域運輸的核心樞紐設備。傳統裝卸船機依賴人工操作&#xff0c;存在定位偏差大、動態協同難、安全風險高等痛點。微深節能基于…

如何檢查popover氣泡組件樣式?調試懸停元素CSS樣式的解決方案

1. 問題 當我們要檢查這種彈出層的CSS樣式時&#xff0c;會發現特別棘手&#xff0c;因為鼠標移走就消失了。如果是display:none控制的&#xff0c;可能還能找到&#xff0c;如果是用js通過v-if控制的&#xff0c;就無法調試了。 2. 解決方案 使用 setTimeout debugger 就…

網絡攻防技術一:緒論

文章目錄 一、網絡空間CyberSpace1、定義2、基本四要素 二、網絡空間安全1、定義2、保護對象3、安全屬性4、作用空間 三、網絡攻擊1、攻擊分類2、攻擊過程 四、網絡防護1、定義2、安全模型3、安全服務5類4、特定安全機制8種5、普遍性安全機制5種 五、網絡安全技術發展簡史1、第…

徹底理解Spring三級緩存機制

文章目錄 前言一、Spring解決循環依賴時&#xff0c;為什么要使用三級緩存&#xff1f; 前言 Spring解決循環依賴的手段&#xff0c;是通過三級緩存&#xff1a; singletonObjects&#xff1a;存放所有生命周期完整的單例對象。&#xff08;一級緩存&#xff09;earlySingleto…

【 SpringCloud | 微服務 網關 】

單體架構時我們只需要完成一次用戶登錄、身份校驗&#xff0c;就可以在所有業務中獲取到用戶信息。而微服務拆分后&#xff0c;每個微服務都獨立部署&#xff0c;這就存在一些問題&#xff1a; 每個微服務都需要編寫登錄校驗、用戶信息獲取的功能嗎&#xff1f; 當微服務之間調…