STM32-09-IWDG

文章目錄

  • STM32 IWDG
    • 1. IWDG
    • 2. IWDG框圖
    • 3. IWDG寄存器
    • 4. IWDG寄存器操作步驟
    • 5. IWDG溢出時間計算
    • 6. IWDG配置步驟
    • 7. 代碼實現

STM32 IWDG

1. IWDG

  • IWDG

    Independent watchdog,即獨立看門狗,本質上是一個定時器,這個定時器有一個輸出端,可以輸出復位信號。該定時器是一個12位的遞減計數器,當計數器的值減到0的時候,就會產生一個復位信號。如果在計數沒有減到0之前,重置計數器的值的話,那么就不會產生復位信號,這個動作稱為喂狗

  • 作用

    異常:外界電磁干擾或者自身系統(硬件或軟件)異常,造成程序跑飛.

    獨立看門狗主要用于檢測外界電磁干擾,或者硬件異常導致的程序跑飛問題.

    應用:在一些需要高穩定性的產品中,并且對時間精度要求較低的場合.

    獨立看門狗是異常處理的最后手段,不可依賴,應在設計時盡量避免異常的發生.

  • IWDG工作原理
    在這里插入圖片描述

    時鐘信號來自LSI時鐘,經過PSC預分頻器后變為IWDG的時鐘,在時鐘下進行遞減,當遞減計數器的值計數到0時,會產生一個復位,如果期間進行喂狗,就不會產生復位。

2. IWDG框圖

在這里插入圖片描述

從 IWDG 框圖整體認知就是,IWDG 有一個輸入(時鐘 LSI),經過一個 8 位的可編程預分頻器提供時鐘給一個 12 位遞減計數器,滿足條件就會輸出一個復位信號。

STM32F103的獨立看門狗由內部專門的40Khz低速時鐘(LSI)驅動,即使主時鐘發生故障,它也仍然有效。這里需要注意獨立看門狗的時鐘是一個內部RC時鐘,所以并不是準確的 40Khz,而是在30~60Khz之間的一個可變化的時鐘,只是我們在估算的時候,以40Khz的頻率來計算,看門狗對時間的要求不是很精確,所以,時鐘有些偏差,都是可以接受的。

3. IWDG寄存器

  • 鍵寄存器IWDG_KR
    在這里插入圖片描述

    獨立看門狗的控制寄存器

    0xCCCC:開始啟動獨立看門狗;

    0x5555:表示允許訪問IWDG_PR和IWDG_RLR寄存器;

    0xAAAA:重新裝載寄存器的初值.

  • 預分頻寄存器IWDG_PR
    在這里插入圖片描述

  • 重裝載寄存器IWDG_RLR
    在這里插入圖片描述

  • 狀態寄存器IWDG_SR
    在這里插入圖片描述

4. IWDG寄存器操作步驟

在這里插入圖片描述

5. IWDG溢出時間計算

在這里插入圖片描述

最短最長超時時間
在這里插入圖片描述

6. IWDG配置步驟

在這里插入圖片描述

函數主要寄存器主要功能
HAL_IWDG_InitIWDG_PR/RL/KR使能IWDG,設置預分頻系數和重裝載值等
HAL_IWDG_RefreshIWDG_KR把重裝載寄存器的值重載到計數器中,喂狗

