跳过正文

ch32v00x_usart.h

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

描述
#

该文件包含 CH32V00x 系列微控制器 USART 固件库的所有函数原型、常量定义、枚举类型和结构体定义。USART(通用同步/异步收发器)支持异步 UART 模式和同步 SPI 模式,具备完整的硬件流控、IrDA、SmartCard、LIN 总线、半双工、过采样 8 倍等高级功能,适用于工业通信、传感器网络、智能卡读写等场景。所有配置参数均通过位域组合实现高效寄存器控制,避免了冗余的函数调用,提升了实时性与灵活性。

常量
#

USART_Word_Length
#

串行帧数据位长度配置

名称 简述
USART_WordLength_8b 0x0000 8 位数据长度
USART_WordLength_9b 0x1000 9 位数据长度(支持奇偶校验时,校验位占据第 9 位)

以上所有值都强制转换为 uint16_t。9 位模式常用于多机通信或扩展数据宽度,配合奇偶校验可实现 8 位数据 + 1 位校验的可靠传输。

USART_Stop_Bits
#

停止位数量配置

名称 简述
USART_StopBits_1 0x0000 1 个停止位
USART_StopBits_0_5 0x1000 0.5 个停止位(仅在 9 位数据模式下有效)
USART_StopBits_2 0x2000 2 个停止位
USART_StopBits_1_5 0x3000 1.5 个停止位(仅在 9 位数据模式下有效)

以上所有值都强制转换为 uint16_t。0.5 和 1.5 停止位是为兼容某些旧式串行设备(如 RS-485 多点网络)设计的特殊模式,实际应用中较少使用。

USART_Parity
#

奇偶校验模式配置

名称 简述
USART_Parity_No 0x0000 无校验
USART_Parity_Even 0x0400 偶校验(校验位使数据位中 ‘1’ 的个数为偶数)
USART_Parity_Odd 0x0600 奇校验(校验位使数据位中 ‘1’ 的个数为奇数)

以上所有值都强制转换为 uint16_t。校验位自动插入在数据位的最高位(MSB),当使用 8 位数据时,校验位占据第 8 位;9 位数据时占据第 9 位,适用于噪声环境下的基础错误检测。

USART_Mode
#

收发模式配置

名称 简述
USART_Mode_Rx 0x0004 使能接收功能
USART_Mode_Tx 0x0008 使能发送功能

以上所有值都强制转换为 uint16_t。可组合使用(如 USART_Mode_Rx | USART_Mode_Tx)实现全双工通信,单独使用可实现单工或半双工(配合硬件流控或软件切换)。

USART_Hardware_Flow_Control
#

硬件流控配置

名称 简述
USART_HardwareFlowControl_None 0x0000 无硬件流控
USART_HardwareFlowControl_RTS 0x0100 仅使用 RTS(请求发送)输出流控
USART_HardwareFlowControl_CTS 0x0200 仅使用 CTS(清除发送)输入流控
USART_HardwareFlowControl_RTS_CTS 0x0300 同时使用 RTS 和 CTS 实现双向流控

以上所有值都强制转换为 uint16_t。硬件流控通过 RTS/CTS 引脚自动控制数据流,防止接收缓冲区溢出,适用于高速通信(如 115200bps 以上)或数据突发场景。

USART_Clock
#

同步模式时钟使能

名称 简述
USART_Clock_Disable 0x0000 禁用同步时钟输出(异步模式)
USART_Clock_Enable 0x0800 启用同步时钟输出(SCLK 引脚)

以上所有值都强制转换为 uint16_t。启用后 USART 可作为 SPI 主设备使用,SCLK 由 USART 内部生成,用于同步外部从设备。

USART_Clock_Polarity
#

时钟极性配置(同步模式)

名称 简述
USART_CPOL_Low 0x0000 时钟空闲时为低电平
USART_CPOL_High 0x0400 时钟空闲时为高电平

以上所有值都强制转换为 uint16_t。与 CPHA 配合使用,可配置 SPI 模式 0、1、2、3 中的任意一种,兼容多种外设时序要求。

USART_Clock_Phase
#

时钟相位配置(同步模式)

名称 简述
USART_CPHA_1Edge 0x0000 在时钟第一个边沿采样数据
USART_CPHA_2Edge 0x0200 在时钟第二个边沿采样数据

以上所有值都强制转换为 uint16_t。与 CPOL 组合决定数据采样时机,是 SPI 通信中匹配主从设备的关键参数。

USART_Last_Bit
#

最后一个数据位时钟输出控制

