32單片機——獨立看門狗

1、IWDG的簡介?

????????IWDG:Independent watchdog,即獨立看門狗

????????獨立看門狗本質上是一個定時器,該定時器是一個12位的遞減計數器,當計數器的值減到0的時候,就會產生一個復位信號

????????如果在計數沒減到0之前,重置計數器的值的話,那么就不會產生復位信號,這個動作我們稱為喂狗

(1)本質:能產生系統復位信號的計數器

(2)特性:12位的遞減的計數器,時鐘由獨立的RC振蕩器提供(可在待機和停止模式下運行),看門狗被激活后,當遞減計數器計數到0x000時產生復位

(3)喂狗:在計數器計數到0之前,重裝載計數器的值,防止復位

(4)作用:主要用于檢測外界電磁干擾或硬件異常導致的程序跑飛問題,即檢測異常?

什么是異常?

外界電磁干擾或者自身系統(硬件或軟件)異常,造成程序跑飛,如:陷入某個不正常的死循環,打斷正常的程序運行?

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

2、IWDG框圖

簡圖如下所示:

3、IWDG溢出時間計算

T_{out}:看門狗溢出時間

f_{IWDG}:看門狗的時鐘源頻率(30~60Khz),一般以40Khz來計算

prer:IWDG_PR的值(000~111)

rlr:看門狗重裝載值(0~4095)?

4、IWDG的配置步驟

(1)取消PR/RLR寄存器寫保護,設置IWDG,預分頻系數和重裝載值,啟動IWDG

HAL_IWDG_Init();

(2)及時喂狗,即寫入0xAAAA到IWDG_KR

HAL_IWDG_Refresh();

IWDG配置:

IWDG_HandleTypeDef iwdg_handle; ?//iwdg句柄
//初始化iwdg
void iwdg_init(uint8_t psc,uint16_t alr){
? ? iwdg_handle.Instance=IWDG; ?//寄存器基地址
? ? iwdg_handle.Init.Prescaler=psc; ?//預分頻系數
? ? iwdg_handle.Init.Reload=alr; ?//重裝載值
? ? HAL_IWDG_Init(&iwdg_handle); ?//取消寫保護
}

//喂狗
void iwdg_refresh(void){
? ? HAL_IWDG_Refresh(&iwdg_handle);
}

HAL_IWDG_Init

功能:使能IWDG,設置預分頻系數和重裝載值等?

HAL_StatusTypeDef HAL_IWDG_Init(IWDG_HandleTypeDef *hiwdg)?

typedef struct{
? IWDG_TypeDef ? ? ? ? ? ? ? ? *Instance; ?/*? 寄存器基地址? */

? IWDG_InitTypeDef ? ? ? ? ? ? Init;? ? ? ? ? ?/*? IWDG必需參數? */
} IWDG_HandleTypeDef;

typedef struct{
? uint32_t Prescaler; ?/*? 預分頻系數? */

? uint32_t Reload;? ? ? /*? 重裝載值(0~0x0FFF)? */

} IWDG_InitTypeDef;

Prescaler預分頻系數如下所示:

#define IWDG_PRESCALER_4 ? ?? 0x00000000U? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/*? 4? */
#define IWDG_PRESCALER_8 ? ???IWDG_PR_PR_0? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /*? 8 ? */
#define IWDG_PRESCALER_16 ? ? IWDG_PR_PR_1? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/*? 16 ?*/
#define IWDG_PRESCALER_32 ? ??(IWDG_PR_PR_1 | IWDG_PR_PR_0) ? ? ?/*? 32 ?*/
#define IWDG_PRESCALER_64 ? ? IWDG_PR_PR_2? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/*? 64 ?*/
#define IWDG_PRESCALER_128 ? ?(IWDG_PR_PR_2 | IWDG_PR_PR_0) ? ??/*? 128 */
#define IWDG_PRESCALER_256 ?? (IWDG_PR_PR_2 | IWDG_PR_PR_1)? ? ?/*? 256 */?

HAL_IWDG_Refresh?

功能:把重裝載寄存器的值重載到計數器中,喂狗?

HAL_StatusTypeDef HAL_IWDG_Refresh(IWDG_HandleTypeDef *hiwdg)?

5、實現喂狗操作

