國產MCU學習Day5——CW32F030C8T6:窗口看門狗功能全解析

每日更新教程,評論區答疑解惑,小白也能變大神!"

目錄

一.窗口看門狗(WWDG)簡介

二.窗口看門狗寄存器列表

三.窗口看門狗復位案例

一.窗口看門狗(WWDG)簡介

  • ?CW32F030C8T6 內部集成窗口看門狗定時器 (WWDT),用戶需要在設定的時間窗口內進行刷新,否則將觸發系統復位。 WWDT 通常被用來監測有嚴格時間要求的程序執行流程,防止由外部干擾或未知條件造成應用程序的執行異常, 導致發生系統故障。

1.1主要特性

  • ?7 位向下計數器。
  • ?PCLK 時鐘驅動,8 級預分頻,最大分頻 524288。
  • ?支持預溢出中斷和計數溢出、加載計數值出錯復位。
  • ?開啟后不可關閉,除非系統復位。

1.2功能框圖

1.3工作方式

  • 系統復位后,窗口看門狗 WWDT 處于關閉狀態,設置控制寄存器 WWDT_CR0 的 EN 位域為 1,可啟動 WWDT。 WWDT 開啟后,除非發生復位,否則不能被關閉。 啟動 WWDT 之前,用戶必須預設看門狗溢出時間和窗口時間。設置 WWDT_CR0.WCNT 的值,可更新計數器的 初始值,設置 WWDT_CR1.WINR 的值,可配置看門狗的窗口值,窗口值必須小于看門狗計數器的初始值。啟動 WWDT 后,計數器從初始值開始遞減計數。
  • 當計數器遞減到 0x40 時,將產生預溢出信號 POV,設置 WWDT_CR1.IE 為 1 將產生預溢出中斷。
  • 當計數器遞減到 0x3F 時,將產生溢出信號 OV,該溢出信號可觸發系統復位。
  • 在當前計數值 WCNT 大于窗口值 WINR 時,更新看門狗計數器,也會觸發系統復位。

1.4刷新計數器

  • WWDT 運行時,只有在計數值小于等于窗口值且計數值遞減到 0x3F 之前,才能刷新計數器,即喂狗操作,否則 將產生系統復位。 設置 WWDT_CR1.WINR 的值,可配置復位前延時時間窗口的上限值,延時時間窗口的下限固定為 0x3F,窗口看 門狗的喂狗操作時機,如下圖所示:

1.5喂狗時間

  • 窗口看門狗的喂狗時間計算公式:
  • 喂狗時間下限: TWWDT_MIN = TPCLK×4096×2PRS×( WCNT – WINR )
  • 喂狗時間上限: TWWDT_MAX = TPCLK×4096×2PRS×( WCNT – 0x3F )
  • 其中: TPCLK:PCLK 的時鐘周期 PRS:預分頻系數 WCNT:計數器當前計數值 WINR:
  • 看門狗窗口值
  • 例: 當 PCLK 頻率為 24MHz 時,預分頻系數 PRS 設置為 0x01,WCNT 設置為 0x6F,窗口值 WINR 設置為 0x4F,
  • 則喂狗時間如下: TWWDT_MIN = 1 / 24MHz×4096×21 ×( 0x6F - 0x4F ) ≈ 10.922 ms TWWDT_MAX = 1 / 24MHz×4096×21 ×( 0x6F - 0x3F ) = 16.384 ms
  • 即,喂狗時間最早不能早于 10.922ms,否則將發生加載計數值出錯而引起系統復位;喂狗最晚不能遲于 16.384ms,否則將發生下溢出引起系統復位。正確喂狗的時間窗口大小約為 5ms。