名称 简述
USART_LastBit_Disable 0x0000 不输出最后一个数据位的时钟脉冲
USART_LastBit_Enable 0x0100 在最后一个数据位传输完成后输出一个额外时钟脉冲

以上所有值都强制转换为 uint16_t。用于确保从设备在数据传输结束后有足够时间处理数据,常用于驱动某些对时序敏感的 SPI 存储器或传感器。

USART_Interrupt_definition
#

中断标志定义

名称 简述
USART_IT_PE 0x0028 奇偶校验错误中断
USART_IT_TXE 0x0727 发送数据寄存器空中断
USART_IT_TC 0x0626 传输完成中断(最后一位发送完毕)
USART_IT_RXNE 0x0525 接收数据寄存器非空中断
USART_IT_ORE_RX 0x0325 溢出错误中断(RXNE 使能时)
USART_IT_IDLE 0x0424 空闲线检测中断
USART_IT_LBD 0x0846 LIN 帧中断检测中断
USART_IT_CTS 0x096A CTS 变化中断
USART_IT_ERR 0x0060 错误中断掩码(包含 PE、FE、NE、ORE)
USART_IT_ORE_ER 0x0360 溢出错误中断(EIE 使能时)
USART_IT_NE 0x0260 噪声检测错误中断
USART_IT_FE 0x0160 帧格式错误中断
USART_IT_ORE 0x0360 溢出错误中断(别名,等同于 USART_IT_ORE_ER)

以上所有值都强制转换为 uint16_t。中断掩码设计采用“寄存器地址 + 位偏移”编码方式,便于底层驱动通过位运算快速定位中断源。USART_IT_ERR 是多个错误中断的组合掩码,用于批量处理错误。

USART_DMA_Requests
#

DMA 请求配置

名称 简述
USART_DMAReq_Tx 0x0080 发送 DMA 请求
USART_DMAReq_Rx 0x0040 接收 DMA 请求

以上所有值都强制转换为 uint16_t。启用后,数据传输可由 DMA 控制器自动完成,无需 CPU 干预,极大提升吞吐量并降低中断负载,适用于大数据块传输(如音频、图像)。

USART_WakeUp_methods
#

唤醒方式配置

名称 简述
USART_WakeUp_IdleLine 0x0000 空闲线检测唤醒
USART_WakeUp_AddressMark 0x0800 地址标记唤醒(用于多机通信)

以上所有值都强制转换为 uint16_t。用于低功耗模式下,通过检测特定帧结构(如 11 位空闲或地址帧)唤醒休眠的 USART,适用于电池供电的远程传感器节点。

USART_LIN_Break_Detection_Length
#

LIN 总线帧中断检测长度

名称 简述
USART_LINBreakDetectLength_10b 0x0000 检测 10 位中断帧
USART_LINBreakDetectLength_11b 0x0020 检测 11 位中断帧

以上所有值都强制转换为 uint16_t。LIN(Local Interconnect Network)协议中,主节点发送 13 位低电平作为帧起始,从节点通过检测 10 或 11 位持续低电平识别帧头,此配置匹配不同 LIN 版本规范。

USART_IrDA_Low_Power
#

IrDA 模式配置

名称 简述
USART_IrDAMode_LowPower 0x0004 低功耗 IrDA 模式(接收器灵敏度降低)
USART_IrDAMode_Normal 0x0000 正常 IrDA 模式

以上所有值都强制转换为 uint16_t。IrDA(红外数据协会)模式通过内部滤波器抑制可见光干扰,低功耗模式适用于电池供电的红外遥控或近距离通信,但通信距离和抗干扰能力下降。

USART_Flags
#

状态标志位定义

名称 简述
USART_FLAG_CTS 0x0200 CTS 输入状态标志
USART_FLAG_LBD 0x0100 LIN 帧检测标志
USART_FLAG_TXE 0x0080 发送数据寄存器空
USART_FLAG_TC 0x0040 传输完成(最后一位发送完毕)
USART_FLAG_RXNE 0x0020 接收数据寄存器非空
USART_FLAG_IDLE 0x0010 空闲线检测标志
USART_FLAG_ORE 0x0008 溢出错误标志
USART_FLAG_NE 0x0004 噪声检测标志
USART_FLAG_FE 0x0002 帧格式错误标志
USART_FLAG_PE 0x0001 奇偶校验错误标志

以上所有值都强制转换为 uint16_t。这些标志位映射到 USART 状态寄存器(STATR),用于轮询查询通信状态。注意:部分标志(如 ORE、FE、NE、PE)需通过读 STATR + 读 DATAR 清除,否则会持续置位。

