历史上的今天

今天是:2024年09月22日(星期日)

正在发生

2018年09月22日 | stm32标准库dma初始化详解

发布者:cwm6269310 来源: eefocus关键字:stm32  标准库  dma初始化 手机看文章 扫描二维码
随时随地手机看文章

 STM32的DMA有三种类型的传输

1.M-M(内存到内存) 

2.M-P(内存到外设)

3.P-M(外设到内存)

   STM32的标准库函数提供了一个STM32的初始化结构体如下;

typedef struct

{

  uint32_t DMA_PeripheralBaseAddr;//外设地址

  uint32_t DMA_MemoryBaseAddr; //内存地址

  uint32_t DMA_DIR;                       //传输方向

  uint32_t DMA_BufferSize;           //传输的数据多少

  uint32_t DMA_PeripheralInc;     //外设地址是否递增

  uint32_t DMA_MemoryInc;       //内存地址是否递增

  uint32_t DMA_PeripheralDataSize;   //外设数据宽度

  uint32_t DMA_MemoryDataSize;     //内存数据宽度

  uint32_t DMA_Mode;                        //模式 

  uint32_t DMA_Priority;                    //优先级

  uint32_t DMA_M2M;                       //是否是内存到内存的方式

}DMA_InitTypeDef;

上述结构体是STM32的初始化结构体,从上面的结构体变量定义,我们初始化DMA的时候可以分三步走:

第一步:从哪里来到那里去:这句话说明的是上述的第1-3条

  uint32_t DMA_PeripheralBaseAddr;//外设地址

  uint32_t DMA_MemoryBaseAddr; //内存地址

  uint32_t DMA_DIR;                       //传输方向

第二步:数据要传输多少,传的单位是多少:这句话说明的是上述的第4-8条

  uint32_t DMA_BufferSize;           //传输的数据多少

  uint32_t DMA_PeripheralInc;     //外设地址是否递增

  uint32_t DMA_MemoryInc;       //内存地址是否递增

  uint32_t DMA_PeripheralDataSize;   //外设数据宽度

  uint32_t DMA_MemoryDataSize;     //内存数据宽度

第三步:啥时候传输结束; 这句话说明的是传输的模式

  uint32_t DMA_Mode;                        //模式 


DMA的初始化步骤

1、打开DMA时钟

2、写入DMA初始化结构体数据

3,调用DMA_Init函数将结构体数据写入寄存器

4,清空DMA发送/接收完成标志位

5,调用DMA_Cmd函数开启DMA通道

如果是M-P则需要通过使能DMA请求例如:

USART_DMACmd(使能DMA串口请求)

如果是M-M则不需要使能DMA请求。

当打开DMA通道时直接就开始数据传输了。


关键字:stm32  标准库  dma初始化 引用地址:stm32标准库dma初始化详解

上一篇:STM32 ADC单次转换实例
下一篇:STM32CUBEusart的bug

推荐阅读

潮起黄浦江,赋能新时代。  9月17日至19日,被誉为“人工智能的奥林匹克盛会”的首届世界人工智能大会在上海召开。大会现场,琳琅满目的应用场景将虚拟与现实连在一起,人类的“最强大脑”们也汇聚一堂,共同描绘着人工智能的前景,向人们释放着未来发展的新信号。  9月17日,工作人员(左)在大会现场向参观者介绍一款外骨骼机器人。  9月17日,在大...
Diodes 公司日前宣布推出额定 40V 的 DMTH4008LFDFWQ 及额定 60V 的 DMTH6016LFDFWQ,两者均为符合车用规范的 MOSFET,采用 DFN2020 封装。这两款微型 MOSFET 仅占较大封装 (例如 SOT223) 10% 的 PCB 区域,可在直流对直流 (DC-DC) 转换器、LED 背光、ADAS 及其他“引擎盖下”的汽车应用之中,提供更高的功率密度。DMTH4008LFDFWQ 在 VGS = 10V 时的 RDS...
  互联网的发展将我们带入了的时代,而智能数据时代是大数据时代的新的阶段。在具有人类感觉机器人出现的过程中,云计算、大数据、势必会起到非常重要的作用。每一台具有人类感觉的机器人,实际上就是一台云计算终端,或者说就是一台智能电脑。这台智能电脑的系统虽然定制不同,但基本上受“云”的控制。   机器人所具有的人类感觉,很有可能是其大...
