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与串口通信的结合使用方法,为更复杂的嵌入式系统开发打下坚实基础。
热门推荐
跨境电商注册店铺需要什么材料?准备清单
镀银层对 PET 镀银反射膜抗紫外线性能的影响探究
轻松实现大挪移,跨国海运搬家全攻略
傲娇的人在感情中的表现是怎样的?深入了解与解读傲娇性格在恋爱中的行为
如何让小猫晚上安静睡觉?解决小猫夜间活动的15个实用方法
防弹衣是如何抵挡子弹的?详解防弹衣工作原理,发明者真是个天才
放弃国外大学终身教职回国,他说“要做最好的基因细胞药”
本科生入深户有什么补贴:政策解读与法律分析
孕期可以用凡士林,凡士林孕妇可以擦肚子吗
左旋肉碱与共轭亚油酸:哪种减脂效果更好?
“手术+中医药”深融合!肇庆市中医院妇科中西医联合显实效
大侠立志传猴儿酒获取攻略:详细步骤图文解析
财务规划:如何为个人和家庭制定有效的财务规划以实现财务目标
“不要跳窗!”火灾中的一通电话,让他成功避险
塔罗牌"魔术师":新开始与行动力的象征
塔罗牌魔术师正位:全面详解其含义与应用
《燃罪》:张玉兰之死,谁才是真正的凶手?
学电力系统自动化技术可以找什么工作?
金融学与金融工程专业解析与对比
《水浒传》中,病尉迟孙立的武力分析
什么是假设推理?如何使用假设推理,解决直接推理难以解决的问题
中国丧葬习俗“圆坟”有哪些讲究和忌讳?
究竟哪种减肥方法最适合你?10种运动方式揭晓!
偷税与避税的法律监管措施有哪些
为何服务器电源配置冗余是保证数据中心稳定性的关键因素
渗透测试对防火墙策略的评估方法
那些年一起黄金定投的年轻人,有的两年收益35%,有的放弃计划“进退两难”
红色文旅何以“红烂漫”?
足球半场全场:战术变化及比赛影响
被哪些动物咬了,需要打狂犬疫苗?暴露后第一时间应该……