枚举
#

结构体
#

USART_InitTypeDef
#

USART 初始化结构体,用于配置基本通信参数

名称 类型 简述
USART_BaudRate uint32_t 通信波特率,范围通常为 1200~4500000 bps,由 PCLKx 时钟和 BRR 寄存器计算得出,支持非标准波特率(如 57600、115200)
USART_WordLength uint16_t 数据位长度,可选 8 位或 9 位,影响帧结构和校验位位置
USART_StopBits uint16_t 停止位数量,支持 0.5、1、1.5、2 位,用于兼容不同设备时序
USART_Parity uint16_t 奇偶校验模式,可选无、偶、奇校验,提升数据可靠性
USART_Mode uint16_t 收发模式,可组合启用发送、接收或全双工
USART_HardwareFlowControl uint16_t 硬件流控配置,支持 RTS、CTS 或双向流控,防止缓冲区溢出

该结构体是 USART 初始化的核心,所有参数均直接映射到 USART 控制寄存器(CTLR1/2/3),调用 USART_Init() 后会一次性写入硬件,无需逐位配置,极大简化了开发流程。

USART_ClockInitTypeDef
#

USART 同步模式时钟初始化结构体

名称 类型 简述
USART_Clock uint16_t 是否启用同步时钟输出(SCLK)
USART_CPOL uint16_t 时钟极性,决定空闲电平
USART_CPHA uint16_t 时钟相位,决定采样边沿
USART_LastBit uint16_t 是否在最后一个数据位后输出额外时钟脉冲

该结构体专用于同步模式(SPI 模式),与 USART_InitTypeDef 配合使用。当 USART_Clock_Enable 启用时,USART 可作为 SPI 主设备,此时 USART_Mode 应设为 USART_Mode_TxUSART_Mode_Rx,不能同时启用双工,因为同步模式下收发共用同一时钟。

函数
#

USART_DeInit
#

void USART_DeInit(USART_TypeDef *USARTx)
将 USARTx 外设寄存器恢复为复位默认值,通过复位 APB 总线时钟实现,而非直接写寄存器。

参数:

名称 类型 简述
USARTx USART_TypeDef * 选择 USART 外设,仅支持 USART1(CH32V00x 仅有一个 USART 模块)

返回值:

该函数通过调用 RCC_APB2PeriphResetCmd 对 USART1 进行硬件复位,确保所有寄存器恢复初始状态,适用于系统初始化或异常恢复场景,比手动清零寄存器更可靠。

USART_Init
#

void USART_Init(USART_TypeDef *USARTx, USART_InitTypeDef *USART_InitStruct)
根据指定参数初始化 USART 外设,包括波特率、数据位、停止位、校验、模式和流控。

参数:

名称 类型 简述
USARTx USART_TypeDef * 选择 USART 外设(仅 USART1)
USART_InitStruct USART_InitTypeDef * 指向包含配置参数的结构体指针

返回值:

该函数是 USART 配置的核心,内部自动计算 BRR(波特率寄存器)值,支持 8 倍过采样模式(需提前调用 USART_OverSampling8Cmd),计算公式基于 PCLK1/PCLK2 时钟频率,确保在不同系统时钟下仍能精确配置波特率。

USART_StructInit
#

void USART_StructInit(USART_InitTypeDef *USART_InitStruct)
USART_InitTypeDef 结构体所有成员初始化为默认值。

参数:

名称 类型 简述
USART_InitStruct USART_InitTypeDef * 待初始化的结构体指针

返回值:

默认配置为:9600bps、8 位数据、1 停止位、无校验、全双工、无流控。建议在调用 USART_Init() 前先调用此函数,避免结构体中包含未初始化的随机值导致通信异常。

USART_ClockInit
#

void USART_ClockInit(USART_TypeDef *USARTx, USART_ClockInitTypeDef *USART_ClockInitStruct)
配置 USART 同步模式下的时钟参数(CPOL、CPHA、LastBit)。

参数:

名称 类型 简述
USARTx USART_TypeDef * 选择 USART 外设(仅 USART1)
USART_ClockInitStruct USART_ClockInitTypeDef * 包含时钟配置的结构体指针

返回值:

仅在 USART_Clock_Enable 为真时生效,用于将 USART 转换为 SPI 主设备。配置后,SCLK 引脚将输出同步时钟,数据通过 TX/RX 引脚收发,实现与 SPI 传感器、存储器的通信。

