0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

W55MH32高性能以太网单片机教程 第九章 窗口看门狗(WWDG)

W55MH32 ? 来源:W55MH32 ? 作者:W55MH32 ? 2025-05-27 10:26 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

单芯片解决方案,开启全新体验——W55MH32 高性能以太网单片机

W55MH32是WIZnet重磅推出的高性能以太网单片机,它为用户带来前所未有的集成化体验。这颗芯片将强大的组件集于一身,具体来说,一颗W55MH32内置高性能Arm? Cortex-M3核心,其主频最高可达216MHz;配备1024KB FLASH与96KB SRAM,满足存储与数据处理需求;集成TOE引擎,包含WIZnet全硬件TCP/IP协议栈、内置MAC以及PHY,拥有独立的32KB以太网收发缓存,可供8个独立硬件socket使用。如此配置,真正实现了All-in-One解决方案,为开发者提供极大便利。

在封装规格上,W55MH32 提供了两种选择:QFN68和QFN100。

W55MH32Q采用QFN68封装版本,尺寸为8x8mm,它拥有36个GPIO、3个ADC、12通道DMA、17个定时器、2个I2C、3个串口、2个SPI接口(其中1个带I2S接口复用)、1个CAN以及1个USB2.0。在保持与同系列其他版本一致的核心性能基础上,仅减少了部分GPIO以及SDIO接口,其他参数保持一致,性价比优势显著,尤其适合网关模组等对空间布局要求较高的场景。紧凑的尺寸和精简化外设配置,使其能够在有限空间内实现高效的网络连接与数据交互,成为物联网网关、边缘计算节点等紧凑型设备的理想选择。 同系列还有QFN100封装的W55MH32L版本,该版本拥有更丰富的外设资源,适用于需要多接口扩展的复杂工控场景,软件使用方法一致。

此外,本W55MH32支持硬件加密算法单元,WIZnet还推出TOE+SSL应用,涵盖TCP SSL、HTTP SSL以及MQTT SSL等,为网络通信安全再添保障。

为助力开发者快速上手与深入开发,基于W55MH32Q这颗芯片,WIZnet精心打造了配套开发板。开发板集成WIZ-Link芯片,借助一根USB C口数据线,就能轻松实现调试、下载以及串口打印日志等功能。开发板将所有外设全部引出,拓展功能也大幅提升,便于开发者全面评估芯片性能。

wKgZO2gbOfaAVPzkACJSygzv-rI600.png

第九章 窗口看门狗(WWDG)

本章分为如下几个小节:

1 IWDG 简介

2 IWDG 寄存器描述

3 程序设计

4 下载验证

1 WWDG简介

窗口看门狗通常被用来监测,由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。除非递减计数器的值在 T6 位变成 0 前被刷新,看门狗电路在达到预置的时间周期时,会产生一个 MCU 复位。在递减计数器达到窗口寄存器数值之前,如果 7 位的递减计数器数值(在控制寄存器中)被刷新,那么也将产生一个 MCU 复位。这表明递减计数器需要在一个有限的时间窗口中被刷新。

1.1 WWDG主要特性

?编程的自由运行递减计数器

?条件复位

······当递减计数器的值小于 0x40,(若看门狗被启动)则产生复位。

······当递减计数器在窗口外被重新装载,(若看门狗被启动)则产生复位。

?如果启动了看门狗并且允许中断,当递减计数器等于 0x40 时产生早期唤醒中断(EWI),它可以被用于重装载计数器以避免 WWDG 复位。

1.2 WWDG功能描述

如果看门狗被启动(WWDG_CR 寄存器中的 WDGA 位被置'1'),并且当 7 位(T[6:0])递减计数器从0x40 翻转到 0x3F(T6 位清零)时,则产生一个复位。如果软件在计数器值大于窗口寄存器中的数值时重新装载计数器,将产生一个复位。

wKgZO2g1ISKAKVoFAAD8_CqnjIs928.png