7. 代碼實現

  • 實驗效果

    在配置看門狗后,LED0將常亮,如果KEY_UP按鍵按下,就喂狗,只要KEY_UP不停的按,看門狗就一直不會產生復位,保持LED0的常亮,一旦超過看門狗定溢出時間(Tot)還沒按,那么將會導致程序重啟,這將導致LED0熄滅一次。

  • 硬件連接
    在這里插入圖片描述
    在這里插入圖片描述

  • 軟件代碼

    1. IWDG初始化函數

      void iwdg_init(uint8_t prer, uint16_t rlr)
      {g_iwdg_handle.Instance = IWDG;g_iwdg_handle.Init.Prescaler = prer;  //設置IWDG分頻系數g_iwdg_handle.Init.Reload = rlr;      //重裝載值HAL_IWDG_Init(&g_iwdg_handle);   //進行初始化
      }
      
    2. 喂狗函數

      void iwdg_feed(void)
      {HAL_IWDG_Refresh(&g_iwdg_handle);  //重裝載計數器
      }
      
    3. 主函數代碼

      int main(void)
      {HAL_Init();                         /* 初始化HAL庫 */sys_stm32_clock_init(RCC_PLL_MUL9); /* 設置時鐘, 72Mhz */delay_init(72);                     /* 延時初始化 */usart_init(115200);                 /* 串口初始化為115200 */led_init();                         /* 初始化LED */key_init();                         /* 初始化按鍵 */delay_ms(100);                      /* 延時100ms再初始化看門狗,LED0的變化"可見" */iwdg_init(IWDG_PRESCALER_64, 625);  /* 預分頻數為64,重載值為625,溢出時間約為1s */LED0(0);                            /* 點亮LED0(紅燈) */while (1){if (key_scan(1) == 4)       /* 如果WK_UP按下,則喂狗 */{iwdg_feed();            /* 喂狗 */}delay_ms(10);}
      }
      

      在main函數里,先初始化系統和用戶的外設代碼,然后先點亮LED0,在無限循環里開始獲取按鍵的鍵值,按下就喂狗,不是則延時10s,繼續上述操作。當1秒鐘后都沒測到按鍵按下,WDG就會產生一次復位信號,系統復位,可以看到LED0因系統復位熄滅一次,再亮。反之,當按下按鍵后,1秒內再按下按鍵,就會及時喂狗,結果就是系統不會復位,LED0也就不會閃爍。

聲明:資料來源(戰艦STM32F103ZET6開發板資源包)

  1. Cortex-M3權威指南(中文).pdf
  2. STM32F10xxx參考手冊_V10(中文版).pdf
  3. STM32F103 戰艦開發指南V1.3.pdf
  4. STM32F103ZET6(中文版).pdf
  5. 戰艦V4 硬件參考手冊_V1.0.pdf

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

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

相關文章

mmdetection訓練(1)voc格式的數據集(自制)

mmdetection訓練(1)voc格式的數據集(自制) 提前準備一、voc數據集二、修改配置代碼進行訓練(敲黑板!!!!!)1.數據集相關內容修改2.自定義配置文件構…

云曦實驗室期中考核題

Web_SINGIN 解題: 點擊打開環境,得 查看源代碼,得 點開下面的超鏈接,得 看到一串base64編碼,解碼得flag 簡簡單單的文件上傳 解題: 點擊打開環境,得 可以看出這是一道文件上傳的題目&#x…

【if條件、for循環、數據框連接、表達矩陣畫箱線圖】

