【STM32】G030單片機的窗口看門狗

一、簡單介紹

窗口看門狗適合需要精確時序控制的場合,在一個受限的窗口期內喂狗,如果遞減計數器還沒有到窗口值就喂狗,會觸發復位

如果一直不喂狗,也會觸發復位,和之前的獨立看門狗的窗口選項有點類似

需要指出的是,有些STM32單片機的獨立看門狗是不具備窗口功能的,例如常見的F103C8T6

遞減計數器有7位,由于計數值 >= 窗口值 >= 64,則計數器最高位亦即T6就必定是1

只要使能了窗口看門狗,WDGA就是1,右上方的與門是否輸出1就取決于前一級的或門

或門的一個輸入是T6,窗口期的大小就是T[5:0]這6個位,當這6位數遞減至0時,最高位發生翻轉,T6變成0就會觸發復位

或門的另一個輸入是比較器,當比較器發現計數值比窗口值還大時且有喂狗動作就輸出1,也會立刻復位

二、特性

如果遞減計數器還沒有到窗口值就喂狗,會觸發復位

如果遞減計數器值小于0x40,會觸發復位

具有一個早起中斷,在復位前會執行這個中斷

三、設置窗口值

筆者設置系統時鐘為64MHz,同時也是64MHz的pclk,使用16分頻,則計數頻率為64MHz / 4096 / 16 = 0.976kHz,周期為1.024ms

在窗口內喂狗后計數器被賦值為T[6:0],也就是cubemx里counter的值

當計數器值介于down counter和window之間時不允許喂狗,只有計數器值介于window和0x3F之間才可以喂狗

四、cubemx配置

系統時鐘

窗口看門狗

設置counter為127,window為70,則只有在第58.36~64.51ms的范圍內(計數器落在[70:63])喂狗才不會復位(因為每計數一次大約1.024ms)

開啟early wakeup中斷

定時器

配置定時并開啟中斷

中斷優先級

需要給看門狗中斷較高的優先級

五、測試代碼

主循環顯示遞增數,定時器喂狗次數和看門狗中斷喂狗次數

/*** @brief  The application entry point.* @retval int*/
int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_DMA_Init();MX_SPI1_Init();MX_TIM17_Init();
//   MX_WWDG_Init();/* USER CODE BEGIN 2 */ST7735_Init();ST7735_ShowString(0, 0, "RESET", Font_11x18, RED, BLACK);HAL_Delay(1000);ST7735_Clear(BLACK);MX_WWDG_Init();HAL_TIM_Base_Start_IT(&htim17);/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){static uint16_t wdg = 0;static uint16_t timer = 0;count++;sprintf(str, "%d  ", count % 999);ST7735_ShowString(0, 0, str, Font_11x18, GREEN, BLACK);if (wdg != wdgcnt){wdg = wdgcnt;sprintf(str, "%d", wdgcnt);ST7735_ShowString(0, 30, str, Font_11x18, RED, BLACK);}if (timer != timercnt){timer = timercnt;sprintf(str, "%d", timercnt);ST7735_ShowString(0, 60, str, Font_11x18, BLUE, BLACK);}/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */
}

在看門狗中斷內喂狗

void HAL_WWDG_EarlyWakeupCallback(WWDG_HandleTypeDef *hwwdg)
{wdgcnt++;HAL_WWDG_Refresh(hwwdg);wdgFeedFlg = 1;
}

看門狗早起中斷內進行喂狗,并將喂狗標志位置位

?在1ms定時器中斷內進行喂狗,判斷是否已經通過看門狗中斷喂過。如果喂過了,遞減計數器會被重置,就不必再喂了

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{static uint8_t cnt = 0;if (cnt == 60){if (wdgFeedFlg == 0){HAL_WWDG_Refresh(&hwwdg);timercnt++;}else{wdgFeedFlg = 0;}cnt = 0;}cnt++;
}

實驗證明確實如此,如果cnt等于58就喂狗也會觸發復位,只有59~64才是合適的范圍

六、現象

當定時器喂狗時,屏幕最底下藍色的數字顯示通過定時器喂狗的次數

當看門狗中斷喂狗時,屏幕中間紅色的數字顯示看門狗中斷喂狗次數

七、工程鏈接

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

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

相關文章

完整代碼注釋:實現 Qt 的 TCP 客戶端,實現和服務器通信