看门狗框图

应用程序在正常运行过程中必须定期地写入 WWDG_CR 寄存器以防止 MCU 发生复位。只有当计数器值小于窗口寄存器的值时,才能进行写操作。储存在 WWDG_CR 寄存器中的数值必须在 0xFF 和0xC0 之间:

  • ?启动看门狗

在系统复位后,看门狗总是处于关闭状态,设置 WWDG_CR 寄存器的 WDGA 位能够开启看门狗,随后它不能再被关闭,除非发生复位。

  • ?控制递减计数器

递减计数器处于自由运行状态,即使看门狗被禁止,递减计数器仍继续递减计数。当看门狗被启用时,T6 位必须被设置,以防止立即产生一个复位。T[5:0]位包含了看门狗产生复位之前的计时数目;复位前的延时时间在一个最小值和一个最大值之间变化,这是因为写入 WWDG_CR 寄存器时,预分频值是未知的。配置寄存器(WWDG_CFR)中包含窗口的上限值:要避免产生复位,递减计数器必须在其值小于窗口寄存器的数值并且大于 0x3F 时被重新装载,0 描述了窗口寄存器的工作过程。另一个重装载计数器的方法是利用早期唤醒中断(EWI)。设置 WWDG_CFR 寄存器中的 WEI 位开启该中断。当递减计数器到达 0x40 时,则产生此中断,相应的中断服务程序(ISR)可以用 来加载计数器以防止 WWDG 复位。在 WWDG_SR 寄存器中写'0'可以清除该中断。

注: 可以用 T6 位产生一个软件复位(设置 WDGA 位为'1',T6 位为'0')。

1.3 如何编写看门狗超时程序

可以使用 0 提供的公式计算窗口看门狗的超时时间。

警告:当写入 WWDG_CR 寄存器时,始终置 T6 位为'1'以避免立即产生一个复位。

wKgZO2g1ISKAenIkAAE-6DJxv-I612.png

窗口看门狗时序图

1.4 调试模式

微控制器进入调试模式时(Cortex-M3 核心停止),根据调试模块中的 DBG_WWDG_STOP 配置位的状态,WWDG 的计数器能够继续工作或停止。

2 寄存器描述

可以用半字(16 位)或字(32 位)的方式操作这些外设寄存器。

2.1 控制寄存器(WWDG_CR)

地址偏移量:0x00

复位值:0x0000 007F

wKgZPGg1ISKAWZQnAAHxxdaJpw4363.png

2.2 配置寄存器(WWDG_CFR)

地址偏移量:0x04

复位值:0x0000 007F

wKgZPGg1ISKAJFM4AAI1PiEz6E4168.png

2.3 状态寄存器(WWDG_SR)

地址偏移量:0x08

复位值:0x0000 0000

wKgZO2g1ISKAenIkAAE-6DJxv-I612.png

2.4 WWDG寄存器映像

WWDG 寄存器映像和复位值

wKgZPGg1ISKAW9GeAAD5qGe_jYE403.png

3 程序设计

3.1 WWDG_Int例程

这段代码是基于 W55MH32 微控制器编写的,主要用于演示窗口看门狗(WWDG)的中断喂狗功能。窗口看门狗是一种特殊的看门狗,它有一个上窗口值和下窗口值,只有在计数器的值处于这两个窗口值之间时喂狗才有效。该程序通过配置窗口看门狗和中断,在窗口看门狗产生中断时进行喂狗操作,以防止系统复位。

1. 系统启动阶段

系统上电或复位后,程序开始执行。首先会初始化各种外设和窗口看门狗,然后通过串口输出系统时钟频率信息和提示信息。

2.正常运行阶段

// 窗口看门狗配置(在main函数中)
WWDG_SetPrescaler(WWDG_Prescaler_8);      // 设置预分频值
WWDG_SetWindowValue(0x5F);                // 设置窗口上限值
WWDG_Enable(0x7f);                        // 使能看门狗并设置初始值