編程能力,就是解決問題的能力,也是變優秀的能力 From 生物技能樹 R語言基礎第七節 文章目錄 1.長腳本管理方式if(F){....}分成多個腳本,每個腳本最后保存Rdata,下一個腳本開頭清空再加載 2.實戰項目的組織方式方法(一&…

圓上點云隨機生成(人工制作模擬數據)

1、背景介紹 實際上,很多地物外表形狀滿足一定的幾何形狀結構,如圓形是作為常見一類。那么獲取該類目標的點云數據便是位于一個圓上的點云數據。如下圖所示為兩簇典型的點云,其中一種為理想型,點均位于一個圓上,另外一簇則是近似位于一個圓上,這種更加符合真實情況。有時…

好煩啊,我真的不想寫增刪改查了!

大家好,我是程序員魚皮。 很想吐槽:我真的不想寫增刪改查這種重復代碼了! 大學剛做項目的時候,就在寫增刪改查,萬萬沒想到 7 年后,還在和增刪改查打交道。因為增刪改查是任何項目的基礎功能,每…

性能測試工具—jmeter的基礎使用

1.Jmeter三個重要組件 1.1線程組的介紹: 特點: 模擬用戶,支持多用戶操作多個線程組可以串行執行,也可以并行執行 線程組的分類: setup線程組:前置處理,初始化普通線程組:編寫…

springboot+vue+mybatis物業管理系統+PPT+論文+講解+售后

快速發展的社會中,人們的生活水平都在提高,生活節奏也在逐漸加快。為了節省時間和提高工作效率,越來越多的人選擇利用互聯網進行線上打理各種事務,通過線上物業管理系統也就相繼涌現。與此同時,人們開始接受方便的生活…

Swift頁面的跳轉和返回

之前一直使用的OC,現在也有不少人使用Swift,我也嘗試一下,寫一個簡單又基礎的功能:頁面的跳轉和返回。這里將顯示幾個swift文件的代碼。 文件Common.swift的代碼: // // Common.swift // MySwiftProject // // Cre…

怎樣讓貓給啥吃啥?生骨肉凍干拌糧哪有貓咪不吃的!

隨著科學養貓的普及,生骨肉凍干喂養越來越受歡迎,生骨肉凍干喂養對貓的好處很多,它符合貓咪的天性,可以提供全面的營養,保持牙齒和牙齦的健康,還有助于維持健康的消化系統。然而,許多貓主人在選…

考研操作系統-1.計算機系統概述

目錄 操作系統功能 操作系統的發展與分類 操作系統的運行環境 操作系統的體系結構 王道考研操作系統-1.計算機系統概述 操作系統 是指控制和管理整個計算機系統的硬件和軟件資源,合理地組織調度計算機的工作和資源的分配;提供給用戶和軟件方便的接…

PHP類和對象概念及用法

類和對象的關系 可以將類看成為一件模具,倒入不同的材料(屬性和方法),這些材料用于構建獨特的對象 類的基本組成部分 屬性:類中的變量,用于儲存數據 方法:類中的函數,用于操作和訪問類的屬性 類及其屬性和方法的創建…

GDPU 競賽技能實踐 天碼行空 期末小測

1. 除法(原題) 👨?🏫 實驗二:1.簡單枚舉 輸入正整數n,按從小到大的順序輸出所有形如abcde/fghij n的表達式,其中a~j恰好為數字0~9的一個排列(可以有前導0&a…

復雜json解析(其中有一個key的value是json格式的字符串)

app上報的參數如下: {"clientId": "8517895440514039afcf6d3e5d7832ae","dua": "SNDOCKCJPH90_GA&VN900042418&BN0&VCXiaomi&MOM2012K11AC&RL1080_2239&CHIDunknown_unknown&LCID&RV&OSAndroid13&…

邦注科技 即熱式節能模溫機的原理及應用介紹

模溫機是一種用于控制模具溫度的設備,它在各種工業領域中發揮著重要作用,特別是在塑料加工行業中。以下是關于模溫機的原理及應用的詳細介紹: 原理 模溫機的工作原理主要是通過加熱和冷卻功能,維持模具溫度在一個恒定的范圍內。…

Hadoop 3.4.0 項目實戰

1環境基于 上一篇搭建 高可用分布式集群 2 官方提供MapReduce程序 #評估圓周率 cd /data/hadoop/share/hadoop/mapreduce/ hadoop jar hadoop-mapreduce-examples-3.4.0.jar pi 2 6 3 實例項目分析1 #預分析的文件如,如單詞統計 # #上傳文件到hdfs hdfs …

SOLIDWORKS 2024云服務新功能

一、簡單的分享一下,在線觀看,輕松標記 在達索系統SOLIDWORKS 2024云服務中,您只需在達索系統SOLIDWORKS中點擊按鈕,就可以將當前的設計分享給其他人,無論是客戶、供應商還是團隊內部成員。共享的用戶只要打開瀏覽器里…

Python中的exec()函數,動態執行代碼的利器

簡介 在Python編程中,exec()函數是一個強大的工具,它允許你執行存儲在字符串或對象中的Python代碼。這種動態執行代碼的能力為腳本編寫、自動化測試、以及快速原型開發提供了極大的便利。 exec()函數的基本用法 exec()函數可以執行作為字符串輸入的Py…

一本專業130+總分400+上海交通大學819考研經驗上交電子信息與通信工程上岸,真題,大綱,參考書。

今年專業課819信號系統與信號處理130,總分400,復試表現中規中矩(初試分數查到才開始復習復試,希望大家汲取教訓,初試考完就可以錄取開始準備復試),交大初試比重很高,良心學校&#x…

LeetCode58.最后一個單詞的長度

題目鏈接: 58. 最后一個單詞的長度 - 力扣(LeetCode) 分析:普通的模擬題,只要有基本的算法思想就可以掌握。 算法思路:要統計最后一個單詞的長度,所以我們只要找到最后一個單詞出現的起始和終…

ASP.NET在線畢業論文提交系統的設計與實現

摘 要 本設計就很好的解決了上面的問題,它不但能實現畢業生論文的在線提交;還能給教師一定的權限,以在線的方式對自己指導的學生的論文進行審核;并且管理員還可以方便的將每個學生的論文信息按統一的論文排版本格式導出成word文…