一、實驗效果演示 實現 Qt 的 TCP 客戶端&#xff0c;實現和服務器通信二、代碼框架 三、代碼 tcpclient客戶端代碼 tcpclient.cpp #include "tcpclient.h" #include "ui_tcpclient.h" #include <QDebug> #include <QMessageBox> #include …

AR培訓系統:油氣行業的安全與效率革新

在油氣行業&#xff0c;一場由增強現實&#xff08;AR www.teamhelper.cn &#xff09;技術引領的培訓革命正在悄然發生。新員工們不再需要冒著生命危險在真實的鉆井平臺上學習操作&#xff0c;而是通過AR眼鏡在虛擬環境中模擬鉆井、起下鉆甚至處理井噴等復雜操作。這種創新的培…

Linux 多線程:互斥與同步

Linux 多線程中的互斥與同步 —— pthread_mutex 與 semaphore在 Linux 多線程編程中&#xff0c;線程間共享全局變量或數據結構是常見場景。如果多個線程同時讀寫同一塊內存&#xff0c;就可能產生 數據競爭 和 不一致。為了解決這些問題&#xff0c;Linux 提供了多種 線程同步…

技術演進中的開發沉思-81 Linux系列:進程地址空間

上一個篇幅和大家聊了進程地址空間、內存描述符這些 Linux 內存管理的 “基本功”&#xff0c;我的一些學生問&#xff1a;“這些概念聽起來簡單&#xff0c;可實際開發中怎么用得上&#xff1f;” 我想今天把這些 “理論骨架” 填上 “實踐血肉”—— 畢竟我當年踩過的坑、摸過…

【聯通分量】題解:P13823 「Diligent-OI R2 C」所謂伊人_連通分量_最短路_01bfs_圖論_C++算法競賽

洛谷博客&#xff1a;https://www.luogu.com.cn/article/5n200x7y Link - P13823 討論區中有很多有用的 hack&#xff0c;沒過的話可以去看看。 每個點都可以換到其所在弱連通分量的最大點權&#xff0c;這是毋庸置疑的。 為了方便陳述&#xff0c;下文中記當前弱連通分量中…

區塊鏈+隱私計算護航“東數西算”數據安全報告

一、背景與政策支持1.1 "東數西算"工程概況戰略定位&#xff1a;作為數字經濟時代的核心"底座"&#xff0c;"東數西算"工程是國家級算力資源跨域調配戰略工程&#xff0c;旨在構建全國一體化算力網絡體系。啟動時間與布局&#xff1a;2022年2月&…

STM32——PWR

一、PWR1.1PWR簡介PWR&#xff08;Power Control&#xff09;電源控制PWR負責管理STM32內部的電源供電部分&#xff0c;可以實現可編程電壓監測器和低功耗模式的功能可編程電壓監測器&#xff08;PVD&#xff09;可以監控VDD電源電壓&#xff0c;當VDD下降到PVD閥值以下或上升到…

Linux系統網絡管理學習.2

目錄 一、學習目標與適用場景 二、網絡管理基礎概念 1. NetworkManager服務 2. 核心管理工具 三、NetworkManager服務管理&#xff08;基礎操作&#xff09; 1. 服務狀態控制 四、網絡參數配置&#xff08;IP/DNS/網關&#xff09; 1. 圖形化配置&#xff08;僅了解&…

響應式編程之Flow框架

文章目錄一、技術背景與產生原因1.1 響應式編程的興起1.2 響應式流規范&#xff08;Reactive Streams&#xff09;1.3 解決的問題1.4 響應式編程二、Flow API核心組件2.1 核心概念2.2 接口關系圖2.2 接口詳解2.3 背壓機制三、完整示例3.1 入門示例3.2 基礎發布-訂閱示例3.3 帶背…

ABeam中國 | 中國汽車市場(5)——軟件定義汽車(SDV)的智能化應用場景

前言本系列前四篇深入探討了中國新能源汽車市場的崛起與電動化進程中的挑戰。本文聚焦軟件定義汽車&#xff08;SDV&#xff09;的三大核心應用場景 ——高級駕駛輔助系統&#xff08;ADAS&#xff09;、智能駕駛艙人機界面&#xff08;HMI&#xff09;及出行即服務&#xff08…

BugKu Web滲透之成績查詢