1.6復位與中斷

  • 當計數器 WCNT 的值遞減到 0x40 時,預溢出中斷標志位 WWDT_SR.POV 由硬件置位,若設置了控制寄存器 WWDT_CR1 的 IE 位域為 1(注:該位置 1 后不可清 0),將產生預溢出中斷請求。用戶可在中斷服務程序中更 新計數器 WCNT,以避免 WWDT 產生復位。 在以下條件之一成立時,均可觸發系統復位:
  • 1. 計數器 WCNT 的值遞減到 0x3F;
  • 2. 更新計數器 WCNT 時當前計數值大于窗口值;
  • 3. 向 WWDT_CR0.WCNT 寫入小于或等于 0x3F 的值。

1.7?WWDT 基本配置流程

  • 步驟 1:設置 SYSCTRL_APBEN1.WWDT 為 1,使能 WWDT 的配置時鐘及工作時鐘;
  • 步驟 2:通過 WWDT_CR1.PRS 配置窗口看門狗計數器時鐘的預分頻;
  • 步驟 3:通過 WWDT_CR1.WINR 配置窗口看門狗計數的比較值;
  • 步驟 4:通過 WWDT_CR0.WCNT 配置計數器的初始值;
  • 步驟 5:根據是否需要使能預溢出中斷,配置 WWDT_CR1.IE;
  • 步驟 6:設置 WWDT_CR0.EN 為 1 啟動窗口看門狗。 WWDT 喂狗 當計數器 WCNT 的值遞減到小于等于 WWDT_CR1.WINR,且大于 0x3F 之前,向 WWDT_CR0.WCNT 重新寫入計 數器的初始值。

二.窗口看門狗寄存器列表

三.窗口看門狗復位案例

以下是針對代碼生成的詳細注釋,按功能模塊劃分:

