STM32 HAL库详解:DMA与串口通信的完美结合
创作时间:
作者:
@小白创作中心
STM32 HAL库详解:DMA与串口通信的完美结合
引用
CSDN
1.
https://blog.csdn.net/m0_73409202/article/details/140618237
STM32系列微控制器在嵌入式系统开发中占据重要地位,而DMA(直接存储器访问)技术则能显著提升数据传输效率。本文将详细介绍如何在STM32中使用HAL库实现DMA与串口的结合使用,包括理论原理、代码实现和实验验证,帮助开发者更好地掌握这一关键技术。
DMA技术简介
DMA(Direct Memory Access,直接存储器访问)是一种数据传输机制,能够将数据从一个地址空间复制到另一个地址空间,被誉为“数据搬运工”。与传统的CPU控制传输方式相比,DMA传输不需要CPU直接参与,也不涉及中断处理时的现场保留和恢复,而是通过硬件开辟一条RAM和IO设备之间的直接传输通道,从而大大提高CPU的效率。
STM32F1 DMA架构
DMA请求与通道
- DMA请求:数据传输前,外设向DMA控制器发送请求。
- DMA通道:不同外设通过不同的DMA通道发送请求。STM32F1的DMA1有7个通道,DMA2有5个通道(DMA2仅存在于大容量产品和互联型产品中)。
DMA优先级管理
当多个DMA通道同时发出请求时,仲裁器会根据优先级顺序进行处理。优先级管理分为两个阶段:
- 软件阶段:每个通道的优先级可以在DMA_CCRx寄存器中设置,分为最高、高、中、低四个等级。
- 硬件阶段:如果两个请求具有相同的软件优先级,较低编号的通道将获得较高优先级。在大容量芯片中,DMA1控制器的优先级高于DMA2控制器。
DMA与串口通信的HAL库函数
以下是使用HAL库实现DMA与串口通信的主要步骤:
使能DMA时钟
_HAL_RCC_DMA1_CLK_ENABLE
初始化DMA
- 使用
HAL_DMA_Init
函数初始化DMA相关参数 - 使用
_HAL_LINKDMA
函数连接DMA和外设
使能串口的DMA发送并启动传输
HAL_UART_Transmit_DMA
查询DMA传输状态
- 使用
_HAL_DMA_GET_FLAG
查询传输状态 - 使用
_HAL_DMA_GET_COUNTER
获取当前传输剩余数据量
- DMA中断使用
- 使用
HAL_NVIC_EnableIRQ
使能中断 - 使用
HAL_NVIC_SetPriority
设置中断优先级 - 编写中断服务函数
xxx_IRQHandler
实战演练
配置USART1及相应中断
配置DMA
中断优先级设置
生成Keil工程
DMA+串口发送字符串
在main
函数的while(1)
循环中实现字符串发送。
DMA+串口接收空闲中断
- 在
uart.h
和uart.c
中定义接收数组、数据长度和接收完成标志。 - 在
uart.c
的初始化函数中使能IDLE中断。 - 在
main.c
中封装接收和发送函数。 - 在
stm32f4xx_it.c
中包含usart.h
并编写中断服务函数。 - 在
main.c
的while
循环中实现发送以及接收标志清除。
实验现象
- 打开串口监视器,如果没有接收到数据,串口会每隔500ms发送
SendBuff
数组中的数据。 - 接收到数据时,会触发IDLE中断并进行相应处理。
通过本实验,读者可以掌握STM32中DMA与串口通信的结合使用方法,为更复杂的嵌入式系统开发打下坚实基础。
热门推荐
企业搬迁员工福利政策:保障员工权益,促进和谐共赢
什么是免冠照片
卧龙凤雏在三国杀中的首次登场与技能解析
秋冬行刑:中国古代刑罚制度的历史探析
没有ETC怎么上高速?四种实用解决方案
如何计算高速公路费用?高速公路费用的计算方法有哪些?
什么是飞机户型
飞机户型是什么意思
二套房贷如何界定
这个"五一"假期,县城是最大赢家
“不可切除肝癌”也能切除了!
反歧视政策落地抬升菜系进口成本 油脂油料板块或重心上移
2025年宁夏医科大学在职研究生复试深度解析:考核重点、难度剖析与备考攻略
丙丁火在四柱八字命理中的核心论述
纵隔结节是怎么回事
睡觉时肚子咕噜咕噜响怎么办好
2岁儿童散光会自愈吗
如何选择适合自己设备的充电器?
用好充电器 莫让手机变“手雷”
X射线:从发现到应用的全面解析
被辞退后的员工:劳动权益的法律保障及实务解析
法制与法治的区别与联系:理论探讨与实践应用
《崩坏 星穹铁道》砂金角色深度解析
元宝枫籽油:哪些人群需谨慎,如何安全食用?
外卖丢弃事件背后的法律争议与责任划分
闰月八字怎么算,生辰八字工具轻松测算
正处级公务员工资大揭秘!月薪税前1.1万,到手9000元,福利待遇如何?
重磅!武汉轨道交通线网将迎新一轮修编
茶水解药性的原理
三国铜雀台:历史的见证与文化的瑰宝