历史上的今天
返回首页

历史上的今天

今天是:2025年01月31日(星期五)

2019年01月31日 | 【stm32f103】DMA应用memory to memory(寄存器版)

2019-01-31 来源:eefocus

注释:此文档是利用DMA实现memory to memory的搬运

可能有的人会说直接用memcpy会更方便,确实是这样,但是此文章仅仅是DMA应用的例子,所以不采用memcpy的方法,并且此历程中不配置DMA中断

后续在系统讲解USART章节中再讲解DMA中断

一.DMA1所在总线


所以要先ENABLE DMA所在总线时钟

RCC->AHBENR = RCC_AHBENR_DMA2EN;

二.DMA寄存器


寄存器可以参考 参考手册,在这里不做详细讨论

三.编程步骤:

1.使能DMA时钟‘

2.配置DMA外设地址(如果是memroy to meory也需要把memory的地址设置成外设地址,但是需要额外配置DMA CCR寄存器的bit14 MEM2MEM 标志)

3.配置DMA内存地址

4.配置传输方向,配置内存地址是否增加,配置外设地址是否增加,配置优先级等等

5.配置传输的数量

6.使能DMA

7.等待传输完成,清楚完成标志位

四.程序讲解源代码

#include

 

uint8_t source_buffer[20] = "I am source";

uint8_t dest_buffer[20];

 

int main()

{

RCC->AHBENR = RCC_AHBENR_DMA2EN;

/* 存储器地址 */

DMA2_Channel4->CMAR = (uint32_t)source_buffer;

/* 外设地址 */

DMA2_Channel4->CPAR = (uint32_t)dest_buffer;

/* 配置优先级 传输方向 内存2内存 外设地址增加 内存地址增加 */

DMA2_Channel4->CCR = DMA_CCR4_PL | DMA_CCR4_DIR | DMA_CCR4_MEM2MEM | DMA_CCR4_PINC | DMA_CCR4_MINC;

/* 传输的数据量 */

DMA2_Channel4->CNDTR = sizeof(source_buffer);

/* 使能DMA */

DMA2_Channel4->CCR |= DMA_CCR2_EN;

while ((DMA2->ISR & DMA_ISR_TCIF4) == 0);

DMA2->IFCR = DMA_IFCR_CTCIF4;

DMA2_Channel4->CCR &= ~DMA_CCR4_EN;

}

程序运行效果

推荐阅读

史海拾趣

Clever Little Box公司的发展小趣事

随着公司的发展,Clever Little Box逐渐意识到,单一的产品线无法满足市场的多样化需求。于是,公司开始积极拓展产品线,不仅涵盖了脉冲发生器、转换器等核心产品,还增加了音频/视频电缆组件等辅助产品。同时,公司注重创新,不断研发新技术、新产品,以满足市场的不断变化和客户的个性化需求。

集创北方(CHIPONE)公司的发展小趣事

作为一家专注于显示芯片设计的企业,集创北方始终将技术创新作为核心竞争力。从早期的LED驱动芯片到后来的AMOLED驱动芯片,再到国内率先推出的TDDI芯片ICNL9920,集创北方不断推出具有竞争力的产品,满足了市场对于高质量显示芯片的需求。

Deltron / DEM Manufacturing公司的发展小趣事

Deltron Emcon,即现在的DEM Manufacturing,起源于四家英国制造企业的合并。这些企业分别是成立于1946年的Deltron Components,专业音频连接器和压铸盒制造商Roxburgh EMC(成立于1969年),EMC滤波器和组件的制造商Media Products(成立于1990年),以及广播跳线产品制造商BES Electronics(成立于1982年)。这些公司在各自的领域内都有着丰富的经验和卓越的技术,合并后,DEM Manufacturing凭借这些优势,在电子行业中迅速崭露头角。

CUI Devices公司的发展小趣事

CUI Devices的历史可以追溯到1989年,当时它作为CUI Inc的一部分,在俄勒冈州波特兰郊外以高精度示波器探头制造商的身份进入市场。然而,随着时间的推移,公司逐渐认识到市场的多元化需求,开始积极拓展其产品供应和业务范围。2019年9月,一群在CUI Inc有着深厚背景和平均任期超过15年的高级管理人员,剥离了部分业务,成立了新的私人实体——CUI Devices。这一转型不仅为公司注入了新的活力,也为电子元件行业带来了更多的可能性。