USART_ClockStructInit
#

void USART_ClockStructInit(USART_ClockInitTypeDef *USART_ClockInitStruct)
USART_ClockInitTypeDef 结构体初始化为默认值。

参数:

名称 类型 简述
USART_ClockInitStruct USART_ClockInitTypeDef * 待初始化的结构体指针

返回值:

默认配置为:时钟禁用、CPOL=低、CPHA=第一边沿、最后一个时钟脉冲禁用。适用于大多数 SPI 从设备(模式 0)。

USART_Cmd
#

void USART_Cmd(USART_TypeDef *USARTx, FunctionalState NewState)
使能或禁用 USART 外设。

参数:

名称 类型 简述
USARTx USART_TypeDef * 选择 USART 外设(仅 USART1)
NewState FunctionalState ENABLEDISABLE

返回值:

通过设置 CTLR1 的 UE 位控制 USART 使能状态。在初始化后必须调用此函数才能开始通信,关闭后可节省功耗。

USART_ITConfig
#

void USART_ITConfig(USART_TypeDef *USARTx, uint16_t USART_IT, FunctionalState NewState)
使能或禁用指定的 USART 中断源。

参数:

名称 类型 简述
USARTx USART_TypeDef * 选择 USART 外设(仅 USART1)
USART_IT uint16_t 中断源,如 USART_IT_RXNEUSART_IT_TXE
NewState FunctionalState ENABLEDISABLE

返回值:

该函数通过操作 USART 的中断使能寄存器(IER)实现中断控制,支持所有标准中断。中断服务函数需在 NVIC 中配置优先级并编写对应中断处理程序。

USART_DMACmd
#

void USART_DMACmd(USART_TypeDef *USARTx, uint16_t USART_DMAReq, FunctionalState NewState)
使能或禁用 USART 的 DMA 请求。

参数:

名称 类型 简述
USARTx USART_TypeDef * 选择 USART 外设(仅 USART1)
USART_DMAReq uint16_t DMA 请求类型:USART_DMAReq_TxUSART_DMAReq_Rx
NewState FunctionalState ENABLEDISABLE

返回值:

启用后,数据传输由 DMA 控制器自动完成,无需 CPU 参与。需提前配置 DMA 通道与 USART 的映射关系(参考 DMA 驱动文档),适用于大数据量传输,如文件下载、音频流等。

USART_SetAddress
#

void USART_SetAddress(USART_TypeDef *USARTx, uint8_t USART_Address)
设置 USART 的节点地址,用于多机通信(地址标记唤醒模式)。

参数:

名称 类型 简述
USARTx USART_TypeDef * 选择 USART 外设(仅 USART1)
USART_Address uint8_t 节点地址,范围 0~255

返回值:

仅在 USART_WakeUpConfig(USART_WakeUp_AddressMark) 模式下有效。当接收到地址帧时,若地址匹配则唤醒并接收后续数据,适用于 RS-485 多点网络。

USART_WakeUpConfig
#

void USART_WakeUpConfig(USART_TypeDef *USARTx, uint16_t USART_WakeUp)
配置 USART 的唤醒方式。

参数:

名称 类型 简述
USARTx USART_TypeDef * 选择 USART 外设(仅 USART1)
USART_WakeUp uint16_t 唤醒方式:USART_WakeUp_IdleLineUSART_WakeUp_AddressMark

返回值:

用于低功耗模式(如 Stop 模式)下,通过检测空闲线或地址帧唤醒 MCU,显著降低待机功耗,适用于电池供电的远程终端。

USART_ReceiverWakeUpCmd
#

void USART_ReceiverWakeUpCmd(USART_TypeDef *USARTx, FunctionalState NewState)
使能或禁用接收器静音模式(Mute Mode)。

参数:

名称 类型 简述
USARTx USART_TypeDef * 选择 USART 外设(仅 USART1)
NewState FunctionalState ENABLEDISABLE

返回值:

启用后,接收器忽略所有数据,仅监听唤醒帧(空闲线或地址标记),用于节能场景。与 USART_WakeUpConfig 配合使用,实现智能唤醒。

USART_LINBreakDetectLengthConfig
#

void USART_LINBreakDetectLengthConfig(USART_TypeDef *USARTx, uint16_t USART_LINBreakDetectLength)
配置 LIN 总线中断帧检测长度。

参数:

名称 类型 简述
USARTx USART_TypeDef * 选择 USART 外设(仅 USART1)
USART_LINBreakDetectLength uint16_t 检测长度:10b11b