案例分析:故障提前知!先进的多功能软件如何监控电动公交车队充电站 充电设施始终处于视野中。 图片来源:© Stadtwerke Jena / Anna Schroll本文将介绍德国耶拿公共交通系统是如何监测其电动公交车队的充电桩,并使用先进的诊断功能来提高其可用性并优化维护活动。在德国耶拿,电动汽车以有轨电车形式出现,并已投入使用了120年。随着柴油动力公交...

史海拾趣

问答坊 | AI 解惑

“改变你生活的十大新娱乐方式”投票评选

有兴趣大家去投票啊。同时也欢迎凡是看到本贴的朋友,在本版内留下你最喜欢的方式。由北青传媒、北青文化和北京青年报数码时代发起,并联合国内5大门户网站QQ.com、网易、新浪、搜狐、TOM在线共同主办的“腾讯 改变你生活的十大新娱乐方式评选活动 ...…

查看全部问答∨

如何学单片机硬件部分

我上次写了一点自己学单片机的经历,我看有好多人看过了,很高兴自己有这么多的志同道合者啊!不过不好意思啊,上次写自己写太多了,以后我就从如何学单片机的各个部分给大家详细介绍一下吧!今天就和大家聊一下怎么学单片机的硬件部分啊! 大家 ...…

查看全部问答∨

求解:电子制作用小型变压器如何知道功率

电子制作用小型变压器如何知道功率…

查看全部问答∨

如何抑制运算放大器的漂移

小弟最近的工作中,需要将较小的信号放大,但运放本身有漂移,请问高手如何抑制漂移…

查看全部问答∨

PGA204

本帖最后由 paulhyde 于 2014-9-15 09:12 编辑 PGA204的资料,自己在准备这一方面的东西,拿出来分享!!  …

查看全部问答∨

MTK6225 手机开发板(含源代码)

MTK6225 手机开发板(含源代码) 有诚意者请联系 Qq:296662705 硬件特性: 1、 CPU:mtk6225 2、 TFLASH 卡接口 3、 176X220 2.6寸TFT LCD,最高支持320*240*16的TFT LCD 4、 4线触摸屏接口 5、 双声道音频输出 6、 一个Camera 130万像素 ...…

查看全部问答∨

6414外接sram很奇怪的问题

EEWORLD的工程师:     您好。     我自己做的板子,在tms320c6414的emifa(64位宽度)外接32为宽度的sram,通过指针和数组两种方式往sram中写数据,以测试sram是否正常工作。但是发现,sram的所有地址空间只能写奇数,一旦往 ...…

查看全部问答∨

上次错过了MSP430的团购,这次来抢一块

上次错过了MSP430的团购,这次来抢一块, 以前用过STM8,决定低功耗很不错,但是别人都说MSP430更强,哈哈,这回可以一探究竟了   打算对比下STM8和MSP430   希望论坛给予支持。呵呵…

查看全部问答∨

哪位大侠有CC2530-CC2591 pcb文件啊

TI公司提供的cc2530-CC2591的原文件,可以打开编辑,我需要把这个做成拼版,要不后续贴片有问题…

查看全部问答∨

MSP430和TC35之间串口通信的问题

各位研究MSP430单片机的朋友们好!本人目前在做MSP430单片机与TC35之间的串行通信,想通过MSP单片机读取TC35中的信息或者将单片机中的指令通过TC35发送出去。现在做的是它们之间最基本的串口测试,但总是有问题存在,下面先展示本人的电路图。以下 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved