关闭

STM32_DMA标准初始化设置解释

标签: stm32数据dma
267人阅读 评论(0) 收藏 举报
分类:

DMA全称是:Direct Memory Access;根据ST公司提供的相关信息,DMA是STM32中一个独立与Cortex-M3内核的模块,有点类似与ADC、PWM、TIMER等模块;主要功能是通信“桥梁”的作用,可以将所有外设映射的寄存器“连接”起来,这样就可以高速问各寄存器,其传输不受CPU的支配,传输还是双向的;例如,从“表面”上看,它可以将flash中的数据与储存器中变量建立通讯,还可以将一外设的积存器或缓冲器与另外设的寄存器或缓冲器建立双向通讯,有点像把外设硬件之间用“导线”连接在一起了。其间的通讯不占CPU资源,访问速度高,对于实时性强的应用将是一个很好的选择。
1、 下面代码是一个标准DMA设置,当然实际应用中可根据实际情况进行裁减:
 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
开启时钟,否则初始化无效。
 DMA_DeInit(DMA_Channel1);
上面这句是给DMA配置通道,根据ST提供的资料,STM3210Fx中DMA包含7个通道(CH1~CH7),也就是说可以为外设或memory提供7座“桥梁”;
 DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address;
DMA_PeripheralBaseAddr是DMA_InitStructure结构体中一个数据成员,给DMA一个起始地址,好比是一个buffer起始地址,ADC1_DR_Address是我定义的一个地址变量;
 DMA_InitStructure.DMA_MemoryBaseAddr = (u32)ADC_ConvertedValue;
上面这句很显然是DMA要连接在Memory中变量的地址,ADC_ConvertedValue是我自己在memory中定义的一个变量地址;
 DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
上面的这句是设置DMA的传输方向,就如前面我所说的,DMA可以双向传输,也可以单向传输,这里设置的是单向传输,如果需要双向传输:把DMA_DIR_PeripheralSRC改成
DMA_DIR_PeripheralDST即可。
 DMA_InitStructure.DMA_BufferSize = 2;
上面的这句是设置DMA在传输时缓冲区的长度,前面有定义过了buffer的起始地址:ADC1_DR_Address ,为了安全性和可靠性,一般需要给buffer定义一个储存片区,这个参数的单位有三种类型:Byte、HalfWord、word,我设置的2个half-word(见下面的设置);32位的MCU中1个half-word占16 bits。
 DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
上面的这句是设置DMA的外设递增模式,如果DMA选用的通道(CHx)有多个外设连接,需要使用外设递增模式:DMA_PeripheralInc_Enable;我的例子里DMA只与ADC1建立了联系,所以选用DMA_PeripheralInc_Disable
 DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
上面的这句是设置DMA的内存递增模式,DMA访问多个内存参数时,需要使用DMA_MemoryInc_Enable,当DMA只访问一个内存参数时,可设置成:DMA_MemoryInc_Disable。
 DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
上面的这句是设置DMA在访问时每次操作的数据长度。有三种数据长度类型,前面已经讲过了,这里不在叙述。
 DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
与上面雷同。在此不再说明。
 DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
上面的这句是设置DMA的传输模式:连续不断的循环模式,若只想访问一次后就不要访问了(或按指令操作来反问,也就是想要它访问的时候就访问,不要它访问的时候就停止),可以设置成通用模式:DMA_Mode_Normal
 DMA_InitStructure.DMA_Priority = DMA_Priority_High;
上面的这句是设置DMA的优先级别:可以分为4级:VeryHigh,High,Medium,Low.
 DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
上面的这句是设置DMA的2个memory中的变量互相访问的
 DMA_Init(DMA_Channel1,&DMA_InitStructure);
前面那些都是对DMA结构体成员的设置,在次再统一对DMA整个模块做一次初始化,使得DMA各成员与上面的参数一致。
 DMA_Cmd(DMA_Channel1,ENABLE);
使能启动。
要使DMA与外设建立有效连接,这不是DMA自身的事情,是各个外设的事情,每个外设都有 一个xxx_DMACmd(XXXx,Enable )函数,如果使DMA与ADC建立有效联系,就使用ADC_DMACmd(ADC1,Enable); (这里我启用了ADC中的ADC1模块)。
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

神经网络的权重初始化

权重初始化的合理与否常常决定了训练时网络能否收敛。常用的神经网络权重初始化方法有xavier和msra。由于基于的激活函数的假设不一样,msra的方差是xavier的2倍。 xavier初始化基于线...
  • Jing_xian
  • Jing_xian
  • 2018-01-05 21:27
  • 73

回归结果的一般解释

一、参数解释: 1、回归系数(coefficient)     注意回归系数的正负要符合理论和实际。     截距项的回归系数无论是否通过T检验都没有实际的经济意义。 2、回归...
  • mousever
  • mousever
  • 2016-01-13 16:49
  • 3392

C中嵌入Python解释器

讨论C/C++中嵌入Python计算器的方法。
  • u013344915
  • u013344915
  • 2016-04-08 12:01
  • 818

最全Pycharm教程(4)——有关Python解释器的相关配置

1、准备工作   (1)Pycharm版本为3.4或者更高。   (2)电脑上至少已经安装了一个Python解释器。   (3)如果你希望配置一个远程解释器,则需要服务器的相关支持。   2、...
  • u013088062
  • u013088062
  • 2015-12-01 21:16
  • 45010

c语言数组初始化——int a[N] = {0};

初学数组,以华科的《c
  • withSakura
  • withSakura
  • 2014-05-11 23:59
  • 2934

OWASP安全编码规范快速参考的术语

0x01 外部的参考资料 1. 引用的参考资料 Sans and TippingPoint "The Top Cyber Security Risks" http://www.sans.or...
  • qq_29277155
  • qq_29277155
  • 2016-10-09 20:22
  • 802

关于ROC AUC指标的详细介绍说明

转发一篇对于ROC  AUC 解释比较通俗明了的文章: ROC(Receiver Operating Characteristic)曲线和AUC常被用来评价一个二值分类器(binar...
  • shenxiaoming77
  • shenxiaoming77
  • 2017-01-16 16:57
  • 674

ulipad python解释器设置问题

一直 关于什么是Python的IDE,不了解的先去看: 【整理】【多图详解】如何在Windows下开发Python:在cmd下运行Python脚本+如何使用Python Shell...
  • muyimo
  • muyimo
  • 2014-07-09 13:55
  • 1144

yocto的初始化脚本解释

调用source oe-init-build-env 的执行流程 没有指定目录参数 所有的操作将在build目录中执行。 如果指定了目录参数。比如source oe-init-build-env pi...
  • groundhappy
  • groundhappy
  • 2016-05-03 21:21
  • 1753

git 使用说明一:初始化设置

Git 仓库就是那个.git 目录,其中存放的是我们所提交的文档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪,从而实现文档的版本控制。.git目录位于工作目录内。
  • xiaobaismiley
  • xiaobaismiley
  • 2014-07-10 00:25
  • 1616
    个人资料
    • 访问:20203次
    • 积分:290
    • 等级:
    • 排名:千里之外
    • 原创:7篇
    • 转载:17篇
    • 译文:0篇
    • 评论:3条
    文章分类
    最新评论