返回值:

LIN 协议中,主节点发送 13 位低电平作为帧起始,从节点通过检测 10 或 11 位低电平识别帧头,此配置确保与不同 LIN 版本兼容。

USART_LINCmd
#

void USART_LINCmd(USART_TypeDef *USARTx, FunctionalState NewState)
使能或禁用 LIN 总线模式。

参数:

名称 类型 简述
USARTx USART_TypeDef * 选择 USART 外设(仅 USART1)
NewState FunctionalState ENABLEDISABLE

返回值:

启用后,USART 自动识别 LIN 帧结构(包括同步场、标识符、数据、校验),适用于汽车电子中的低成本传感器网络。

USART_SendData
#

void USART_SendData(USART_TypeDef *USARTx, uint16_t Data)
向 USART 发送单个数据字节或字(根据数据位长度)。

参数:

名称 类型 简述
USARTx USART_TypeDef * 选择 USART 外设(仅 USART1)
Data uint16_t 待发送数据,仅低 9 位有效(0x01FF)

返回值:

数据写入发送数据寄存器(DATAR),硬件自动处理移位与校验。若发送缓冲区满(TXE 未置位),需等待或使用中断/DMA。

USART_ReceiveData
#

uint16_t USART_ReceiveData(USART_TypeDef *USARTx)
从 USART 接收一个数据字节或字。

参数:

名称 类型 简述
USARTx USART_TypeDef * 选择 USART 外设(仅 USART1)

返回值:
接收到的数据(低 9 位有效)

读取接收数据寄存器(DATAR),自动清除 RXNE 标志。若无数据,返回值可能为无效数据,建议先检查 USART_GetFlagStatus(USART_FLAG_RXNE)

USART_SendBreak
#

void USART_SendBreak(USART_TypeDef *USARTx)
发送一个持续 10~11 位的低电平中断帧(Break)。

参数:

名称 类型 简述
USARTx USART_TypeDef * 选择 USART 外设(仅 USART1)

返回值:

用于 LIN、Modbus 等协议中作为帧起始或复位信号,通过置位 CTLR1 的 SBK 位实现,发送后自动恢复。

USART_SetGuardTime
#

void USART_SetGuardTime(USART_TypeDef *USARTx, uint8_t USART_GuardTime)
设置 SmartCard 模式下的保护时间(Guard Time)。

参数:

名称 类型 简述
USARTx USART_TypeDef * 选择 USART 外设(仅 USART1)
USART_GuardTime uint8_t 保护时间,单位为 T(1 个字符传输时间),范围 0~255

返回值:

SmartCard 通信中,主机发送后需等待至少 GT 时间再接收响应,避免总线冲突。GT = 0 表示无等待。

USART_SetPrescaler
#

void USART_SetPrescaler(USART_TypeDef *USARTx, uint8_t USART_Prescaler)
设置 SmartCard 模式下的系统时钟预分频器。

参数:

名称 类型 简述
USARTx USART_TypeDef * 选择 USART 外设(仅 USART1)
USART_Prescaler uint8_t 预分频值,范围 0~255

返回值:

用于调整 SmartCard 通信的时钟频率,使波特率与卡片要求匹配(如 3.57MHz 或 4.91MHz)。

USART_SmartCardCmd
#

void USART_SmartCardCmd(USART_TypeDef *USARTx, FunctionalState NewState)
使能或禁用 SmartCard 模式。

参数:

名称 类型 简述
USARTx USART_TypeDef * 选择 USART 外设(仅 USART1)
NewState FunctionalState ENABLEDISABLE

返回值:

启用后,USART 自动启用单线半双工模式,仅使用 TX 引脚进行双向通信,适用于读写 IC 卡、SIM 卡等。

USART_SmartCardNACKCmd
#

void USART_SmartCardNACKCmd(USART_TypeDef *USARTx, FunctionalState NewState)
使能或禁用 SmartCard 模式下的 NACK(否定应答)发送。

参数:

名称 类型 简述
USARTx USART_TypeDef * 选择 USART 外设(仅 USART1)
NewState FunctionalState ENABLEDISABLE

返回值:

当接收错误时,主机可发送 NACK 通知卡片重传,提高通信可靠性。

USART_HalfDuplexCmd
#

void USART_HalfDuplexCmd(USART_TypeDef *USARTx, FunctionalState NewState)
使能或禁用半双工模式。

参数:

名称 类型 简述
USARTx USART_TypeDef * 选择 USART 外设(仅 USART1)
NewState FunctionalState ENABLEDISABLE

