摘自:https://blog.csdn.net/zzwdkxx/article/details/9026173

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

  1. u16 DMA1_MEM_LEN;//保存DMA每次数据传送的长度
  2. //DMA1的各通道配置
  3. //这里的传输形式是固定的,这点要根据不同的情况来修改
  4. //从存储器->外设模式/8位数据宽度/存储器增量模式
  5. //DMA_CHx:DMA通道CHx
  6. //cpar:外设地址
  7. //cmar:存储器地址
  8. //cndtr:数据传输量
  9. void MYDMA_Config(DMA_Channel_TypeDef*DMA_CHx,u32 cpar,u32 cmar,u16 cndtr)
  10. {
  11. RCC->AHBENR|=1<<0;     //开启DMA1时钟
  12. delay_ms(1);            //等待DMA时钟稳定
  13. DMA_CHx->CPAR=cpar;      //DMA1 外设地址
  14. DMA_CHx->CMAR=(u32)cmar;//DMA1,存储器地址
  15. DMA1_MEM_LEN=cndtr;     //保存DMA传输数据量
  16. DMA_CHx->CNDTR=cndtr;   //DMA1,传输数据量
  17. DMA_CHx->CCR=0X00000000;//复位
  18. DMA_CHx->CCR|=1<<4;  //从存储器读
  19. DMA_CHx->CCR|=0<<5;  //普通模式
  20. DMA_CHx->CCR|=0<<6;  //外设地址非增量模式
  21. DMA_CHx->CCR|=1<<7;  //存储器增量模式
  22. DMA_CHx->CCR|=0<<8;  //外设数据宽度为8位
  23. DMA_CHx->CCR|=0<<10; //存储器数据宽度8位
  24. DMA_CHx->CCR|=1<<12; //中等优先级
  25. DMA_CHx->CCR|=0<<14; //非存储器到存储器模式
  26. }
  27. //开启一次DMA传输
  28. void MYDMA_Enable(DMA_Channel_TypeDef*DMA_CHx)
  29. {
  30. DMA_CHx->CCR&=~(1<<0);       //关闭DMA传输
  31. DMA_CHx->CNDTR=DMA1_MEM_LEN; //DMA1,传输数据量
  32. DMA_CHx->CCR|=1<<0;          //开启DMA传输
  33. }

/////////////////////////////////////////////////////////////////////////////////////////////////

        在主函数里主要有这几个语句完成DMA传输:
1.首先配置DMA1通道4相关参数
        MYDMA_Config(DMA1_Channel4,(u32)&USART1->DR,(u32)SendBuff,5200);//DMA1通道4,外设为串口1,存储器为SendBuff,长度5200.
2.然后将待发送内容装入存储器
        SendBuff[i]=TEXT_TO_SEND[t];        
3.然后开启一次DMA传输
        MYDMA_Enable(DMA1_Channel4);//开始一次DMA传输!
4.监控传送进度。
        pro=DMA1_Channel4->CNDTR;//得到当前还剩余多少个数据      