int main(void){
? ? uint8_t key;
? ? HAL_Init();
? ? sys_stm32_clock_init(RCC_PLL_MUL9); ?//設置系統時鐘
? ? delay_init(72);
? ??
? ? led_init();
? ? beep_init();
? ? key_init();
? ? usart_init(115200); ?//串口
? ? HAL_Delay(100);
? ??
? ? HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_RESET);
? ? iwdg_init(IWDG_PRESCALER_64,625); ?//初始化iwdg ? ?設置預分頻系數64 ? ? 重裝值625 ? ?溢出時間1s
? ? while (1){
? ? ? ? key=scan(0);
? ? ? ? if(key==4){? ? ? ? //當按下KEY_UP鍵時喂狗
? ? ? ? ? ? iwdg_refresh();
? ? ? ? }
? }
}
?

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

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

相關文章

[計算機網絡]數據鏈路層

408考綱(數鏈層部分): 0 概論:數據鏈路層都干什么事,提供啥功能 比物理層再高一層就是數據鏈路層,咱們上一篇講物理層,物理層直接接觸傳輸介質,現在數據鏈路層是使用物理層的傳輸服務,然后實現更多的功能。…

OpenAI大變革!繼續與微軟等,以非營利模式沖擊AGI

今天凌晨2點,OpenAI宣布,將繼續由非營利組織控制;現有的營利性實體將轉變為一家公共利益公司;非營利組織將控制該公共利益公司,并成為其重要的持股方。 這也就是說OpenAI曾在去年提到的由非營利性轉變成營利性公司&am…

庫存怎么管?怎樣才能做到有效的庫存管理?

說到庫存管理,估計大多數老板和管理者都有過“煩心事”。一方面,庫存過多,貨物堆積如山,堆在倉庫里也不動,結果占地方還占用資金;另一方面,又有可能遇到客戶急著要貨,可是庫存卻緊張…

Kotlin-空值和空類型

變量除了能引用一個具體的值之外,還有一種特殊的值,那就是 null, 它代表空值, 也就是不引用任何對象 在Kotlin中, 對空值的處理是非常嚴格的,正常情況下,我們的變量是不能直接賦值為 null 的,否則無法編譯通過, 這直接在編譯階段就避免了空指針問題 Kotlin中所有的類型默認都是…

[特殊字符]算法次元突破:螺旋矩陣的“能量解碼術” vs 超立方體的“維度折疊指南”

🔍 引言 如果科幻電影中的能量矩陣是算法的考題,你會用螺旋指針破解它的DNA嗎? 如果《星際穿越》的五維空間變成編程題,你敢用動態規劃丈量時間的褶皺嗎? 今天,我們將化身算法世界的能量解…

高光譜相機賦能煙葉分選:精準、高效與智能化的新突破

煙草產業作為中國重要的經濟支柱,煙葉分選的質量與效率直接影響行業效益。傳統人工分選存在效率低、主觀性強、標準難以統一等問題,而機器視覺技術受限于可見光波段,難以捕捉煙葉深層特征。深圳中達瑞和科技有限公司推出的高光譜相機解決方案…

矩陣求導常用公式解析:標量、向量與矩陣的導數計算

矩陣求導常用公式解析:標量、向量與矩陣的導數計算 矩陣求導常用公式解析:標量、向量與矩陣的導數計算矩陣求導的布局問題1. 分子布局 vs 分母布局對比表2. 布局沖突的典型場景分析3. 混合布局的兼容性處理 一、標量對向量求導1. 線性函數求導2. 二次型函…

NocoDB:開源的 Airtable 替代方案

NocoDB:開源的 Airtable 替代方案 什么是 NocoDB?NocoDB 的主要特點豐富的電子表格界面工作流自動化應用商店程序化訪問NocoDB 的應用場景使用 Docker 部署 NocoDB1. 創建數據目錄2. 運行 Docker 容器3. 訪問 NocoDB注意事項總結什么是 NocoDB? NocoDB 是一款功能強大的開源…

全格式文檔轉 Markdown 工具,Docker 一鍵部署,支持 API 調用

以下是簡要介紹: 這是一款可以快速將任意文檔文件轉markdown格式內容的工具,提供API轉換接口,方便集成與應用原理就是利用libreoffice、pandoc文件轉換工具,把所有文檔類型的文件逐步轉化,最終轉成markdown格式的內容…

