国产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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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; 方法…