摘自: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. javafx DropShadow

    public class EffectTest extends Application { DropShadow shadow = new DropShadow(); public static vo ...

  2. errpt命令

    errpt –a 详细信息 errpt  -a –s [TIMESTAMP] errpt –aj  [IDENTIFIER] errclear 清除(后面接参数) errpt -aj BFE4C025 ...

  3. Linux之lldptool命令

    1. 描述 当我们想在操作系统里面查看网口和交换机连接的状态信息,我们可以使用lldptool这个工具. 2.LLDP协议 LLDP是一个数据链路层发现协议,LLDP协议使得接入网络的一台设备可以将其 ...

  4. 洛谷——P1209 [USACO1.3]修理牛棚 Barn Repair

    https://www.luogu.org/problem/show?pid=1209 题目描述 在一个夜黑风高,下着暴风雨的夜晚,farmer John的牛棚的屋顶.门被吹飞了. 好在许多牛正在度假 ...

  5. Button- 自定义控件添加自定义属性

    今天自定义了一个button按钮,需要添加一个属性,具体步骤如下 1.新属性的信息设定:在values目录下添加attrs.xml文件,在里面添加属性信息 <?xml version=" ...

  6. UDP 打洞示例 包含 服务器 客户端

    客户端示例: #include "Net.h" #include "../p2pInfo.h" int main() { CUdp  udp; if (0!=u ...

  7. 二维LIS(CDQ分治)

    题目描述 给定一个长度为N的序列S,S的每个元素pi是一个二元组(xi,yi),定义pi<pj当且仅当xi<xj并且yi<yj,求S的最长上升子序列长度 输入格式 第一行一个N,表示 ...

  8. System and method for controlling switching between VMM and VM using enabling value of VMM timer indicator and VMM timer value having a specified time

    In one embodiment, a method includes transitioning control to a virtual machine (VM) from a virtual ...

  9. [JWT] JWT with HS256

    The advantages of JWT over traditional session based validation is: it effectively removing all auth ...

  10. [Phonegap+Sencha Touch] 移动开发76 让cordova app訪问远端站点也能调用cordova插件功能

    原文链接:http://blog.csdn.net/lovelyelfpop/article/details/50735395 我相信.应该会有一些cordova开发人员想过实现以下这种app: 使用 ...