MATLAB繪制餅圖(二維/三維)

在數據分析與展示領域,餅圖是一種直觀且高效的可視化工具,能夠在瞬間傳遞各部分與整體的比例關系。今天,我將分享一段 MATLAB 繪制二維及三維餅圖的代碼,助你輕松將數據以餅圖形式呈現于眾人眼前。 無論是二維餅圖的簡潔明了&…

AI筆記-1

Halide Perovskites (HPs) 鹵化物鈣鈦礦 鹵化物鈣鈦礦(HPs)已被 公認為 光伏和發光器件 中最有前途的材料之一 在本觀點中,我們將探討鈣鈦礦的定義,主要聚焦于由 較重鹵素(Cl、Br和I)組成的鈣鈦礦亞群&…

excel表數據導入數據庫

前兩天,有個兩DB之間的數據導出導入的需求。對方提供的是excel表,我這邊是mysql數據庫,excel表第一行是字段名,之后的行是記錄的值。 其實沒有多復雜,我先將exel轉成csv,結果mysql導入csv,第一行…

智能機器人在物流行業的應用:效率提升與未來展望

隨著全球電子商務的蓬勃發展,物流行業正面臨著前所未有的挑戰和機遇。傳統的物流模式已經難以滿足日益增長的市場需求,尤其是在效率、成本控制和精準配送方面。智能機器人技術的出現,為物流行業的轉型升級提供了強大的動力。本文將探討智能機…

如何對 Redis 進行水平擴展和垂直擴展以應對微服務流量的增長?

核心概念: 垂直擴展 (Scale Up): 提升單個節點的性能。簡單來說就是給現有的 Redis 服務器增加更多的 CPU 、內存、更快的存儲(SSD)或更高的網絡帶寬。水平擴展 (Scale Out): 增加更多節點來分擔負載。這意味著部署多個 Redis 實例&#xff…

Elasticsearch知識匯總之ElasticSearch與OpenSearch比較

四 ElasticSearch與OpenSearch比較 OpenSearch項目分為 OpenSearch(源自 Elasticsearch 7.10.2)與 OpenSearch Dashboards(源自 Kibana 7.10.2)兩部分。此外,OpenSearch 項目也將成為之前發布的 Elasticsearch 發行版&…

《OmniMeetProTrack 全維會議鏈智能追錄系統 軟件設計文檔》

撰稿人:wjz 一、引言 1.1 目的 本軟件設計文檔詳細描述了 OmniMeetProTrack 全維會議鏈智能追錄系統的架構、組件、模塊設計及實現細節,旨在為開發人員、利益相關者和維護人員提供系統的全面設計藍圖。本文檔基于需求定義文檔,確保系統實現…

LeetCode 196. 刪除重復的電子郵箱

原題題目 表: Person ---------------------- | Column Name | Type | ---------------------- | id | int | | email | varchar | ---------------------- id 是該表的主鍵列(具有唯一值的列)。 該表的每一行包含一封電子郵件。電子郵件將不包含大寫字母…

基于WebUI的深度學習模型部署與應用實踐

引言 隨著深度學習技術的快速發展,如何將訓練好的模型快速部署并提供友好的用戶交互界面成為許多AI項目落地的關鍵。WebUI(Web User Interface)作為一種輕量級、跨平臺的解決方案,正被廣泛應用于各類AI模型的部署場景。本文將詳細介紹基于Python生態構建WebUI的技術方案,包…

Spring AI Alibaba-03- Spring AI + DeepSeek-R1 + ES/Milvus + RAG 智能對話應用開發全流程

Spring AI Alibaba-03- Spring AI DeepSeek-R1 ES/Milvus RAG 智能對話應用開發全流程 在[人工智能](AI)應用中,模型通常需要訪問外部資源或執行特定操作,例如數據庫查詢、調用外部API或執行計算任務。Spring AI,作…

某團小程序mtgsig,_token 生成邏輯分析

前言 本文章中所有內容僅供學習交流,抓包內容、敏感網址、數據接口均已做脫敏處理,嚴禁用于商業用途和非法用途,否則由此產生的一切后果均與作者無關,若有侵權,請聯系我立即刪除! 太久不更新 重新找回號 …