当前位置: 首页 > news >正文

STM32G DMA串口发送接收

  • 串口通信:通过 UART3 接收外部设备发送的 RGB 颜色命令,解析后通过 DMA 方式返回处理结果。
  • 命令格式:接收形如 R:255,G:128,B:64 的字符串,分别对应红、绿、蓝三个通道的亮度值(0~255)。
  • 错误处理:若命令格式错误或数值超出范围(非 0~255),返回 "ERROR";成功则返回 "OK"
  • 状态更新:解析成功后,将颜色值存储到 rgb_color 数组,供后续 LED 控制使用。

  1. 中断触发:当串口接收数据后进入空闲状态(IDLE),触发中断回调函数 UsarReceive_IDLE
  2. 数据捕获
    • 清除 IDLE 中断标志,停止当前 DMA 接收。
    • 计算已接收数据长度 serialRxN(通过 DMA 剩余计数推导)。
    • 在接收缓冲区末尾添加字符串结束符 '\0'
  3. 命令解析
    • 使用 sscanf 解析字符串格式,提取 RGB 值。
    • 校验格式有效性(返回值是否为 3)和数值范围(0~255)。
  4. 响应处理
    • 成功:将解析的 RGB 值存入 rgb_color 数组,填充 "OK" 到发送缓冲区。
    • 失败:填充 "ERROR" 到发送缓冲区。
  5. 结果返回:通过 DMA 方式将响应发送回请求方。
  6. 循环接收:重新启动 DMA 接收,等待下一条命令。

  • IDLE 中断:利用串口空闲中断(IDLE)高效捕获不定长数据,避免超时判断。
  • DMA 传输
    • 接收:通过 DMA 自动将串口数据存入 uartRxBuf,降低 CPU 负担。
    • 发送:通过 DMA 异步发送响应数据,无需阻塞等待。
  • 字符串解析:使用 sscanf 格式化提取数值,简化命令解析逻辑。
http://www.xdnf.cn/news/978589.html

相关文章:

  • Linux开发工具之VsCode(Filezila、MobaXterm、Vim三合一)
  • 【笔记】NVIDIA AI Workbench 中安装 cuDNN 9.10.2
  • 每日Prompt:人像写真
  • 内存泄漏系列专题分析之二十:camx swap内存泄漏实例分析
  • Babylon.js引擎(二)
  • 【Chipyard】 conda 环境安装与使用
  • k8s在节点上加污点
  • k8s 部署服务常见错误原因
  • Windows 安装 Maven
  • 1Panel 部署 OpenResty + Redis 实现 IP 动态封禁教程
  • 软考 系统架构设计师系列知识点之杂项集萃(87)
  • Visual Studio 2022 运行提示:未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。
  • jsoncpp ubuntu编译问题
  • Proof of Talk专访CertiK联创顾荣辉:全周期安全方案护航Web3生态
  • Cilium动手实验室: 精通之旅---22.Cilium Traffic Optimization
  • OA协同平台有哪些功能?OA协同办公软件平台如何选择?
  • 腾讯开源 ovCompose 跨平台框架:实现一次跨三端(Android/iOS/鸿蒙)
  • 网络请求与本地存储:Axios 与 AsyncStorage 在 React Native 中的应用
  • 升级 Ubuntu Linux 内核的几种不同方法
  • 同步与异步:软件工程中的时空艺术与实践智慧-以蜻蜓hr人才系统举例-优雅草卓伊凡
  • 二刷苍穹外卖 day02
  • 2023蓝桥杯C/C++ B组国赛
  • PyTorch:让深度学习飞入寻常百姓家(从零开始玩转张量与神经网络!)
  • 开疆智能ModbusTCP转Canopen网关连接汇川PLC配置案例
  • 【android bluetooth 框架分析 04】【bt-framework 层详解 4】【AdapterState介绍】
  • 25-Oracle 23ai DBMS_SEARCH — Ubiquitous Search(无处不在的搜索)
  • Qt Connections详解:信号与槽的核心机制
  • spring boot2 +java-jwt轻量实现jwt
  • AI中间件,构建大模型应用的标准化接入枢纽
  • 文献管理软件EndNote下载与安装教程(详细教程)2025最新版详细图文安装教程