STM32DMA标准初始化设置解释.pdf

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
STM32DMA标准初始化设置解释

STM32_DMA 标准初始化设置解释 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_M

文档评论(0)

wnqwwy20 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7014141164000003

1亿VIP精品文档

相关文档