/*** @brief 主函數入口,初始化硬件并進入主循環* @return int32_t 程序執行狀態(通常不返回)*/
int32_t main(void)
{// 系統時鐘配置(HSI->PLL 48MHz)RCC_Configuration();// GPIO初始化(按鍵輸入PA1)GPIO_Configuration();// LED1初始化(PB9),默認點亮LED1.LED_Port = CW_GPIOB;LED1.LED_Pin = GPIO_PIN_9;LED_Init(&LED1);LED1.LED_On(&LED1);// LED2初始化(PB8),默認熄滅LED2.LED_Port = CW_GPIOB;LED2.LED_Pin = GPIO_PIN_8;LED_Init(&LED2);LED2.LED_Off(&LED2);// 系統節拍定時器初始化(250ms中斷周期)SysTick_Config(SystemCoreClock / 1000 * 250);// 窗口看門狗配置(窗口值82,分頻262144)WWDT_Config();// 中斷控制器配置(優先級設定)NVIC_Configuration();// 檢測是否因看門狗復位if (RCC_GetRstFlag(RCC_FLAG_WWDTRST)){LED2.LED_On(&LED2);  // 若復位則點亮LED2指示}// 主循環(空跑)while (1) {}
}
/*** @brief 系統時鐘配置(HSI->PLL 48MHz)* - HSI啟用并校準(8MHz/6分頻)* - PLL倍頻到48MHz* - FLASH等待周期設為2(適應48MHz時鐘)*/
void RCC_Configuration(void)
{// HSI使能,預分頻6(默認8MHz輸出)RCC_HSI_Enable(RCC_HSIOSC_DIV6);// AHB/APB總線無分頻RCC_HCLKPRS_Config(RCC_HCLK_DIV1);RCC_PCLKPRS_Config(RCC_PCLK_DIV1);// PLL配置(HSI作為源,8MHz輸入,6倍頻至48MHz)RCC_PLL_Enable(RCC_PLLSOURCE_HSI, 8000000, 6);RCC_PLL_OUT();// FLASH等待周期配置(48MHz需2周期)__RCC_FLASH_CLK_ENABLE();FLASH_SetLatency(FLASH_Latency_2);// 切換系統時鐘源至PLLRCC_SysClk_Switch(RCC_SYSCLKSRC_PLL);RCC_SystemCoreClockUpdate(48000000);
}
/*** @brief 窗口看門狗配置* - 時鐘頻率183Hz(分頻262144)* - 窗口值82(約450ms窗口期)* - 計數器初始值0x7F(最大127)* - 啟用中斷*/
static void WWDT_Config(void)
{WWDT_InitTypeDef WWDT_InitStruct = {0};__RCC_WWDT_CLK_ENABLE();WWDT_InitStruct.WWDT_CounterValue = 0x7F;WWDT_InitStruct.WWDT_ITState = ENABLE;WWDT_InitStruct.WWDT_Prescaler = WWDT_Prescaler_DIV262144;  // 5.46ms/周期WWDT_InitStruct.WWDT_WindowValue = 82;  // 窗口期≈82*5.46ms≈450msWWDT_Init(&WWDT_InitStruct);WWDT_Cmd();  // 啟動看門狗
}
/*** @brief SysTick中斷服務函數* - 每250ms觸發一次* - 喂狗操作(防止復位)* - LED1狀態翻轉*/
void SysTick_Handler(void)
{WWDT_FEED(0x7F);        // 喂狗(重置計數器)LED1.LED_Toggle(&LED1); // LED1閃爍
}/*** @brief 看門狗中斷服務函數* - 首次進入時喂狗2次并點亮LED1* - 后續若仍進入則觸發系統復位*/
void WDT_IRQHandler(void)
{static uint8_t flag = 0;WWDT_ClearFlag();  // 清除中斷標志if (flag < 2){WWDT_FEED(0x7F);      // 喂狗延緩復位LED1.LED_On(&LED1);   // LED1常亮作為預警flag++;}
}
/*** @brief GPIO配置* - PA1設置為下降沿觸發輸入(按鍵檢測)*/
void GPIO_Configuration(void)
{GPIO_InitTypeDef GPIO_InitStruct;__RCC_GPIOA_CLK_ENABLE();GPIO_InitStruct.IT = GPIO_IT_FALLING;  // 下降沿中斷GPIO_InitStruct.Mode = GPIO_MODE_INPUT;GPIO_InitStruct.Pins = GPIO_PIN_1;GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;GPIO_Init(CW_GPIOA, &GPIO_InitStruct);
}/*** @brief NVIC中斷優先級配置* - SysTick優先級1* - GPIO/WDT中斷優先級0(最高)*/
void NVIC_Configuration(void)
{__disable_irq();NVIC_SetPriority(SysTick_IRQn, 1);NVIC_SetPriority(GPIOA_IRQn, 0);NVIC_SetPriority(WDT_IRQn, 0);NVIC_EnableIRQ(WDT_IRQn);NVIC_EnableIRQ(GPIOA_IRQn);__enable_irq();
}

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

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

相關文章

2025年文件加密軟件分享:守護數字世界的核心防線

在數字化時代&#xff0c;數據已成為個人與企業的寶貴資產&#xff0c;文件加密軟件通過復雜的算法&#xff0c;確保信息在存儲、傳輸與共享過程中的保密性、完整性與可用性。一、文件加密軟件的核心原理文件加密軟件算法以其高效性與安全性廣泛應用&#xff0c;通過對文件數據…

node.js下載教程

1.項目環境文檔 語雀 2.nvm安裝教程與nvm常見命令,超詳細!-阿里云開發者社區 C:\Windows\System32>nvm -v 1.2.2 C:\Windows\System32>nvm list available Error retrieving "http://npm.taobao.org/mirrors/node/index.json": HTTP Status 404 C:\Window…

(AI如何解決問題)在一個項目,跳轉到外部html頁面,頁面布局

問題描述目前&#xff0c;ERP后臺有很多跳轉外部鏈接的地方&#xff0c;會直接打開一個tab顯示。因為有些頁面是適配手機屏幕顯示&#xff0c;放在瀏覽器會超級大。不美觀&#xff0c;因此提出優化。修改前&#xff1a;修改后&#xff1a;思考過程1、先看下代碼&#xff1a;log…

