STM32 DMA配置过程库函数操作

DMA初始化设置 DMA(Direct Memory Access) ,即直接存储器存取,是一种快速传送数据的机制。数据传递可以从适配卡到内存,从内存到适配卡或从一段内存到另一段内存。   DMA技术的重要性在于,利用它进行数据传送时不需要CPU的参与。每台电脑主机板上都有DMA控制器,通常计算机对其编程,并用一个适配器上的ROM(如软盘驱动控制器上的ROM)来储存程序,这些程序控制DMA传送数据。一旦控制器初... 阅读详情

DMA全称Direct Memory Access(直接存储器访问)。主要功能就是将一个地址空间复制到另一个地址空间,作用就是为CPU减负

DMA配置过程
1.使能DMA时钟
2.初始化DMA通道参数
3.使能串口DMA发送,串口DMA使能函数
4.使能DMA1通道,启动传输
5.查询DMA传输状态
6.获取/设置通道当前剩余数据量

//DMA_CHx:DMA通道CHx
//cpar:外设地址
//cmar:存储器地址
//cndtr:数据传输量
void MYDMA_Config(DMA_Channel_TypeDef* DMA_CHx,u32 cpar,u32 cmar,u16 cndtr)
{
 	RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);	//使能DMA通道
	
    DMA_DeInit(DMA_CHx);   //将DMA的通道1寄存器重设为缺省值
	DMA1_MEM_LEN=cndtr;
	DMA_InitStructure.DMA_PeripheralBaseAddr = cpar;  //DMA外设ADC基地址
	DMA_InitStructure.DMA_MemoryBaseAddr = cmar;  //DMA内存基地址
	DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;  //数据传输方向,从内存读取发送到外设
	DMA_InitStructure.DMA_BufferSize = cndtr;  //DMA通道的DMA缓存大小
	DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;  //外设地址寄存器不变
	DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;  //内存地址寄存器递增
	DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;  //数据宽为8位
	DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte; //数据宽为8位
	DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;  //工作在正常缓存模式
	DMA_InitStructure.DMA_Priority = DMA_Priority_Medium; //DMA通道 x拥有中优先级 
	DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;  //DMA通道x没有设置为内存到内存传输
	DMA_Init(DMA_CHx, &DMA_InitStructure);  //根据DMA_InitStruct中指定的参数初始化DMA的通道USART1_Tx_DMA_Channel所标识的寄存器
} 

//开启一次DMA传输
void MYDMA_Enable(DMA_Channel_TypeDef*DMA_CHx)
{ 
	DMA_Cmd(DMA_CHx, DISABLE );  //关闭USART1 TX DMA1 所指示的通道      
 	DMA_SetCurrDataCounter(DMA1_Channel4,DMA1_MEM_LEN);//DMA通道的DMA缓存大小
 	DMA_Cmd(DMA_CHx, ENABLE);  //使能USART1 TX DMA1 所指示的通道
}
STM32 | DMA配置和使用如此简单(超详细) DMA学习很难吗?其实DMA配置和使用如此简单!本文让你无论在DMA认识和理解上(抽象不抽象都有)还是在DMA配置和使用上有个彻彻底底的认识。文章包括寄存器和库函数讲解,省去你自行翻阅使用手册和固件库手册,点到点教会你DMA的配置和使用。 阅读详情

相关推荐

STM32自学之SPI的DMA操作(寄存器级)

STM32自学之SPI的DMA操作(寄存器级) 一、实验目标 学会配置STM32的SPI寄存器和DMA寄存器,实现STM32的SPI1与SPI2通信功能,每次发送一字节数据,并可多次发送,如果接收的数据正确,则点亮LED灯。之后看可以利用DMA来实现什么功能~~~ 二、实验目的 加入DMA的SPI通信相对于普通SPI通信有什么好处?ST给SPI加了DMA功能出于什么目的?我觉得这是很重要的一个问题...

chao961015的博客 1万+

DMA初始化流程总结

使用方法由HAL库提供: 第1步:基本的初始化。 函数HAL_MDMA_Init配置MDMA的基本参数。 第2步:列表模式。 如果使用列表模式,用户可以使用函数HAL_MDMA_LinkedList_CreateNode创建节点,再通过函数HAL_MDMA_LinkedList_AddNode将节点添加到列表里面。 第3步:查询模式。 函数HAL_MDMA_Start 启动传输。 函数HAL_MDMA_PollForTransfer 查询传输完成。 函数H...

weixin_28948749的博客 3386

