跳过正文

ch32v00x_wwdg.h

Ch32v00x软件文档 - 这篇文章属于一个选集。
§ 19: 本文

描述
#

该文件包含窗口看门狗(WWDG)固件库的所有函数原型和常量定义。WWDG 是一种独立于主时钟的看门狗定时器,用于在系统因异常导致程序跑飞时强制复位,保障系统可靠性。其核心特性是“窗口”机制:计数器必须在特定窗口范围内被刷新,否则将触发复位,从而防止软件在错误状态下“侥幸”喂狗。本库提供初始化、配置、使能和状态查询等完整功能接口,适用于对系统稳定性要求严苛的嵌入式应用。

常量
#

WWDG_Prescaler
#

看门狗预分频器设置,决定计数器时钟源的分频系数。
预分频器将 PCLK1 时钟(通常为 36MHz)先除以 4096,再根据此值进一步分频,从而控制看门狗计数速率。分频值越大,计数越慢,允许的喂狗时间窗口越宽。
以上所有值都强制转换为 uint32_t

名称 简述
WWDG_Prescaler_1 0x00000000 计数器时钟 = (PCLK1/4096)/1
WWDG_Prescaler_2 0x00000080 计数器时钟 = (PCLK1/4096)/2
WWDG_Prescaler_4 0x00000100 计数器时钟 = (PCLK1/4096)/4
WWDG_Prescaler_8 0x00000180 计数器时钟 = (PCLK1/4096)/8

枚举
#

结构体
#

函数
#

WWDG_DeInit
#

void WWDG_DeInit(void)
将 WWDG 外设的所有寄存器恢复为复位默认值。通过复位 APB1 总线上的 WWDG 模块实现,而非逐位写入,确保彻底清除所有配置状态,适用于系统初始化或异常恢复后重置看门狗。

参数:

返回值:

WWDG_SetPrescaler
#

void WWDG_SetPrescaler(uint32_t WWDG_Prescaler)
设置看门狗计数器的时钟预分频系数。该配置决定了计数器递减的速率,直接影响看门狗的超时时间。必须在使能 WWDG 前设置,否则配置无效。建议根据系统主频和所需最小喂狗周期选择合适的分频值,避免因分频过小导致喂狗过于频繁,或分频过大导致响应延迟过长。

参数:

名称 类型 简述
WWDG_Prescaler uint32_t 预分频器值,取值范围为 WWDG_Prescaler_1WWDG_Prescaler_8

返回值:

WWDG_SetWindowValue
#

void WWDG_SetWindowValue(uint8_t WindowValue)
设置看门狗的窗口值,用于定义允许刷新计数器的合法范围。计数器值必须在 0x40WindowValue 之间被重载,否则将触发复位。窗口机制防止了软件在程序异常但尚未崩溃时“提前喂狗”(如在循环开头就喂狗),从而真正检测程序是否在预期路径上运行。窗口值必须小于 0x80,且通常建议设置为略小于初始计数值(如 0x7F),以提供合理安全裕度。

参数:

名称 类型 简述
WindowValue uint8_t 窗口上限值,必须小于 0x80,推荐范围 0x40 ~ 0x7F

返回值:

WWDG_EnableIT
#

void WWDG_EnableIT(void)
使能 WWDG 的早期唤醒中断(EWI)。当计数器值下降至 0x40 时,将触发 EWI 中断,允许用户在复位前执行紧急处理(如保存关键数据、进入低功耗模式等)。该中断是 WWDG 的核心安全特性之一,可实现“软复位前的最后抢救”。注意:使能中断后仍需在中断服务程序中及时喂狗,否则仍会触发硬件复位。

参数:

返回值:

WWDG_SetCounter
#

void WWDG_SetCounter(uint8_t Counter)
设置看门狗计数器的初始值,但不启动看门狗。此函数仅写入计数器寄存器,不激活看门狗功能。计数器值必须在 0x400x7F 之间,超出范围将被截断。该函数通常用于在调用 WWDG_Enable() 前预设计数值,或在 EWI 中断中重新加载计数器以延长运行时间。

参数:

名称 类型 简述
Counter uint8_t 计数器初始值,范围必须为 0x40 ~ 0x7F

返回值:

WWDG_Enable
#

void WWDG_Enable(uint8_t Counter)
启动 WWDG 并立即加载计数器值。此函数是使能看门狗的唯一方式,一旦调用,计数器将开始递减,必须在超时前通过 WWDG_SetCounter()WWDG_Enable() 重新加载,否则将触发系统复位。计数器值必须在 0x400x7F 之间,且加载后立即开始计时。注意:此函数会自动设置 WDGA 位,无需手动操作。

参数:

名称 类型 简述
Counter uint8_t 计数器初始值,范围必须为 0x40 ~ 0x7F

返回值:

WWDG_GetFlagStatus
#

FlagStatus WWDG_GetFlagStatus(void)
读取 WWDG 的早期唤醒中断标志(EWI)状态。当计数器值下降至 0x40 时,该标志被硬件置位,表示即将触发复位。用户应在中断服务程序或主循环中定期检查此标志,以决定是否执行紧急操作。该函数返回 SETRESET,需配合 WWDG_EnableIT() 使用。

参数:

返回值:
SET:早期唤醒中断标志已置位(计数器已进入窗口临界区)
RESET:标志未置位(计数器仍在安全范围内)

WWDG_ClearFlag
#

void WWDG_ClearFlag(void)
清除 WWDG 的早期唤醒中断标志(EWI)。在中断服务程序中处理完 EWI 事件后,必须调用此函数清除标志,否则中断会持续触发。注意:此操作仅清除标志位,不影响计数器运行或看门狗状态。

参数:

返回值:

Ch32v00x软件文档 - 这篇文章属于一个选集。
§ 19: 本文

相关文章

ch32v00x.h

该文件是 CH32V003 微控制器的外设访问层头文件,定义了所有外设寄存器的内存映射、位域常量、中断向量、时钟配置、GPIO 控制结构及系统级常量。它为标准外设库提供底层硬件抽象,使开发者可通过结构体指针直接访问寄存器,或通过位掩码配置外设功能。本文件不包含函数原型,仅提供寄存器定义与常量,是所有外设驱动开发的基础。

ch32v00x_adc.h

该文件定义了 CH32V00x 系列微控制器 ADC 外设的固件库所有函数原型、常量、枚举和结构体。ADC(模数转换器)支持单通道与多通道扫描转换、注入通道、模拟看门狗、DMA 请求、软件与外部触发等多种模式,适用于高精度模拟信号采集场景。本库通过寄存器掩码操作实现灵活配置,所有常量均以 uint32_t 或 uint8_t 类型定义,确保与硬件寄存器位域精确匹配。函数设计遵循标准外设库风格,支持初始化、启动、中断、校准、偏移设置等完整功能链,适用于工业控制、传感器接口、电源管理等嵌入式应用。

ch32v00x_dma.h

该文件定义了 CH32V00x 系列微控制器 DMA(直接存储器访问)外设的固件库函数原型、数据结构及常量宏。DMA 用于在不占用 CPU 资源的情况下实现外设与内存、内存与内存之间的高效数据传输,适用于高速数据采集、串口/ADC 缓冲、图像处理等场景。本库支持 7 个 DMA 通道,每个通道可独立配置传输方向、数据宽度、地址递增模式、优先级和循环模式,极大提升系统并发处理能力。