網絡通信協議與虛擬網絡技術相關整理(上)

#作者&#xff1a;程宏斌 文章目錄 tcp協議udp協議arp協議icmp協議dhcp協議BGP協議OSPF協議BGP vs OSPF 對比表VLAN&#xff08;Virtual LAN&#xff09;VXLAN&#xff08;Virtual Extensible LAN&#xff09;IPIP&#xff08;IP-in-IP&#xff09;vxlan/vlan/ipip網橋/veth網…

物聯網軟件層面的核心技術體系

物聯網軟件層面的核心技術體系 物聯網(IoT)軟件技術棧是一個多層次的復雜體系&#xff0c;涵蓋從設備端到云平臺的完整解決方案。以下是物聯網軟件層面的關鍵技術分類及詳細說明&#xff1a; 一、設備端軟件技術 1. 嵌入式操作系統 實時操作系統(RTOS)&#xff1a; FreeRTO…

GreatSQL通過偽裝從庫回放Binlog文件

GreatSQL通過偽裝從庫回放Binlog文件 一、適用場景說明 1、主庫誤操作恢復 利用 Binlog 在其他實例解析、回放&#xff0c;根據gtid只回放到指定位點。 2、網絡隔離環境同步 備份恢復后可以拉去主庫Binlog文件至新實例同步增量數據。 3、備份恢復遇到Binlog文件過大處理 恢復實…

MVC 架構設計模式

在現代軟件開發中&#xff0c;架構設計決定了一個項目的可維護性與可擴展性。MVC&#xff08;Model-View-Controller&#xff09;作為經典的分層設計模式&#xff0c;廣泛應用于 Web 系統、前端應用乃至移動端開發中。本文不僅介紹 MVC 的核心思想和機制&#xff0c;還將結合具…

(18)python+playwright自動化測試鼠標拖拽-上

1.簡介 本文主要介紹兩個在測試過程中可能會用到的功能&#xff1a;在selenium中介紹了Actions類中的拖拽操作和Actions類中的劃取字段操作。例如&#xff1a;需要在一堆log字符中隨機劃取一段文字&#xff0c;然后右鍵選擇摘取功能。playwright同樣可以實現元素的拖拽和釋放的…

Android 網絡全棧攻略(四)—— TCPIP 協議族與 HTTPS 協議

Android 網絡全棧攻略系列文章&#xff1a; Android 網絡全棧攻略&#xff08;一&#xff09;—— HTTP 協議基礎 Android 網絡全棧攻略&#xff08;二&#xff09;—— 編碼、加密、哈希、序列化與字符集 Android 網絡全棧攻略&#xff08;三&#xff09;—— 登錄與授權 Andr…

Python爬蟲實戰:從零構建完整項目(數據采集+存儲+異常處理)

Python爬蟲實戰&#xff1a;從零構建完整項目&#xff08;數據采集存儲異常處理&#xff09; 爬蟲不是簡單的請求解析&#xff0c;而是一個系統工程。本文將帶你體驗企業級爬蟲開發的核心流程。 一、前言&#xff1a;為什么需要完整的爬蟲項目&#xff1f; 作為初學者&#xf…

大數據時代UI前端的用戶體驗設計新思維:以用戶為中心的數據可視化

hello寶子們...我們是艾斯視覺擅長ui設計、前端開發、數字孿生、大數據、三維建模、三維動畫10年經驗!希望我的分享能幫助到您!如需幫助可以評論關注私信我們一起探討!致敬感謝感恩!一、引言&#xff1a;大數據重構用戶體驗設計的底層邏輯在數據爆炸式增長的今天&#xff0c;用…

FreeRTOS 中任務控制塊(Task Control Block,TCB)用于管理和描述任務的核心數據結構