stm32cubeMX 串口usart + DMA + FREERTOS配置 DMA接收任意长度数据

STM32cubeMX版本5.2.1 最近由于工作需要用到LWIP,看到网上有人说用cubeMX可以生成LWIP库,同时还能生成FREERTOS系统。就索性把整个工程的驱动库都换成了cubeMX生成的HAL库,在之前写工程基础上更改驱动配置,踩了一些坑,在这里把串口的配置及部分软件代码分享出来,希望能对大家有所帮助。 1、时钟配置 2、串口配置 3、...

weixin_40729877的博客 8947

stm32f103zet6特别注册DMA如果设置成 存储器到外设模式 DMA_M2M一定要设置成DMA_M2M_Disable

stm32f103zet6特别注册DMA如果设置成 存储器到外设模式 DMA_M2M一定要设置成DMA_M2M_Disable

zaixingxing2539的博客 403

STM32的DMA简介

DMA配置包括设置外设地址为ADC的数据寄存器`ADC_DR`,存储器地址为`ADValue`的地址,数据宽度为半字,传输数量为16。DMA配置包括设置外设地址为`DataA`的地址,存储器地址为`DataB`的地址,数据宽度为字节,传输数量为7。- **RAM(随机存取存储器)**:从0x2000 0000开始,用于存储运行过程中的临时变量。- **外设寄存器**:从0x4000 0000开始,用于存储各个外设的配置参数。- **方向**:可以设置为外设到存储器或存储器到存储器。

weixin_63207510的博客 2134

STM32:STM32DMA编程:STM32CubeMX中配置DMA

DMA,全称为Direct Memory Access(直接内存访问),是一种硬件技术,允许数据在内存和外设之间直接传输,而无需CPU的干预。在DMA操作中,DMA控制器接管数据传输任务,释放CPU去执行其他更重要的任务,从而提高系统的整体性能和效率。STM32微控制器通常配备有多个DMA控制器,每个控制器可以管理多个DMA通道。例如,STM32F4系列微控制器具有两个DMA控制器(DMA1和DMA2),每个控制器有7个通道,总共14个通道。这些通道可以独立配置,用于不同的数据传输任务。

kkchenjj的博客 5390

由串口DMA配置扯出来的一些问题

A:使用串口DMA收发,在初始化的时候,写了如下程序 DMA_InitStruct.DMA_BufferSize = BufferSize; DMA_InitStruct.DMA_DIR = DMA_DIR_PeripheralDST; DMA_InitStruct.DMA_M2M = DMA_M2M_Disable; DMA_InitStruct.DMA_MemoryBaseAddr = ...

FR_Remember的博客 658

别再写爬虫了!用Trae平台5分钟搞定一个能聊天的网页数据抓取Agent

本文介绍了如何利用Trae平台快速构建无需编程的网页数据抓取智能体,实现对话式数据采集。通过自然语言指令,用户可在5分钟内完成从数据抓取到分析的全流程,显著降低技术门槛和维护成本。文章详细解析了Trae智能体的核心能力,包括自然语言理解、智能页面解析、数据清洗和可视化配置,并提供了多个实战案例,展示其在竞品监控和舆情分析中的高效应用。

weixin_29038303的博客 713

DMA初始化的一般过程

DMA(直接内存访问)是计算机系统的一项功能,它允许硬件子系统直接访问内存,从而减轻CPU在数据传输中的负担。首先,需要确定系统中可用的DMA控制器,了解其特性,比如支持的传输类型(单次、循环、链式)、数据宽度、通道数量等。如果启用了中断,需要编写中断服务例程(ISR)来处理传输完成或传输错误的情况。4)数据宽度:每次传输的数据宽度(例如,字节、半字、字)。6)中断:是否启用传输完成或传输错误时的中断。5)传输模式:单次传输、循环传输或链式传输。

读书 行路 做人 成事 1062

苍穹外卖项目面试总结话术

美食速递这个项目最初是我参与制作的大创项目,是一款为中南学生提供校园外卖送至宿舍服务的软件,包含系统管理后台和小程序端两部分。其中系统管理后台主要提供给食堂内部员工使用,可以对食堂各个窗口、员工、订单、菜品等进行维护管理;小程序端可以在线浏览菜品、添加购物车、下单等,由学生兼职做跑腿送餐上门服务。这是个前后端分离的项目,我主要是负责后端的用户登录、员工管理,菜品管理,订单管理模块的编码实现。

qq_45195447的博客 1万+

