工程师STM32单片机学习基础手记(4):用PWM实现荧火虫灯(五)

2013-05-11 21:27:10来源: 互联网
按SW方式来调试

  

  1脚不接时出现的画面

  

  DMA初步

  DMA有什么用?

  直接存储器存取用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU的干预,通过DMA数据可以快速地移动。这就节省了CPU的资源来做其他操作。

  有多少个DMA资源

  有两个DMA控制器,DMA1有7个通道,DMA2有5个通道。

  数据从什么地方送到什么地方?

  外设到SRAM(I2C/UART等获取数据并送入SRAM);

  SRAM的两个区域之间;

  外设到外设(ADC读取数据后送到TIM1控制其产生不同的PWM占空比);

  SRAM到外设(SRAM中预先保存的数据送入DAC产生各种波形);

  ……还有一些目前还搞不清楚的。

  DMA可以传递多少数据?

  传统的DMA的概念是用于大批量数据的传输,但是我理解,在STM32中,它的概念被扩展了,也许更多的时候快速是其应用的重点。数据可以从1~65535个。

  通道是如何分配的?

  见下面的这个表:

  

  

  如何来用DMA?

  确定数据来源,确定数据目的地,选择使用哪个通道,设定传输多少个数据,设定数据传递模式等等就可以了。且读一下STM32提供给我们的例子。

  //////////////////////////////////////////

  ……

  DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)TIM1_CCR3_Address;

  //设定外围设备的地址

  DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)SRC_Buffer;

  //设定内存地址,SRC_Buffer是前面定义的一个数组

  DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST; //方向控制

  DMA_InitStructure.DMA_BufferSize = 3; //缓冲区大小

  DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;//外围地址增量控制

  DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; //内存地址增量控制

  DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;

  DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;

  //DMA_PeripheralDataSize_HalfWord的值为0x100,后一个为0x400,在在stm32f10x_dma.h中定义,用于决定存储器数据宽度

  */

关键字:STM32  单片机  PWM

编辑:神话 引用地址:http://www.eeworld.com.cn/mndz/2013/0511/article_18320.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
STM32
单片机
PWM

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved