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

探讨(HAL库)使用rs485时,开了DMA收发,但是没有开串口的全局中断,导致只发送(接收)了一次数据就不发送了。

造成的原因

  1. 调用HAL_UART_Transmit_DMA(),HAL 库将 USART1 的发送状态 (gState) 标记为HAL_UART_STATE_BUSY_TX

  2. DMA 控制器在后台将数据从内存搬运到 USART 的发送数据寄存器 (TDR)

  3. 当最后一个字节由 DMA 搬运到 USART 的 TDR 后,DMA 的传输工作就完成了 。但是,此时最后一个字节可能还“躺”在 USART 的移位寄存器中,没有真正发送到总线上 。

  4. HAL 库需要等待 USART 硬件报告“发送完成 (TC, Transmission Complete)”标志,才能确认数据已全部发完,并将gState改回HAL_UART_STATE_READY,为下一次发送做准备。

  5. TC 标志的检测和处理,正是通过USART1的全局中断服务函数USART1_IRQHandler来完成的。

  6. 如果没有开启串口全局中断,TC 标志就无法被处理,gState将永远保持在HAL_UART_STATE_BUSY_TX状态。

  7. 当你第二次调用HAL_UART_Transmit_DMA()时,HAL 库检查到gState为忙,就会直接返回HAL_BUSY并退出,导致第二次发送失败。

http://www.jsqmd.com/news/773989/

相关文章:

  • 架构师视角:如何构建支持GB28181/RTSP的异构AI视频平台?从Docker部署到源码交付的深度实践
  • 2026年知名的连续式烘干机/大型烘干机定制加工厂家推荐 - 品牌宣传支持者
  • 别再花冤枉钱买涂色本了!扣子(Coze)+GPT-Image-2一键生成,想要什么画就有什么画
  • 量子深度学习系统架构与优化实践
  • 并发编程之阻塞队列
  • 如何免费获取EB Garamond 12字体:古典优雅的终极开源字体解决方案
  • 基于Next.js 14全栈实战:从零构建现代社交媒体应用Threads
  • 2026年质量好的grc花瓶栏杆厂家精选合集 - 行业平台推荐
  • AI资源聚合库构建指南:从分类体系到自动化维护的工程实践
  • 3D点云无监督学习的环境安装(ubuntu)
  • Fast-Trade:基于YAML的快速量化回测引擎设计与实战
  • 事件驱动AI代理框架:构建生产级智能体的状态管理与工作流编排
  • Davinci Resolve/达芬奇 21安装教程及下载
  • 中小团队如何利用 Taotoken 统一管理多个 AI 模型的 API 成本
  • AISMM模型失效预警:3类隐性假设崩塌场景正在吞噬你的项目预算——现在修复还来得及
  • 如何快速上手RPFM:打造专属《全面战争》模组的终极指南
  • 基于RAG的智能文档助手:从原理到工程实践
  • GPTDiscord:构建Discord AI机器人,集成GPT、代码执行与知识库检索
  • AI任务工作者架构解析:从微服务到高性能推理的工程实践
  • FastAPI 请求头与 Cookie
  • 优化堆排序
  • Win11 环境下,自定义安装目录部署 Claude Code 调用Xiaomi MIMO大模型
  • 终极Windows风扇控制解决方案:Fan Control深度解析与实战应用
  • 抖音批量下载器架构解析:企业级内容获取解决方案
  • OpenClaw监控告警技能:为AI Agent构建轻量级自动化哨兵系统
  • AI开发环境自动化配置:从Conda依赖管理到Docker容器化实践
  • 2026成都GEO全域搜索优化机构TOP5权威榜单,本土技术派强势领跑
  • FastAPI 错误处理
  • AISMM模型不再只是评估工具:SITS2026首次定义“动态治理引擎”架构,3类企业已启动预迁移验证
  • 为AI编程助手制定规则手册:提升代码生成质量与团队协作效率