跳过正文

ch32v00x_iwdg.h

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

描述
#

该文件包含独立看门狗(IWDG)固件库的所有函数原型与常量定义。IWDG 是一个独立于系统时钟的硬件看门狗,用于在主程序跑飞或死循环时自动复位微控制器,提升系统可靠性。其计数器由内部低速 RC 振荡器(LSI)驱动,即使主时钟失效仍可正常工作。所有寄存器写入操作均需先启用写访问权限,且关键操作(如使能)会自动禁用后续写入,以防止误配置。

常量
#

IWDG_WriteAccess
#

控制对 IWDG 预分频器(PSCR)和重载寄存器(RLDR)的写入权限。写入前必须启用写访问,否则写入无效。此机制防止意外修改看门狗配置,增强系统稳定性。

名称 简述
IWDG_WriteAccess_Enable 0x5555 启用对 IWDG_PSCR 和 IWDG_RLDR 的写入权限
IWDG_WriteAccess_Disable 0x0000 禁用对 IWDG_PSCR 和 IWDG_RLDR 的写入权限

以上所有值都强制转换为 uint16_t

IWDG_prescaler
#

设置 IWDG 计数器的预分频系数,决定计数器递减的时钟频率。分频值越大,看门狗超时时间越长。LSI 频率通常为 40kHz,结合分频与重载值可计算出最大超时时间(约 32.7s)。

名称 简述
IWDG_Prescaler_4 0x00 预分频系数为 4
IWDG_Prescaler_8 0x01 预分频系数为 8
IWDG_Prescaler_16 0x02 预分频系数为 16
IWDG_Prescaler_32 0x03 预分频系数为 32
IWDG_Prescaler_64 0x04 预分频系数为 64
IWDG_Prescaler_128 0x05 预分频系数为 128
IWDG_Prescaler_256 0x06 预分频系数为 256

以上所有值都强制转换为 uint8_t

IWDG_Flag
#

指示 IWDG 寄存器更新状态的标志位。用于检测写入操作是否完成,避免在更新过程中读取或修改寄存器。

名称 简述
IWDG_FLAG_PVU 0x0001 预分频器值正在更新中
IWDG_FLAG_RVU 0x0002 重载值正在更新中

以上所有值都强制转换为 uint16_t

函数
#

IWDG_WriteAccessCmd
#

void IWDG_WriteAccessCmd(uint16_t IWDG_WriteAccess)
启用或禁用对 IWDG 预分频器(PSCR)和重载寄存器(RLDR)的写入权限。必须在修改 PSCR 或 RLDR 前调用此函数,否则写入无效。一旦使能 IWDG,写入权限将自动关闭,防止运行时误改配置。

参数:

名称 类型 简述
IWDG_WriteAccess uint16_t 写入权限状态,取值为 IWDG_WriteAccess_EnableIWDG_WriteAccess_Disable

返回值:

IWDG_SetPrescaler
#

void IWDG_SetPrescaler(uint8_t IWDG_Prescaler)
设置 IWDG 计数器的预分频系数,决定计数器递减的时钟频率。分频值越大,看门狗超时时间越长。修改前必须先调用 IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable)

参数:

名称 类型 简述
IWDG_Prescaler uint8_t 预分频系数,取值为 IWDG_Prescaler_4IWDG_Prescaler_256

返回值:

IWDG_SetReload
#

void IWDG_SetReload(uint16_t Reload)
设置 IWDG 重载寄存器的值,决定计数器从多少开始递减。有效范围为 0x000 至 0xFFF(0~4095)。重载值越大,看门狗超时时间越长。修改前必须先启用写访问权限。

参数:

名称 类型 简述
Reload uint16_t 重载值,范围为 0 ~ 0x0FFF

返回值:

IWDG_ReloadCounter
#

void IWDG_ReloadCounter(void)
手动重载 IWDG 计数器,使其重新从 RLDR 寄存器的值开始递减。在正常程序流程中,需定期调用此函数以防止看门狗超时复位。

参数:

返回值:

IWDG_Enable
#

void IWDG_Enable(void)
使能 IWDG 看门狗。一旦使能,IWDG 将开始计数,且自动禁用对 PSCR 和 RLDR 的写入权限,防止运行时被修改。使能后需等待 RCC 的 IWDG 复位标志清除,确保硬件完全启动。

参数:

返回值:

注意:此函数调用后,IWDG 将无法再被禁用,只能通过系统复位(如上电、外部复位)清除。设计时需确保在使能前已正确配置重载值和分频系数。

IWDG_GetFlagStatus
#

FlagStatus IWDG_GetFlagStatus(uint16_t IWDG_FLAG)
查询 IWDG 状态标志位,判断预分频器或重载值是否正在更新中。在写入 PSCR 或 RLDR 后,应轮询对应标志位,直到其清零,表示更新完成,方可进行下一次写入。

参数:

名称 类型 简述
IWDG_FLAG uint16_t 要查询的标志,取值为 IWDG_FLAG_PVUIWDG_FLAG_RVU

返回值:

  • SET:指定标志位被置位(更新正在进行)
  • RESET:指定标志位被清零(更新已完成)

建议:在调用 IWDG_SetPrescalerIWDG_SetReload 后,应等待对应标志位为 RESET,以确保配置生效。

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

相关文章

ch32v00x.h

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

ch32v00x_adc.h

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

ch32v00x_dbgmcu.h

该文件包含 DBGMCU(调试监控单元)固件库的所有函数原型与常量定义,用于在调试模式下控制外设行为,如暂停看门狗、定时器等,以方便开发与调试。DBGMCU 允许在 CPU 停止时保持某些外设的暂停状态,避免调试过程中触发意外复位或计数,是嵌入式调试环境中关键的低层控制接口。所有配置均通过写入调试控制寄存器(DEBUG_CR,地址 0x7C0)实现,该寄存器由 CPU 的 CSR 指令直接访问,具有极低的延迟和硬件级控制能力。