【STM32+cubemx】0006 HAL库开发:uart串口和DMA传输

通过修改HAL_UART_Transmit_DMA()函数,解决串口发送DMA只能发送一次的问题 通过修改STM32HAL库的HAL_UART_Transmit_DMA()函数成功解决串口DMA只能发送一次的问题,并且也支持在主函数的高速while循环中调用串口的DMA请求。 阅读详情

上一节我们使用中断结合环形fifo,实现了比较方便、高效地串口收发,这个方法在几乎所有的单片机上都可以使用,就连最基础的51单片机也能支持。而到了stm32这款强大的单片机,有更多的用法可以实现高效的串口收发,本节我们就介绍使用DMA传输串口数据。

先简单介绍一下DMA,DMA全称为:Direct Memory Access,即直接存储器访问。它可以独立地将数据从一个地址空间复制到另外一个地址空间,而不占用CPU的资源。

DMA尤其在高速、大容量的数据传输时特别有用:如果使用中断传输,CPU会在传输数据的一段时间内多次进入中断处理,也会占用很多CPU的时间;而使用DMA,CPU只用作一些初始化操作,之后DMA会自动将数据从一个地址复制到另一个地址,数据量很大时,能减轻很多CPU的工作。

1)cubemx生成代码

首先还是在cubemx中生成代码,选择器件、设置SYS(调试接口)、设置RCC(外部晶振时钟源)。

然后设置串口引脚,选择uart1,异步串口,选完后,已经使用的串口引脚PA9和PA10会变成绿色;然后选择开启串口全局中断(使用DMA时中断一定要打开):

stm32 HAL库 HAL_UART_Transmit_DMA 发送函数分析 2019独角兽企业重金招聘Python工程师标准>>> ... 阅读详情

相关推荐

HAL库串口分析

stm32HAL库的三种串口发送和接收的方法。

qq_36314279的博客 1万+

STM32CubeMX配置MQ135气体传感器实战指南

MQ135是一种广泛应用于室内空气质量监测的电阻型模拟气体传感器,其输出需经ADC采集与非线性换算才能获得CO₂等气体浓度值。理解其分压电路原理、ADC采样时序约束(如ADCCLK≤14MHz)及软硬件协同滤波机制,是实现稳定读数的关键技术基础。STM32CubeMX通过可视化配置自动生成高可靠性HAL初始化代码,显著降低时钟树、GPIO模拟模式、外部触发定时器(如TIM2 TRGO)及中断优先级等底层寄存器出错风险,尤其适合嵌入式初学者快速验证气体检测方案。本文以STM32F103C8T6驱动MQ135为

weixin_34205826的博客 437

FOC性能优化三重奏:解码DSP库、USB虚拟串口与定时器的协同设计

本文深入探讨了FOC性能优化的三大关键技术:ARM数学库的定点运算加速、USB虚拟串口的高效调试通道构建,以及定时器与ADC的精密触发配合。通过STM32平台实战案例,展示了如何提升电机控制系统的实时性和效率,特别适用于高转速场景下的无刷电机驱动优化。

weixin_29168393的博客 380

【信息科学与工程学】【控制科学】第十二篇 微型计算机控制技术01