返回值:

启用后,TX 和 RX 引脚复用为单线,仅允许一方发送,适用于 RS-485 总线等半双工通信场景,需外部收发控制电路。

USART_OverSampling8Cmd
#

void USART_OverSampling8Cmd(USART_TypeDef *USARTx, FunctionalState NewState)
使能或禁用 8 倍过采样模式。

参数:

名称 类型 简述
USARTx USART_TypeDef * 选择 USART 外设(仅 USART1)
NewState FunctionalState ENABLEDISABLE

返回值:

注意:必须在 USART_Init() 之前调用! 8 倍过采样可提升波特率精度,尤其在低频系统时钟下(如 8MHz),能更精确生成 115200bps 等非整数倍波特率。

USART_OneBitMethodCmd
#

void USART_OneBitMethodCmd(USART_TypeDef *USARTx, FunctionalState NewState)
使能或禁用单边沿采样方法。

参数:

名称 类型 简述
USARTx USART_TypeDef * 选择 USART 外设(仅 USART1)
NewState FunctionalState ENABLEDISABLE

返回值:

启用后,接收器仅在每个数据位的中间采样一次,降低功耗并提升抗噪声能力,适用于长距离、低速通信。

USART_IrDAConfig
#

void USART_IrDAConfig(USART_TypeDef *USARTx, uint16_t USART_IrDAMode)
配置 IrDA 模式下的接收器灵敏度。

参数:

名称 类型 简述
USARTx USART_TypeDef * 选择 USART 外设(仅 USART1)
USART_IrDAMode uint16_t USART_IrDAMode_LowPowerUSART_IrDAMode_Normal

返回值:

通过设置 CTLR3 的 IRLP 位,控制接收器滤波器带宽,低功耗模式牺牲灵敏度换取更低电流消耗。

USART_IrDACmd
#

void USART_IrDACmd(USART_TypeDef *USARTx, FunctionalState NewState)
使能或禁用 IrDA 红外通信模式。

参数:

名称 类型 简述
USARTx USART_TypeDef * 选择 USART 外设(仅 USART1)
NewState FunctionalState ENABLEDISABLE

返回值:

启用后,TX 引脚输出红外调制信号,RX 引脚接收红外脉冲,适用于遥控器、红外数据传输等场景,需外接红外收发模块。

USART_GetFlagStatus
#

FlagStatus USART_GetFlagStatus(USART_TypeDef *USARTx, uint16_t USART_FLAG)
查询指定标志位状态(SET 或 RESET)。

参数:

名称 类型 简述
USARTx USART_TypeDef * 选择 USART 外设(仅 USART1)
USART_FLAG uint16_t 标志位,如 USART_FLAG_RXNEUSART_FLAG_TXE

返回值:
SETRESET

用于轮询方式判断通信状态,如等待发送完成或接收数据。注意:部分标志(如 ORE、FE、NE、PE)需配合读 DATAR 清除。

USART_ClearFlag
#

void USART_ClearFlag(USART_TypeDef *USARTx, uint16_t USART_FLAG)
清除指定的 USART 状态标志。

参数:

名称 类型 简述
USARTx USART_TypeDef * 选择 USART 外设(仅 USART1)
USART_FLAG uint16_t 要清除的标志位

返回值:

通过向 STATR 写入 1 清除对应位(写 1 清零)。注意:TXERXNETC 等标志有特殊清除方式,详见注释。

USART_GetITStatus
#

ITStatus USART_GetITStatus(USART_TypeDef *USARTx, uint16_t USART_IT)
检查指定中断是否发生(SET 或 RESET)。

参数:

名称 类型 简述
USARTx USART_TypeDef * 选择 USART 外设(仅 USART1)
USART_IT uint16_t 中断源,如 USART_IT_RXNEUSART_IT_ERR

返回值:
SETRESET

用于中断服务函数中判断具体中断源,需结合 USART_GetITStatus()USART_ClearITPendingBit() 使用。

USART_ClearITPendingBit
#

void USART_ClearITPendingBit(USART_TypeDef *USARTx, uint16_t USART_IT)
清除指定中断的挂起标志。

参数:

名称 类型 简述
USARTx USART_TypeDef * 选择 USART 外设(仅 USART1)
USART_IT uint16_t 要清除的中断源

返回值:

通过向 STATR 写入 1 清除中断标志。必须在中断服务函数末尾调用,否则中断会持续触发。部分错误中断需配合读 DATAR 清除。

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

相关文章

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