




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
什么是STM32的DMA?其全称是:Direct Memory Access;根据ST公司提供的相关信息,DMA是STM32中一个独立与Cortex-M3内核的模块,有点类似与ADC、PWM、TIMER等模块;主要功能是通信“桥梁”的作用,可以将所有外设映射的寄存器“连接”起来,这样就可以高速问各寄存器,其传输不受CPU的支配,传输还是双向的。过程:怎样启用DMA?首先,众所周知的是初始化,任何设备启用前都要对其进行初始化,要对模块初始化,还要先了解该模块相应的结构及其函数,以便正确的设置;由于DMA较为复杂,我就只谈谈DMA的基本结构和和常用函数,这些都是ST公司提供在库函数中的。1、 下面代码是一个标准DMA设置,当然实际应用中可根据实际情况进行裁减:DMA_DeInit(DMA_Channel1);上面这句是给DMA配置通道,根据ST提供的资料,STM3210Fx中DMA包含7个通道(CH1CH7),也就是说可以为外设或memory提供7座“桥梁”DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address;上面语句中的DMA_InitStructure是一个DMA结构体,在库中有声明了,当然使用时就要先定义了;DMA_PeripheralBaseAddr是该结构体中一个数据成员,给DMA一个起始地址,好比是一个buffer起始地址,数据流程是:外设寄存器 DMA_PeripheralBaseAddmemory中变量空间(或flash中数据空间等),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_DisableDMA_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_NormalDMA_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 Enable*/DMA_Cmd(DMA_Channel1,ENABLE);至此,整个DMA总算设置好了,要使DMA与外设建立有效连接,这不是DMA自身的事情,是各个外设的事情,每个外设都有 一个xxx_DMACmd(XXXx,Enable )函数,如果使DMA与ADC建立有效联系,就使用ADC_DMACmd(ADC1,Enable); (这里我启用了ADC中的ADC1模块)。下面就以我的一个实例来和大家一起学习。这个实例仿真是成功的,我使用的是IAR Embedded Workbench IDE(v4.42) 和Manley Mini-kit评估板+ST-Link II来调试,是一个USART+ADC+DMA的例子。首先,按照相关的资料提示,建立好项目路径、拷贝库文件和相关必要的文件,并建立一个新工程;还有就是设置好IAR IDE的相关设置。一切准备就绪后就开始修改相关的文档:conf.h文档的修改是根据应用中有启用的相关功能Module。如下图:ADC模块的启用设置:DMA模块的启用设置:USART模块启用的设置:其他的如flash、GPIO、RCC、NVIC、HSE等就不一一举例,因为这些几乎每个工程都要用到。再回头看看我的main.c文档,下图是相关的私有定义USART的配制如下(9600,8, N,1):DMA的配置如下:ADC的配置如下图(采用了2路A/D多通道的ADC模式):给各个模块配置的时钟使能如下图;在此想罗嗦一句就是在这个位置的设置我没有给DMA配置时钟,造成DMA功能无法正常使用,也就是前面所有说的与我原先的编程风格有较大的变化的原因,想说一句:在项目中所使用的所有功能模块都要在此配置时钟才能正常工作。GPIO的配置如果有开中断子程序,请在在NVIC中配置,还可以定义每个中断子程序的优先级别,由于我的工程没有用到,在此就不罗嗦了。我项目应用到的文件目录如下图:我的项目仿真结果如下;PA0与GND间接了一个1.5V的干电池,其结果是如中ADC_ConvertedValue0的值;PA1悬空,未接模拟信号。我的硬件仿真平台如下2图:红色的是我AVR mega16L Mini开发板,主要是利用了其中的PO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中级经济师专业技术资格考试试卷及答案
- 2025年心理测评与辅导技巧考试试题及答案
- 2025年电气工程基础知识考试试卷及答案
- 2025年物联网技术与应用职业资格考试试题及答案
- 2025年美术教师资格考试试题及答案
- 2025年信息管理与信息系统考试试题及答案
- 2025年计算机网络技术考试试卷及答案
- 2025年生物教育专业考研模拟试卷及答案
- 物流园区多式联运仓库委托经营管理协议
- 宠物连锁品牌授权合作协议
- 2023年吴忠市利通区社区工作者招聘考试真题
- 变电安全典型案例培训
- 年产4亿片阿奇霉素片的精烘包及车间设计
- 北师大版(2019) 必修第二册 Unit 5 Humans and Nature Lesson 3 Race to the Pole Writing Workshop课件
- 威努特防火墙配置手册
- Mysql 8.0 OCP 1Z0-908 CN-total认证备考题库(含答案)
- 起重机械质量安全风险管控清单(制造(含安装、修理、改造))
- 第26届国际电接触会议暨第四届电工产品可靠性与电接触国际会议联合会议通讯录
- 2023年生态环境综合行政执法考试参考题库(400题)
- 2023-2024学年新疆维吾尔自治区乌鲁木齐市小学语文六年级期末通关试卷附参考答案和详细解析
- 建筑学专业基础知识必学必会考试题库(500题)
评论
0/150
提交评论