DMA 如何查看它有没有传输完成 传输完成再开启的更多相关文章

  1. ubuntu下查看(改变)本地端口开放情况,开启和关闭防火墙

    查看开放端口: sudo ufw status 允许80端口开放: sudo ufw allow 允许22端口开放: sudo ufw allow 启动防火墙: sudo ufw enable 重启防 ...

  2. STM32基础分析——USART的DMA模式

    有关USART的DMA传输模式,其基本的概念和配置,网上有很多博客和教程都有,这里不再赘述,只是记录一下比较容易忽视而造成调试不通的问题. 1. 串口发送和接收分属两个DMA通道 一般方式操作串口时, ...

  3. 使用filebeat收集不同用应用的日志传输到redis,并加以区分

    附加技巧 步骤流程: 使用filebeat收集一台主机上两个不同应用的日志,传递给redis,然后logstash从redis中拉去数据传递给elasticsearch 1.filebeat.yml文 ...

  4. OSPF 提升 一 ----基础

    ospf  ccnp内容   一  link-state protocols      IGP   开放式的最短路径优先协议     公有协议 支持中到大型的网络    spf算法 链路状态协议 1. ...

  5. linux 系统管理--进程管理

    目录 linux 系统管理--进程管理 一.进程基本概述 二.监控进程状态 三.进程的优先级[进阶] 四.企业案例,Linux假死是怎么回事 五.后台进程管理 六.系统平均负载[进阶] linux 系 ...

  6. STM32的USART DMA传输(转)

    源:STM32的USART DMA传输 问题描述: 我有一个需求,AD采得一定数目的数据之后,由串口DMA发出,由于AD使用双缓冲,所以每次开始DMA的时候都需要重新设置开始的内存地址以及传输的数目( ...

  7. STM32学习笔记——DMA控制器(向原子哥学习)

    一.DMA简介 DMA,全称为:Direct Memory Access,即直接存储器访问,DMA 用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输.当 CPU 初始化这个传输动作,传输 ...

  8. DriverStudio开发PCI设备DMA数据传输

    DriverWizard向导可以创建基本的wDM驱动程序框架,包括总线类型,地址空间,中断源,DMA资源,以及IOCTL(i/o控制代码)的定义等等.详细情况可参看DriverStudio的帮助文档, ...

  9. DMA设计

    目录 DMA设计 DMA框架 手册请看英文手册 芯片特性 请求来源 协议简述 基本时序 模式 协议 数据大小的描述 具体完整的实例时序 代码设计 驱动程序 测试程序 测试 参考链接 title: DM ...

随机推荐

  1. C#List<string>和string[]之间的相互转换

     一.LIST概述 所属命名空间:System.Collections.Generic      public class List<T> : IList<T>, IColle ...

  2. OpenCV —— 直方图与匹配

    直方图就是对数据进行统计,将统计值组织到一系列事先定义好的bin中.bin中的数值是从数据中计算出来的特征的统计量,这些数据可以是诸如梯度,方向,色彩或任何其他特征. 直方图获得是是数据分布的统计图 ...

  3. jdbc的数据库驱动类DriverManager.getConnection()详解

    1.Oracle8/8i/9i数据库(thin模式) Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); ...

  4. 怎样扩展Chromium各层的接口

    加入新功能时,可能须要添加各层的接口,接口怎样加?必定须要向Chromium的原则看齐. 首先Chromium的模块设计遵循依赖倒置原则,上层模块依赖于低层模块.低层模块不会依赖上层模块的实现. 再者 ...

  5. 使用Ant打包Android应用具体解释——Ant使用解析

    上篇<使用Ant打包Android应用具体解释>描写叙述了使用Ant打包的流程,但非常多步骤并没有说明如此做的原因,本篇将从Ant方面来理解,下一篇从APK生成的流程来说明. APK包的生 ...

  6. web显示winform,web打开winform,IE打开winform

    前言:为什么要用ie打开winform 个人觉得,winform部署client太麻烦如金蝶··用友,winfrom打补丁太麻烦,加入新功能再部署很费时间:于是就想为什么不能用IE打开呢?这样就不须要 ...

  7. hdu5308 I Wanna Become A 24-Point Master(构造)

    题目:pid=5308" target="_blank">http://acm.hdu.edu.cn/showproblem.php? pid=5308 题意:给定 ...

  8. 「微信小程序」有哪些冲击与机会?

    昨天晚上相信大家的朋友圈被「微信小程序」刷屏了,这影响力赶上了国务院出台新政策一样,足以说明微信在中国的影响力之大. 然后今天公号后台一大堆人问我怎么看这件事,不少人非常忧虑,仿佛自己将要失业一样. ...

  9. Unity3D教程:静态调用C#的dll

    就像使用.net自带的那些程序集一样.加入Reference,然后使用就可以. 因为windows环境下的Unity编译脚本时,本质上还是生成.net程序集.并且其C#脚本编程事实上就是.net C# ...

  10. Android中实现整个视图切换的左右滑动效果

    Android中提供了一个Gallary,可以实现图片或者文本的左右滑动效果. 如何让整个视图都能实现左右滑动,达到类似于Gallary的效果呢?可以直接用一个开源的ViewFlow来实现.   项目 ...