RS485 双串口通信 + LCD 实时显示(DMA版)

目录

  • 一、前言
  • 二、DMA 通信核心原理简述
  • 三、CubeMX 的 DMA 串口配置
  • 四、FreeRTOS DMA 收发任务代码开发
  • 五、总结
  • 六、结尾

一、前言

前文我们已经完成了串口 RS485 通信的查询方式中断方式开发,两种方式各有适配场景。本次笔记将在此基础上,讲解串口通信的第三种实现方案 ——DMA 方式。串口的收发数据始终依靠 TDR 发送寄存器、RDR 接收寄存器完成数据中转,无论数据量多少都需经这两个寄存器经手;而 DMA 相当于独立的「硬件搬运工」,可自主完成寄存器与内存之间的数据搬运,全程无需 CPU 参与,能最大化解放 CPU 资源,是串口大数量、高频次数据传输的最优方案,本次依旧基于 FreeRTOS 多任务完成功能开发,保持功能逻辑不变。

二、DMA 通信核心原理简述

DMA(直接存储器访问)的核心作用,是在外设寄存器内存地址之间建立独立的数据传输通道,无需 CPU 的指令干预,自主完成数据的读写搬运。

对于串口通信而言:发送时,DMA 将内存中的数据搬运至串口 TDR 发送寄存器;接收时,DMA 将串口 RDR 接收寄存器的数据搬运至内存,整个传输过程 CPU 可完全脱离,仅在传输完成 / 异常时触发少量响应逻辑,大幅降低 CPU 的资源占用率。

三、CubeMX 的 DMA 串口配置

CubeMX 中有 DMA 功能的专属配置页面,本次开发沿用之前的串口 2 作为发送端、串口 4 作为接收端,为两路串口分别配置独立的 DMA 通道,其余串口、中断、FreeRTOS 相关配置均与上一篇中断版保持一致,具体 DMA 配置如下:

  1. 配置Channel0作为串口 2 的 DMA 通道,触发方式选择UART2_TX,数据传输方向为内存到外设,源地址设置为每次递增 1 字节。

  1. 配置Channel1作为串口 4 的 DMA 通道,触发方式选择UART4_RX,数据传输方向为外设到内存,目的地址设置为每次递增 1 字节。

四、FreeRTOS DMA 收发任务代码开发

DMA 方式的串口开发,在代码层面的逻辑与中断方式几乎完全一致,核心改动仅为将中断收发启动函数替换为 DMA 收发启动函数,依旧沿用此前编写的完成等待函数做传输状态判断与超时控制;当接收出现超时异常时,调用专用函数停止对应串口的 DMA 传输,规避异常占用,完整的任务代码如下:

// 串口2 DMA发送任务:周期发送自增字节数据staticvoidCH1_UART2_TxTaskFunction(void*pvParameters){uint8_tc=0;while(1){HAL_UART_Transmit_DMA(&huart2,&c,1);// 启动串口2 DMA发送1字节wait_uart2_tx_cplt(100);// 等待DMA发送完成,超时100msvTaskDelay(1000);// 延时1秒,固定周期发送c++;// 发送数据自增}};// 串口4 DMA接收任务:接收数据并实时显示至LCDstaticvoidCH2_UART4_RxTaskFunction(void*pvParameters){uint8_tc=0;intcnt=0;charbuf[100];HAL_StatusTypeDef err;while(1){err=HAL_UART_Receive_DMA(&huart4,&c,1);// 启动串口4 DMA接收1字节if(wait_uart4_rx_cplt(1000)==0)// 等待DMA接收完成,超时1000ms{// 接收成功,格式化数据并LCD显示sprintf(buf,"Recv Data : 0x%02x, Cnt : %d",c,cnt++);Draw_String(0,0,buf,0x0000ff00,0);}else{HAL_UART_DMAStop(&huart4);// 接收超时,停止串口4的DMA传输}}};

由此能清晰看出,串口的 DMA 传输与中断传输,在业务代码的实现逻辑上本质一致,只是底层的硬件数据传输方式不同。

五、总结

  1. 串口通信有查询、中断、DMA 三种实现方式,核心数据中转均依赖 TDR/RDR 寄存器;
  2. DMA 为硬件独立搬运数据,无需 CPU 参与,相比中断更能解放 CPU 资源,传输效率更高;
  3. DMA 版代码逻辑与中断版高度复用,仅替换收发启动函数,开发适配成本低;
  4. DMA 传输需做好超时异常处理,通过停止 DMA 规避硬件资源异常占用;
  5. 三种方式各有优势:查询简单、中断省资源、DMA 效率最优,按需选型即可。