医学影像处理实战:如何用Python+SimpleITK搞定DICOM/NIfTI重采样(附完整代码)

本文详细介绍了如何使用Python和SimpleITK库实现医学影像(DICOM/NIfTI格式)的智能重采样技术。通过实战代码演示,帮助读者掌握医学图像处理中的关键步骤,包括环境搭建、数据准备、核心算法实现和质量验证,解决医学AI领域中的影像标准化难题。

linux的博客 975

STM32有关 多通道ADC & DMA联合使用(小白向)

序 关乎STM32,在使用官方库的情况下,你想要的各种功能的配置,无非就是你对于相应外设的的每个参数的设置 库函数介绍 STM32的库函数,相关的一些参数,参数有效值,都可以在相关库文件 .c / .h 看到详细解释,就以ADC的初始化函数 ADC_Init 为例 /** * @brief Initializes the ADCx peripheral according to the specified parameters * in the ADC_InitStruct.

huaijin520的博客 3610

JavaScript 书签脚本实战:腾讯/优酷/爱奇艺等5大视频站m3u8链接一键提取

本文详细介绍了如何使用JavaScript书签脚本一键提取腾讯视频、优酷、爱奇艺等五大视频平台的m3u8流媒体链接。通过分析播放器内部对象结构,开发者可以高效获取视频源文件,避免录屏画质损失。文章包含各平台适配方案、实战增强功能开发及企业级解决方案设计,帮助用户快速掌握这一实用技术。

weixin_27945229的博客 547

【STM32】HAL库 STM32CubeMX教程十一---DMA (串口DMA发送接收)

前言: 本系列教程将 对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 所用工具: 1、芯片: STM32F407ZET6/ STM32F103ZET6 2、STM32CubeMx软件 3、IDE: MDK-Keil软件 4、STM32F1xx/STM32F4xxHAL库 知识概括: 通过本篇博客您将学到: DMA工作原理 STM32CubeMX创建...

Z小旋 17万+

【华为OD机考】2025C+B+2024E+D卷真题【完全原创题解 | 详细考点分类 | 不断更新题目 | 六种主流语言Py+Java+Cpp+C+Js+Go】

可上练习华子OD、大厂真题绿色聊天软件戳od1441了解算法冲刺训练(备注【CSDN】否则不通过)

weixin_48157259的博客 1万+

基于simulink创建一个针对双馈异步风力发电机并网运行的仿真模型

摘要:本文详细介绍了基于Simulink的双馈异步风力发电机(DFIG)并网运行仿真建模方法。系统包含风速输入、风力机、双馈发电机、电力电子变换器、控制器和并网接口等模块,通过8个步骤完整呈现了建模流程,包括风速模拟、机械功率计算、发电机特性建模、变流器控制策略设计等关键环节。仿真可评估系统在不同风速条件下的动态响应、最大功率跟踪能力和发电效率,为风力发电系统的优化设计提供有效验证手段。模型可根据实际需求扩展环境因素和电网交互等细节,提高仿真精度。

amy_mhd的博客 328

STM32CUBEMX配置教程(九)STM32串口DMA收发数据

STM32CUBEMX配置教程(九)STM32串口DMA收发数据 基于STM32H743VI 使用STM32CUBEMX两年了,始终觉得这个工具非常的方便,但因为不是经常使用,导致有些要点总是会有些遗忘,因此写下这一系列教程以供记忆,顺便让我这个大萌新给广大小萌新提供一些学习帮助。 此次工程效果:串口115200波特率,接收串口助手XCOM发送的数据并发送回XCOM 本次配置的工程链接在最下方,有需要自取。 0基础可以从第一个教程开始阅读 STM32CUBEMX配置教程(一)基础配置 STM32CUBEMX

weixin_44584198的博客 2万+

LPDDR6 技术标准详解(JESD209-6)

是继 LPDDR5/5X 之后的新一代低功耗 DRAM 标准,专为满足移动终端、AI、边缘计算等高带宽、低功耗场景而设计。该标准通过全新架构、动态功耗控制机制和增强型数据完整性机制,实现性能、能效与可靠性的全面升级。LPDDR6 并非仅是速度升级,更是内存架构设计思路的演进,围绕“低功耗 + 高带宽 + 强安全”的三维目标,构建下一代 SoC 平台关键基础。✅ 高带宽:支持 32B/64B 动态突发✅ 低功耗:动态电压、通道切换✅ 高可靠性:ECC + 自测试 + 安全区。

weixin_43199439的博客 2528

STM32 DMA配置

作个搬运工,以下内容均来自: https://blog.csdn.net/gdjason/article/details/51019219 https://blog.csdn.net/u010280307/article/details/53334985 https://blog.csdn.net/faihung/article/details/78748033 https://blog.csdn...

yhy2690 6424

冲压机器人系列编程:ABB IRB 6700_(6).RAPID编程语言入门

主菜单:包含文件、编辑、视图、工具等常用操作。项目浏览器:显示当前项目的文件结构,包括机器人模型、程序模块等。图形界面:用于创建和编辑机器人的虚拟环境。RAPID代码编辑器:用于编写和编辑RAPID代码。仿真控制面板:用于控制仿真过程,包括启动、暂停、停止等。变量是存储数据的容器,可以通过变量名访问和修改其存储的数据。变量定义时需要指定其类型和名称。% 定义一个整数变量并赋初值% 定义一个实数变量,未赋初值函数定义时需要指定其返回类型和参数。num result;子程序类似于函数,但不返回值。

zhubeibei168的博客 1373

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

stm32---DMA

DMA:全称Direct Memory Access(直接存储器访问),把一个地址空间的值“复制”到另一个地址空间,使用DMA传输方式无需CPU直接控制传输,通过硬件为RAM和IO设备开辟一条直接传输数据的通道,使得CPU的效率大大提高。 作用:为CPU减负。 硬件方面,STM32最多有2个DMA控制器(DMA2仅存在大容量产品中),DMA1有7个通道,DMA2有5个通道。每个通道专门用来管理来自于一个或多个外设对存储器访问的请求(由硬件决定),附图DMA各通道限定可处理请求: 还有一个“仲裁器”来协调

weixin_53762042的博客 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

STM32--DMA详解

直接存储器存取(DMA)用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作。两个DMA控制器有12个通道(DMA1有7个通道, DMA2有5个通道),每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。还有一个仲裁器来协调各个DMA请求的优先权。1. DMA2仅存在于大容量产品和互联型产品。

2301_79330491的博客 4445

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

STM32 串口采用DMA方式收发

一直都没有整理STM32 DMA应用,这篇文章算是抛砖引玉吧,欢迎拍砖。 本人QQ 330952038,欢迎交流学习什么是DMA —- Directional Memory Access, 直接存储器存取用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作我们通过以下几方面学习串口DMA: 一、如何理解D

gdjason的博客 3万+

STM32使用DMA接收串口数据

目录 01、概述 02、DMA接收 03、中断 04、代码 01、概述 在之前的文章里《STM32串口详解》和《STM32 DMA详解》文章中,详细讲解了STM32的串口和DMA外设,本篇文章将不在细述串口和DMA的知识。 在串口讲解的文章中,示例代码采用中断方式接收和发送数据,中断的好处在于可以及时响应,快速接收到数据,但缺点也很明显,那就是频繁中断,接收1000个字节需要中断1000次,频繁中断就意味着会打断其他代码的执行,对一些应用场景是不允许的。这个时候,使用DMA+串口的组合就可以很

人生一路,点滴记录 2万+

如何快速上手使用STM32库函数

一、背景 如前文所述,利用标准库函数的好处在于,可以快速开发,不用去对着数据手册,小心翼翼的一位一位的配置那些繁复的寄存器,因为这些工作意法半导体已经找了一些顶级的工程师帮你做了,杰作既是其库函数。当然,有些代码考虑到低功耗,或者需要极小的ROM,就不能使用库函数,而这即是通常说的,"高度定制化",牺牲开发时间来获取更高代码效率,这个需要自己权衡。 本文以STM32之DMA库函数为例,...

weixin_30783913的博客 4589

STM32的DMA操作

DMA概述 Direct Memory Access 直接存储器访问 DMA传输将数据从一个地址空间复制到另一个地址空间 由CPU初始化这个DMA传输动作,动作本身由DMA控制器完成 DMA传输通过硬件为RAM和IO设备之间开辟一条直接传输数据的通道,提高了CPU的运行效率 STM32中的DMA STM32最多有2个DMA控制器,其中大容量产品有2个DMA控制器,小容量产品只有1个 DMA1有7个通道,DMA2有5个通道 每个通道专门用来管理来自于一个或多个外设对存储器访问的请求 还有一

Code for Coffee 8676
上一篇: STM32 ADC转换库函数操作
下一篇: 一点基本的汇编指令
point233
博客等级 码龄7年 5粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值