请帮助我完成当前 STM32 工程的 USART 串口通信开发,并验证中断/DMA 收发与应用协议帧在持续数据流下稳定工作。请以项目真实芯片、引脚和时钟树为准;构建烧录后使用串口助手、对端设备或真实日志验证,不要伪造收发结果。
通信参数:默认 115200、8N1;实际波特率、数据位、校验、停止位和流控以工程协议为准。协议采用帧头、长度、命令、数据、校验的二进制帧;接收端需要容忍半包、粘包、错误字节和帧间噪声。
- 找到 USART 时钟、GPIO 复用、NVIC、发送/接收、DMA/IDLE 中断、环形缓冲区和协议解析代码;
- 核对外设时钟与 BRR 波特率误差、TX/RX 引脚、电平标准、DMA 通道/请求、接收缓冲生命周期和错误中断;
- 使用 DMA 环形接收或中断接收实现非阻塞数据入口,应用层从已完成的数据区解析帧;不要在 ISR 内执行完整协议解析或阻塞发送;
- 记录发送/接收字节数、帧序号、CRC/校验失败、ORE/FE/NE/PE、DMA 错误、缓冲高水位和丢帧计数;
- 用正常帧、半包、粘包、错误校验和持续高频数据进行压力测试至少 10 分钟;
- 输出最小修改、接口/帧格式、错误恢复策略、构建烧录结果和收发统计。验收为有效帧顺序正确、错误帧可丢弃并重新同步、无未记录的缓冲溢出。