摘自: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. 如何监控和解决SQL Server的阻塞(1) (当前阻塞)

    1. 什么是"阻塞"? 阻塞是SQL数据库应用"锁"机制的一个副作用.当一个应用请求针对某个数据库对象(例如全表,某行数据, 或者是某个数据页)加锁后,那么这个 ...

  2. HDU 2689 Tree

    Tree Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  3. 【Pycharm】【HTML】注释问题

    学习HTML中,遇到的注释前存在空行的问题: 只要找到Pycharm设置中:勾选去掉即可

  4. [React] Create a queue of Ajax requests with redux-observable and group the results.

    With redux-observable, we have the power of RxJS at our disposal - this means tasks that would other ...

  5. LeetCode 06 ZigZag Conversion

    https://leetcode.com/problems/zigzag-conversion/ 水题纯考细心 题目:依照Z字形来把一个字符串写成矩阵,然后逐行输出矩阵. O(n)能够处理掉 记i为行 ...

  6. GBX的Graph(最短路)

    Problem B: Graph Time Limit: 2 Sec  Memory Limit: 128 MB Submit: 1  Solved: 1 [cid=1000&pid=1&am ...

  7. TextView -无法调节字体、边框的距离

    今天调节一个字体边框距离,结果一直都实现不了,布局如下 <RelativeLayout xmlns:android="http://schemas.android.com/apk/re ...

  8. JavaScript中的global对象,window对象以及document对象的区别和联系

    JavaScript中的global对象,window对象以及document对象的区别和联系 一.概念区分:JavaScript中的global对象,window对象以及document对象 1.g ...

  9. 如何修复和检测Windows系统漏洞

    本文为<如何给系统打补丁(知识篇)>一文实战文章.   本文出自 "李晨光原创技术博客" 博客,谢绝转载!

  10. Java学习笔记九

    GUI:图形用户界面,Java不常用于创建桌面应用,所以用的比较少 一.概述: 二.Frame演示: 三.事件监听机制 import java.awt.Button; import java.awt. ...