stm32_DMA

文章介绍了DMA(直接存储器存取)的概念,强调它在外设和存储器间高速传输数据的能力,以及在STM32F103C8T6中的具体资源分配。内容包括12个独立通道的配置,软件和硬件触发方式,以及DMA在APB和AHB总线中的角色。此外,还讨论了数据对齐问题、ADC扫描模式下的DMA使用,以及实现DMA传输的程序步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习目标:

DMA学习


学习内容:

DMA简介

1.DMA(Direct Memory Access)直接存储器存取

2.DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输,无须CPU干预,节省了CPU的资源

3.12个独立可配置的通道: DMA1(7个通道), DMA2(5个通道)

4.每个通道都支持软件触发和特定的硬件触发(存储器到存储器,用软件出发,硬件到存储器,永硬件触发)

5.STM32F103C8T6 DMA资源:DMA1(7个通道)

存储器印象

ROM:掉电保持        RAM:掉电不保持

DMA框图

DMA既是主动设备,可以访问APB1外设和APB2外设,但是又是AHB的从设备,可以由CPU控制

 DMA的基本结构图

 转运:1.必须使能 2.传输寄存器必须大于0,3.必须有触发源和触发信号(写传输寄存器时,必须先关闭DMA)

DMA请求

 

 宽度对齐问题

 小的数据转到大的里面去,高的就补0,大的数据转到小的里面的,大的就舍弃

数据转运+DMA

 ADC扫描模式+DMA

如果要直接访问一个变量的地址的话,需要用&(取地址符),然后强制转化一下(uint32_t)&a;

程序实现:

1. 定义DMA的源数组和目的数组

2.开启DMA的是时钟(RCC_AHBPeriph_DMA1)

3.初始化dma(dma_init)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值