STM32CubeMX 实现串口 DMA 通信

本文详细介绍了如何使用STM32CubeMX实现串口DMA通信,包括理解DMA工作原理、配置DMA初始化结构体、设置DMA接口、在STM32CubeMX中配置DMA、添加代码实现及串口调试,旨在减少CPU资源占用,提高数据传输效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

STM32CubeMX 实现串口 DMA 通信

1、了解DMA

直接存储器访问 (DMA) :用于在外设与存储器之间以及存储器与存储器之 间进行高速数据传输。DMA传输过程的初始化和启动由CPU完成,传输过 程由DMA控制器来执行,无需CPU参与,从而节省CPU资源,提高利用率。

DMA数据传输的四个要素:

① 传输源 :DMA数据传输的来源

② 传输目标:DMA数据传输的目的

③ 传输数量:DMA传输数据的数量

④ 触发信号:启动一次DMA数据传输的动作

STM32的DMA控制器特点

1.STM32F411微控制器具备两个DMA控制器:DMA1和DMA2,每个 控制器有8个数据流,每个数据流可以映射到8个通道(或请求);

  1. 每一个DMA控制器用于管理一个或多个外设的存储器访问请求,并通 过总线仲裁器来协调各个DMA请求的优先级;
  2. 数据流(stream)是用于连接传输源和传输目标的数据通路,每个数 据流可以配置为不同的传输源和传输目标,这些传输源和传输目标称为 通道(Channel);
  3. 具备16字节的FIFO。使能FIFO功能后,源数据先送入FIFO,达到FIFO 的触发阈值后,再传送到目标地址。
    在这里插入图片描述

DMA数据传输方式

普通模式:

传输结束后(即要传输数据的数量达到零),将不再产生DMA操作。若 开始新的DMA传输,需在关闭DMA通道情况下,重新启动DMA传输

循环模式:

可用于处理环形缓冲区和连续数据流(例如ADC扫描模式)。当激活循 环模式后,每轮传输结束时,要传输的数据数量将自动用设置的初始值 进行加载, 并继续响应DMA请求。

2、 DMA_ InitTypeDef 初始化结构体
1 typedef struct
2 {
   
3 uint32_t DMA_PeripheralBaseAddr; // 外设地址
4 uint32_t DMA_MemoryBaseAddr;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值