// 中断配置
WWDG_ClearFlag();                         // 清除早期唤醒中断标志
NVIC_Configuration();                     // 配置NVIC中断优先级
WWDG_EnableIT();                          // 使能窗口看门狗中断

// 窗口看门狗中断处理函数
void WWDG_IRQHandler(void)
{
    WWDG_SetCounter(0x7f);                // 重置计数器值为0x7F(喂狗操作)
    WWDG_ClearFlag();                     // 清除中断标志
    printf("[WWDG] Feed dog! Counter reset to 0x7Fn"); 
}

窗口看门狗开始工作,计数器从初始值 0x7F 开始递减。

当计数器的值递减到窗口值 0x5F 时,会触发窗口看门狗中断,进入中断处理函数WWDG_IRQHandler()。

在中断处理函数中,计数器被重置为 0x7F,中断标志位被清除,然后继续正常运行。

只要中断处理函数能够及时响应并进行喂狗操作,系统将不会因为窗口看门狗超时而复位,会一直保持正常运行状态。

3. 异常情况

如果由于某种原因(如中断处理函数被阻塞、系统死机等)导致中断处理函数不能及时响应,计数器会继续递减到 0,此时窗口看门狗会产生复位信号,使系统重新启动,再次输出系统时钟频率信息和提示信息。

3.1.1 下载验证

在烧录完成后,串口会输出系统时钟频率信息及“WWDG Int Test.”和“Interrupt Feed Dog”提示,窗口看门狗会周期性触发中断,在中断处理函数中重新设置计数器和清除标志以防止系统复位,而主函数进入无限循环,无其他明显现象。

wKgZO2g1ISKADTZdAAG4Fehnx-U342.png

3.2 WWDG_Reset例程

此程序是基于 W55MH32 单片机开发的,其主要目的是开展窗口看门狗(WWDG)的复位测试,同时配置了串口通信用于输出系统信息。

1.主函数main()

RCC_ClocksTypeDef clocks;

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);
    delay_init();
    UART_Configuration(115200);
    RCC_GetClocksFreq(&clocks);

    printf("n");
    printf("SYSCLK: %3.1fMhz, HCLK: %3.1fMhz, PCLK1: %3.1fMhz, PCLK2: %3.1fMhz, ADCCLK: %3.1fMhzn",
           (float)clocks.SYSCLK_Frequency / 1000000, (float)clocks.HCLK_Frequency / 1000000,
           (float)clocks.PCLK1_Frequency / 1000000, (float)clocks.PCLK2_Frequency / 1000000, (float)clocks.ADCCLK_Frequency / 1000000);

    printf("WWDG Reset Test.n");

    WWDG_SetPrescaler(WWDG_Prescaler_8);
    WWDG_SetWindowValue(0x5F);
    WWDG_Enable(0x7f);

定义了RCC_ClocksTypeDef类型的变量clocks,用于存储系统时钟频率信息。

使能窗口看门狗(WWDG)的时钟。

调用delay_init函数进行延时初始化。

调用UART_Configuration()函数,以 115200 的波特率配置串口。

获取系统时钟频率,并通过printf函数将系统时钟频率信息打印输出。

打印 “WWDG Reset Test.” 信息。

对窗口看门狗进行配置,设置预分频器和窗口值,然后使能窗口看门狗。

进入无限循环。

2. 串口配置函数UART_Configuration()

定义了GPIO_InitTypeDef和USART_InitTypeDef类型的结构体变量。

使能USART1和GPIOA的时钟。

对GPIOA的引脚 9 进行配置,使其作为USART1的发送引脚(复用推挽输出)。

对GPIOA的引脚 10 进行配置,使其作为USART1的接收引脚(浮空输入)。

对USART1进行配置,设置波特率、数据位、停止位、校验位、硬件流控制和工作模式。

使能USART1。

