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与串口通信的结合使用方法,为更复杂的嵌入式系统开发打下坚实基础。
热门推荐
这次降温周日早晨最冷,广州气温仅6℃
普通人如何参与数字经济:四大路径揭秘
无线耳机失真修复(找回音质)
长孙皇后:历史上备受宠爱的皇后,一生传奇经历
这 4 种花不怕烈日晒,越晒越盛,第3种干了也不褪色
破解软件是否会影响系统稳定性
燕窝加工全流程揭秘:12道工序,匠心独运的秘密!
中国首批国家公园:生态游憩指南
指示代名词的正确用法:深入解析 this、these、that、those
中国城市海外社交媒体传播力指数发布 福州多项指数跻身全国前十
心自由教育指导效果显著,家庭的传统与传承:通过家庭活动强化家庭价值观
如何申请义工团队:从选择组织到长期发展
中药茵陈:清湿热退黄疸的常用良药
在上海洛克·外滩源享受城市微度假新体验
侍卫的角色与责任:守护与忠诚的象征
守好您的“钱袋子”!监管部门发布春节防骗提示
如何应对?王者排位遇到坑货的终极解决策略
揭秘秦始皇的三把佩剑:太阿、鹿卢与定秦
成都楼市逆势崛起,政策加持助推市场回暖
踏青去!露营、游船、围炉煮茶...都在这个宝藏公园!
朝花夕拾:一个成语里的文化密码
夏天喝蜂蜜水的好处,这个“五毒月”为什么要多吃点蜂蜜
P+R换乘新规即将实施,优惠时段有延长
中小企业数字化转型指南:工具推荐与实践指南
脚踝软骨受损怎么恢复的快一点
金钱树的养殖方法和注意事项
什麼是心法?
“津”字的文化内涵与现代用法探讨,丰富汉字学习体验
AI辅助教学的最佳实践与案例分享
身份证“失踪”怎么办?一文教你如何巧妙应对!