在 FreeRTOS 中&#xff0c;任務控制塊&#xff08;Task Control Block&#xff0c;TCB&#xff09;是用于管理和描述任務的核心數據結構。每個任務都有一個對應的 TCB&#xff0c;它包含了任務的所有相關信息。 TCB 的主要功能 存儲任務狀態信息&#xff1a;TCB 中包含了任務…

前端-HTML-day1

目錄 1、標簽語法 2、HTML基本骨架 3、標簽的關系 4、注釋 5、標題標簽 6、段落標簽 7、換行和水平線標簽 8、文本格式化標簽 9、圖像標簽-基本使用 10、圖像標簽-屬性 11、相對路徑 12、絕對路徑 13、超鏈接 14、音頻 15、視頻 16、綜合案例1--個人簡介 17、…

OpenCV篇——項目(二)OCR文檔掃描

目錄 文檔掃描項目說明 前言 文檔掃描代碼總體演示 OCR文檔識別代碼總體演示: ?編輯 代碼功能詳解 1. 預處理階段 2. 邊緣檢測 3. 輪廓處理 4. 透視變換 5. 后處理 主要改進說明&#xff1a; 使用建議&#xff1a; 文檔掃描項目說明 前言 本項目實現了一個自動…

Java 中導出包含多個 Sheet 的 Excel 文件

在 Java 中導出包含多個 Sheet 的 Excel 文件&#xff0c;可以使用 Apache POI 或 EasyExcel&#xff08;阿里開源庫&#xff09;。以下是兩種方法的詳細實現&#xff1a; 方法 1&#xff1a;使用 Apache POI&#xff08;支持 .xls 和 .xlsx&#xff09; 1. 添加 Maven 依賴 …

OneCode采用虛擬DOM結構實現服務端渲染的技術實踐

一、技術背景與挑戰 隨著企業級應用復雜度的提升&#xff0c;傳統服務端渲染(SSR)面臨頁面交互性不足的問題&#xff0c;而純前端SPA架構則存在首屏加載慢和SEO不友好的缺陷。OneCode框架創新性地將虛擬DOM技術引入服務端渲染流程&#xff0c;構建了一套兼顧性能與開發效率的企…

變幻莫測:CoreData 中 Transformable 類型面面俱到(八)

概述 各位似禿似不禿小碼農們都知道&#xff0c;在蘋果眾多開發平臺中 CoreData 無疑是那個最簡潔、擁有“官方認證”且最具兼容性的數據庫框架。使用它可以讓我們非常方便的搭建出 App 所需要的持久存儲體系。 不過&#xff0c;大家是否知道在 CoreData 中還存在一個 Transfo…

汽車LIN總線通訊:從物理層到協議棧的深度解析

目錄一、物理層&#xff1a;單線傳輸的信號奧秘1.1 電平定義與信號傳輸1.2 關鍵硬件組件作用二、數據鏈路層&#xff1a;幀結構與通信協議2.1 LIN幀的組成與功能2.2 主從式通信機制三、波特率同步&#xff1a;從節點的時鐘校準原理四、軟件實現&#xff1a;基于S32K144的主節點…

馬爾可夫鏈:隨機過程的記憶法則與演化密碼

本文由「大千AI助手」原創發布&#xff0c;專注用真話講AI&#xff0c;回歸技術本質。拒絕神話或妖魔化。搜索「大千AI助手」關注我&#xff0c;一起撕掉過度包裝&#xff0c;學習真實的AI技術&#xff01; 一、核心定義&#xff1a;無記憶的隨機演化 馬爾可夫鏈&#xff08;M…

【vue3+tauri+rust】如何實現下載文件mac+windows

項目背景&#xff1a;【vue3taurirust】 由于Safari對于下載總是有諸多阻攔&#xff0c;目前需求windowsmac可以實現&#xff1a; 后端返回的url文件可以下載;前端根據dom元素生成的PDF報告可以下載&#xff08;無遠程URL&#xff09;&#xff1b; 我的嘗試&#xff1a; 方法…