跳过正文

ch32v00x_dbgmcu.h

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

描述
#

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

常量
#

DBGMCU_Periph_Config
#

调试模式下外设行为控制常量,用于配置当 CPU 停止时哪些外设应被暂停。这些常量为位掩码,可组合使用以同时控制多个外设。

名称 简述
DBGMCU_IWDG_STOP 0x00000001 当核心暂停时,独立看门狗(IWDG)停止计数
DBGMCU_WWDG_STOP 0x00000002 当核心暂停时,窗口看门狗(WWDG)停止计数
DBGMCU_TIM1_STOP 0x00000010 当核心暂停时,TIM1 计数器停止
DBGMCU_TIM2_STOP 0x00000020 当核心暂停时,TIM2 计数器停止

以上所有值均为 uint32_t 类型的位掩码,支持按位或(|)组合使用,例如:DBGMCU_IWDG_STOP | DBGMCU_TIM1_STOP 可同时暂停 IWDG 和 TIM1。

函数
#

DBGMCU_GetREVID
#

uint32_t DBGMCU_GetREVID(void)
读取芯片的修订版本号(Revision ID),该值存储在芯片的唯一 ID 寄存器的高 16 位中,可用于区分同一型号芯片的不同工程版本或生产批次。

参数:

返回值:
芯片修订版本号(16 位无符号整数),例如 0x0001 表示修订版 1。

DBGMCU_GetDEVID
#

uint32_t DBGMCU_GetDEVID(void)
读取芯片的设备标识符(Device ID),该值存储在芯片唯一 ID 寄存器的低 16 位中,用于识别芯片型号(如 CH32V003)。

参数:

返回值:
芯片设备标识符(16 位无符号整数),例如 0x05x0 表示 CH32V003 系列。

__get_DEBUG_CR
#

uint32_t __get_DEBUG_CR(void)
通过 RISC-V CSR 指令直接读取调试控制寄存器(DEBUG_CR)的当前值。该寄存器控制调试模式下各外设的行为,是 DBGMCU_Config 函数的底层实现基础。

参数:

返回值:
DEBUG_CR 寄存器的当前 32 位值,每一位对应一个外设的调试暂停使能状态。

__set_DEBUG_CR
#

void __set_DEBUG_CR(uint32_t value)
通过 RISC-V CSR 指令直接写入调试控制寄存器(DEBUG_CR),用于立即更新调试模式下外设的暂停行为。此函数为原子操作,无锁机制,适用于实时调试场景。

参数:

名称 类型 简述
value uint32_t 要写入 DEBUG_CR 的新值,应为 DBGMCU_Periph_Config 常量的组合。

返回值:

DBGMCU_Config
#

void DBGMCU_Config(uint32_t DBGMCU_Periph, FunctionalState NewState)
配置指定外设在调试模式下的行为。通过读取、修改、写回 DEBUG_CR 寄存器实现,支持启用或禁用多个外设的暂停功能。此函数封装了底层 CSR 操作,提供更安全、易用的接口。

参数:

名称 类型 简述
DBGMCU_Periph uint32_t 要配置的外设掩码,取值为 DBGMCU_IWDG_STOPDBGMCU_WWDG_STOPDBGMCU_TIM1_STOPDBGMCU_TIM2_STOP,可组合使用。
NewState FunctionalState 启用(ENABLE)或禁用(DISABLE)该外设的调试暂停功能。

返回值:

注意FunctionalStatech32v00x.h 中定义的枚举类型,通常为 ENABLE(1)和 DISABLE(0)。

DBGMCU_GetCHIPID
#

uint32_t DBGMCU_GetCHIPID(void)
一次性读取芯片的完整唯一标识符(CHIP ID),该值为 32 位,包含设备 ID(低 16 位)与修订 ID(高 16 位),可用于芯片型号识别与固件差异化处理。

参数:

返回值:
芯片完整标识符(32 位),格式为:[高16位: Revision ID] | [低16位: Device ID]
示例:

  • 0x003005x0 → CH32V003F4P6
  • 0x003105x0 → CH32V003F4U6
  • 0x003205x0 → CH32V003A4M6
  • 0x003305x0 → CH32V003J4M6

此函数返回值与 DBGMCU_GetDEVID()DBGMCU_GetREVID() 的组合结果等价,但更高效,适用于需一次性获取完整芯片信息的场景。

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

相关文章

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 通道,每个通道可独立配置传输方向、数据宽度、地址递增模式、优先级和循环模式,极大提升系统并发处理能力。