六、结尾

本次完成了串口 RS485 通信三种实现方式的闭环学习,从查询到中断再到 DMA,是逐步优化 CPU 资源利用、提升传输效率的过程,也是嵌入式开发的核心优化思路。三种串口通信方式的开发逻辑可通用至各类外设,是嵌入式必备的基础能力。感谢各位的阅读,持续关注本系列,后续将带来更多项目实战的干货复盘与技术优化!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1160306.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

板凳----------(枯藤 )vs2026+win10(第六章-6)

《伤寒论》OCR 读书笔记项目的清晰小结,涵盖 安装步骤 代码调试关键点,方便复盘、备份或分享: 🧩 一、整体目标 将扫描版 PDF《伤寒论》通过 OCR 自动识别 → 提取方剂组成 → 生成结构化 Markdown 笔记(含口诀、比例…

“AI 电影,你敢买票吗?”——《团圆令》与《红孩儿》开启国产动画新赛道

随着人工智能(AIGC)技术的迅猛发展,国产动画电影正经历着一次颠覆性的变革。2025年12月20日,中国首部院线AIGC动画电影《团圆令》在北京举行点映礼,随后《红孩儿:赤焰之心》在上海松江举行开机仪式&#xf…

2026年计算机领域重点支持方向(参考)

截至2026年初,计算机及相关技术领域在中国正处于“十四五”收官、“十五五”开启的关键节点。一、2026年国家政策重点支持方向 ✅ 1. 人工智能(AI)与大模型 政策依据:《新一代人工智能发展规划》持续深化;2026年中央经…

新年氛围营造:新疆/西藏/甘肃/青海购物中心美陈设计公司盘点

当新年的脚步踏遍西北大地,新疆的丝路驼铃、西藏的雪域风情、甘肃的敦煌文脉、青海的河湟古韵,都在购物中心这个城市核心场景中寻找新的表达。作为节日氛围营造的关键载体,美陈设计早已跳出 “静态装饰” 的局限,成为融合地域文化…

压测 把自己 压进去了

凌晨一点,城中村的出租屋里,只有电脑屏幕的蓝光映着小李的脸。作为一名自由后端开发者,他不用受公司制度约束,日常接些接口开发、bug修复的散活,大把空闲时间都耗在了钻研技术上——而压测各类接口,成了他藏…

全网最全9个AI论文网站,专科生毕业论文轻松搞定!

全网最全9个AI论文网站,专科生毕业论文轻松搞定! AI 工具如何助力论文写作,让专科生轻松应对毕业挑战 在当前的学术环境中,越来越多的专科生开始借助 AI 工具来提升论文写作效率。尤其是那些对写作技巧不熟悉、时间紧张的学生来说…

《创业之路》-852- 价值投资者的七步法:如何系统地看懂一个企业

价值投资者要真正“看懂一个企业”,不仅仅是看财务报表或估值数字,而是要深入理解企业的本质、护城河、管理层、商业模式和长期前景。正如巴菲特所说:“用合理的价格买入一家伟大的企业,远胜于用便宜的价格买入一家平庸的企业。”…

《创业之路》-855- 商业模式案例分析 - 中兴通讯

商业模式案例分析:中兴通讯(ZTE Corporation)中兴通讯(ZTE)成立于1985年,是中国领先的综合通信技术与解决方案提供商之一,也是全球主要的电信设备制造商和智能终端供应商。作为中国信息通信产业…

Vue3:泛型类型声明 vs 运行时选项声明 语法对比

Vue 3 提供了两种 props 声明方式&#xff1a;泛型类型声明和运行时选项声明。泛型类型声明&#xff08;defineProps<{prop:Type}>()&#xff09;在编译时进行类型检查&#xff0c;完全支持 TypeScript&#xff0c;适合新项目和追求类型安全的场景。运行时选项声明&#…

《创业之路》-857- 商业模式案例分析:阿里、百度、腾讯、字节、滴滴、美团、京东、拼多多 全面对比

商业模式案例分析&#xff1a;阿里、百度、腾讯、字节、滴滴、美团、京东、拼多多 全面对比在中国数字经济的版图中&#xff0c;阿里巴巴、百度、腾讯、字节跳动、滴滴出行、美团、京东、拼多多是八家最具代表性的科技企业。它们虽同属“互联网”时代产物&#xff0c;但因创始基…

交通仿真软件:SUMO_(15).高级仿真技术:微观与宏观仿真结合

高级仿真技术&#xff1a;微观与宏观仿真结合 在交通仿真领域&#xff0c;微观仿真和宏观仿真各自具有不同的优势和应用场景。微观仿真可以详细模拟每个车辆的行为&#xff0c;而宏观仿真则关注于交通流的整体特性。为了充分利用这两种仿真的优点&#xff0c;许多交通仿真软件提…

洛谷 T478345:循环数组 ← 单调队列 + 破环成链

【题目来源】 https://www.luogu.com.cn/problem/T478345 【题目描述】 给你一个循环的数组 A[1], A[2], A[3], ...., A[n]。循环的数组意思是 A[1] 的左边是 A[n]&#xff0c;A[n] 的右边是 A[1]&#xff0c;也就是可以理解为他们连成了一个环。 现在你的任务是找到一个字串&…

基于小程序的篮球场馆预订系统-计算机毕业设计源码+LW文档

摘 要 随着国家的迅猛发展和互联网技术的持续飞跃&#xff0c;现代生活节奏显著加快。为了更有效地管理时间、提升个人及工作效率&#xff0c;大众愈发倾向于借助互联网平台处理各类日常事务&#xff0c;这一趋势直接催生了微信小程序的蓬勃兴起。在此背景下&#xff0c;人们对…

探索光伏发电三相并网技术:从原理到实现

光伏发电三相并网 光伏加&#xff0b;Boost&#xff0b;三相并网逆变器 PLL锁相环 MPPT最大功率点跟踪控制(扰动观察法) dq解耦控制&#xff0c; 电流内环电压外环的并网控制策略 电压外环控制直流母线电压稳住750V THD低至0.44%&#xff01;并网电流波形漂亮&#xff01;在如今…

C#上位机源代码,采集西门子200smart温度数据并显示波形曲线,温度到达上限值或下限值进行...

C#上位机源代码&#xff0c;采集西门子200smart温度数据并显示波形曲线&#xff0c;温度到达上限值或下限值进行报警提示。 采集的数据每天生成一个excel报表&#xff0c;全套源代码系统概述 本系统是一个基于C#开发的西门子PLC温度数据采集与监控平台&#xff0c;专门用于实时…

永磁同步电机(PMSM)匝间短路故障Simulink仿真探索

永磁同步电机&#xff08;pmsm&#xff09;匝间短路故障simulink仿真。 提供文档参考说明。在电机领域&#xff0c;永磁同步电机&#xff08;PMSM&#xff09;以其高效、节能等诸多优点&#xff0c;被广泛应用于工业驱动、电动汽车等多个场景。然而&#xff0c;电机运行过程中&…

【码力全开特辑直播预告】1月15日晚7点,AscendNPU IR架构开源解读

【昇腾CANN】视频号、B站、昇腾社区多平台直播 &#xff0c;弹幕答题互动赢取惊喜定制礼&#xff01;通过Ascend C算子开发能力认证&#xff08;中级&#xff09;&#xff0c;完成社区任务、分享学习成果、优秀嘉宾分享&#xff0c;可赢取华为三折叠、笔记本电脑等超级大奖&…

交通仿真软件:SUMO_(23).交通仿真中的行人与自行车模型

交通仿真中的行人与自行车模型 在交通仿真软件 SUMO 中&#xff0c;行人和自行车模型是重要的组成部分&#xff0c;用于模拟城市交通中非机动交通参与者的行为。这些模型可以帮助研究人员和工程师更准确地评估交通流量、安全性和城市规划的有效性。本节将详细介绍如何在 SUMO 中…

Tailwind CSS vs Bootstrap vs ElementUI(ElementPlus) 全面对比表

本文对TailwindCSS、Bootstrap和ElementUI三大前端框架进行全面对比。从基本信息、设计哲学、技术特性到开发体验等维度展开分析&#xff1a;TailwindCSS以Utility-First理念提供极致定制性&#xff1b;Bootstrap凭借预制组件实现快速开发&#xff1b;ElementUI作为Vue组件库提…

下一代CMO的核心课题:通过GEO优化,管理AI口中的“品牌第二身份”

生成式AI的普及正在引发一场静默但深刻的变革&#xff1a;搜索引擎的“答案页”正被AI助手的“对话流”所取代。当用户习惯于向ChatGPT、Copilot等工具直接提问并获取整合答案时&#xff0c;传统的“关键词排名-链接点击”营销逻辑便出现了根本性断裂。在这一断裂处兴起的新领域…