艾为(AWINIC)公司的发展小趣事

艾为电子注重与产业链上下游企业的合作,通过协同创新和资源共享,实现共赢发展。例如,艾为与歌尔股份建立了长期合作伙伴关系,双方在声光电射手等领域展开了深度合作,共同推出了多款优秀产品。此外,艾为还与多家ODM厂商和智能硬件企业建立了紧密的合作关系,共同推动产业链的协同发展。

意瑞(COSEMITECH)公司的发展小趣事

随着业务的不断发展和市场的不断扩大,意瑞半导体也积极寻求外部投资和战略合作。公司先后获得了得彼投资、架桥投资、深创投等机构超2亿元的股权投资,为公司的持续发展提供了有力的资金保障。此外,意瑞半导体还积极参与各种行业活动和展览,与业界同仁进行深入交流和合作,共同推动半导体行业的发展。

以上五个故事素材可以根据需要进一步扩展和细化,以形成完整的、具有吸引力的电子行业意瑞半导体公司的发展故事。

问答坊 | AI 解惑

哪个可以发个毕业 设计论文不???

单片机烟雾检测报警器电子毕业设计 等等的毕业设计论文,,,哪个发个连接…

查看全部问答>

wince开发系列问题——2,接系列问题1

编译,连接,都通过了,也生成了EXE;(,我是移植的代码,作了修改:wince开发系列问题——1有详细描述如何解决问题的,可能问题出现自我解决问题的方法) 但是悲剧的是: 在模拟器里跑不成,问题如下   void CbmpView::OnDraw(CDC* ...…

查看全部问答>

EVC4.2下的系统托盘没有图标

我按照网上的一些代码,就是无论如何都是空图标,透明的。 真的没有图标吗? 我明天发一下我的代码…

查看全部问答>

有没有做过ADSP的?

如何使用C来编写两个processor?…

查看全部问答>

【多功能手持示波函数表】进度汇报

  由于七月外地的比赛,拖了好多天,一直到7月底才开始动工,这个初步情况如下:   1.EEWORLD购买ADI所有的芯片已经到位   2.所有芯片资料都已经阅读和理解完毕   3.所有原理图和PCB已经设计完成并已经制板,开始进入了焊接 ...…

查看全部问答>

51单片机的传输方式?

我想向大家请教一下,51单片机的数据传输方式是由输入设备先经过存储器再到数据处理器,还是反过来呢? 如果是前一种的话,数据处理之后就直接存储还是先到地主找数据再返回到存储器,由存储器向输出设备?请各位大虾多多打救啊。…

查看全部问答>

富士通DIY工业控制板原理图及PCB发布

PCB图跳票了好几次,都不好意思了。不说了,直接上货。 [ 本帖最后由 ltbytyn 于 2012-11-28 12:58 编辑 ]…

查看全部问答>

一天的成果+样片申请经验

昨天申请的样片到了,今天淘宝的最小系统也到了,一个人在实验室焊贴片 这是我第一次焊贴片,焊了4块,有两块焊的很完美,还有两块修修补补也成功了 两个块MSP430F149,两块MSP430F168,引脚是兼容的,用的一种板子 实验室有热风台,开始以为 ...…

查看全部问答>

wince 的fatutil.dll 有什么用?

fatutil.dll 这个看有些人实现多fat 分区会用到这个dll ,在SLC nandflash 上,我现在要做这个功能,但是行不通,这个fatutil.dll 什么用的?…

查看全部问答>

晒WEBENCH设计的过程+移动电源设计之一

移动电源电路设计: 输入1:3.3到4.2V,输出5V,这个是电池逆变电路 输入2:4.5V到5.5V,输出3.7V,这个是电池充电电路 设计步骤: 第一步,选择两个输入和两个输出,添加电源和负载 第二步,编辑优化设计参数 第三步,检视和编辑项目设计 ...…

查看全部问答>