3. 获取串口数据函数GetCmd()

定义了一个无符号 8 位整型变量tmp。

检查USART1的接收缓冲区是否非空,如果非空则读取接收到的数据并赋值给tmp。

返回接收到的数据。

uint8_t GetCmd(void)
{
    uint8_t tmp = 0;

    if (USART_GetFlagStatus(USART1, USART_FLAG_RXNE))
    {
        tmp = USART_ReceiveData(USART1);
    }
    return tmp;
}

4. 串口发送字符函数SER_PutChar()

等待USART_TEST的发送完成标志位被置位。

发送一个字符到USART_TEST。

返回发送的字符。

5. 标准输出重定向函数fputc()

若要输出的字符是换行符n,则先发送回车符r。

调用SER_PutChar函数发送字符。

返回发送的字符。

3.2.1 下载验证

1. 正常下载情况

?串口输出信息:程序下载到单片机后,若一切正常,通过串口调试助手可以看到系统时钟信息以及 WWDG Reset Test. 提示信息。

?窗口看门狗复位:由于程序中没有对窗口看门狗进行喂狗操作,窗口看门狗计数器会不断递减。当计数器值减到 0x3F 以下时,单片机就会复位,然后重新开始执行程序,串口会再次输出系统时钟信息和提示信息。

wKgZO2g1ISKAJ35jAAG4Fehnx-U322.png