更精确的经典模型:I1在第5周期WB结束,I2最早可在第6周期进入EX,但I2在ID阶段就需要R1,因此I2的ID需在第6周期,而I1的WB在第5周期,所以I2的ID可以紧接在第6周期,但中间仍有一个stall(因为I1的EX结果要等到MEM之后才能转发给ID?有优先级继承后,Task_L被提升优先级,不会被Task_M抢占,阻塞时间缩短为Task_L剩余执行时间(9ms),仍可能超过10ms,但可通过调整任务周期或使用中断处理缓解。电感L=10μH,输出电容C=100μF,ESR=5mΩ。

weixin_49199313的博客 8589

基于STM32F407的Modbus RTU智能电表采集:从RS485到CRC校验实战

Modbus RTU是工业现场最常用的通信协议之一,基于RS485半双工总线实现主从设备可靠交互。在协议实现中,CRC校验是保证数据完整性的核心环节,其查表法算法能有效降低嵌入式设备CPU开销。本文从工程实践角度出发,梳理了CRC16-Modbus校验原理及实现代码,并结合串口接收超时判断、RS485方向切换等细节,探讨了在STM32F407平台上构建智能电表数据采集系统的完整方案。内容涵盖报文结构、寄存器解析、多从机轮询及联调排错经验,适用于能耗监控、设备联网等应用场景。

weixin_33895695的博客 403

NBU计算机大二下期末

计算机网络 任课老师:JG (放了一学期的他自己的视频和上了一学期网课没什么区别,甚至不如上网课。。。) 考试题型 填空题10*1 判断题10*1 选择题30*1 简答和计算题30(4题) 讨论题20 强烈建议不要再这门课上花太多时间复习,不然有复习了个寂寞的感觉。。。计网是一页开卷的,一页开卷纸不用写太多,第一他不会考太详细;第二反正最后都要被收走。 填空题、判断题基本看懂了英文就能做的差不多;选择题去网上找点英文题多刷一下问题不大;简答题把书上每章根据他上课的内容在开卷纸上抄下就好,今年是解释check

weixin_45816954的博客 706

别再死记硬背了!用LabVIEW串口通信的3个真实项目案例,手把手教你从调试到部署

本文通过3个真实项目案例,详细讲解LabVIEW串口通信从调试到部署的全过程。涵盖Arduino温湿度监控、西门子PLC Modbus通信以及高可靠性通信框架设计,提供实用技巧和常见问题解决方案,帮助工程师快速掌握LabVIEW串口通信的实战应用。

weixin_30485379的博客 519

电池充电管理芯片规格书精读指南:从参数解析到设计实战

电池充电管理是嵌入式系统和便携式设备开发中的基础环节,其核心在于理解并应用充电芯片的规格参数。充电芯片通过精确控制电压、电流、温度等关键参数,实现对锂电池等可充电电池的安全、高效管理。掌握这些参数原理,对于优化产品功耗、提升充电效率、保障电池寿命具有重要技术价值,广泛应用于智能穿戴、消费电子、无人机等场景。本文聚焦于**充电电流**设定与**热管理**等核心参数,深入解析其相互影响与工程选型中的权衡,旨在帮助开发者将抽象的规格书数据转化为可靠的电路设计依据,从而有效排查充电故障,提升产品整体可靠性。

weixin_26874745的博客 659

SAP ABAP VL09 BAPI VL 216

ls_batch_item-fact_unit_denom = ls_lips_split-umvkn. "销售数量转换为 SKU 的值(分母)ls_batch_item-fact_unit_nom = ls_lips_split-umvkz. "销售数量转换成SKU的分子(因子)ls_batch_item-sales_unit_iso = ls_lips_split-meins. "被拆分DN基本单位。

ChampaignWolf的专栏 2288

OpenClaw 开机自启配置:Windows/macOS/Linux 全平台技术指南

OpenClaw 开机自启全平台配置指南 本文提供了在Windows、macOS和Linux系统上配置OpenClaw开机自启的完整技术方案。主要内容包括: Windows配置:提供三种方法(Windows服务、任务计划程序、启动文件夹),详细说明服务脚本创建、服务注册和测试流程 macOS配置:使用LaunchAgent实现开机自启,包含配置文件创建和加载方法 Linux配置:通过systemd服务实现,包括服务单元文件创建和启用步骤 系统要求:明确硬件(64位CPU/4GB内存)和软件(各平台操作系统版

一键难忘的博客 2985

Day 01: 与Python的第一次亲密接触

环境搭建 、第一个程序 Hello, World!、以及Python之禅 (The Zen of Python) 的解读。

杨小扩的博客 217

YOLOv11改进策略【卷积层】| SPD-Conv 针对小目标和低分辨率图像的检测任务

SPD-Conv是一种新的 CNN 构建模块,用于替代传统 CNN 架构中使用的步长卷积(strided convolution)和池化(pooling)层,它由空间到深度(Space-to-depth,SPD)层和非步长卷积(non - strided convolution)层组成。

Limiiiing的博客 4954

文末含资料链接和视频讲解!YOLOv8+RepVGG+QueryDet小目标检测终极指南:从理论到实战,突破遥感图像检测难题

QueryDet(Query Detection)机制代表了目标检测领域的一个重要范式转变。传统的目标检测方法基于anchor或anchor-free的密集预测,需要为图像中的每个可能位置生成预测。而QueryDet采用了稀疏查询的方式,通过少量的可学习查询向量来直接预测目标。 这种设计灵感来源于Transformer架构中的注意力机制。在自然语言处理中,Transformer通过query-key-value机制实现了高效的序列建模。QueryDet将这一思想引入到目标检测中,将检测问题转化为查询匹配问

FJN110的博客 378

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

上一篇: 【STM32+cubemx】0005 HAL库开发:uart串口中断和fifo环形队列
下一篇: 【STM32+cubemx】0007 HAL库开发:外部中断,优先级和中断向量表
xiaobaibai_2021
博客等级 码龄5年 1678粉丝 110原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值