打開網頁&#xff0c;頁面如下&#xff1a;輸入框中輸入不同的數字可以查詢不同的結果。輸入1后點擊submit按鈕&#xff0c;下方出現成績結果。從題目上看感覺是一個SQL注入的漏洞。思路有下&#xff1a;1.自己手動拼接一些常見的SQL注入。2.用bp抓包后用SQLMap去跑。首先&…

【MES】工業4.0智能制造數字化工廠(數字車間、MES、ERP)解決方案:智能工廠體系架構、系統集成以及智能設計、生產、管理、倉儲物流等

工業4.0智能制造數字化工廠的解決方案&#xff0c;涵蓋了智能制造的背景、企業實現智能工廠的好處、智能工廠的規劃與實現方法以及系統實施模塊的詳細介紹。通過上汽通用凱迪拉克工廠的案例展示了智能工廠的強大能力&#xff0c;強調了數據、技術、管理、人員等關鍵要素在智能制…

3.【鴻蒙應用開發實戰: 從入門到精通】開發入門 Hello World

1.【鴻蒙應用開發實戰: 從入門到精通】開發入門 Hello World1.1 前言1.2 創建一個新項目1.2.1 打開DevEco Studio1.2.2 點擊 Create Project 創建項目1.3 遺留問題1.4 總結與開發建議1.5 結束語1.1 前言 上篇博文【2.【鴻蒙應用開發實戰: 從入門到精通】開發環境搭建】我們已經…

mac系統本地部署Dify步驟梳理

更換終端&#xff0c;適配步驟梳理見筆記前提&#xff1a;已安裝docker desktop&#xff0c;若未安裝&#xff0c;跳轉至文末先安裝1.Git軟件準備&#xff08;1&#xff09;確認查詢Git版本&#xff08;2&#xff09;如果查詢不到系統會提示安裝&#xff0c;點擊安裝即可&#…

深度學習——基于卷積神經網絡實現食物圖像分類【1】(datalodar處理方法)

1. 項目概述 在這個項目中&#xff0c;我們將使用PyTorch框架構建一個卷積神經網絡(CNN)來實現食物圖像分類任務。我們的數據集包含20種不同的食物類別&#xff0c;包括八寶粥、巴旦木、白蘿卜、板栗等常見食物。本文將詳細介紹從數據準備、模型構建到訓練和評估的完整流程。 …

華中科大聯手小米推出ReCogDrive:自動駕駛迎來“認知革命”!

1.【前言】 在開放道路中實現安全、平穩、泛化的自動駕駛&#xff0c;是智能交通領域的“圣杯”。盡管近年來 端到端自動駕駛&#xff08;End-to-End Autonomous Driving, E2E-AD&#xff09; 框架&#xff08;如 UniAD、VAD&#xff09;在 NuScenes 等基準中展現出優異表現&a…

基于 Spring AMQP 的 RabbitMQ 分布式消息系統實戰

在分布式系統中&#xff0c;服務間的解耦與異步通信是關鍵挑戰。RabbitMQ 作為一款成熟的消息中間件&#xff0c;憑借其靈活的交換器模型&#xff08;Direct/Fanout/Topic&#xff09;、可靠的消息傳遞機制&#xff08;持久化、確認機制&#xff09;和豐富的客戶端支持&#xf…

計算機網絡:天氣預報

一、預期結果程序運行輸入所要查詢的地點&#xff0c;然后出現三個選項實時天氣、未來天氣、生活指數。二、實現思路&#xff08;一&#xff09;Ubuntu中利用NOWapi服務器獲取訪問數據api地址&#xff0c;然后創建客戶端利用TCP、IPV4協議分別訪問實時天氣&#xff0c;未來天氣…

GD32VW553-IOT OLED移植

1.前言 本來想用他自身的硬件I2C實現的&#xff0c;但是不知道為啥跑demo一點波形都沒有&#xff0c;改成推挽也沒有波形&#xff0c;只有初始化的電平變化&#xff0c;而且I2C的驅動庫好像有點復雜&#xff0c;起始信號結束信號都得單獨發的&#xff0c;沒有一個全部封裝好的庫…

刀客doc:Instagram會成為Meta廣告業務的第二曲線嗎?

文/刀客doc(頭條深一度精選作者)一如果現在還用“Facebook的小弟”來定義Instagram&#xff0c;多少顯得有些過時了。在和一些出海品牌負責人聊天時&#xff0c;我有個很明顯的感受&#xff1a;他們已經不會再把Instagram當成“附屬資源”去看待。到2025年第二季度&#xff0c;…