审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6068

    文章

    45032

    浏览量

    652156
  • 以太网
    +关注

    关注

    41

    文章

    5706

    浏览量

    176471
  • 看门狗
    +关注

    关注

    10

    文章

    584

    浏览量

    71893
  • WWDG
    +关注

    关注

    0

    文章

    21

    浏览量

    5795
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    第二十四章 WWDG——窗口看门狗

    W55MH32窗口看门狗是7位递减计数器,有上下窗口值,时钟来自PCLK1用于监测软件故障,代码演示了其配置、中断测试与复位测试。
    的头像 发表于 06-20 14:00 ?640次阅读
    第二十四章 <b class='flag-5'>WWDG</b>——<b class='flag-5'>窗口</b><b class='flag-5'>看门狗</b>

    STM32的内置看门狗WWDG-窗口看门狗CubeMX操作步骤

    WWDG中断)5) 编写中断服务函数6) 重写窗口看门狗唤醒中断处理回调函数 HAL_WWDG_WakeupCallback结果看门狗在由
    发表于 07-30 07:33

    浅析窗口看门狗WWDG

    1.窗口看门狗WWDG):通常被用来监测由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。2.窗口看门狗
    发表于 08-02 10:41

    低频功率放大电路 第九章

    低频功率放大电路 第九章 本章要点:    功放的特点与分类    OCL电路
    发表于 04-18 14:29 ?0次下载

    STM32看门狗配置(独立看门狗IWDG和窗口看门狗WWDG

    stm32自带两个看门狗模块,独立看门狗IWDG和窗口看门狗WWDG看门狗主要作用是可用来检测
    发表于 11-09 17:17 ?8607次阅读
    STM32<b class='flag-5'>看门狗</b>配置(独立<b class='flag-5'>看门狗</b>IWDG和<b class='flag-5'>窗口</b><b class='flag-5'>看门狗</b><b class='flag-5'>WWDG</b>)

    STM32有两个看门狗,独立看门狗窗口看门狗

    窗口看门狗的上窗口就是配置寄存器WWDG->CFR里设定的W[6:0];下窗口是固定的0x40;
    的头像 发表于 06-15 09:02 ?5133次阅读
    STM32有两个<b class='flag-5'>看门狗</b>,独立<b class='flag-5'>看门狗</b>和<b class='flag-5'>窗口</b><b class='flag-5'>看门狗</b>

    【MCU】基于STM32CubeMX 实现窗口看门狗 WWDG

    基于STM32CubeMX 实现窗口看门狗 WWDG第一部分 基础理论基础理论部分主要参考 STM32F10X 参考手册1. WWDG 简介(1)W
    发表于 11-01 16:24 ?10次下载
    【MCU】基于STM32CubeMX 实现<b class='flag-5'>窗口</b><b class='flag-5'>看门狗</b> <b class='flag-5'>WWDG</b>

    STM32:独立看门狗窗口看门狗的配置

    STM32单片机看门狗有独立看门狗窗口看门狗之分,这两者的工作原理却完全不同。
    发表于 02-08 16:15 ?18次下载
    STM32:独立<b class='flag-5'>看门狗</b>、<b class='flag-5'>窗口</b><b class='flag-5'>看门狗</b>的配置

    STM32窗口看门狗(WWDG)开源

    电子发烧友网站提供《STM32窗口看门狗(WWDG)开源.zip》资料免费下载
    发表于 11-14 09:26 ?29次下载
    STM32<b class='flag-5'>窗口</b><b class='flag-5'>看门狗</b>(<b class='flag-5'>WWDG</b>)开源

    第九章 数模和模数转换

    电子发烧友网站提供《第九章 数模和模数转换.ppt》资料免费下载
    发表于 11-18 09:14 ?0次下载
    <b class='flag-5'>第九章</b> 数模和模数转换

    WIZnet高性能以太网单片机W55MH32重磅发布!

    WIZnet高性能以太网单片机W55MH32重磅发布!本文详细解析了W55MH32芯片的高性能网络处理能力与硬件资源,以及两款开发板(L/Q
    的头像 发表于 05-07 16:17 ?475次阅读
    WIZnet<b class='flag-5'>高性能以太网</b><b class='flag-5'>单片机</b><b class='flag-5'>W55MH32</b>重磅发布!

    即刻启程,踏上W55MH32高性能以太网单片机学习之路!

    即刻启程,踏上W55MH32高性能以太网单片机学习之路!即刻开启W55MH32学习之旅!本教系列程配套官方手册与W55MH32L开发板,从外
    的头像 发表于 05-07 18:51 ?455次阅读
    即刻启程,踏上<b class='flag-5'>W55MH32</b><b class='flag-5'>高性能以太网</b><b class='flag-5'>单片机</b>学习之路!

    第一 W55MH32 高性能以太网单片机的学习方法概述

    本章介绍W55MH32的学习方法,建议先了解硬件资源,按基础篇、入门篇循序渐进学习。参考两份手册,提供例程资料,还给出官、github 等学习资料查找渠道。让我们一起踏上W55MH32高性能
    的头像 发表于 05-26 09:07 ?158次阅读
    第一<b class='flag-5'>章</b> <b class='flag-5'>W55MH32</b> <b class='flag-5'>高性能以太网</b><b class='flag-5'>单片机</b>的学习方法概述

    W55MH32高性能以太网单片机开发课件 第十四章 ADC(上篇)

    本章介绍了W55MH32的12位ADC(上篇),其有18通道,支持单次、连续等转换模式,具有自校准、模拟看门狗等功能。还含ADC_AnalogWatchdog 例程,可监测电压超阈值并触发中断。
    的头像 发表于 05-28 13:52 ?271次阅读
    <b class='flag-5'>W55MH32</b><b class='flag-5'>高性能以太网</b><b class='flag-5'>单片机</b>开发课件 第十四章 ADC(上篇)

    第九章 W55MH32 HTTP Server示例

    本文介绍了在 W55MH32?芯片上实现 HTTP Server?功能,并通过浏览器修改其网络地址信息的方法。阐述了 HTTP?协议的概念、特点、应用场景、工作流程、请求方法、响应内容,以及 Web?页面构成和交互方式。展示了在W55MH32上实现的过程。
    的头像 发表于 07-24 09:35 ?158次阅读
    <b class='flag-5'>第九章</b> <b class='flag-5'>W55MH32</b> HTTP Server示例